Discover/Workable API
live

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.

Endpoint health
verified 3d ago
get_application_questions
search_jobs
2/2 passing latest checkself-healing
Endpoints
2
Updated
3d ago

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.

This call costs2 credits / call— charged only on success
Try it
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[*].
→ api.parse.bot/scraper/2265f04c-f636-4651-98dd-bf4d6940e982/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
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'
All endpoints · 2 totalmissing one? ·

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).

Input
ParamTypeDescription
job_idrequiredstringWorkable job identifier from the URL path, e.g. '82Wt1iWiEd5K5WaM778bQH' from jobs.workable.com/view/82Wt1iWiEd5K5WaM778bQH/...; also emitted as job_id by search_jobs.jobs[*].
Response
{
  "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.

Reliability & maintenanceVerified

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.

Last verified
3d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Aggregate remote job listings from Workable by filtering search_jobs with location omitted and scanning workplace values
  • Audit application form complexity across employers by comparing the number and types of fields in sections returned by get_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_jobs results using next_page_token and filters by employment_type
  • Populate an internal job database with structured data including company, location, workplace, and employment_type from both endpoints
  • Pre-fill or validate application form UIs by mapping field type and required flags from the sections response
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo2005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min
Team$300/mo20,000300 req/min
Company$1,000/mo100,000500 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.

Frequently asked questions
Does Workable have an official public developer API?+
Workable offers a recruiting API at developers.workable.com, but it is intended for employers managing their own accounts and requires OAuth credentials tied to a Workable account. The Parse API covers the public-facing job board without requiring account credentials.
What does `get_application_questions` return beyond the form fields?+
In addition to the 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`?+
Each 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?+
Not currently. The API covers job metadata (title, company, location, workplace type, employment type) and application form structure, but does not return the full job description body. You can fork this API on Parse and revise it to add an endpoint that returns the job description content.
Can I filter `search_jobs` by employment type or workplace (remote/onsite)?+
Not currently as a dedicated filter. The 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.
Page content last updated . Spec covers 2 endpoints from jobs.workable.com.
Related APIs in JobsSee all →
Workable Jobs API – Search Listings & Get Form Fields · Parse