Discover/applytojob API
live

applytojob APIbambooworks.applytojob.com

Retrieve structured JazzHR job application forms from applytojob.com careers pages. Get field labels, types, options, and required flags for any listing.

Endpoint health
verified 5h ago
get_application_form
1/1 passing latest checkself-healing
Endpoints
1
Updated
5h ago

What is the applytojob API?

The get_application_form endpoint returns the complete application form for any JazzHR-hosted job listing on applytojob.com in a single call, surfacing 8 structured response fields including job title, company name, job attributes, and three field sections — personal_information, profile, and details — each with every form field's label, type, options, and required status. Supply the job code and subdomain to retrieve the full form structure without visiting the page.

This call costs1 credit / call— charged only on success
Try it
The JazzHR job code that follows /apply/ in the listing URL (e.g. 8mnXlgpSA2). The trailing title slug is not needed.
The company's careers-site subdomain on applytojob.com, i.e. the <subdomain> in https://<subdomain>.applytojob.com/apply/... Lowercase letters, digits and hyphens.
api.parse.bot/scraper/ea23c0ec-b764-4ba9-87d2-a91808110f9b/<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/ea23c0ec-b764-4ba9-87d2-a91808110f9b/get_application_form?job_id=8mnXlgpSA2&subdomain=bambooworks' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 1 totalmissing one? ·

