Discover/Gem API
live

Gem APIjobs.gem.com ↗

Retrieve job application forms from jobs.gem.com — standard fields, custom screening questions, answer options, and EEOC survey config in one API call.

Endpoint health
monitored
get_application_form
0/1 passing latest checkself-healing
Endpoints
1
Updated
1mo ago

What is the Gem API?

The jobs.gem.com API exposes 1 endpoint — get_application_form — that returns the complete application form for any jobs.gem.com job posting across up to 13 structured response fields. Given a board_slug and job_post_id from a listing URL, the endpoint returns every section of the form: standard applicant fields, employer-defined screening questions with their answer options, location data, department, and EEOC demographic survey configuration.

This call costs1 credit / call— charged only on success
Try it
The employer's job board path segment, i.e. the first path segment of a jobs.gem.com listing URL (letters, digits, '-' or '_').
The job posting identifier, i.e. the second path segment of a jobs.gem.com listing URL (letters, digits, '-' or '_'). Echoed back unchanged as `job_post_id` in the payload.
→ api.parse.bot/scraper/efb4aac5-67a6-4f13-a9f5-04f292acf83a/<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/efb4aac5-67a6-4f13-a9f5-04f292acf83a/get_application_form?board_slug=senndertechnologies-gmbh&job_post_id=am9icG9zdDow-hl-MZiIibYQLtscNrmG' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 1 totalmissing one? ·

