OpenAlex Work Lookup — Scholarly Metadata by DOI
Pricing
from $2.40 / 1,000 successful lookups
OpenAlex Work Lookup — Scholarly Metadata by DOI
Look up scholarly works by DOI or OpenAlex ID against OpenAlex's free, open catalog. Get title, full author list with ORCID and institution, venue, citation count, open-access status and URL, topic concepts, and a reconstructed abstract. Pay only for DOIs that resolve.
Pricing
from $2.40 / 1,000 successful lookups
Rating
0.0
(0)
Developer
Adrian Voss
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
OpenAlex Work Lookup
Look up any scholarly work by DOI or OpenAlex ID against OpenAlex's free, open catalog of scholarly works — title, full author list with ORCID and institution, venue, citation count, open-access status and URL, topic concepts, and a reconstructed abstract. No API key, no scraping — this hits the official public OpenAlex API directly.
Features
- DOI/ID → full work record. Accepts a bare DOI (
10.1038/nature12373), adoi.orgURL, or an OpenAlex work ID (W2159974629). - Full author list. Every author with their display name, ORCID (when on record), and first listed institution.
- Citations & open access. Citation count, open-access status, and a direct open-access URL when one exists.
- Topics & abstract. Up to 8 concept/topic tags plus the full abstract, reconstructed from OpenAlex's inverted index.
- Pay only for hits. DOIs that don't resolve cost nothing — see Pricing.
- Built for bulk. Feed in thousands of DOIs; concurrency, keyword filtering, column selection, and a one-row-per-author expansion are all configurable.
How to use OpenAlex Work Lookup — Scholarly Metadata by DOI
- In the Apify Console. Open the actor page and click Start — the
worksfield is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found. - Via the API. Call it directly with a POST request — no Console needed once you have an API token:
curl "https://api.apify.com/v2/acts/accountable_eel~openalex-work-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"works":["10.1038/nature12373"]}'
- On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
Input
{"works": ["10.1038/nature12373"]}
One DOI, doi.org URL, or OpenAlex work ID (Wxxxxxxxx) per line. Accepted formats: 10.1038/nature12373, https://doi.org/10.1038/nature12373, W2159974629.
{"works": ["10.1038/nature12373", "W2159974629"],"testRun": false,"onlyFound": false,"expandRows": false,"maxConcurrency": 5}
works is a list of DOIs, doi.org URLs, or OpenAlex work IDs — one per line. testRun limits
a run to the first 5 items so you can check your input before spending on the full list.
onlyFound hides rows where nothing was found (misses are always free regardless). Optional
includeKeywords/excludeKeywords filter results by keyword, and maxResults stops the run
early once that many results have been found. columns lets you pick which fields to include
(all are on by default). expandRows gives each author their own row instead of grouping them
under the work — you're still only charged once per work no matter how many rows it produces.
maxConcurrency (default 5, max 20) caps parallel requests.
Output
| query | found | status | title | doi | openalexId | publicationYear | type | venue | citedByCount | isOpenAccess | oaUrl | authors | authorCount | concepts | abstract | scrapedAt |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 10.1038/nature12373 | true | OK | Nanometre-scale thermometry in a living cell | https://doi.org/10.1038/nature12373 | https://openalex.org/W2159974629 | 2013 | article | Nature | 1982 | true | https://www.nature.com/articles/nature12373.pdf | [{"name":"Georg Kucsko","orcid":"https://orcid.org/0000-0002-4189-3154","institution":"Harvard University"},{"name":"Peter C. Maurer","orcid":"https://orcid.org/0000-0001-9033-5135","institution":"Harvard University"},{"name":"Norman Y. Yao","orcid":"https://orcid.org/0000-0003-0194-7266","institution":"Harvard University"},{"name":"M. K. Kubo","orcid":null,"institution":"Harvard University"},{"name":"H.‐J. Noh","orcid":"https://orcid.org/0000-0001-8892-538X","institution":"Broad Institute"},{"name":"Pik Kwan Lo","orcid":"https://orcid.org/0000-0001-5255-1718","institution":"City University of Hong Kong"},{"name":"Hongkun Park","orcid":"https://orcid.org/0000-0001-9576-8829","institution":"Broad Institute"},{"name":"Mikhail D. Lukin","orcid":"https://orcid.org/0000-0002-8658-1007","institution":"Harvard University"}] | 8 | ["Diamond","Thermometer","Nanotechnology","Nanoscopic scale","Nanometre","Materials science","Physics","Optics"] | 2026-08-24T06:01:02.955Z |
One row per work, for example:
{"query": "10.1038/nature12373","found": true,"status": "OK","title": "The dynamics of genome editing...","doi": "https://doi.org/10.1038/nature12373","openalexId": "https://openalex.org/W2159974629","publicationYear": 2013,"type": "article","venue": "Nature","citedByCount": 4218,"isOpenAccess": true,"oaUrl": "https://www.nature.com/articles/nature12373.pdf","authors": [{ "name": "Jane Doe", "orcid": "https://orcid.org/0000-0002-1825-0097", "institution": "Harvard University" }],"authorCount": 5,"concepts": ["Biology", "Genetics", "CRISPR"],"abstract": "We describe a method for...","scrapedAt": "2026-08-21T12:00:00.000Z"}
A DOI or ID that doesn't resolve to an OpenAlex work comes back as "found": false with
status: "NOT_FOUND" and a plain-English message — these rows are never charged.
Use cases
- Citation enrichment. Bulk-resolve a reference list of DOIs into full metadata with citation counts and open-access links.
- Research output tracking. Monitor a lab or institution's publication list for new works, venues, and citation growth.
- Open-access auditing. Check which works in a list have a free, legally-hosted OA copy available.
- Bibliography building. Pull structured author/venue/year data straight into a reference manager instead of hand-formatting citations.
- Topic/concept analysis. Aggregate concept tags across a body of DOIs to map a field's research themes.
Pricing
$4 per 1,000 works, plus a $0.005 start fee. Misses (found:false) are never charged.
Use it from Clay, n8n, Make, or an AI agent
This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.
curl "https://api.apify.com/v2/acts/accountable_eel~openalex-work-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-X POST \-H "Content-Type: application/json" \-d '{"works":["10.1038/nature12373"]}'
n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~openalex-work-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"works":["10.1038/nature12373"]} (swap in an expression from an earlier node for a real value).
Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~openalex-work-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"works":["{{work}}"]}, mapping the row's work into the works array.
MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "OpenAlex API — DOI to Scholarly Work Metadata" — the agent will find and run this actor.
FAQ
What counts as "not found"? A DOI or OpenAlex ID that returns a 404 from the API — this is
tagged status: "NOT_FOUND" and never charged.
What input formats are accepted? A bare DOI (10.1038/nature12373), a full doi.org URL
(https://doi.org/10.1038/nature12373), or an OpenAlex work ID (W2159974629). The actor
detects OpenAlex IDs by the W prefix and routes everything else as a DOI lookup.
How is the abstract generated? OpenAlex stores abstracts as an inverted index (word → positions) rather than plain text; this actor reconstructs the original word order from that index, so formatting artifacts from the source PDF (line breaks, special characters) don't carry over.
Can I get one row per author instead of a nested list? Yes — turn on expandRows to get one
output row per author, still billed once per work regardless of author count.
Does this cover every published work? Coverage depends on what's indexed in OpenAlex, which is broad (250M+ works) but not universal — very recent preprints or works outside major publisher feeds may not yet be indexed.
What proxy should I use? Apify Proxy is enabled by default; OpenAlex's public API is generally permissive, but residential proxies are available if you see blocks on large runs.