Apple Jobs API endpoint
Searches Apple's public careers site (jobs.apple.com) via its server-rendered search page's embedded job data. Page size is fixed by Apple at 20 results. Search results carry identity/location/team metadata only — call the job endpoint for the full description and qualifications.
/apple-jobs/searchQuery parameters:
q (required): search query.location: optional location filter in Apple's own slug format, e.g. united-states-USA, singapore-SGP. Free-text location names are not accepted — call apple-jobs-locations to discover valid values (the full country-level list by default, or a live search for state/metro/city-level values).page: optional page number, 1-based. Defaults to 1. Apple's own page size is fixed at 20 results and is not configurable.Notable response behavior:
total: 0 and an empty jobs array (not an error).jobs[].id is either a compound <role-number>-<location-suffix> (e.g. 200674676-0836) for a specific corporate requisition, or a PIPE-<role-number> id for an evergreen/pipeline retail posting (e.g. Genius Bar, Technical Specialist roles) — both are valid inputs to the job endpoint.jobs[].posted_at is an ISO8601 timestamp.| Field | Filled in, of 20 checked | Values in the sample |
|---|---|---|
| id | 20 | |
| position_id | 20 | |
| title | 20 | “IN-Technical Specialist” and 19 other values |
| team | 20 | Apple Retail (19), Sales and Business Development (1) |
| location | 20 | “India, India” and 14 other values |
| locations | 20 | median 1 entry |
| country | 20 | “India” and 14 other values |
| posted_at | 20 | 2026-10-13 |
| url | 20 | jobs.apple.com |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Search query | software engineer | |
| location | string | No | Location filter in Apple's own slug format, e.g. united-states-USA or singapore-SGP. Free-text location names are not accepted -- call apple-jobs-locations to discover valid values. | united-states-USA | |
| page | integer | No | Page number, 1-based | 1 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/apple-jobs/search?q=software+engineer&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "software engineer",
"location": "united-states-USA",
"page": 1,
"total": 5390,
"jobs": [
{
"id": "200674676-0836",
"position_id": "200674676",
"title": "Optical Software Engineer",
"team": "Hardware",
"location": "Cupertino, United States of America",
"locations": [
"Cupertino, United States of America"
],
"country": "United States of America",
"posted_at": "2026-07-22T14:10:44Z",
"url": "https://jobs.apple.com/en-us/details/200674676-0836/optical-software-engineer"
}
],
"source_url": "https://jobs.apple.com/en-us/search?location=united-states-USA&search=software+engineer"
}
}Request schema
No body schema
Response schema
#/definitions/applejobs.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | applejobs.SearchResponse | No | ||||
| data.jobs | array | No | AppleJob record, 14 fields: country, description, employment_type, id, location, locations, minimum_qualifications, position_id, posted_at, preferred_qualifications, responsibilities, team and 2 more. Described under Apple Jobs single posting API. | |||
| data.location | string | No | united-states-USA | |||
| data.page | integer | No | 1 | |||
| data.query | string | No | software engineer | |||
| data.source_url | string | No | ||||
| data.total | integer | No | 4342 | |||
| 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/apple-jobs/search?q=software+engineer&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"