# The Guardian Open Platform

> theguardian.com | Data APIs; 1 record: free tier, limits, identity cost and evidence.

HTML https://fshy.ajam.dev/p/theguardian/ | JSON https://fshy.ajam.dev/api/v1/entity/theguardian.json | how to read a record: https://fshy.ajam.dev/llms-full.txt

## The Guardian Open Platform (Content API)

- `data-apis/guardian-open-platform` | qualifies-with-caveat | evidence documented | binding request-rate | category news content API | tier Developer
- needs card no, phone no, ID no, institution no | verified 2026-11-03T00:28:44.305Z (live) | stale on 2026-12-04
- url https://open-platform.theguardian.com/access/
- free tier: Developer key, free: up to 500 calls a day and 1 call a second, with article text, over 1,900,000 pieces of content. | unit: requests | metered on: request-count | read on: 2026-10-31 | source: [1] | note: The 500 a day is per API key and expires at the close of each day. One key is issued for each website that uses the content. The archive dates back to 1999. A commercial key has a custom throttle and quota, priced by usage. The access page listed 12 calls a second and 5,000 calls a day before a later change to 1 and 500.
- per-object cap: page-size 1 to 50 items a call | note: Paging by page number stops at a depth of several thousand results; deeper paging goes through the content /next endpoint.
- retention: content held must be replaced by re-requesting it, or deleted, at least every 24 hours | source: [2]
- egress: not applicable | metered: no | source: [1]
- identity: email | detail: The developer-key form asks for a name, an email entered twice, an educational institution or company name, a reason (student project, academic research, non-commercial app development, other), a short description of use, whether content will be displayed, a product name, optional product and company URLs, and acceptance of the terms; a Google reCAPTCHA is shown when Register is pressed, and the key is sent to the email. The institution or company name is a required free-text field of at most 200 characters with no list or pattern. No card or phone field. The Open Platform front page offers the developer key as free instant access, the key tool's repository describes self-serve key management, and the commercial key is a request that the team follows up. Posts on the vendor's support forum describe an email with a verification link sent after the form, a link that can be invalid or expired, a refusal to register again with an address already in use, and a key registered to a free-mail address; a course page describes a confirmation email followed by a second email with the key. Whether the institution or company name is checked after the form is sent is unverified: behind a sign-up. How soon the key email arrives is unverified: behind a sign-up.
- interface: rest
- limits:
  - request-rate (binding): 500 calls a day per developer key [1]
  - request-rate (binding): 1 call a second per developer key (60 calls a minute) [1]
  - retention-clamped: content held must be replaced or deleted at least every 24 hours [2]
  - per-object-cap: page-size 1 to 50 items a call [3]
