Filter

Filters narrow your results to entities matching specific conditions. Use the filter parameter with attribute-value pairs:

filter=attribute:value,attribute2:value2

Note: Filters are case-insensitive.

Examples

# Works by type
curl "https://api.openalex.org/works?filter=type:book"
# Authors by ORCID status
curl "https://api.openalex.org/authors?filter=has_orcid:true,works_count:>100"
# Sources with many works
curl "https://api.openalex.org/sources?filter=works_count:>1000"

Logical expressions

Inequality

For numerical filters, use < and > for inequalities:

# Sources hosting more than 1000 works
https://api.openalex.org/sources?filter=works_count:>1000

Some attributes have convenience filters like from_publication_date and to_publication_date:

# Works published between Jan 1-26, 2022
https://api.openalex.org/works?filter=from_publication_date:2022-01-01,to_publication_date:2022-01-26

Negation (NOT)

Prepend ! to negate any filter:

# All institutions except those in the US
https://api.openalex.org/institutions?filter=country_code:!us

Intersection (AND)

Comma-separated filters are combined with AND:

# Works cited more than once AND open access
https://api.openalex.org/works?filter=cited_by_count:>1,is_oa:true

For AND within a single attribute, repeat the filter or use +:

# Repeating filters
# Works with authors from France AND UK
https://api.openalex.org/works?filter=institutions.country_code:fr,institutions.country_code:gb
# Using + symbol
# Works with authors from France AND UK
https://api.openalex.org/works?filter=institutions.country_code:fr+gb

Note: The + syntax doesn’t work for search filters, boolean filters, or numeric filters.

Addition (OR)

Use the pipe | to match any of multiple values:

# Works with authors from France OR UK
https://api.openalex.org/works?filter=institutions.country_code:fr|gb

This is efficient for retrieving many records by ID at once:

# Get two works by DOI in one request
https://api.openalex.org/works?filter=doi:https://doi.org/10.1371/journal.pone.0266781|https://doi.org/10.1371/journal.pone.0267149

Warning: OR limit: You can combine up to 100 values with | in a single filter. Use per_page=100 to get all results.

Warning: OR works within a filter, not between filters. This will return an error:

# INVALID: OR between different filters
https://api.openalex.org/works?filter=institutions.country_code:fr|primary_location.source.issn:0957-1558

Sync filters (paid plans)

Paid plans unlock two premium filters, available on every entity type, that select records by when they changed in OpenAlex:

  • from_created_date — records created since a date
  • from_updated_date — records updated (or created) since a date
# Works that changed since July 30
https://api.openalex.org/works?filter=from_updated_date:2026-07-30

These make the API itself a sync mechanism: poll on your own schedule and upsert the results by id. Because they combine with any other filter, they’re especially good at keeping a subset of OpenAlex fresh without any bulk infrastructure — for example, just your institution’s works:

# Works from one institution that changed since July 30
https://api.openalex.org/works?filter=institutions.id:I27837315,from_updated_date:2026-07-30

For how this method compares with the snapshot-based approaches (and how to handle deletions and merges), see Sync.

Filter by saved collection

The collection: filter narrows results to the entities you’ve saved in one of your collections. It’s available on every entity type collections support — /works, /authors, /sources, /institutions, /topics, /sdgs, /funders, /publishers, /keywords, /concepts — and requires a Bearer API key for the user who owns the collection.

GET https://api.openalex.org/works?filter=collection:col_beNWUTw6qY
Authorization: Bearer <api_key>

Negation with ! is supported, and collection: combines with any other filter. One collection: filter is allowed per request — see the Collections guide for the full set of caps and behaviors.

Available filters by entity

Each entity type has its own set of filterable fields. See the API reference for complete filter lists:

Entity Filters
Works publication_year, type, open_access.is_oa, author.id, institutions.id, cited_by_count, doi, has_abstract, and ~150 more
Authors has_orcid, last_known_institutions.id, works_count, cited_by_count, orcid
Sources is_oa, is_in_doaj, type, country_code, host_organization, issn
Institutions country_code, type, is_global_south, continent, ror, has_ror
Topics domain.id, field.id, subfield.id, works_count
Keywords works_count, cited_by_count
Publishers country_codes, hierarchy_level, ror, parent_publisher
Funders country_code, is_global_south, continent, ror, awards_count

Info: Looking for text search? Filters match exact values. For full-text search in titles, abstracts, and other fields, see Searching.

Last updated

View as Markdown