Crossref API New Works Feed: New DOIs & Journal Articles avatar

Crossref API New Works Feed: New DOIs & Journal Articles

Pricing

$1.00 / 1,000 crossref works

Go to Apify Store
Crossref API New Works Feed: New DOIs & Journal Articles

Crossref API New Works Feed: New DOIs & Journal Articles

New journal articles, preprints and datasets registered with Crossref, via the keyless Crossref REST API. Monitor journals (ISSN), publishers, funders or keywords on a schedule; get only new DOIs with title, journal, dates, funders, licences. No author names or abstracts. Unofficial.

Pricing

$1.00 / 1,000 crossref works

Rating

0.0

(0)

Developer

Scott Williams

Scott Williams

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Security

Limited permissions

Share

A scheduled feed of newly registered scholarly works (journal articles, conference papers, preprints, book chapters, datasets, reports and more), taken from the keyless Crossref REST API. Crossref is a DOI registration agency for scholarly content.

Each run returns everything registered in the last N days, or between two dates, newest first. You can narrow it to particular journals (ISSN), publishers (member ID or DOI prefix), funders, work types or keywords. On a schedule, each run returns only DOIs you have not received before.

Unofficial. This Actor is not affiliated with or endorsed by Crossref. Records are copied from Crossref as publishers deposited them, and publishers can correct them later. Check doiUrl before you rely on a record.

Use cases

  • Journal alerts: get every new article in a list of journals by ISSN, each morning.
  • Publisher monitoring: follow everything a publisher registers, by Crossref member ID or DOI prefix.
  • Funder reporting: collect new works that acknowledge a funder, using its Open Funder Registry DOI.
  • Literature monitoring: a daily keyword feed (for example "perovskite solar") restricted to new journal articles.
  • Corrections and retractions: the updatesTo field shows which DOI a correction or retraction notice updates.
  • Open-licence collections: keep only works with a Creative Commons licence.
  • Data pipelines: send each run to Google Sheets, a webhook, Slack or your database with Apify integrations.

What you get

FieldExample
doi, doiUrl, crossrefApiUrl10.1007/s10735-026-11019-3, https://doi.org/10.1007/s10735-026-11019-3
type, title, subtitle, originalTitlejournal-article, "Circ_0018814 promotes the osteogenic differentiation ..."
containerTitle, shortContainerTitle, issnPrint, issnElectronic, issns, isbns"Journal of Molecular Histology", 1567-2379, 1567-2387
publisher, crossrefMemberId, doiPrefix"Springer Science and Business Media LLC", 297, 10.1007
publishedDate, publishedPrint, publishedOnline2026-11-01. A value can be YYYY, YYYY-MM or YYYY-MM-DD.
createdAt, depositedAtWhen the DOI was first registered and when its metadata was last deposited (UTC)
volume, issue, page, articleNumber, subjects
authorCount, editorCount, hasAbstractCounts and flags only
referencesCount, citedByCountCrossref's reference count and cited-by count
fundersName, funder DOI, ROR ID and award numbers. Repeated funders are merged into one entry.
licences, hasCreativeCommonsLicenceLicence URL, content version, start date, embargo days
updatesToFor a correction or retraction notice, the DOI it updates
source, licenceNote, scrapedAt

An example record from a run on 1 November 2026 (shortened):

{
"doi": "10.1007/s10735-026-11019-3",
"type": "journal-article",
"title": "Circ_0018814 promotes the osteogenic differentiation of mesenchymal stem cells in ankylosing spondylitis by regulating the miR-944/KLF4 axis",
"containerTitle": "Journal of Molecular Histology",
"issns": ["1567-2379", "1567-2387"],
"publisher": "Springer Science and Business Media LLC",
"crossrefMemberId": "297",
"publishedDate": "2026-11-01",
"createdAt": "2026-11-01T15:58:57Z",
"authorCount": 6,
"referencesCount": 50,
"funders": [{"name": "Preliminary Research Project of the National Natural Science Foundation of China", "funderDoi": null, "ror": "https://ror.org/01h0zpd94", "awards": ["2025GZRYSY011"]}],
"hasCreativeCommonsLicence": true,
"updatesTo": []
}

Each run also writes a RUN_SUMMARY record to the key-value store. It shows how many works matched (stats.totalResults), how many were saved or skipped, and how many requests the run made.

Input

InputDefaultNotes
modedaily_feeddaily_feed reads the last lookbackDays (default 1, meaning yesterday and today, UTC). date_range reads from startDate to endDate, up to 10 years.
dateFieldcreatedcreated is when the DOI was first registered: the best choice for "new works". The other options are published, indexed (any change) and deposited. Results are sorted newest first by this field.
types["journal-article"]Any Crossref work type. Use [] for all types.
querynoneBibliographic keywords. The date range and newest-first order still apply: results are sorted by date, not by relevance. Crossref's keyword matching is loose, so not every result contains every word (in one test only 28 of 246 perovskite solar matches had both words in the title). For precision, use the ISSN, DOI prefix, member, funder or type filters, or a narrower phrase.
issns, doiPrefixes, memberIds, funderDoisnoneUp to 50 values each. Values in one list are combined with OR; different lists are combined with AND.
hasAbstract, hasFunder, creativeCommonsOnlyoffWorks removed by the Creative Commons filter are not charged.
maxItems9The cap is 9 works (about $0.009) by default, including empty input {} from the API, CLI or a schedule. Raise it up to 100,000. The minimum is 1; there is no unlimited setting.
onlyNewSinceLastRun, stateKeyauto, defaultWith auto, results are deduplicated in daily feed mode. Use a separate key for each schedule. Each key remembers at most 200,000 DOIs; beyond that the earliest-saved DOIs are dropped, so they can be returned (and charged) again if a later run's date range still covers them.

