openalex.org APIopenalex.org ↗
Search and retrieve academic works from OpenAlex's catalog of 250M+ papers. Get titles, abstracts, authors, citations, topics, and open access status.
curl -X GET 'https://api.parse.bot/scraper/937ce615-9fb8-4b29-9107-8348a1d9f1fe/search_works?sort=cited_by_count%3Adesc&query=machine+learning&filter=publication_year%3A2024&per_page=5' \ -H 'X-API-Key: $PARSE_API_KEY'
Search academic works by keyword with support for filters, sorting, and cursor-based pagination. Returns matching works with metadata including authors, citations, open access status, and more.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort order. Examples: 'cited_by_count:desc', 'publication_date:desc', 'relevance_score:desc'. Omitting uses default relevance ordering. |
| query | string | Full-text search query (e.g., 'machine learning', 'CRISPR gene editing'). Omitting returns all works. |
| cursor | string | Pagination cursor. Use '*' for the first page, then use next_cursor from the response for subsequent pages. |
| filter | string | Filter expression. Examples: 'publication_year:2024', 'type:article', 'is_oa:true', 'publication_year:2020-2024'. Multiple filters can be combined with commas. |
| per_page | integer | Results per page (1-200). |
{
"type": "object",
"fields": {
"works": "array of work objects with id, doi, title, publication_year, publication_date, type, language, cited_by_count, relevance_score, is_oa, oa_status, oa_url, source_name, source_type, authors (array with id, name, orcid, institutions), abstract_inverted_index (boolean)",
"per_page": "integer - results per page",
"next_cursor": "string - cursor for next page (null if no more results)",
"total_count": "integer - total matching works"
},
"sample": {
"data": {
"works": [
{
"id": "https://openalex.org/W2101234009",
"doi": "https://doi.org/10.48550/arxiv.1201.0490",
"type": "preprint",
"is_oa": true,
"title": "Scikit-learn: Machine Learning in Python",
"oa_url": "https://arxiv.org/pdf/1201.0490",
"authors": [
{
"id": "https://openalex.org/A5105141183",
"name": "Fabián Pedregosa",
"orcid": "https://orcid.org/0000-0003-4025-3953",
"institutions": [
"Commissariat à l'Énergie Atomique et aux Énergies Alternatives"
]
}
],
"language": "en",
"oa_status": "green",
"source_name": "arXiv (Cornell University)",
"source_type": "repository",
"cited_by_count": 63631,
"relevance_score": 17462.936,
"publication_date": "2012-01-02",
"publication_year": 2012,
"abstract_inverted_index": true
}
],
"per_page": 5,
"next_cursor": "Ils5ODQxLjg2NSwgMTE2NzYwOTYwMDAwMCwgJ2h0dHBzOi8vb3BlbmFsZXgub3JnL1czMTIwNzQwNTMzJ10i",
"total_count": 3959365
},
"status": "success"
}
}About the openalex.org API
The OpenAlex Works API exposes two endpoints — search_works and get_work — covering over 250 million academic papers, articles, books, and preprints. search_works lets you query by keyword, filter by year, type, or open-access status, and paginate through results with cursor-based navigation. get_work returns a single record with full abstract text, topic classifications, author ORCID links, institutional affiliations, and per-year citation counts.
Searching and Filtering Works
The search_works endpoint accepts a query string for full-text search across titles and abstracts. Results can be narrowed with the filter parameter using expressions like publication_year:2020-2024, type:article, or is_oa:true. Multiple filters can be combined. Sorting is controlled via the sort parameter — accepted values include cited_by_count:desc, publication_date:desc, and relevance_score:desc. The endpoint returns a total_count integer alongside a works array, each work carrying fields such as doi, publication_year, language, cited_by_count, and is_oa.
Pagination
The endpoint uses cursor-based pagination. Pass cursor: '*' to start, then read next_cursor from each response and pass it as the cursor on the next call. When next_cursor is null, you have reached the end of the result set. The per_page parameter accepts values from 1 to 200, giving control over payload size per request.
Single Work Detail
The get_work endpoint takes an OpenAlex work ID (e.g., W2741809807) and returns the full detail record. Distinct from the search result shape, this record includes a reconstructed abstract string, a biblio object with volume, issue, first_page, and last_page, a topics array where each entry carries a name, score, field, and domain, and an authors array with id, name, orcid, and institutions per author. Open access delivery is indicated by is_oa and oa_url.
- Building a literature review tool that surfaces the most-cited papers in a field using
cited_by_countandsort - Tracking open-access coverage of a research topic by filtering
search_workswithis_oa:true - Enriching an author profile page with institutional affiliations and ORCID links from
get_work'sauthorsarray - Identifying emerging research areas by querying recent publications with
publication_year:2023-2024and grouping bytopics - Feeding a citation analysis pipeline with per-work
cited_by_countand referencing the OpenAlex ID across records - Aggregating paper metadata (DOI, journal, volume, issue) for a reference manager integration using
bibliofields - Filtering academic content by language to build multilingual research discovery tools
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does OpenAlex have an official developer API?+
What does `get_work` return that `search_works` does not?+
get_work returns a reconstructed full abstract string, a biblio object with volume, issue, and page numbers, a topics array with domain and field classification scores, and oa_url for direct access to the open-access version. The search_works endpoint returns a summary shape optimized for list display, omitting these detail fields.Are author-level or institution-level endpoints covered?+
Can I retrieve the full reference list for a paper?+
get_work endpoint returns citation counts and topic metadata but does not expose the outbound references array. You can fork this API on Parse and revise the get_work endpoint to include the references field from the underlying OpenAlex work record.