Sources

A source is a venue where works appear: a journal, a conference proceedings series, a preprint or institutional repository, an ebook platform, or a book series. Sources are how OpenAlex connects works to the places that host them — every work links to one or more sources through its locations, and each source aggregates the works it published. OpenAlex tracks about 255,000 sources; a source’s OpenAlex ID looks like S137773608, and you can fetch one at api.openalex.org/sources/S137773608.

How we build it

Where sources come from

Sources are drawn from the works that flow into OpenAlex: as records arrive from Crossref, the Microsoft Academic Graph (MAG), DataCite, PubMed, repositories, and other feeds, the venues they name become sources. A source is identified primarily by its ISSN — OpenAlex groups every ISSN that shares an issn_l (linking ISSN) into a single source — with additional sources coming from repository and platform registries that have no ISSN. Each source is attached to the publisher that runs it via host_organization.

Source types

Every source carries exactly one type, assigned from its metadata and behavior. The vocabulary (see Source types):

Type What it is Rough count
journal Peer-reviewed serials — the large majority of sources ~206,000
ebook platform Book-hosting platforms ~25,000
conference Conference proceedings series ~10,000
repository OA repositories like arXiv or institutional repositories ~7,000
book series Serial book publications ~7,000
other / metadata Everything else, and metadata-only sources ~130

No quality bar, by design

OpenAlex deliberately does not impose a quality bar on which sources it indexes — its inclusion criteria are more like arXiv than Web of Science. There are good reasons to index everything: “lower-quality” sources are useful as objects of study; sources that are inadequate for one purpose are ideal for another (grey literature, regional literature, early-career work); low-power studies aggregate into high-power meta-analyses; and excellent work is too often excluded from traditional indexes merely for being non-English or from the Global South. Most importantly, “lower-quality” content can always be filtered out if it’s included — it can’t be added back if it’s not.

Predatory journals are handled the same way. There is no authoritative list of them, the lists change constantly, and the definition itself is contested — from faked peer review (obviously problematic) to any publisher that inflates accepted volume for revenue (a practice common even at “reputable” sources). Rather than maintain a deny list and play cat-and-mouse with bad actors who can simply rebrand, OpenAlex indexes everything and lets analysts narrow down.

Allow lists

OpenAlex prefers allow lists (curated lists of trusted sources) over deny lists: they’re more transparent, easier to maintain, and a more robust foundation for retrieval. Two membership flags let you narrow to trusted sources:

More filters like these are planned; the goal is a “quality vs. quantity” slider that users can adjust to their needs. Because the database is open, a list of sources to exclude is easy for one librarian to build and share; ask your local librarian if they’ve curated one.

CWTS Core vs. Web of Science

The Centre for Science and Technology Studies (CWTS) at Leiden University maintains the Core sources list — the subset of OpenAlex sources included in their Leiden Ranking Open Edition. Filtering works by primary_location.source.is_core:true returns only publications from those sources, letting you explore the data behind the rankings (or negate it to see what they exclude). CWTS Core is not the Web of Science Core Collection, Clarivate’s selective journal list — the similar names are coincidence, and the two have different maintainers, criteria, and contents.

Fully-OA journals and open access

Whether a journal is fully open access matters beyond the journal itself: it determines the OA status of the works inside it. An OA article in a fully-OA journal is gold; the same article in a toll-access journal is hybrid or bronze — so a work’s oa_status links back to the source’s openness recorded here. Two source fields carry the determination:

  • is_in_doaj — the journal is indexed in DOAJ (about 23,000 sources). DOAJ verifies credibility and legitimacy; OpenAlex does no independent vetting, so use this field when legitimacy matters. If a journal is in DOAJ it is fully OA (is_oa=true, is_in_doaj=true).
  • is_oa — the journal is fully OA, whether or not DOAJ lists it (about 65,000 sources).

