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 of diamond, gold, green, hybrid, bronze, or closed. 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 that oa_status hides 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.

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_venue and alternate_host_venues — removed; use primary_location and locations. Filtering or grouping on them errors.
  • grants — removed; use funders and awards.
  • concepts — superseded by topics (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.

View as Markdown