Education hiring and jobs-market research
Tesエンドポイントを使えば、「Education hiring and jobs-market research」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
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.
エンドポイントファミリー
3
ドキュメント化されたパラメータ
37
サンプル数
7
ライブカタログスナップショット
稼働エンドポイント
7
メソッド
GET
必須パラメータ
12
スキーマ参照
7
{
"platform": "Tes",
"endpoint": "tes-job-search",
"method": "GET",
"path": "/tes/jobs/search",
"auth": "apiKey"
}ユースケース
Search Tes teaching jobs, the teaching-resources marketplace, and the Schools Directory, and get normalized job, resource, employer, and school facts as JSON.
Tesエンドポイントを使えば、「Education hiring and jobs-market research」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
Tesエンドポイントを使えば、「Teaching-resource marketplace analysis」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
Tesエンドポイントを使えば、「School directory and employer research」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
マネージド実行
以下の数値はすべて、稼働中のTesエンドポイントカタログから取得しています(エンドポイント7件、ドキュメント化されたリクエストパラメータ37個、公開レスポンススキーマ7件)。DocsとPlaygroundが参照しているカタログと同じものです。
Tesのエンドポイントは7件、3つのリクエストファミリーに分類されています(Jobs、Resources、Schools)。
これらのTesエンドポイントには37個のリクエストパラメータがドキュメント化されており、うち12個が必須です。統合コードを書く前に入力仕様をすべて確認できます。
7件のTesエンドポイントのうち7件が実際のサンプルレスポンスを、7件がドキュメント化されたレスポンススキーマを備えています。最初のリクエストの前に実データの形に合わせて実装できます。
Tesのエンドポイントは成功時のスキーマに加えてエラーレスポンス(400、404、429、503)もドキュメント化しています。ブロック、レート制限、レコード欠損は空データではなく型付きのエラーとして返ります。
Tesのエンドポイントは7個のホスト型MCPツールとして提供されており、エージェントは同じパラメータと同じJSON契約のまま、追加の実装なしに同じルートを呼び出せます。
カバレッジマップ
/tes/jobs/search
/tes/resources/search
/tes/schools/search
エンドポイントカタログ
/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.
レスポンスに関する注記
- `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.
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.
レスポンスに関する注記
- 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.
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).
レスポンスに関する注記
- 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.
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.
レスポンスに関する注記
- `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.
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.
レスポンスに関する注記
- `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`.
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.
レスポンスに関する注記
- 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.
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.
レスポンスに関する注記
- 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).
MCPツール tes_resource_shop
関連API
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.
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.
FAQ
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.