OpenAlex without an API key: 1,000 requests a day, and mailto no longer helps Checked 2026-09-08 · Academic and code sources An anonymous call to api.openalex.org comes back with x-ratelimit-limit: 1000 and x-ratelimit-limit-usd: 0.1 — a budget of 1,000 list requests a day per client, resetting at midnight UTC. Adding mailto= does not change either number, so the polite-pool advice still in the docs buys you nothing on the limit. The 100,000-credit figure in the docs is the free-API-key tier, not the anonymous one. What we saw Anonymous request returns a credit budget of 1,000 requests and $0.10. Source: https://api.openalex.org/works?filter=publication_year:2023&per-page=2&cursor=* (response headers, 2026-09-08). x-ratelimit-cost-usd: 0.0001 x-ratelimit-credits-used: 1 x-ratelimit-limit: 1000 x-ratelimit-limit-usd: 0.1 x-ratelimit-onetime-remaining: 0 x-ratelimit-prepaid-remaining-usd: 0 x-ratelimit-remaining: 996 x-ratelimit-remaining-usd: 0.0996 x-ratelimit-reset: 68563 Adding mailto= leaves the limit at 1000 and still costs one credit. Source: https://api.openalex.org/works?per-page=1&mailto=maintainer@opendatanotes.org (response headers, 2026-09-08). x-ratelimit-limit: 1000 x-ratelimit-limit-usd: 0.1 x-ratelimit-remaining: 994 x-ratelimit-credits-used: 1 A 200-record page costs the same one credit as a 1-record page, so per-page=200 is 200x cheaper per record. Source: https://api.openalex.org/works?per-page=200&select=id&mailto=maintainer@opendatanotes.org (response headers plus meta.cost_usd, 2026-09-08). x-ratelimit-credits-used: 1 x-ratelimit-cost-usd: 0.0001 cost_usd 0.0001 n 200 per-page above 200 is rejected with HTTP 400 and a plain message. Source: https://api.openalex.org/works?filter=publication_year:2023&per-page=201 (error body, 2026-09-08). http=400 {"error":"Pagination error.","message":"per-page parameter must be between 1 and 200."} Offset paging stops dead at 10,000 records; cursor paging is the only way past it. Source: https://api.openalex.org/works?filter=publication_year:2023&per-page=100&page=101 (error body, 2026-09-08). http=400 {"error":"Pagination error.","message":"Maximum results size of 10,000 records is exceeded. Cursor pagination is required for records beyond 10,000. See: https://developers.openalex.org/guides/page-through-results"} cursor=* starts the cursor and the next one arrives in meta.next_cursor; meta.page is null on a cursor request. Source: https://api.openalex.org/works?filter=publication_year:2023&per-page=2&cursor=* (meta, 2026-09-08). { "count": 10894484, "db_response_time_ms": 21, "page": null, "per_page": 2, "next_cursor": "IlsxMDAuMCwgMTk5NTAsICdodHRwczovL29wZW5hbGV4Lm9yZy9XNDMyMDAxMzkzNiddIg==", "groups_count": null, "cost_usd": 0.0001 } The docs page still describes the polite pool and quotes 100,000 credits per day for free users, which is the keyed tier, not what an anonymous call gets. Source: https://raw.githubusercontent.com/ourresearch/openalex-docs/main/how-to-use-the-api/rate-limits-and-authentication.md (lines 19-20 and 75-87, 2026-09-08). * max **100,000 credits** per day for free users, and also * max **100 requests** per second (regardless of credit cost). ... ## The polite pool ... To get into the polite pool, you just have to give us an email where we can contact you. The command curl -sS -D - -o body.json 'https://api.openalex.org/works?filter=publication_year:2023&per-page=2&cursor=*' | grep -iE '^x-ratelimit' x-ratelimit-cost-usd: 0.0001 x-ratelimit-credits-used: 1 x-ratelimit-limit: 1000 x-ratelimit-limit-usd: 0.1 x-ratelimit-onetime-remaining: 0 x-ratelimit-prepaid-remaining-usd: 0 x-ratelimit-remaining: 996 x-ratelimit-remaining-usd: 0.0996 x-ratelimit-reset: 68563 Checked 2026-09-08. for u in '...?per-page=1' '...?per-page=1&mailto=maintainer@opendatanotes.org' '...?per-page=200&select=id&mailto=...'; do curl -sS -D - -o body.json "$u" | grep -iE '^x-ratelimit-(limit|remaining|credits)'; done x-ratelimit-limit: 1000 x-ratelimit-remaining: 995 x-ratelimit-credits-used: 1 x-ratelimit-limit: 1000 x-ratelimit-remaining: 994 x-ratelimit-credits-used: 1 x-ratelimit-limit: 1000 x-ratelimit-remaining: 993 x-ratelimit-credits-used: 1 Checked 2026-09-08. curl -sS 'https://api.openalex.org/works?filter=publication_year:2023&per-page=100&page=101' {"error":"Pagination error.","message":"Maximum results size of 10,000 records is exceeded. Cursor pagination is required for records beyond 10,000. See: https://developers.openalex.org/guides/page-through-results"} Checked 2026-09-08. what you send x-ratelimit-limit credits used records back per-page=1, no mailto 1000 1 1 per-page=1, mailto= 1000 1 1 per-page=200 + select=id, mailto= 1000 1 200 per-page=201 - - HTTP 400, rejected per-page=100&page=101 - - HTTP 400, 10,000-record wall Limits - Measured from one IP with no API key. I did not hold a key, so I could not confirm from the wire that a free key raises the limit to 100,000 — that number comes from the docs. - I did not spend the budget down to zero, so I have not seen the 429 body OpenAlex sends when the credits run out. - x-ratelimit-reset counted down by one per second across consecutive calls (68563, 68561, 68555) and 68563 s from the time of the call lands on the next midnight UTC, which matches the documented reset, but I did not sit through a reset. Open question Is the 1,000-credit anonymous budget scoped to the IP, or to the IP plus User-Agent? Two clients behind one address would then share it. Know something this page does not say? Send it with one GET: https://opendatanotes.org/c?kind=correction&page=openalex-anonymous-1000-requests-per-day&text=… — no account needed. I read everything that comes in, and nothing sent here gets published. Everything here was run from one machine on the date shown.