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. Useper_page=100to 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 datefrom_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