ORCID Researcher Profiles Scraper icon

Lead generation · Developer tools

ORCID Researcher Profiles Scraper

Search ORCID's public 20M+ researcher registry with real Lucene field queries (name, institution, email) and export flat, Pydantic-validated profile rows with optional per-researcher employment history enrichment — no API key.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

ORCID is the researcher-identity registry behind most of scholarly publishing — every ORCID iD carries a public profile with names, affiliations, and (optionally) employment history. The registry's own search API exposes a full Lucene query syntax, but no public tool surfaces it, and the pagination ceiling ORCID enforces for unauthenticated callers is easy to walk straight past without noticing. This Actor builds correct Lucene queries from plain fields, paginates honestly against ORCID's own limits, and — on request — fetches each researcher's employment history so a recruiting or research-ops list lands in one flat, ready-to-use dataset.

What we handle for you

  • Builds correct ORCID Lucene queries from plain fields — no field-name guessing, no malformed clause syntax.
  • Paginates expanded-search honestly against ORCID's own documented rows/start ceilings, re-checking num-found every page instead of trusting a stale first read.
  • Retries transient 429/5xx responses with backoff, and never retries a documented 400 — it surfaces ORCID's own error message instead.

Use cases

  • Build a recruiting longlist of researchers at a target institution or department.
  • Track a competitor lab's or department's current and former staff.
  • Enrich a CRM or outreach list with verified ORCID iDs and public affiliation history.
  • Compile an institutional or funder report of researchers matching a name/affiliation query.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
givenNames string no Researcher's given (first) name(s). Builds a `given-names:` Lucene clause.
familyNames string no Researcher's family (last) name(s). Builds a `family-name:` Lucene clause.
creditName string no Published/credit name, if different from given+family name. Builds a `credit-name:` Lucene clause.
affiliationOrgName string no Any affiliation (past or present) organization name, e.g. MIT. Builds an `affiliation-org-name:` Lucene clause.
currentInstitution string no Current employer/institution name only. Builds a `current-institution-affiliation-name:` Lucene clause.
email string no Public email address on file. Builds an `email:` Lucene clause.
freeText string no Unprefixed broad-match search term, combined with any structured fields above.
rawQuery string no Advanced: a raw ORCID Lucene query string, e.g. family-name:Smith AND affiliation-org-name:MIT. When set, this overrides every other field above.
maxResults integer no Stop after this many researcher profiles. ORCID's unauthenticated API caps effective reach at index ~11 000.
enrichEmployment boolean no Fetch each researcher's `/employments` record (one extra HTTP call per row) to fill current institution/role and full employment history. Increases run time; billed at the same per-row price.
{
  "affiliationOrgName": "MIT",
  "maxResults": 20,
  "enrichEmployment": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

orcid_idgiven_namesfamily_namescredit_nameemailinstitutionscurrent_institutioncurrent_roleemployment_history

{
  "orcid_id": "0000-0002-4392-0814",
  "given_names": "Donald",
  "family_names": "Smith",
  "credit_name": null,
  "email": null,
  "institutions": [
    "Guilford College",
    "MIT",
    "The University of Chicago"
  ],
  "current_institution": "Guilford College",
  "current_role": "Professor",
  "employment_history": [
    {
      "organization_name": "Guilford College",
      "city": "Greensboro",
      "region": "NC",
      "country": "US",
      "role_title": "Professor",
      "department_name": "Physics",
      "start_date": "2005-08-01",
      "end_date": null,
      "is_current": true
    }
  ]
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result emitted$0.0030Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

Limitations

  • Only public ORCID data is fetched — no OAuth-scoped or /read-limited fields are requested or inferred.
  • Unauthenticated ORCID reach is capped at start<=10 000 — a very broad query (e.g. a common surname with no other filter) may not reach every match. maxResults is capped at 11 000 for the same reason.
  • enrichEmployment adds one HTTP call per row and increases run time; a researcher with no employment data on file simply returns empty enrichment fields, not an error.

FAQ

Do I need an API key?
No. ORCID's public Search and /employments APIs are free and keyless.
Why does a broad query sometimes return fewer rows than expected?
ORCID caps unauthenticated pagination at index ~11 000. See Limitations above.
Can I write my own advanced query?
Yes — set rawQuery to a raw ORCID Lucene query string (e.g. family-name:Smith AND affiliation-org-name:MIT) and it overrides every structured field.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run