TestBuddy for developers and agents
Everything TestBuddy publishes about admission tests — which exams exist in a market, how each one is built and scored, what preparation costs — is available as JSON, as markdown, and as tools an AI agent can call directly. No API key, no account, nothing to sign.
The public read API
Four GET endpoints, returning the same data the pages render in HTML. Read-only: nothing here writes anything. Please keep request rates reasonable — there is no key, so there is nothing to revoke, only an IP to rate-limit.
Machine-readable specification: /openapi.json (OpenAPI 3.1, also at /.well-known/openapi.json). Every operation carries an operationId, typed parameters and a response schema, so it can be dropped straight into a function-calling setup.
| Operation | Endpoint | What it returns |
|---|---|---|
searchTests | GET /api/tests?q={text}&locale={locale} | Find the admission tests covered for a market. Returns slug, category, and the exam, manual and practice URLs. |
getTest | GET /api/tests?slug={slug} | One exam in full: subjects, questions per subject, timing, marks for correct/wrong/blank, options per question, exam dates and key deadlines. |
getPricing | GET /api/pricing?q={text}&locale={locale} | Subscription plans for 1, 3, 6 and 12 months: total in euro, equivalent monthly cost, what the plan includes. |
searchHelp | GET /api/help?q={question}&locale={locale} | Search the official FAQ. Returns the question, the full answer and the canonical URL. |
Try it
curl "https://testbuddy.ai/api/tests?q=ucat&locale=en-gb" curl "https://testbuddy.ai/api/tests?slug=ucat" curl "https://testbuddy.ai/api/pricing?locale=en-gb" curl "https://testbuddy.ai/api/help?q=early%20access"
locale decides what exists
TestBuddy serves around thirty markets from one catalogue, so the same query returns different exams depending on the locale: en-gb gets UCAT, de gets MedAT and TMS, en-us gets MCAT. Omitting it gives you the US and international default, which may be the wrong catalogue for the person you are answering. Pass the locale of the market you are serving.
Italian-language exams are on another site
TOLC, Semestre Filtro di Medicina, Professioni Sanitarie and the other exams sat in Italian are not in this catalogue and will never be returned here. They are covered on testbuddy.it, which has its own catalogue, prices and app — and its own copy of this API at testbuddy.it/openapi.json. Asking for one of them here returns 404 with the address to go to, rather than data this site does not own.
Errors
Every error is JSON, never an HTML page — including an unknown path under /api. The body carries a stable code, a one-sentence message and a hint saying what to do about it.
Pages as markdown
Append .md to a content URL, or send Accept: text/markdown, and you get the page as clean markdown with no navigation chrome. This follows acceptmarkdown.com: q-values are honoured, responses carry Vary: Accept, and an Accept we cannot satisfy gets a 406 that says what we can serve.
curl -H "Accept: text/markdown" https://testbuddy.ai/ curl https://testbuddy.ai/en/help.md
WebMCP tools for browser agents
An agent running inside the browser finds the same four lookups registered on document.modelContext, so it can call them instead of reading the DOM. They take the locale from the page being viewed.
search_tests— Find the exams covered for the market of the page being viewed.get_test_details— How one exam is built: subjects, timing, scoring, dates.get_pricing— Plans and prices for that market.search_help— The official FAQ, full answers included.
Index for agents
/llms.txt says what TestBuddy is, when to use it, when not to, and lists every route above. Start there if you are landing cold.
Questions
Write to support@testbuddy.ai. If you are building something on this data, tell us what you need — the API exists because the site already had the data, and it grows with what people ask for.