Not every fully-OA journal is in DOAJ — smaller titles and journals from the developing world often aren’t. For those, OpenAlex applies two more checks: (1) is it from a known fully-OA publisher (a small allow list, e.g. many SciELO-model publishers)? and (2) does it publish only OA articles? Because OpenAlex indexes a journal’s complete output, it can simply observe whether every article is OA — a check that credits smaller publishers who never registered with DOAJ. A journal passing either check gets is_oa=true, is_in_doaj=false. This observation-based check also detects flipped journals (oa_flip_year): an OA article published before a journal’s flip date is hybrid or bronze, one published after is gold.

APC data

The article processing charge (APC) is the fee some journals charge to publish a work OA. At the source level OpenAlex records the journal’s list price in apc_prices (per currency) and apc_usd; at the work level it records both the list price and OpenAlex’s best estimate of what was actually paid. List prices are sourced from DOAJ plus manual curation. Two caveats: OpenAlex stores one (current-year) list price per journal, so historical estimates apply today’s price to an older year; and DOAJ coverage skews toward fully-OA journals, leaving hybrid journals — where much APC spending happens — thinly covered. For year-by-year list prices, Butler et al. 2024 (Harvard Dataverse, CC0) provides publisher price lists per journal per year (2019–2023, six large publishers, ~8,711 journals); OpenAlex is evaluating integrating this dataset but has not yet done so. See Journal quality & OA status for the full APC discussion, including how to estimate institutional APC spend.

Fields

This is the canonical dictionary of every field on a source object. Fields shared with other entities (id, ids, display_name, works_count, cited_by_count, summary_stats, counts_by_year, created_date, updated_date) are documented once on Common fields; source-specific notes on them are below. The filter/sort/group_by operations each field supports come from the properties catalog.

id

String. The OpenAlex ID for this source, e.g. https://openalex.org/S137773608. See Common fields.

ids

Object. All known external identifiers for this source, as URIs where possible. Source-specific keys: openalex, issn_l, issn (a list), mag (Microsoft Academic Graph integer ID), wikidata, fatcat. Filter/sort on ids.openalex and ids.mag.

display_name

String. The name of the source (a journal or repository title). Every entity carries a display_name. Filterable and searchable via the search parameter.

issn_l

String. The linking ISSN — the canonical ISSN that groups a source’s print and electronic ISSNs into one. This is OpenAlex’s primary way of merging ISSN variants into a single source. Filterable, sortable, and groupable.

issn

List. All ISSNs known for this source (print and electronic), including the issn_l. Null for sources without an ISSN (many repositories). Filterable, sortable, groupable; use has_issn to filter on presence.

host_organization

String. The OpenAlex ID of the publisher (or, for a repository, the institution) that hosts this source. Filter/sort/group_by; also available as host_organization.id.

host_organization_name

String. The display name of the host_organization, denormalized onto the source for convenience.

host_organization_lineage

List. OpenAlex IDs tracing the host_organization up its publisher hierarchy (e.g. an imprint’s parent, and its parent’s parent). Filter/sort/group_by on the whole lineage to catch every source under a top-level publisher.

type

String. The source’s type — one of journal, ebook platform, conference, repository, book series, other, or metadata. Every source has exactly one; see Source types for the vocabulary and How we build it for counts. Filter/sort/group_by.

is_oa

Boolean. True if the source is a fully open-access venue — every work it publishes is OA. Drives the gold-vs-hybrid/bronze status of the works inside it (see How we build it). About 65,000 sources are is_oa=true. Filter/sort/group_by.

is_in_doaj

Boolean. True if the source is indexed in the Directory of Open Access Journals, which vets the legitimacy of fully-OA journals (about 23,000 sources). DOAJ membership implies is_oa=true. Filter/sort/group_by; is_in_doaj_since_year records when membership began.

is_in_doaj_since_year

Integer. The year the source entered DOAJ; null if it isn’t in DOAJ. Filter/sort.

is_core

Boolean. True if the source is on the CWTS Core sources list — the venues behind the Leiden Ranking (about 36,000 sources). Not the same as the Web of Science Core Collection; see How we build it. Filter/sort/group_by.

