Cito is a fast programmatic search service for the academic literature: one API that runs semantic and keyword search over ~148M papers and fuses the results. The whole corpus is self-hosted, so there are no upstream rate limits to inherit; the public Semantic Scholar API allows 1 request/second, Cito exists to remove that ceiling.
How search works
Every query runs two retrievers over local indexes:
- Semantic: your query is embedded with SPECTER2, a model trained specifically on scientific papers, and matched against precomputed paper embeddings by vector similarity. This finds work that is about the same thing even when it shares no keywords with your query.
- Keyword: classic BM25 full-text matching over titles and abstracts. This keeps exact terms, author jargon and rare acronyms findable.
The two rankings are merged with reciprocal-rank fusion (papers ranked high by both rise to the top), and ordering is deterministic: the same query against the same corpus snapshot returns the same results in the same order. You can also run either retriever alone via mode=semantic or mode=keyword.
No third-party API is called at query time. Results come entirely from Cito's own indexes, which is what keeps latency low and behavior reproducible.
What a result carries
Title, authors, venue, publication date, DOI, citation count, abstract when available, and a direct open-access PDF link when one exists. Cito serves metadata and links; full text always lives at the publisher or repository that hosts it.
Where next
- Data: where the corpus comes from, how fresh it is, and how often it updates.
- API reference: endpoints, parameters, auth and examples. Agents can read /llms.txt.
- Licensing: source data licenses and what attribution you need to keep.