Education hiring and jobs-market research
Usa los endpoints de Tes para convertir education hiring and jobs-market research en solicitudes API repetibles con inputs documentados y respuestas JSON.
Turn Tes's public education marketplace into structured JSON — teaching-job search with the site's own live faceted breakdown, job and employer detail, teaching-resource search and detail with attachment metadata and reviews, author shops, and the Schools Directory, whose ids resolve straight to a full employer profile. Credential-free.
Search Tes teaching jobs, the teaching-resources marketplace, and the Schools Directory, and get normalized job, resource, employer, and school facts as JSON.
Familias de endpoints
3
Parámetros documentados
37
Ejemplos
7
Snapshot en vivo del catálogo
Endpoints activos
7
Métodos
GET
Parámetros obligatorios
12
Referencias de esquema
7
{
"platform": "Tes",
"endpoint": "tes-job-search",
"method": "GET",
"path": "/tes/jobs/search",
"auth": "apiKey"
}Casos de uso
Search Tes teaching jobs, the teaching-resources marketplace, and the Schools Directory, and get normalized job, resource, employer, and school facts as JSON.
Usa los endpoints de Tes para convertir education hiring and jobs-market research en solicitudes API repetibles con inputs documentados y respuestas JSON.
Usa los endpoints de Tes para convertir teaching-resource marketplace analysis en solicitudes API repetibles con inputs documentados y respuestas JSON.
Usa los endpoints de Tes para convertir school directory and employer research en solicitudes API repetibles con inputs documentados y respuestas JSON.
Ejecución gestionada
Cada cifra de abajo se lee directamente del catálogo de endpoints en vivo de Tes — 7 endpoints, 37 parámetros de solicitud documentados y 7 esquemas de respuesta publicados — el mismo catálogo contra el que corren Docs y Playground.
7 documented Tes endpoints, grouped into 3 request families — Jobs, Resources and Schools.
37 request parameters are documented across those Tes endpoints, 12 of them required — the full input contract is public before you write any integration code.
7 of the 7 Tes endpoints ship a recorded example response, and 7 carry a documented response schema — you can code against the real JSON before the first request.
Tes endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
7 hosted MCP tools back the Tes endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Mapa de cobertura
/tes/jobs/search
/tes/resources/search
/tes/schools/search
Catálogo de endpoints
/tes/jobs/searchSearches Tes's (tes.com) teaching-jobs board. Returns listing facts (title, employer, location, salary, contract terms/types) plus a short excerpt of the listing description, not the full long-form job-description copy, and the same live faceted-search breakdown (position/subject/workplace category trees with counts, plus contract type/term counts) the real search page renders as its filter sidebar. location is a free-text place name (a UK town/city, an international city, or a bare country name) resolved to coordinates; omit for Tes's own default market, "United Kingdom". radius_miles selects the search radius around location. contract_type and contract_term are validated against Tes's own small, closed label sets. position, subject, and workplace are comma-separated filters -- Tes's own category labels are numerous and can change, so read a prior response's own facets.positions[].value (and facets.positions[].children[].value)/facets.subjects[].value/facets.workplaces[].children[].value for the live, current set rather than guessing. salary_min filters to jobs with an advertised salary at or above that amount (in the searched market's local currency); Tes's own filter panel offers only a minimum, no maximum.
Notas de la respuesta
- `total` is the upstream's true result count across all pages, not just the current page's length. - `location` in the response is the resolved place name actually searched (Tes's own canonical name for the match, which may differ slightly from what was passed in). - `facets` is the same live faceted-search breakdown Tes's own search page renders as its filter sidebar: `positions`, `subjects`, and `workplaces` are category trees (a `children` array nests subcategories), while `contract_types` and `contract_terms` are flat. Every facet entry carries its own live `count` under the current query and filters already applied -- use these to discover valid `position`/`subject`/`workplace` values rather than guessing. - An unrecognized `position`/`subject`/`workplace` value narrows to zero results rather than erroring, matching Tes's own upstream behavior for an unknown filter. - `employer_logo_url` is empty when the employer hasn't uploaded a logo.
Herramienta MCP tes_job_search
/tes/jobs/detailReturns detail for one job posting by its numeric id (the id field returned by tes-job-search): employer, location, salary, contract terms/types, dates, and application contact/URL, plus a short excerpt of the listing description rather than the full long-form HTML copy.
Notas de la respuesta
- An unknown or no-longer-listed job id returns `404`. - `description_excerpt` is plain text with HTML tags stripped and truncated to roughly 600 characters, not the full listing copy. - `employer_url`'s trailing numeric id (e.g. `1039424` in `.../jobs/employer/epsom-college-1039424`) is the `id` [tes-job-employer](tes-job-employer.md) accepts. - `employer_logo_url` and `employer_header_url` are empty when the employer hasn't uploaded that image.
Herramienta MCP tes_job_detail
/tes/jobs/employerReturns detail for one jobs employer profile by its numeric id (the trailing id in tes-job-detail's employer_url field, e.g. .../jobs/employer/epsom-college-1039424 -- the 1039424): name, location, school type/phase/funding status/gender/age range, an about description, its postal address, and every currently-open position listed on the employer's own profile page (id, title, url -- call tes-job-detail with each id for the full posting).
Notas de la respuesta
- An unknown employer id returns `404`. - `positions` lists every currently-open posting shown on the employer's own profile page (`id`, `title`, `url` only) -- call [tes-job-detail](tes-job-detail.md) with each `id` for the full posting.
Herramienta MCP tes_job_employer
/tes/schools/searchSearches Tes's (tes.com) public Schools Directory by school name or location. Returns listing facts (name, logo, a short description, address) for each matching school/employer. Each result's id is the same employer id tes-job-employer accepts, so a caller can go straight from a name/location search to a full employer profile (school type/phase/funding status/gender/age range, and its currently-open positions) without first needing a job posting to discover the id.
Notas de la respuesta
- `total`/`total_pages` are the upstream's true counts across all pages, not just the current page's length. - A query with no matches returns a well-formed empty `schools` array, not an error. - `address` joins whichever address lines the upstream provides (not every school has all three); it can be empty for a school with no address on file.
Herramienta MCP tes_school_search
/tes/resources/searchSearches Tes's (tes.com) teaching-resources marketplace. Returns listing facts (title, author, price, rating, downloads) -- not full listing descriptions. query is optional: omit it (alone, or combined with key_stage/subject/on_sale) for pure filter-driven or fully unfiltered browsing. sort mirrors the real search page's own Sort by dropdown; key_stage and subject mirror its left-hand Refine by filters (both closed, validated enums taken from Tes's own facet taxonomy, and always resolved against Tes's own single GB-taxonomy regardless of country). country controls result currency/localisation only (confirmed live for all seven values); it does not change which key_stage/subject values are valid.
Notas de la respuesta
- `total` is the upstream's true result count across all pages, not just the current page's length. - `price` is `0` and `free` is `true` for free resources. - `resource_types` and `file_types` reflect Tes's own resource-type/file-type taxonomy and may be empty. - `is_bundle` marks a listing that packages multiple resources under one price (Tes's own "Bundle" badge); `bundle_resource_count` and `bundle_original_price` are only meaningful when `is_bundle` is `true`. - `license` is Tes's own short licence code: one of `Paid`, `CC-BY-SA`, `CC-BY-ND`, `CC-BY`.
Herramienta MCP tes_resource_search
/tes/resources/detailReturns detail for one teaching resource by its numeric id (the id field returned by tes-resource-search). Descriptive facts (title, subject, age range, resource type, author, price, rating, licence label), a per-file attachment list (file type, size, and a preview thumbnail -- metadata only), and the most recent page of reviews are returned -- not the downloadable resource file itself.
Notas de la respuesta
- An unknown or no-longer-listed resource id returns `404`. - `id` resolves purely from the numeric id -- the real listing's slug does not need to be known. - `price` is `0` and `free` is `true` for free resources. - `reviews` is the most recent page of reviews (as many as the resource's own page shows, typically up to 5); `rating_count` is the true total review count across every review, not just `len(reviews)`. A resource with no reviews yet returns an empty `reviews` array. - `license` is the resource's own licence label as Tes's detail page displays it, e.g. `Tes paid licence` or `Creative Commons "Sharealike"`. - `attachments` lists each downloadable file's own type, size, and a preview thumbnail image -- metadata only; the file itself is never fetched.
Herramienta MCP tes_resource_detail
/tes/resources/shopReturns detail for one teaching-resources author/seller shop by its username (from tes-resource-search/tes-resource-detail's author field, or the trailing path segment of author_url): display name, average rating, upload/view/download counts, a bio, and a page of that author's resource listing (id, title, price, thumbnail -- call tes-resource-detail with each id for subject/age-range/resource-type/rating/description). subject narrows the listing to one of the subject tabs shown on the shop's own page; these vary per author and are not a curated enum.
Notas de la respuesta
- An unknown username returns `404`. - `rating`/`rating_count` are the shop's overall average and review count across every resource, not one resource's. - `uploads`/`views`/`downloads` are Tes's own abbreviated stat display (e.g. `188k+`) resolved to a whole-number lower bound, since the exact figure past the abbreviation threshold isn't shown. - `resources[].price` is `0` and `resources[].free` is `true` for free resources. Only GBP is currently supported (the shop page has no currency/market selector, unlike resource search/detail).
Herramienta MCP tes_resource_shop
APIs relacionadas
Business & Market Intelligence
Turn public GitHub ecosystem signals into structured data for developer-market research, open-source intelligence, recruiting, and AI-agent workflows.
Business & Market Intelligence
Collect public TrustMRR startup marketplace and leaderboard data as normalized JSON for startup research, SaaS discovery, and market intelligence workflows.
Business & Market Intelligence
Add website and competitive intelligence signals from SimilarWeb to research pipelines.
Cómo hacer scraping de Tes
Crawlora's Tes endpoints return normalized public Tes data as JSON with one API key — no Tes account required. Listing facts are returned rather than full long-form copy, respecting Tes's own reproduction restrictions.
Call /tes/jobs/search for Tes's teaching-jobs board — normalized listing facts (title, employer, location, salary, contract terms and types) plus a short description excerpt and the same live faceted breakdown the real search page renders as its filter sidebar (position/subject/workplace category trees with counts, plus contract type and term counts). location is a free-text place name resolved via Tes's own autocomplete; omit it for Tes's default United Kingdom market.
Pass a numeric job id from the search results to /tes/jobs/detail for employer, location, salary, contract terms, dates, and application contact/URL. Then pass the trailing id from its employer_url to /tes/jobs/employer for that school's type, phase, funding status, gender, age range, postal address, an about description, and every currently-open position on its profile.
Call /tes/schools/search by school name or location for normalized school/employer listings. Each result's id is the same employer id /tes/jobs/employer accepts, so you can go straight from a name or location to a full employer profile without first finding a job posting.
Call /tes/resources/search for the resources marketplace — title, author, price, rating, and downloads, filterable by key_stage, subject, and on_sale, with country controlling currency and localisation only. Pass a resource id to /tes/resources/detail for its subject, age range, resource type, licence label, per-file attachment metadata, and latest reviews, or an author username to /tes/resources/shop for that seller's ratings, upload/view/download counts, bio, and listings.
Preguntas frecuentes
Call /tes/jobs/search for teaching jobs, /tes/resources/search for the teaching-resources marketplace, or /tes/schools/search for the Schools Directory, then the matching detail endpoint (/tes/jobs/detail, /tes/jobs/employer, /tes/resources/detail, /tes/resources/shop) for one record — all return structured JSON with one API key.
No. Job and resource endpoints return normalized listing facts plus a short description excerpt, not the full long-form copy, out of respect for Tes's reproduction restrictions. /tes/resources/detail returns attachment metadata (file type, size, preview thumbnail) but never the downloadable resource file, which Tes's robots.txt disallows regardless.
Yes — /tes/jobs/search returns the same live faceted breakdown the search page renders as its sidebar: position, subject, and workplace category trees with counts, plus contract type and term counts, so you can drive filters off Tes's own live taxonomy.
Search /tes/schools/search by name or location — each result's id is the same employer id /tes/jobs/employer takes, so you can jump straight to the full profile (school type, phase, funding status, gender, age range, and currently-open positions).
No — country controls result currency and localisation only. key_stage and subject are closed, validated enums always resolved against Tes's own single GB facet taxonomy, whichever country you pass.