Works
A work is any scholarly document: a journal article, conference paper, book or book chapter, dataset, dissertation, preprint, and more. Works are the core of OpenAlex — over 320 million of them, with tens of thousands added every day — and every other entity (authors, sources, institutions, topics, funders) connects to the works it produced, published, or funded. A work’s OpenAlex ID looks like W2741809807; fetch one at api.openalex.org/works/W2741809807.
How we build it
Where works come from
OpenAlex aggregates and builds on many open data sources. The catalog was seeded by the Microsoft Academic Graph (MAG) — Microsoft Research’s effort to catalog the scholarly literature — whose final open dataset OpenAlex adopted when the project was discontinued in 2021. The other primary source is Crossref, the open DOI-registration agency. Alongside those, works are drawn from DataCite, PubMed, HAL, institutional and subject repositories, and more; see the Overview for the full ingest picture.
From record to work
Information about a scholarly document arrives as a record. A record might be an item of Crossref metadata, an entry from a repository like arXiv or PubMed, or publicly available information from the web.
The first task with any new record is to decide whether the work it describes is already in OpenAlex:
- The record matches an existing work. Using the record’s DOI or other metadata-matching techniques, OpenAlex links it to a work it already knows about and uses the record to enrich that work.
- The record is new. If nothing matches, the record represents a work OpenAlex hasn’t seen. OpenAlex then either creates a new work from it, or sets it aside to enrich a work added later.
Not every record becomes its own work. Which new works get created follows a set of rules — for example, nearly all records from Crossref and a few other trusted sources (PubMed, arXiv, and several repositories) are eligible to become new works, while records from noisier sources are held to a higher bar. Once a work exists, OpenAlex tracks its own metadata — title, abstract (and often full text), publication date, type — and the connections that make it useful at scale: authors, institutional affiliations, the source it appeared in, topics, funders, and citations.
Citations and references
Every work carries a list of the works it cites (referenced_works) and a count of the works that cite it (cited_by_count). Both are built from the same process: extracting each work’s reference list, then matching those references to other works already in OpenAlex.
When OpenAlex creates a work record, it pulls the reference list from the record’s source (Crossref, PubMed, and similar). When the work is open access, OpenAlex can also extract references directly from the PDF, which fills gaps for works whose source records omit references. Each extracted reference is then matched to an existing work — first by DOI (highly reliable) and, when no DOI is present, by other bibliographic metadata (less reliable). A successful match counts as a reference in the citing work and a citation of the cited work.
Because citations are built by matching, a work’s referenced_works can be shorter than the reference list printed in its PDF. The common reasons: the cited work isn’t in OpenAlex (references to unknown works are dropped); the source record’s references differ from the final PDF; many Crossref records include no references at all; or a reference has no DOI and metadata matching failed. The short version for end users is in the Help center: Why are my reference counts lower than expected?
Field-Weighted Citation Impact
fwci is a snowball metric normalizing a work’s citations for its type, publication year, and subfield. The formula is citations received / citations expected: 1.0 is world average, 2.0 is twice expected, 0.5 is half.
- Citations received (numerator): citations in the publication year plus the three following years.
- Citations expected (denominator): the average of that same 4-year received count over every work with the same year, type, and subfield (articles split journals vs. conference proceedings). Calculation code.
FWCI follows the standard recipe book, so the math matches other databases, but the inputs differ: OpenAlex is more comprehensive (many uncited works pull the expected value down, raising FWCI for cited works); we classify each work into a single subfield from its own text, not its journal; and our publication year is typically the first-online date. Not every work gets an FWCI — work types that aren’t expected to accrue citations (e.g. paratext) are omitted so they don’t distort institutional averages. As of mid-2026 about 218M of 322M works (68%) carry one.
Fields
This is the canonical dictionary of every field on a work object. Fields shared with other entities (id, ids, display_name, created_date, updated_date) are documented once on Common fields; works-specific notes on them are below.
id
String. The OpenAlex ID for this work, e.g. https://openalex.org/W2741809807. See Common fields.
ids
Object. All known external identifiers for this work, as URIs where possible; keys for unknown IDs are omitted. Work-specific keys: openalex, doi, mag (Microsoft Academic Graph integer ID), pmid (PubMed), pmcid (PubMed Central).
doi
String. The work’s DOI — the canonical external ID for works. A work occasionally has more than one DOI (e.g. a preprint DOI and a published DOI); this field always holds the DOI of the published version.
display_name
String. The work’s title. Identical to title; every entity carries a display_name.
title
String. The title of the work. Identical to display_name.
type
String. The work’s type (e.g. article, preprint, dataset, paratext). Every work has exactly one. See Work types for the full vocabulary and how the type is assigned.
language
String. The language of the work’s metadata (title/abstract), in ISO 639-1 format, auto-detected with langdetect. Reflects the metadata language, not necessarily the full text, and is unset when there aren’t enough words to guess reliably. See Languages.
publication_date
String. The day the work was published, as an ISO 8601 date. Where several dates exist, OpenAlex usually picks the earliest electronic-publication date. Applies to the primary_location version; other locations may be earlier.
publication_year
Integer. The year the work was published.
biblio
Object. Old-style bibliographic pointers, mostly useful in citation contexts. All strings (values like “Spring” or “Inside cover” turn up): volume, issue, first_page, last_page.
abstract_inverted_index
Object. The abstract as an inverted index — each word mapped to its positions. OpenAlex does not ship plaintext abstracts for legal reasons; reconstruct the abstract from the index. Newer works are more likely to have one (over 60% of 2022 works vs. ~45% of pre-2000 works).
abstract_inverted_index: { "Despite": [0], "growing": [1], "interest": [2], "in": [3, 57, 73] }
authorships
List. Authorship objects, each pairing an author with their institution(s) and role on the work. Capped at the first 100 authors for performance.
corresponding_author_ids
List. OpenAlex IDs of authors whose authorship has is_corresponding: true.
corresponding_institution_ids
List. OpenAlex IDs of institutions attached to a corresponding author’s authorship.
countries_distinct_count
Integer. Number of distinct author country codes across the work’s authorships.
institutions_distinct_count
Integer. Number of distinct institutions across the work’s authorships.
institutions
List. A flattened, dehydrated list of the distinct institutions across the work’s authorships — a convenience mirror so you don’t have to walk the authorship tree. Recently added and still being backfilled, so it may be empty on works that do have affiliated institutions.
primary_location
Object. The location holding the best (closest to the version of record) copy — for a journal article, the published full text at the publisher’s DOI URL. See Locations for the object shape.
locations
List. Every unique place this work lives, each a location object.
locations_count
Integer. The number of locations.
best_oa_location
Object. The best openly available location, or null if none. “Best” is scored by: must be OA; publisher beats repository; publishedVersion beats acceptedVersion beats submittedVersion; a direct PDF link beats none; and major repositories (PubMed Central, arXiv) rank above others.
open_access
Object. The work’s access status, an OpenAccess object:
is_oa(Boolean) — true if a free-to-read full text exists somewhere (OpenAlex uses a broad definition: readable without paying or logging in).oa_status(String) — one ofdiamond,gold,green,hybrid,bronze, orclosed. The bronze-vs-gold distinction depends on the journal’s openness — see Sources.oa_url(String) — the best OA URL (closest to the version of record); may be a PDF or a landing page.any_repository_has_fulltext(Boolean) — true if any location is both OA and hosted by a repository. Surfaces “shadowed green” OA thatoa_statushides once a publisher-hosted copy exists.
See Open access for how these fields combine.
apc_list
Object. The work’s list-price article processing charge as advertised by the journal (value, currency, value_usd, provenance — currently only doaj). The listed price, not necessarily what was paid; apc_list.value of zero indicates a diamond-OA journal.
apc_paid
Object. OpenAlex’s best estimate of the APC actually paid (value, currency, value_usd, provenance). Prefers article-level data from OpenAPC (provenance: "openapc"); otherwise falls back to the list price. For article-level data only, filter apc_paid.provenance:openapc.
primary_topic
Object. The top-ranked topic for the work, with its subfield, field, and domain. Same as the first entry in topics. See Aboutness for how topics are assigned.
topics
List. Up to three ranked topics for the work, each with a score and its subfield/field/domain.
keywords
List. Short phrases derived from the work’s topics (keywords), each with a similarity score to the title and abstract. Only keywords above a score threshold are included.
concepts
List. Legacy concept tags with a score. Concepts are a superseded classification retained for continuity; topics are the current primary classification. Ancestors of assigned concepts are also included, so you may see low or zero scores.
sustainable_development_goals
List. The work’s relevance to the UN’s 17 Sustainable Development Goals, tagged by a machine-learning classifier, each with a predicted-probability score. All goals scoring above 0.4 are shown.
mesh
List. MeSH tag objects. Present only for works sourced from PubMed; an empty list otherwise.
cited_by_count
Integer. The number of works that cite this work — the count of successful reference matches pointing at it (see How we build it).
counts_by_year
List. cited_by_count for each of the last ten years, binned by year (years with zero citations omitted; citations older than ten years excluded). See Common fields, including why it can drift from a live count.
cited_by_percentile_year
Object. The percentile rank of this work’s citation count against other works from the same year, as a min/max range.
fwci
Float. The Field-Weighted Citation Impact: citations received divided by citations expected for works of the same type, year, and subfield. 1.0 is world average.
citation_normalized_percentile
Object. The same information as fwci expressed as a percentile (value, is_in_top_1_percent, is_in_top_10_percent).
referenced_works
List. OpenAlex IDs of the works this work cites (this work ➞ others). See How we build it.
referenced_works_count
Integer. The length of referenced_works.
related_works
List. OpenAlex IDs of algorithmically related works — recent papers sharing the most topics with this one.
funders
List. Dehydrated funder objects for this work. Replaces the removed grants property.
awards
List. Award/grant objects (id, display_name, funder_award_id, funder_id, funder_display_name, doi) linking the work to specific grants. Replaces the removed grants property.
has_content
Object. Whether downloadable full text exists in each format: pdf (Boolean) and grobid_xml (Boolean, TEI XML). About 60 million works have has_content.pdf: true. See Fulltext.
has_fulltext
Boolean. A convenience flag: true if any downloadable full-text format exists for this work (i.e. either has_content.pdf or has_content.grobid_xml).
content_urls
Object. URLs for downloading full-text content, present when has_content indicates the format is available: pdf and grobid_xml, each a URL under content.openalex.org (or null). Fetching requires your API key. Available only through the API, not in the snapshot.
is_retracted
Boolean. True if the work is known to be retracted, per the Retraction Watch database.
is_paratext (deprecated)
Boolean. True if the work is paratext (covers, tables of contents, mastheads, and similar). Now derived directly from type — true exactly when type is paratext. Filter with type:paratext instead.
is_xpac
Boolean. True if the work is part of the XPAC (Expansion Pack) dataset — the 190M+ works added in the Walden update, primarily datasets and single-repository records. Data quality on XPAC works is lower but improving. XPAC works are excluded from API results by default; include them with include_xpac=true.
indexed_in
List. The indexes this work is indexed in. Possible values: arxiv, crossref, doaj, pubmed.
created_date
String. The date the work was added to OpenAlex (YYYY-MM-DD). See Common fields.
updated_date
String. The ISO 8601 UTC timestamp of the last change to anything in the work object — including citation-count increases. See Common fields.
Deprecated fields
host_venueandalternate_host_venues— removed; useprimary_locationandlocations. Filtering or grouping on them errors.grants— removed; usefundersandawards.concepts— superseded bytopics(still present; see above).
In the API
The Works endpoint is at api.openalex.org/works. Fetch a single work by ID — /works/W2741809807 — or a list, and filter, search, sort, group, and page over the fields above. Works are excluded from is_xpac:true results by default. For the full list of endpoints see the endpoints index.