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.
On 2026-10-30 a Tes job search for teacher in the United Kingdom reported total 1,811 at 40 per page, employer 1039424 (Epsom College) returned school type and funding status, and resource 13463100 (Phonics Bunting) returned subject and age range.
エージェントスキル
Crawlora のエージェントスキルをインストールすると、スクレイパーを書かずに、ドキュメント化された API 経由で Tes のデータを JSON として取得できます。Tes に対応するスキル:
Researches job postings, hiring signals, and freelance gigs via the Crawlora API — Indeed, Google/Amazon/Apple/Meta/Tesla careers sites, any…
npx skills add github.com/Crawlora-org/crawlora-skills --skill job-market-researchFAQ
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.