Returns the application form for one JazzHR job listing in a single round trip. The result carries the job header (title, company, location/type/experience attributes), whether a human-check widget must be completed on submission, and three sections: personal_information (name, email, phone and, when the company enables them, address fields), profile (resume upload/paste and any other non-question fields), and details (the employer's screening questionnaire, in the order shown on the page). Each field carries its label, input type (text, email, tel, textarea, select, checkbox_group, resume), whether it is required, its answer options for select/checkbox_group fields (the placeholder 'No answer' option is omitted), and a question_id for questionnaire fields. A job that has been closed or never existed yields a stale_input / input_not_found error. The form is read-only here; this endpoint never submits an application.

Input
ParamTypeDescription
job_idrequiredstringThe JazzHR job code that follows /apply/ in the listing URL (e.g. 8mnXlgpSA2). The trailing title slug is not needed.
subdomainrequiredstringThe company's careers-site subdomain on applytojob.com, i.e. the <subdomain> in https://<subdomain>.applytojob.com/apply/... Lowercase letters, digits and hyphens.
Response
{
  "type": "object",
  "fields": {
    "job_id": "JazzHR job code as read from the form's hidden job field",
    "company": "company name shown in the careers-page header",
    "sections": "object with three arrays of field objects: personal_information, profile, details",
    "job_title": "job title from the listing header",
    "subdomain": "careers-site subdomain the form was fetched from",
    "field_count": "total number of fields across the three sections",
    "job_attributes": "object of header attributes keyed by their site label (location, type, experience); keys present only when the listing shows them",
    "sections.*[].name": "form field name as posted by the site's own form",
    "sections.*[].type": "one of text, email, tel, textarea, select, checkbox_group, resume (other native input types pass through)",
    "sections.*[].label": "question or field label as displayed",
    "human_check_required": "boolean, true when the form contains a human-verification widget that must be completed to submit",
    "sections.*[].options": "array of answer strings for select and checkbox_group fields, empty otherwise",
    "sections.*[].field_id": "DOM id of the form control",
    "sections.*[].required": "boolean, true when the site marks the field with a required asterisk",
    "sections.*[].max_length": "integer maxlength when the control declares one, else null",
    "sections.*[].question_id": "numeric questionnaire id string for details fields, null for built-in fields"
  },
  "sample": {
    "data": {
      "job_id": "8mnXlgpSA2",
      "company": "Bamboo Works",
      "sections": {
        "details": [
          {
            "name": "resumator-questionnaire[2977673]",
            "type": "select",
            "label": "How many years of hands-on experience do you have with Salesforce Pardot / Marketing Cloud Account Engagement?",
            "options": [
              "Less than 2 years",
              "2-3 years",
              "3-5 years",
              "5+ years"
            ],
            "field_id": "resumator-questionnaire-q2977673",
            "required": true,
            "max_length": null,
            "question_id": "2977673"
          },
          {
            "name": "resumator-questionnaire[2977676]",
            "type": "checkbox_group",
            "label": "Which Pardot / Marketing Cloud Account Engagement capabilities have you personally configured and managed?",
            "options": [
              "Engagement Studio programs",
              "Automation Rules",
              "None of the above"
            ],
            "field_id": "resumator-questionnaire-q2977676",
            "required": true,
            "max_length": null,
            "question_id": "2977676"
          }
        ],
        "profile": [
          {
            "name": "resumator-resume-value",
            "type": "resume",
            "label": "Resume",
            "options": [],
            "field_id": "resumator-resume-value",
            "required": true,
            "max_length": null,
            "question_id": null
          }
        ],
        "personal_information": [
          {
            "name": "resumator-firstname-value",
            "type": "text",
            "label": "First Name",
            "options": [],
            "field_id": "resumator-firstname-value",
            "required": true,
            "max_length": null,
            "question_id": null
          },
          {
            "name": "resumator-phone-value",
            "type": "tel",
            "label": "Phone",
            "options": [],
            "field_id": "resumator-phone-value",
            "required": true,
            "max_length": 50,
            "question_id": null
          }
        ]
      },
      "job_title": "Salesforce Marketing Cloud Consultant (SFMC & Pardot)",
      "subdomain": "bambooworks",
      "field_count": 19,
      "job_attributes": {
        "type": "Full Time",
        "location": "Remote",
        "experience": "Experienced"
      },
      "human_check_required": true
    },
    "status": "success"
  }
}

About the applytojob API

What the API Returns

The single get_application_form endpoint takes two required inputs: job_id (the alphanumeric code that appears after /apply/ in the listing URL, such as 8mnXlgpSA2) and subdomain (the company-specific prefix of the careers site, e.g. bambooworks from bambooworks.applytojob.com). The trailing title slug in the URL is not needed and should be omitted.

Response Structure

The response includes top-level fields for job_title, company, subdomain, job_id, and field_count (total fields across all three sections). The job_attributes object contains contextual metadata from the listing header — keys like location, type, and experience appear only when the listing itself displays them, so their presence is not guaranteed. A flag also indicates whether a human-check widget is required on submission.

Form Sections and Field Objects

The sections object contains three arrays: personal_information, profile, and details. Each element in these arrays exposes name (the field name as the form posts it), label (the display label or question text), type (one of text, email, tel, textarea, select, checkbox_group, resume, or other native input types), and the required flag. Select and checkbox_group fields include their available options. This structure is sufficient to render or validate a form programmatically or to analyze what a given employer asks applicants.

Reliability & maintenanceVerified

The applytojob API is a managed, monitored endpoint for bambooworks.applytojob.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bambooworks.applytojob.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 bambooworks.applytojob.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
5h ago
Latest check
1/1 endpoint 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 field structures across multiple JazzHR job listings to compare what applicant information employers collect
  • Validate that required fields like resume upload and email are present before directing candidates to apply
  • Build an autofill or application-assistant tool that pre-populates form fields by mapping to a candidate profile
  • Audit careers pages to check whether job_attributes such as location or work type are consistently populated
  • Extract job_title and company data for job board indexing without scraping HTML
  • Map select and checkbox_group options to normalized taxonomy for job requirements analysis
  • Track form changes over time by polling get_application_form and diffing the sections field_count and field labels
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 JazzHR have an official developer API?+
Yes. JazzHR publishes an official REST API documented at https://www.jazzhr.com/integrations/api/. That API is partner-facing and requires an API key provisioned through a JazzHR account. This Parse API covers the public application form data available without authentication.
What does get_application_form return for fields with predefined choices?+
Fields with type select or checkbox_group include the available options in the field object alongside the label, name, and required flag. Free-text fields such as text, email, tel, and textarea do not carry an options list. The resume type identifies the file-upload field specifically.
Does the API cover job listings from all applytojob.com subdomains?+
Any public JazzHR careers page on applytojob.com can be queried by passing the correct subdomain and job_id. Listings behind password protection or those that have been closed or removed will not return form data, as the underlying listing is no longer publicly accessible.
Can I retrieve a list of all open jobs for a company, not just a single form?+
Not currently. The API covers the application form for one job at a time, identified by job_id and subdomain. It does not return a company's full job listing index. You can fork this API on Parse and revise it to add an endpoint that fetches the careers listing page and returns all available job codes.
Are form submissions or candidate data accessible through this API?+
No submission or candidate data is exposed. The API covers only the structure of the public application form — field definitions, labels, types, and job header attributes. Submitted application data is not publicly accessible. You can fork the API on Parse and revise it if you need to model submission payloads from the field definitions already returned.
Page content last updated . Spec covers 1 endpoint from bambooworks.applytojob.com.
Related APIs in JobsSee all →
jobbatical.bamboohr.com API
Retrieve the structure and fields of job application forms for specific openings on your BambooHR careers site, so you can understand exactly what information candidates are being asked to provide. This lets you programmatically access the form sections, field types, and requirements without manually reviewing each job posting.
careers-page.com API
Access data from careers-page.com.
mayflower.recruitee.com API
Get the complete structure of a Recruitee job application form, including all sections, field labels, data types, required flags, and answer options to understand exactly what applicants need to provide. Use this information to programmatically build your own application interface or validate applicant responses against the official form requirements.
jobs.workable.com API
Access data from jobs.workable.com.
whyhirewrong.teamtailor.com API
Retrieve the complete structure of job application forms for the WhyHireWrong? Teamtailor career site, including all sections, fields, field types, and requirements to understand what applicants need to submit. Use this information to prepare job postings, design your application workflow, or integrate with your hiring system.
accenture.wd103.myworkdayjobs.com API
Retrieve the complete structure of job application forms hosted on Workday, including all pages, sections, field labels, requirements, visibility settings, and instructions to understand what applicants will encounter. Use this data to programmatically access form layouts, field specifications, and application requirements for job listings.
magic.pinpointhq.com API
Access data from magic.pinpointhq.com.
jobs.eu.lever.co API
Get detailed information about job application forms on EU Lever job postings, including all sections, field types, required status, and dropdown options. Use this data to understand the application requirements or integrate application form structures into your hiring workflow.