Getting started

Authentication & Pricing

OpenAlex data is and will remain available at no cost. Our data snapshot is totally free for bulk download. The API is a freemium service with free daily usage—$0.10/day with no key, or 10× that ($1/day) with a free API key—and after that you pay for what you use. We sell services, not data.

Getting an API Key

To use the API at scale, you need a key. It’s free—just make an account (takes 30 seconds) and copy your key from openalex.org/settings/api. Then add api_key=YOUR_KEY to your API calls:

curl "https://api.openalex.org/works?api_key=YOUR_KEY"

Costs

Pricing by Endpoint

Tip: Use per_page=100 to load many results per query–it makes your query budget go much further.

Operation Description Cost per 1,000 calls
Get singleton Retrieve a single entity by ID or DOI Free
List+Filter Query and filter entities $0.10
Search Full-text keyword search $1
Semantic search AI-powered semantic search $1
Content download Cached PDF via content API $10
Text/Aboutness (deprecated) Topic classification $10

Note: The openalex.org website runs on this same API, so browsing it draws from the same budget (anonymous browsing uses the $0.10/day no-key budget; sign in for $1/day). Viewing a single record’s page (one work, author, source, etc.) is free, but a search or a results page loads several billable calls (the list of results plus its facets/charts).

One website search costs more than one API call. A single programmatic /works?search= call costs 10 credits, but one search on the website costs roughly 18 credits—the search itself plus ~5 facet/chart calls that fill the sidebar. So “$1/day ≈ 1,000 searches” holds for direct API calls; browsing the website is about 1.8× costlier per search (closer to ~550/day). A prepaid balance covers anything beyond your daily budget.

Common Activity Costs

Activity Endpoint Calls Results Cost
Search “climate change AND kelp” Search 103 10,205 $0.10
All works from Harvard List+Filter 8,707 870,627 $0.87
Retrieve works by DOI from a list Singleton 1,000,000 1,000,000 Free
Daily research (20 searches, 200 filters, 50 lookups) Mixed 270 ~27,000 $0.04
Download 1,000 PDFs Content 1,000 1,000 PDFs $10.00

What You Can Do for Free Every Day

Your free API key gives you $1 of free usage every day. With that, you can do a mix of:

Action Calls Results Example
Get a single entity Unlimited Unlimited Look up a work by DOI
List+filter 10,000 1,000,000 All works from MIT in 2024
Search 1,000 100,000 Full-text search for “CRISPR”
Content download 100 100 PDFs Download a paper’s full text

Without a key you get $0.10/day—a tenth of the above, enough to try the API. Get a free key for 10× the budget.

Increased Limits

Need more than $1/day? Paid plans give you higher daily allowances and prepaid usage.

Your daily budget refills every day at midnight UTC. A prepaid balance is a separate pool that automatically kicks in once your daily budget is spent for the day—buying prepaid credit doesn’t change your daily budget, it just covers usage beyond it (and doesn’t expire daily).

Keeping Tabs on Costs

Per Call

Rate Limit Headers

Every API response includes headers showing your current status:

Header Description
X-RateLimit-Limit Your total daily limit
X-RateLimit-Remaining Remaining for today
X-RateLimit-Credits-Used Cost of this request
X-RateLimit-Reset Seconds until reset (midnight UTC)

Response Meta

Every response includes a meta object (see Response Format) with the cost of that request and the total result count, so you can estimate the cost of paginating through all results before committing:

"meta": {
  "count": 870627,
  "db_response_time_ms": 19,
  "page": 1,
  "per_page": 100,
  "groups_count": null,
  "cost_usd": 0.0001
}

Here, cost_usd tells you this call cost $0.0001 (list+filter calls are $0.10 per 1,000), and count tells you 870,627 results at 100 per page = 8,707 calls = $0.87 total.

Overall

Usage Dashboard

Check your usage anytime at openalex.org/settings/usage—accessible from the battery icon in the lower left of openalex.org.

Rate Limit Endpoint

You can also check programmatically via the /rate-limit endpoint:

curl "https://api.openalex.org/rate-limit?api_key=YOUR_KEY"
{
  "api_key": "abc...xyz",
  "rate_limit": {
    "daily_budget_usd": 1,
    "daily_used_usd": 0.05,
    "daily_remaining_usd": 0.95,
    "prepaid_balance_usd": 0,
    "prepaid_remaining_usd": 0,
    "prepaid_expires_at": null,
    "resets_at": "2026-02-20T00:00:00.000Z",
    "resets_in_seconds": 43200,
    "endpoint_costs_usd": {
      "singleton": 0,
      "list": 0.0001,
      "search": 0.001,
      "semantic": 0.01,
      "content": 0.01,
      "text": 0.01
    }
  }
}

Tips

Exceeding Limits

If you exceed your daily limit or make more than 100 requests per second, you’ll get 429 Too Many Requests errors.

Individual queries also have these constraints:

Limit Value
OR values per filter 100
per_page maximum 100
sample maximum 10,000
Basic paging limit 10,000 results

To retrieve more than 10,000 results, use cursor paging.

Usage Tips

Best practices:

Browser testing: The API uses simple GET requests, so you can test any request in your browser. Install a JSON formatter extension for a better experience:

Efficient bulk extraction:

# Use maximum page size
requests.get("https://api.openalex.org/works?per_page=100&api_key=YOUR_KEY")

# Batch DOI lookups (up to 100 at once)
dois = "10.1234/a|10.1234/b|10.1234/c"
requests.get(f"https://api.openalex.org/works?filter=doi:{dois}&api_key=YOUR_KEY")
View as Markdown