is_high_oa_rate

Boolean. True if a high share of the source’s works are open access. A softer signal than is_oa (fully-OA). Filter/sort/group_by; is_high_oa_rate_since_year records when this became true.

is_high_oa_rate_since_year

Integer. The year the source became is_high_oa_rate; null otherwise. Filter/sort.

is_in_scielo

Boolean. True if the source is part of the SciELO network of open-access journals (predominantly Latin American). Present on the object; not currently exposed as a filter.

is_ojs

Boolean. True if the source runs on Open Journal Systems, the widely used open-source journal-publishing platform. Filter/sort/group_by.

is_preprint_repository

Boolean. True if the source is a preprint repository (e.g. arXiv, bioRxiv). Filter/sort/group_by.

oa_flip_year

Integer. If the journal flipped from toll-access to open access, the year it did so; null otherwise. Works published before the flip are hybrid/bronze, after it gold — see How we build it. Filter/sort.

apc_prices

List. The source’s list-price APC as advertised, one entry per currency (price, currency). The listed price, not what any author paid. Filter/sort/group_by on apc_prices.currency and apc_prices.price. See How we build it.

apc_usd

Integer. The apc_prices list price converted to USD — a single comparable number across sources. Filter/sort/group_by.

apc_usd_by_year

List. The USD list price by year (year, price), where OpenAlex has year-specific data. Present on the object; the single-value apc_usd is the filterable field.

oa_works_count

Integer. How many of the source’s works_count works are open access. Also appears per-year inside counts_by_year.

first_publication_year

Integer. The earliest publication year of any work in this source. Filter/sort.

last_publication_year

Integer. The most recent publication year of any work in this source (ongoing journals show the current year). Filter/sort.

country_code

String. The ISO 3166-1 alpha-2 country code of the source’s home country (typically its publisher’s). Filter/sort/group_by; continent and is_global_south are derived from it.

homepage_url

String. The source’s homepage on the web. Present on the object; not a filter.

societies

List. Learned or scholarly societies associated with the source (each with an organization name and URL), e.g. a journal published on behalf of a society. Often empty.

alternate_titles

List. Other names the source is known by (alternate or former titles). Available as a column.

abbreviated_title

String. The source’s standard abbreviated title (e.g. the ISO 4 abbreviation), when known. Available as a column.

topics

List. The topics most associated with the works published in this source, ranked, each with a count and its subfield/field/domain. See Aboutness. Filter on topics.id.

topic_share

List. Like topics, but scored by the source’s share of each topic relative to all sources — surfacing the topics this source is disproportionately central to, not just its most frequent. Filter/sort/group_by on topic_share.id.

counts_by_year

List. Per-year rollup of the source’s works_count, oa_works_count, and cited_by_count for roughly the last ten years. See Common fields, including why its sort direction isn’t consistent across entity types.

summary_stats

Object. Precomputed bibliometric indicators for the source: 2yr_mean_citedness (a journal impact factor-style measure), h_index, and i10_index. Filter/sort/group_by on each. See Common fields.

works_count

Integer. The number of works published in this source. See Common fields. Filter/sort/group_by.

cited_by_count

Integer. Total citations received across all of the source’s works. See Common fields. Filter/sort/group_by.

works_api_url

String. A ready-made Works API URL that returns every work in this source — i.e. api.openalex.org/works?filter=primary_location.source.id:S…. A convenience link, not a filterable field.

created_date

String. The date the source was added to OpenAlex (YYYY-MM-DD). See Common fields.

updated_date

String. The ISO 8601 UTC timestamp of the last change to the source object. See Common fields.

In the API

The Sources endpoint is at api.openalex.org/sources. Fetch a single source by ID — /sources/S137773608 — or a list, and filter, search, sort, and group over the fields above (for example filter=is_in_doaj:true,type:journal or group_by=type). For the full list of endpoints see the endpoints index.

View as Markdown