Returns the application form for one jobs.gem.com job posting in a single round trip, identified by the two path segments of its listing URL (https://jobs.gem.com/<board_slug>/<job_post_id>). The payload carries posting context (title, requisition id, company, department, employment and location type, locations) and a `sections` object with four groups: `personal_information` (the standard identity/contact fields: first name, last name, email, phone, location), `profile` (career-profile fields such as LinkedIn URL and resume upload), `details` (the employer's custom screening questions, each with its answer type, display type, required flag and answer options with stable option ids), and `demographic_survey` (null when the posting has no voluntary demographic survey; otherwise the survey id, type and questions in the same question shape). Every standard field carries `field_type` (the site's field code, e.g. FIRST_NAME), a display `label` and `is_required`. `total_fields` counts all fields and questions across sections. Postings with no custom questions return an empty `details` array. An unknown board or posting id yields a not-found input error. Uploading a resume or submitting the form is not supported.

Input
ParamTypeDescription
board_slugrequiredstringThe employer's job board path segment, i.e. the first path segment of a jobs.gem.com listing URL (letters, digits, '-' or '_').
job_post_idrequiredstringThe job posting identifier, i.e. the second path segment of a jobs.gem.com listing URL (letters, digits, '-' or '_'). Echoed back unchanged as `job_post_id` in the payload.
Response
{
  "type": "object",
  "fields": {
    "title": "job posting title",
    "company": "employer display name",
    "sections": "object with personal_information (array of standard fields), profile (array of standard fields), details (array of custom questions), demographic_survey (object or null)",
    "locations": "array of posting locations with name, city, ISO-3 country and is_remote",
    "board_slug": "job board path segment the form belongs to",
    "department": "department name, null when absent",
    "eeoc_config": "object of booleans race_and_gender, veteran_status, disability_status describing which EEOC parts the template enables",
    "job_post_id": "posting identifier as used in the listing URL",
    "total_fields": "integer count of all fields and questions across sections",
    "includes_eeoc": "true when the posting includes an EEOC self-identification form",
    "location_type": "site work-location code such as IN_OFFICE",
    "requisition_id": "employer requisition reference shown under the form, null when absent",
    "employment_type": "site employment type code such as FULL_TIME",
    "is_application_form_hidden": "true when the employer hides the form on the posting page"
  },
  "sample": {
    "data": {
      "title": "Head of Product Operations (Maternity cover, 1 year contract)",
      "company": "sennder Technologies GmbH",
      "sections": {
        "details": [
          {
            "text": "Are you currently based in Berlin, Barcelona or Amsterdam?",
            "options": [
              {
                "value": "Yes",
                "option_id": "cXVlc29wdDoYn1kst792uiea0nUnGeKn"
              },
              {
                "value": "No",
                "option_id": "cXVlc29wdDqT-882Gpvg2na7veKgHw1G"
              }
            ],
            "file_type": null,
            "answer_type": "SINGLE_SELECT",
            "description": null,
            "is_required": true,
            "question_id": "cXVlczqSixGvsy7fja1xV6NLqbP1",
            "display_type": "RADIO_BUTTON",
            "numeric_rating_range": null
          }
        ],
        "profile": [
          {
            "label": "LinkedIn URL",
            "field_type": "LINKEDIN_URL",
            "is_required": false
          },
          {
            "label": "Resume",
            "field_type": "RESUME",
            "is_required": true
          }
        ],
        "demographic_survey": null,
        "personal_information": [
          {
            "label": "First name",
            "field_type": "FIRST_NAME",
            "is_required": true
          },
          {
            "label": "Last name",
            "field_type": "LAST_NAME",
            "is_required": true
          },
          {
            "label": "Email",
            "field_type": "EMAIL",
            "is_required": true
          },
          {
            "label": "Phone number",
            "field_type": "PHONE",
            "is_required": false
          },
          {
            "label": "Location",
            "field_type": "LOCATION",
            "is_required": false
          }
        ]
      },
      "locations": [
        {
          "city": "Barcelona",
          "name": "Barcelona, Spain",
          "country": "ESP",
          "is_remote": false
        }
      ],
      "board_slug": "senndertechnologies-gmbh",
      "department": "Technology ",
      "eeoc_config": {
        "veteran_status": false,
        "race_and_gender": true,
        "disability_status": false
      },
      "job_post_id": "am9icG9zdDow-hl-MZiIibYQLtscNrmG",
      "total_fields": 8,
      "includes_eeoc": false,
      "location_type": "IN_OFFICE",
      "requisition_id": "R7458",
      "employment_type": "FULL_TIME",
      "is_application_form_hidden": false
    },
    "status": "success"
  }
}

About the Gem API

What the API Returns

The get_application_form endpoint accepts two required path parameters — board_slug (the employer's job board segment, e.g. senndertechnologies-gmbh) and job_post_id (the posting identifier, e.g. am9icG9zdDow-hl-MZiIibYQLtscNrmG) — both taken directly from a jobs.gem.com listing URL. The response identifies the posting with title, company, department (null if absent), and job_post_id, plus a locations array that includes each location's name, city, ISO-3 country code, and is_remote flag.

Sections and Fields

The core of the response is the sections object, which groups all form inputs into three buckets: personal_information (standard contact and identity fields), profile (resume, portfolio, and similar profile fields), and details (custom screening questions defined by the employer, with their configured answer options). A total_fields integer gives the aggregate count of inputs across all sections without requiring manual enumeration.

EEOC and Demographic Survey

When a posting includes an EEOC self-identification form, includes_eeoc is set to true and the eeoc_config object details which components are active via three boolean flags: race_and_gender, veteran_status, and disability_status. This lets you determine exactly which demographic categories an employer's template has enabled without parsing freeform text.

Reliability & maintenance

The Gem API is a managed, monitored endpoint for jobs.gem.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jobs.gem.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.gem.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.

Latest check
0/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
  • Audit employer screening questions across multiple job postings to compare how companies filter candidates
  • Aggregate EEOC survey coverage data using eeoc_config flags to analyze which employers collect demographic information
  • Pre-fill or validate candidate application data by mapping personal_information and profile fields before submission
  • Index custom details questions and their answer options to identify industry-specific screening patterns
  • Track remote-work availability by reading the is_remote flag in the locations array across postings
  • Build job application assistants that surface exactly what a specific posting requires before a candidate starts filling it out
  • Compare department-level application requirements using department and sections.details across an employer's board
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 jobs.gem.com have an official developer API?+
Gem (gem.com) offers a recruiting platform with API access for enterprise customers, documented at developers.gem.com. That API targets ATS integrations and recruiter workflows, not public job application form retrieval. The Parse API specifically covers the public application form data available on jobs.gem.com postings.
What does `get_application_form` return for the screening questions in a posting?+
Custom screening questions appear in the sections.details array. Each entry includes the question text and its configured answer options. Standard candidate fields (name, email, etc.) are in sections.personal_information, and profile-related inputs such as resume upload are in sections.profile. The total_fields integer counts all inputs across all three arrays.
Does the API return the full job description or salary information?+
Not currently. The API covers application form structure: field definitions, screening questions, locations, department, and EEOC configuration. Job description body text and compensation details are not included in the response. You can fork this API on Parse and revise it to add an endpoint that returns the full posting description and any listed salary range.
Can I retrieve multiple job postings in one call, or search across an employer's entire board?+
The current API covers one posting per call, identified by board_slug and job_post_id. Bulk retrieval or board-level listing is not included. You can fork the API on Parse and revise it to add an endpoint that lists all active postings for a given board_slug.
How do I find the correct `board_slug` and `job_post_id` values?+
Both values come directly from a jobs.gem.com listing URL. The URL structure is https://jobs.gem.com/<board_slug>/<job_post_id>. For example, the URL https://jobs.gem.com/senndertechnologies-gmbh/am9icG9zdDow-hl-MZiIibYQLtscNrmG yields board_slug=senndertechnologies-gmbh and job_post_id=am9icG9zdDow-hl-MZiIibYQLtscNrmG.
Page content last updated . Spec covers 1 endpoint from jobs.gem.com.
Related APIs in JobsSee all →
careers.opentext.com API
Access data from careers.opentext.com.
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.
jobs.smartrecruiters.com API
Access data from jobs.smartrecruiters.com.
jobs.dayforcehcm.com API
Access data from jobs.dayforcehcm.com.
bambooworks.applytojob.com API
Access data from bambooworks.applytojob.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.
simon-kucher.csod.com API
Retrieve the complete structure of Simon-Kucher's job application form, including all steps, sections, questions, and fields, to understand what information you'll need to provide when applying for a position. Use this to prepare your application details in advance or automate your application workflow with the exact form requirements.
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.