- limits note: A developer key with no use for 90 days is deleted.
- binding note: 500 calls a day is met first; the 24-hour hold limit governs any local copy.
- interface detail: REST over HTTPS at content.guardianapis.com (/search, /tags, /sections, /editions and single items); the key goes in the api-key parameter
- endpoint: https://content.guardianapis.com/search
- tooling: any HTTP client
- composes with: Full article text in the answer, within 500 calls a day; any held copy is refreshed or dropped within 24 hours.
- reliability: Keys can be cancelled or suspended at any time without notice. A call with the demo key test answered HTTP 401 on 2026-10-31.
- notes: Bulk path: none; the Content API is the only route, paged through /search and /next.
- evidence note: Quota, rate, hold limit and form fields are read from first-party pages, and staff replies on the vendor's support forum give the daily and per-minute limits of a developer key; a keyless call answered HTTP 401 'No API key found in request' and the demo key test answered HTTP 401 'Unauthorized', so no call returned content and the enforced rate is unmeasured. Key issuance rests on the form and on user posts, not on a completed registration. A call with an issued key, reading its rate-limit response headers, would move the limits to measured.
- evidence:
  - [1] 2026-10-31: the developer key allows up to 1 call a second | capture: sha256:52ab31421b93c31c015ced26e22fed4862edc8516436b1e2f6110e4864f0e18a | quote: Up to 1 call per second
  - [1] 2026-10-31: the developer key allows up to 500 calls a day | capture: sha256:52ab31421b93c31c015ced26e22fed4862edc8516436b1e2f6110e4864f0e18a | quote: Up to 500 calls per day
  - [1] 2026-10-31: the developer key reaches article text and over 1,900,000 pieces of content | capture: sha256:52ab31421b93c31c015ced26e22fed4862edc8516436b1e2f6110e4864f0e18a | quote: Access to over 1,900,000 pieces of content
  - [1] 2026-10-31:  | capture: sha256:52ab31421b93c31c015ced26e22fed4862edc8516436b1e2f6110e4864f0e18a
  - [1] 2026-10-31: the developer key includes article text | capture: sha256:52ab31421b93c31c015ced26e22fed4862edc8516436b1e2f6110e4864f0e18a | quote: Access to article text
  - [1] 2026-10-31: the commercial key has a custom throttle and is priced by usage | capture: sha256:52ab31421b93c31c015ced26e22fed4862edc8516436b1e2f6110e4864f0e18a | quote: Price dependent on usage
  - [4] 2026-10-31: the archive dates back to 1999 | capture: sha256:4015d2b3cff26bd18d9690b3df0cc80067550a87e129c3cfbb5de182d33138e8 | quote: Our API stores all articles, images, audio and videos dating back to 1999.
  - [2] 2026-10-31: the 500 a day is counted per API key | capture: sha256:6e74ba4ec8c3ee8b458cc9671c545d1557f8b14c60bab4964f5245961b2ee2a4 | quote: (b) You may make up to 500 requests for OP Content per API key per day
  - [2] 2026-10-31: the daily allowance expires at the close of each day | capture: sha256:6e74ba4ec8c3ee8b458cc9671c545d1557f8b14c60bab4964f5245961b2ee2a4 | quote: This allowance will expire at the close of each day
  - [2] 2026-10-31: content held must be replaced or deleted at least every 24 hours | capture: sha256:6e74ba4ec8c3ee8b458cc9671c545d1557f8b14c60bab4964f5245961b2ee2a4 | quote: You must either replace (by re-requesting) or delete all OP Content you hold (whether or not published on Your Website) at least every 24 hours.
  - [2] 2026-10-31: one key is issued for each website | capture: sha256:6e74ba4ec8c3ee8b458cc9671c545d1557f8b14c60bab4964f5245961b2ee2a4 | quote: (i) Apply for a separate API key for each website through which you wish to access OP and on which you will publish OP Content
  - [2] 2026-10-31: keys can be cancelled or suspended at any time without notice | capture: sha256:6e74ba4ec8c3ee8b458cc9671c545d1557f8b14c60bab4964f5245961b2ee2a4 | quote: (a) We may cancel or suspend the OP, or one or all of the API keys issued to you for Your Website(s), at any time for any period and without notice.
  - [5] 2026-10-31: the key is sent to the email given on the form | capture: sha256:7dfd2a75f668ac1d278c8370c3c47f7113c0c36ffb0883df21065a09695a5ffc | quote: Please provide a working email address that you own otherwise you will not receive your API key
  - [5] 2026-10-31: the form asks for an educational institution or company name | capture: sha256:7dfd2a75f668ac1d278c8370c3c47f7113c0c36ffb0883df21065a09695a5ffc | quote: Educational institution or company name
  - [5] 2026-10-31: the form asks for a reason chosen from a list | capture: sha256:7dfd2a75f668ac1d278c8370c3c47f7113c0c36ffb0883df21065a09695a5ffc | quote: Reason for key Select option... Student project Academic research Non-commercial app development (including news apps) Other
  - [5] 2026-10-31: the form asks whether Guardian content will be displayed | capture: sha256:7dfd2a75f668ac1d278c8370c3c47f7113c0c36ffb0883df21065a09695a5ffc | quote: Will Guardian content be displayed? Select option... Yes No
  - [3] 2026-10-31: page-size runs 1 to 50 items | capture: sha256:359628692e8b222739f9e46be5afd30fc4bdf43fe435ad6216c655b045fd279e | quote: | `page-size` | Modify the number of items displayed per page | Integer | 1 to 50 |
  - [3] 2026-10-31: deep paging goes through the content /next endpoint | capture: sha256:359628692e8b222739f9e46be5afd30fc4bdf43fe435ad6216c655b045fd279e | quote: If your application needs to paginate beyond these limits you will need to use the content `/next` end point rather than page options.
  - probe:https://content.guardianapis.com/search?q=news 2026-10-31: a keyless search answers HTTP 401 | capture: sha256:826f933c7c5f1a0851bc3357580d50a58a23f82560d16c7c4ba191c88f21145c | quote: "status": 401
  - probe:https://content.guardianapis.com/search 2026-10-31: the keyless answer says no key was found | capture: sha256:37de10692d4ea326a7162fb375afb3599d27c86f4267d1d432e5c80fcf077672 | quote: No API key found in request
  - probe:https://content.guardianapis.com/search?q=news&page-size=1&api-key=test 2026-10-31: a call with the demo key test answers HTTP 401 | capture: sha256:975d0249a302510f7be8bf1e3d286124e18faf08ddc67adb57600aff2dec090c | quote: "status": 401
  - probe:https://content.guardianapis.com/search?api-key=test 2026-10-31: the test key answer is Unauthorized | capture: sha256:86e3d95d7db736f2d840de200f4cbaf926def686ede2470bb3a9d4926bba517e | quote: "message": "Unauthorized"
  - [5] 2026-11-02: the institution or company name is a required free-text input of at most 200 characters, with no list or pattern | capture: sha256:d1db89e31ba6840b7d8efd0f5373e6a1538e8984fe67d339883dc7611bd50a08 | quote: <input type="text" id="companyName" name="companyName" value="" maxlength="200" required="true" class="form-control" tabIndex="4">
  - [6] 2026-11-02: the Register button reveals a Google reCAPTCHA row on the developer-key form | capture: sha256:038b0307f4249f16fac11a80c7d842d497dc8b246cbdf913fbb7b51804fa1be7 | quote: // and we're going to display (unhide) the recaptcha UI row when the button is clicked.
  - [7] 2026-11-02: the Open Platform front page offers the developer key as free instant access | capture: sha256:4015d2b3cff26bd18d9690b3df0cc80067550a87e129c3cfbb5de182d33138e8 | quote: Free instant access for developers
  - [7] 2026-11-02: the commercial key is a request that the Guardian team follows up, unlike the developer key | capture: sha256:4015d2b3cff26bd18d9690b3df0cc80067550a87e129c3cfbb5de182d33138e8 | quote: Request a commercial key and our team will be in touch to discuss your needs.
  - [8] 2026-11-02: the key tool's own repository, as archived on 2022-06-22, describes self-serve key management behind the registration form | capture: sha256:5b5b764941f8417f3044001e6138950144970da0935a47f3686de3df4e8cc711 | quote: Self serve key management for Kong
  - [9] 2026-11-02: a forum user reports, on 2026-08-11, an email asking to verify the address after registering for a developer key | capture: sha256:5a930a8df1bea16207d016cef3053b896720649f46fee8fd5315efd998c2e2f8 | quote: I registered for an API key and received the email asking me to verify my email address.
  - [9] 2026-11-02: a forum user reports that registering again with an address that already registered is refused as already in use | capture: sha256:5a930a8df1bea16207d016cef3053b896720649f46fee8fd5315efd998c2e2f8 | quote: When I try to register again using the same email address, I'm told that the email address is already in use, so I'm unable to register again.
  - [10] 2026-11-02: a forum user reports a verification link that answered that it was invalid or had expired | capture: sha256:e1bd760c857e10ad9a51a312be4fa37f73775b258c0a1eac7069224f261fe8a7 | quote: I received the email verification link, but on following it gives the message "Sorry! Your email verification link is either invalid or has expired.
  - [11] 2026-11-02: a university course page says a confirmation email comes first and a second email carries the API key | capture: sha256:3e9d2ccd10703d4212a1620c77147726ccb0084943fbb9dbff75ddb784d30465 | quote: You should receive an email asking you to confirm your UCL email address, and then a second email which contains your API key.
  - [12] 2026-11-02: a forum user holds a Guardian Open Platform API key registered to a Gmail address, so a free-mail address is accepted | capture: sha256:63744e4b84c89585715788cba24c02ba7f133928a425f9b7391006e064179792 | quote: API key associated with this gmail account please:
  - [13] 2026-11-02: in a November 2015 third-party copy of the key tool's source, the developer form only requires the company name to be non-empty text | capture: sha256:d1e9ea13239d9c3ff026b3e4de4b2e80d96cf819d246f6e7cbb4d3b13b7c04e2 | quote: "companyName" -> nonEmptyText,
  - [14] 2026-11-02: a Guardian staff reply of 2025-06-30 gives 60 requests per minute for a developer key whose daily limit was raised | capture: sha256:61179bb12f42f2e100d2bddb756c3e88ef59f80ee4199b3f7c8e1193ccd969a7 | quote: We've temporarily increased your daily rate limit to 5,000. Your requests per minute remain at 60.
  - [15] 2026-11-02: a Guardian staff reply of 2023-01-31 says the response headers of a developer key carry its total and remaining limits per day and per minute | capture: sha256:07f6525e44cd252b01519edcbbbb10da39818b7a1e9a15189d38c563077ae6e1 | quote: When querying the API, the response headers will include your total rate limits (per day and per minute) as well as your remaining limits (per day and per minute).
  - [16] 2026-11-02: a commit to the access page source replaced the lines of 12 calls per second and 5,000 calls per day with 1 call per second and 500 calls per day | capture: sha256:e83b908b4db2da174ef43f62d387d7a94fba9a151118659eebb5bca90cf330c2 | quote: <li><p>Up to 12 calls per second</p></li>
  - [17] 2026-11-02: a Guardian staff reply of 2024-09-17 says a key with no use within 90 days is deleted | capture: sha256:474f75b70ab6100c3ae2e16ba3b91a445189d5b56574b5af0b0b3cdcb56df908 | quote: Keys do get deleted if no use is detected within 90 days so if you are not using it it will automatically be removed in due time.
  - probe:https://content.guardianapis.com/search?q=news&page-size=1&api-key=test 2026-11-02: the demo key test still answered HTTP 401 on 2026-11-02, so no call with a key returned content | capture: sha256:5cb88bcc6a12b31462fa15ca0d870d472b90778d06a2b4ec55c2f75415dae0ff | quote: "status": 401
  - [18] 2026-11-02: a Guardian staff reply of 2026-06-12 gives 500 a day as the standard daily limit of a developer key | capture: sha256:d7c478a6b7c3ffcfafa631c5f362cb5d089ba0cc31ca9bd032c06a01eb581c34 | quote: We've updated the daily limit on your API key, as requested. We shall revert the key back to 500/day at the end of the month.
  - [1] 2026-11-02: the access page still lists 500 calls a day for the developer key | capture: sha256:52ab31421b93c31c015ced26e22fed4862edc8516436b1e2f6110e4864f0e18a | quote: Up to 500 calls per day
