Tes API endpoint
Searches 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.
/tes/schools/searchQuery parameters:
query (required): a school name or location, e.g. Epsom.page (optional, default 1, 1-500): one-based page.page_size (optional, default 20, 1-50): results per page.Notable response behavior:
total/total_pages are the upstream's true counts across all pages, not just the current page's length.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.| Field | Filled in, of 6 checked | Values in the sample |
|---|---|---|
| id | 6 | |
| name | 6 | “Cranmore” and 5 other values |
| url | 6 | tes.com |
| logo_url | 6 | d2yw9izrmawh7r.cloudfront.net |
| description | 5 | median 303 characters |
| address | 6 | |
| country | 6 | United Kingdom (5), Malaysia (1) |
| post_code | 6 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| query | string | Yes | School name or location | Epsom | |
| page | integer | No | One-based page Minimum: 1. Maximum: 500. | ||
| page_size | integer | No | Results per page Minimum: 1. Maximum: 50. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/tes/schools/search?query=Epsom&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "Epsom",
"page": 1,
"page_size": 20,
"total_pages": 1,
"total": 6,
"schools": [
{
"id": "1039424",
"name": "Epsom College",
"url": "https://www.tes.com/jobs/employer/epsom-college-1039424",
"logo_url": "https://d2yw9izrmawh7r.cloudfront.net/employers/1039424/brandimages/20181030_1126AM_desktop_1039424_logo.jpg",
"description": "The College has grown significantly in the past seven years.",
"address": "College Road",
"country": "United Kingdom",
"post_code": "KT17 4JQ"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/tes.schoolSearchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | tes.SchoolSearchResponse | No | ||||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.query | string | No | ||||
| data.schools | array | No | ||||
| data.schools[].address | string | No | ||||
| data.schools[].country | string | No | ||||
| data.schools[].description | string | No | ||||
| data.schools[].id | string | No | ||||
| data.schools[].logo_url | string | No | ||||
| data.schools[].name | string | No | ||||
| data.schools[].post_code | string | No | ||||
| data.schools[].url | string | No | ||||
| data.total | integer | No | ||||
| data.total_pages | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/tes/schools/search?query=Epsom&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"