Example: new NSF-funded work in two journals, checked every day:

{"lookbackDays": 2, "issns": ["0028-0836", "0036-8075"], "funderDois": ["10.13039/100000001"], "maxItems": 500}

Finding the IDs

  • Journal ISSN: on the journal's website, or search https://api.crossref.org/journals?query=<journal name>.
  • Publisher member ID: search https://api.crossref.org/members?query=<publisher name> and use the id.
  • Funder DOI: search https://api.crossref.org/funders?query=<funder name>. The DOI is 10.13039/ followed by the id.

Getting a complete daily feed

Results come newest first, and a run stops at maxItems. If more works match than maxItems allows, the run saves only the newest ones. Older works in the window can then age out of the look-back without ever being returned.

For a complete feed:

  1. Filter narrowly (journals, publisher, funder or keywords).
  2. Run once and read stats.totalResults in RUN_SUMMARY.
  3. Set maxItems comfortably above that number.

stoppedByMaxItems: true in RUN_SUMMARY means the run hit the cap.

How to schedule it

  1. Save your input as a task.
  2. Add a daily schedule in Apify Console (Schedules, then Create new).
  3. Keep mode as daily_feed and give each scheduled task its own stateKey.
  4. Optionally add an integration (Google Sheets, Slack, webhook) to send each run's new works on.

Pricing

Pay per event: $0.001 per work saved. There is no start fee and there are no other events. Works skipped by deduplication or by the Creative Commons filter are free.

  • By default a run returns at most 9 works, which costs at most $0.009.
  • 1,000 works cost $1.00. Setting a maximum cost per run stops the run early.

How many works is a day? On a weekday Crossref registers roughly 27,000 to 35,000 new journal articles, and roughly 42,000 to 87,000 works of all types (Crossref counts by created date for Monday 26 to Friday 30 October 2026). Weekends are lower. Covering everything would cost tens of dollars a day, so use filters.

Licence and privacy

  • Crossref states: "almost none of the metadata is subject to copyright, and you may use it for any purpose. Some abstracts contained in the metadata may be subject to copyright by publishers or authors."
  • The Actor therefore never outputs abstracts. hasAbstract only tells you whether one is on file.
  • Author, editor and other contributor names, ORCID iDs and affiliations are never output. The Actor returns only the counts (authorCount, editorCount). To see who wrote a work, open its DOI.
  • No account, API key or email address is needed.

How it works

  • robots.txt: the Actor checks https://api.crossref.org/robots.txt first. It currently returns 404, which means there are no rules. If the file ever disallows /works, the Actor stops.
  • Request rate: it sends at most 1 request per second, one at a time. That matches the public pool's x-rate-limit-limit: 1, x-rate-limit-interval: 1s and x-concurrency-limit: 1 headers. Crossref currently allows filtered list requests at 1 per second in the public pool and 3 per second in its polite pool. The Actor uses 1 per second in both.
  • Errors and blocks: it respects Retry-After and backs off on 429 and 5xx responses. If the API answers 403 or returns something that is not JSON, the Actor stops cleanly; it never tries to get past a block.
  • Paging: results are paged with Crossref cursors, at most 1,000 rows per page. Each page asks only for the rows the run still needs, so a default run of 9 works makes one data request.
  • Run time: a small run (maxItems 9 or less) ends well inside a minute. Every run stops starting requests 20 seconds before its timeout, so it ends SUCCEEDED with what it has.
  • When nothing could be saved: if the API is down or nothing matched, the dataset gets one free record {"type": "status", "status": "warning", ...} with the reason. Filter on type if you only want works.
  • Invalid input: if the input cannot be used (for example an unknown types value, a bad date or a field of the wrong type), nothing is fetched and the run still ends SUCCEEDED with one free record {"recordType": "status", "type": "status", "status": "error", "statusRow": true, "charged": false, "message": "Invalid input, nothing was fetched or charged: <reason>", ...}. No works are charged.
  • Fields requested: select= asks only for the fields needed for the output above. Contributor lists and abstracts are requested only to compute authorCount, editorCount and hasAbstract; they are dropped in memory and never stored.

Limits

  • A new record can take minutes to a few hours to show up in the Crossref API after its DOI is registered. The default look-back of yesterday plus today catches late arrivals.
  • The dedupe memory holds at most 200,000 DOIs per state key. When it is full, the earliest-saved DOIs are dropped first. A broad feed with a long look-back can reach this, and dropped DOIs can then be returned again.
  • A run that stops at maxItems saves the newest matches only; see "Getting a complete daily feed".
  • Crossref metadata is only as complete as each publisher's deposit. Fields such as funders, licences, abstracts and subjects are often missing.
  • The Actor reads only Crossref metadata. It does not include full text, PDFs or citation lists.

FAQ

Why are there no author names? Privacy. The Actor outputs counts only. The DOI link shows the full record.

How fast do new works appear? createdAt is when the DOI was first registered. A record can take minutes to a few hours to appear in the Crossref API. The default look-back (yesterday plus today) catches late arrivals, and deduplication stops repeats.

How long does deduplication remember? The last 200,000 DOIs per state key.

Is this complete? It returns what Crossref has, up to your maxItems; see "Getting a complete daily feed". Crossref metadata is only as complete as each publisher's deposit. Funders, licences, abstracts and subjects are often missing.

Does it include full text or PDFs? No. It reads only Crossref metadata.