Workable APIjobs.workable.com ↗
Search public Workable job listings and retrieve application form questions, field types, and screening options for any job posting via two endpoints.
What is the Workable API?
This API exposes 2 endpoints covering the public Workable job board at jobs.workable.com. Use search_jobs to query listings by keyword and location, then pass any returned job_id to get_application_questions to retrieve the full application form — including every field label, input type, required flag, and custom screening question with answer options — alongside job metadata like title, company, workplace type, and employment type.
curl -X GET 'https://api.parse.bot/scraper/2265f04c-f636-4651-98dd-bf4d6940e982/get_application_questions?job_id=6fS6ZvY8cUH9RxAopDp2Ra' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieves the application form for a Workable job listing, including all sections (personal information, profile, details) and their fields. Custom screening questions with options are included in the Details section. Also returns basic job metadata (title, company, location). One API call fetches the form; a second fetches job metadata. Returns an empty sections array if the job has no form fields. A job_id for a listing that has been closed or removed yields a not-found input error (listings expire, so take job_id from a current search_jobs result).
| Param | Type | Description |
|---|---|---|
| job_idrequired | string | Workable job identifier from the URL path, e.g. '82Wt1iWiEd5K5WaM778bQH' from jobs.workable.com/view/82Wt1iWiEd5K5WaM778bQH/...; also emitted as job_id by search_jobs.jobs[*]. |
{
"type": "object",
"fields": {
"job_id": "string — the Workable job identifier",
"company": "string — hiring company name",
"location": "string — job location country",
"sections": "array of form sections, each with section_name and fields array containing field objects with id, label, type, required, and optional properties like options, helper, max_length, max_value, single_option, supported_file_types, max_file_size",
"job_title": "string — job posting title",
"workplace": "string — e.g. remote, onsite, hybrid",
"employment_type": "string — e.g. Full-time, Part-time"
},
"sample": {
"data": {
"job_id": "82Wt1iWiEd5K5WaM778bQH",
"company": "Topoteretes UG (haftungsbeschränkt)",
"location": "Germany",
"sections": [
{
"fields": [
{
"id": "firstname",
"type": "text",
"label": "First name",
"required": true,
"max_length": 127
},
{
"id": "lastname",
"type": "text",
"label": "Last name",
"required": true,
"max_length": 127
},
{
"id": "email",
"type": "email",
"label": "Email",
"required": true,
"max_length": 255
}
],
"section_name": "Personal information"
},
{
"fields": [
{
"id": "resume",
"type": "file",
"label": "Resume",
"required": true,
"max_file_size": 12000000,
"supported_file_types": [
".pdf",
".doc",
".docx",
".odt",
".rtf"
]
}
],
"section_name": "Profile"
},
{
"fields": [],
"section_name": "Details"
}
],
"job_title": "Growth Engineer",
"workplace": "hybrid",
"employment_type": "Full-time"
},
"status": "success"
}
}About the Workable API
Search Job Listings
The search_jobs endpoint queries the public Workable job board and returns up to 20 results per page. Inputs include a free-text query matched against job titles and descriptions, a location string (city or country name), and a page_token cursor for pagination. Each result in the jobs array contains job_id, job_title, company, and location. The response also includes total_size (the site-reported count of matching jobs across all pages), has_more (boolean), and next_page_token (null when no further pages exist). Omitting both query and location returns the newest listings across all categories.
Retrieve Application Form Questions
The get_application_questions endpoint accepts a single required input — job_id — and returns the structured application form for that listing. The sections array groups fields into named sections such as personal information, profile, and details. Each field object includes id, label, type, required, and an options array for fields that present discrete choices. Custom employer screening questions appear in the Details section and include their answer options where applicable.
Job Metadata
Alongside the form structure, get_application_questions returns job_title, company, location, workplace (remote, onsite, or hybrid), and employment_type (e.g. Full-time, Part-time). These fields are available without needing to call search_jobs first — any valid job_id from a Workable listing URL will work as input.
The Workable API is a managed, monitored endpoint for jobs.workable.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jobs.workable.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official jobs.workable.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate remote job listings from Workable by filtering
search_jobswith location omitted and scanningworkplacevalues - Audit application form complexity across employers by comparing the number and types of fields in
sectionsreturned byget_application_questions - Extract custom screening questions and their answer options to analyze what qualifications employers prioritize
- Build a job alert tool that pages through
search_jobsresults usingnext_page_tokenand filters byemployment_type - Populate an internal job database with structured data including
company,location,workplace, andemployment_typefrom both endpoints - Pre-fill or validate application form UIs by mapping field
typeandrequiredflags from thesectionsresponse
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Workable have an official public developer API?+
What does `get_application_questions` return beyond the form fields?+
sections array containing all form fields, the endpoint returns job_id, job_title, company, location, workplace (remote/onsite/hybrid), and employment_type. Custom employer screening questions with discrete answer options appear in the Details section of the sections array.How does pagination work in `search_jobs`?+
search_jobs response includes has_more (boolean) and next_page_token (a string or null). Pass the token as page_token in your next call to retrieve the following page of up to 20 results. The total_size field reflects the site-reported total across all pages, not just the current one.Does the API return the full job description text?+
Can I filter `search_jobs` by employment type or workplace (remote/onsite)?+
search_jobs endpoint accepts query and location inputs; workplace and employment_type are returned per result but cannot be used as filter parameters directly. You can fork this API on Parse and revise the search endpoint to add those filter inputs.