Crossref DOI Metadata – Clean JSON and CSV avatar

Crossref DOI Metadata – Clean JSON and CSV

Pricing

$1.00 / 1,000 normalized doi metadata

Go to Apify Store
Crossref DOI Metadata – Clean JSON and CSV

Crossref DOI Metadata – Clean JSON and CSV

Normalize DOI lists with sourced Crossref metadata, duplicate reports, precise dates and spreadsheet-safe CSV. No LLM calls.

Pricing

$1.00 / 1,000 normalized doi metadata

Rating

0.0

(0)

Developer

kalle walle

kalle walle

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

Crossref DOI Metadata Pilot

Turn a bounded list of DOIs into consistent bibliographic records, with provenance, duplicate counts, and explicit error reports. Use this Actor for bibliography cleanup, spreadsheet imports, and research workflows that already have identifiers and need predictable JSON or CSV output.

All metadata comes from the fixed official endpoint https://api.crossref.org/works/{doi}. The Actor does not visit publishers, download papers, crawl arbitrary websites, or use an LLM to complete missing fields. Missing deposited values remain null and appear in missingFields. A DOI metadata match does not establish a paper's quality or authenticity.

Input and first run

Supply 1–500 DOI strings, each at most 2,048 characters. Equivalent normalized identifiers are fetched once within the batch.

{
"dois": ["10.1038/nphys1170", "https://doi.org/10.1038/NPHYS1170"],
"maxItems": 100,
"includeAuthors": false,
"requestIntervalMillis": 1100,
"requestTimeoutSeconds": 15,
"maxRetries": 2,
"maxRunSeconds": 600
}

These two inputs identify the same normalized DOI and produce at most one successful row. Bare identifiers, a leading doi: prefix, and resolver URLs on doi.org, dx.doi.org, or www.doi.org are accepted. Resolver URLs containing credentials, ports, query strings, or fragments are rejected. Free-text citations and other website URLs are unsupported.

FieldDefaultBehavior
doisRequiredBetween 1 and 500 strings
maxItems1001–500 successful unique output records; missing/invalid DOIs do not count
includeAuthorsfalseExplicit opt-in for up to 100 deposited public author names per record
requestIntervalMillis11001,000–60,000 ms between sequential request starts; upstream headers can increase the wait
requestTimeoutSeconds151–30 seconds per HTTP request
maxRetries20–2 retries for network failures, HTTP 429, and HTTP 5xx
maxRunSeconds60030–1,800 seconds before starting more lookups; the current lookup and bounded retries may finish later

No Crossref key or contact email is required. Unknown input fields are rejected.

Output and exports

The default Apify dataset holds successful unique records with recordId, doi, title, publicationType, publisher, containerTitle, publicationDate, publicationDatePrecision, publicationDateParts, authorCount, authors, referenceCount, licenseUrls, sourceUrl, retrievedAt, missingFields, and warnings.

Publication dates preserve deposited year, month, or day precision. A year-only date stays a year; no January 1 is invented. Known presentation tags are removed from selected text fields; mathematical comparisons and unknown markup remain. Length limits, markup removal and applicable text/author truncation notices appear in warnings.

Author names are omitted unless includeAuthors: true; authors otherwise remains an empty array. authorCount still counts deposited author entries. Abstracts, full texts, author profiles, affiliations, and email addresses are not output.

The default key-value store contains:

  • REPORT: input/duplicate/emitted counts, error codes with zero-based input indexes, deferred DOIs, and stop reason.
  • STATE: checkpoint and normalized input fingerprint for recovery in the same run/storage.
  • OUTPUT.csv: selected-column CSV containing collected successful rows after normal processing finishes.

The dataset JSON includes all output fields. The dedicated CSV quotes cells, escapes double quotes, and prefixes potential spreadsheet formulas with an apostrophe. Array values are JSON text. This protection applies to OUTPUT.csv; external exporters may behave differently.

Errors, limits, and recovery

Invalid identifiers and Crossref 404s go into REPORT, without becoming successful dataset items. Persistent upstream errors, rate limits, or invalid responses pause the remaining list. Inspect deferredDois and stopReason for partial output. Other stop reasons are max_items, time_limit, and customer_budget. Crossref response bodies larger than 2 MiB are rejected.

Recovery requires the same parsed input configuration. Existing dataset rows without a matching checkpoint stop the run. Pending dataset delivery is reconciled against actual dataset rows. An uncertain missing write stops for review instead of blindly appending again. Upstream retry deadlines are saved as resumeAfter and survive a restart. This reduces duplicate-output/charging risk; it is not an exactly-once billing guarantee under all platform failures. Use fresh run storage for an independent batch.

Pricing and current pilot status

The configured pay-per-event price is $0.001 per successful unique result ($1 per 1,000 results), with no Actor-start event. Check the current Pricing tab before a run and set your maximum charge in Apify. In pay-per-event mode, this implementation accepts only the automatic dataset-item event apify-default-dataset-item, priced at no more than $0.001 per successful result. Unexpected monetization configuration stops processing.

Errors, duplicates, invalid inputs, and skipped records are not pushed as successful result events. Separate exports or services you use in your Apify account can have their own fees. Functional tests on Apify confirmed one result event for one unique record and no extra result after resuming the same test run. These owner tests establish processing behavior; they do not establish customer payments, profit, or payouts.

Source, use, and support

Metadata comes from Crossref's public REST API. Deposited records may be incomplete or outdated. A license URL in a record does not itself establish permission to reuse the paper's full text. Only process data you are entitled to use, especially when opting into author names.

Once published, report unexpected behavior through the Actor's Issues tab with a run ID, affected DOI, and REPORT error code. Never include credentials. This independent pilot is not affiliated with or endorsed by Crossref.