- sources:
  - [1] https://open-platform.theguardian.com/access/
  - [2] https://www.theguardian.com/open-platform/terms-and-conditions
  - [3] https://open-platform.theguardian.com/documentation/search
  - [4] https://open-platform.theguardian.com/
  - [5] https://bonobo.capi.gutools.co.uk/register/developer
  - [6] https://bonobo.capi.gutools.co.uk/assets/javascripts/handleRecaptcha.js
  - [7] https://www.theguardian.com/open-platform/open-platform
  - [8] https://web.archive.org/web/20220622000628/https://github.com/guardian/bonobo
  - [9] https://groups.google.com/g/guardian-api-talk/c/QF1BY5zlntM
  - [10] https://groups.google.com/g/guardian-api-talk/c/l5hap0JHMf0
  - [11] https://uclspp.github.io/PUBL0099/seminars/seminar5.html
  - [12] https://groups.google.com/g/guardian-api-talk/c/Jjv6mFOCRSI
  - [13] https://github.com/sonicaghi/bonobo/blob/master/app/controllers/DeveloperForm.scala
  - [14] https://groups.google.com/g/guardian-api-talk/c/GKOH4GQ3W0U
  - [15] https://groups.google.com/g/guardian-api-talk/c/tp0VfMcamcY
  - [16] https://github.com/guardian/open-platform-site/commit/7e8ced93770ad13409822c44de4d78952c641d41
  - [17] https://groups.google.com/g/guardian-api-talk/c/ycQQjQkYG1A
  - [18] https://groups.google.com/g/guardian-api-talk/c/0wQo0zETrgI
