Source

Query OpenAlex with SQL

The OpenAlex scholarly graph — 508 million works, 119 million author profiles, and 3 billion citation edges — queryable with read-only SQL by DOI, title, author, venue, year, and citation count.

Surface

  • Records508M+ works
  • Canonicalopenalex.works
  • FreshnessFrozen— bounded snapshot load; freshness advances when a new OpenAlex snapshot batch lands, not on a continuous schedule
  • Extentpublication_date 1900-01-01 to 2026-08-27
  • Cadencepublic OpenAlex snapshot (2026-06-26); advances when the next snapshot lands
  • MethodOpenAlex public data snapshot (works, authors); citation edges derived from referenced_works.
  • StatsLast stats snapshot: 2026-08-27T12:07:10Z

Query surfaces

  • openalex.works
  • openalex.authors
  • openalex.cited_by
  • embeddings.openalex_works

OpenAlex public data snapshot (works, authors); citation edges derived from referenced_works.

Best for

DOI lookup with authorships, institutions, topics, and open-access locations
who cites a paper, newest first, in milliseconds via openalex.cited_by
author profiles with works_count, cited_by_count, and h-index

Fields

  • id
  • doi
  • title
  • display_name
  • ids
  • indexed_in
  • publication_date
  • publication_year
  • language
  • type
  • authorships
  • authors_count
  • corresponding_author_ids
  • corresponding_institution_ids
  • primary_topic
  • topics
  • keywords
  • concepts
  • locations
  • locations_count
  • primary_location
  • best_oa_location
  • sustainable_development_goals
  • awards
  • funders
  • institutions
  • countries_distinct_count
  • institutions_distinct_count
  • open_access
  • is_paratext
  • is_retracted
  • is_xpac
  • biblio
  • referenced_works
  • referenced_works_count
  • related_works
  • abstract_inverted_index
  • cited_by_count
  • counts_by_year
  • apc_list
  • apc_paid
  • fwci
  • citation_normalized_percentile
  • cited_by_percentile_year
  • mesh
  • has_content
  • has_fulltext
  • created_date
  • updated_date
  • doi_norm
  • search_text_lc
  • pmid_norm

Read live from the schema registry for openalex.works — 52 columns. Every relation's full contract is served by /v1/scry/schema.

Indexed predicates

  • PruneshasToken(search_text_lc, '<lowercase-token>')
  • PruneshasAllTokens(search_text_lc, ['<t1>','<t2>'])
  • PruneshasAnyTokens(search_text_lc, ['<t1>','<t2>'])
  • Prunesdoi_norm = '<lowercase-doi>'

Queries

Look up a paper by DOI

doi_norm is the lowercase bare DOI and an indexed key.

SELECT id, title, publication_year, cited_by_count
FROM openalex.works
WHERE doi_norm = '10.1038/nature14539'
LIMIT 5;

Who cites it, newest first

The reverse citation edge table is keyed by the cited work; count citers with uniq.

SELECT publication_date, citing_work_id
FROM openalex.cited_by
WHERE cited_work_id = 'https://openalex.org/W2919115771'
ORDER BY publication_date DESC
LIMIT 20;

Gaps

  • HolesNone declared on the live schema entry for openalex.works (declared holes are curation, not a measurement of completeness).
  • Noteonly doi_norm, id, and search_text_lc predicates prune the scan; publication_year and type refine results but still read every row
  • Notethe works table is a ReplacingMergeTree — count distinct works with uniq(id), not count()
  • Notewalk references forward through works.referenced_works and citations backward through openalex.cited_by; hydrate either end via openalex.works
  • Noteabstracts arrive as abstract_inverted_index on ~267M works; full text lives in academic.papers, joined on doi_norm