Discover/FirstStage API
live

FirstStage APIintersect-mbo.firststage.co

Retrieve full application form definitions from Intersect MBO's FirstStage careers site: steps, questions, hints, validation rules, and section groupings per job listing.

Endpoints
1
Updated
2h ago

What is the FirstStage API?

The Intersect MBO FirstStage API exposes one endpoint — get_application_form — that returns the complete application form for any job listing on intersect-mbo.firststage.co. A single call yields over a dozen structured response fields including ordered question objects with types, hints, validation rules, and section groupings, plus metadata like job_title, organisation, location, and total_questions. It is designed for teams that need to inspect or mirror job application requirements programmatically.

This call costs10 credits / call— charged only on success
Try it
Job listing identifier taken from the listing URL /jobs/<job_id>/view (alphanumeric, e.g. one shape is a 10-character id).
api.parse.bot/scraper/38f43042-731e-4135-9239-035f56b2cbc6/<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 POST 'https://api.parse.bot/scraper/38f43042-731e-4135-9239-035f56b2cbc6/get_application_form' \
  -H 'X-API-Key: $PARSE_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "job_id": "bNOFKiAOnk"
}'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace intersect-mbo-firststage-co-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: fetch a FirstStage job application form and inspect its structure."""
from parse_apis.intersect_mbo_firststage_co_api import FirstStage, InputNotFound

client = FirstStage()

# Fetch the full application form for a known job listing.
try:
    form = client.application_forms.get(job_id="bNOFKiAOnk")
except InputNotFound:
    print("Job listing not found or closed.")
    raise

print(f"{form.job_title} at {form.organisation} — {form.location}")
print(f"Total questions: {form.total_questions}")

# Walk the application steps (upload CV, enter details, etc.).
for step in form.steps:
    suffix = f" (accepts {', '.join(step.accepted_file_types)})" if step.accepted_file_types else ""
    print(f"  Step: {step.label}{suffix}")

# Inspect each question with its type and whether it is required.
for q in form.questions:
    req = "required" if q.required else "optional"
    print(f"  [{q.position}] {q.title} ({q.control_type}/{q.control_subtype}, {req})")
    if q.hint:
        print(f"       Hint: {q.hint[:80]}")
    for opt in q.options:
        print(f"       - {opt.label}: {opt.value}")

# Show how questions are grouped into sections.
for section in form.sections:
    print(f"  Section '{section.name}': {', '.join(section.question_slugs)}")

print("exercised: application_forms.get")
All endpoints · 1 totalmissing one? ·

Returns the complete application form for one job listing, identified by the job_id from its /jobs/<job_id>/view URL. The site only reveals the form after an application has been started, so each call starts a new unsubmitted draft application on the site with a one-line placeholder CV attached, waits for the site to process it, and then reads every question page; nothing is ever submitted and no personal data is entered. One call costs roughly 3 + (number of questions) page requests and typically takes 15-30 seconds. The payload contains the three high-level steps (CV upload, details, review), `fields` as an ordered array of one object per question (site id, URL slug, title, question wording, markdown hint, control type/subtype such as text/single-line, single-choice/radio-compact, hardcoded/verified-email or assisted/interview, the answer options where the control has a fixed choice list, validation rules and a derived `required` flag, and for AI-assisted interview questions the interviewer guidance and completion criteria), plus `sections` grouping question slugs by the category label the site assigns (e.g. `common/UK Contact Details`, `Requirements / Location`; assisted interview questions have no site category and are grouped as `Assisted interview`). `total_questions` is checked against the step count the site reports. An unknown or closed job_id returns a stale_input error.

Input
ParamTypeDescription
job_idrequiredstringJob listing identifier taken from the listing URL /jobs/<job_id>/view (alphanumeric, e.g. one shape is a 10-character id).
Response
{
  "type": "object",
  "fields": {
    "steps": "array of the three application steps (name, label; the upload step also lists accepted CV file extensions)",
    "fields": "ordered array of question objects: id, slug, title, question, hint (markdown or null), category (null for assisted questions), control_type, control_subtype, options (array of {value,label}, empty when free text), validations (site rule names), required (boolean), common, sensitive, guidance and criteria (assisted interview questions only, else null), position (1-based)",
    "job_id": "the requested job identifier, echoed",
    "location": "job location text from the listing",
    "sections": "array of {name, fields}: site category label and the ordered question slugs it contains",
    "job_title": "job title from the listing",
    "organisation": "hiring organisation name",
    "total_questions": "integer count of question pages, equal to fields length"
  },
  "sample": {
    "data": {
      "steps": [
        {
          "name": "upload",
          "label": "Upload CV",
          "accepted_file_types": [
            ".docx",
            ".pdf",
            ".rtf",
            ".txt",
            ".md",
            ".html"
          ]
        },
        {
          "name": "details",
          "label": "Enter details"
        },
        {
          "name": "submit",
          "label": "Review and submit"
        }
      ],
      "fields": [
        {
          "id": "6ba52b06ac",
          "hint": null,
          "slug": "full-name",
          "title": "Full Name",
          "common": true,
          "options": [],
          "category": "common/UK Contact Details",
          "criteria": null,
          "guidance": null,
          "position": 1,
          "question": "What is your full name?",
          "required": true,
          "sensitive": false,
          "validations": [
            "not-empty"
          ],
          "control_type": "text",
          "control_subtype": "single-line"
        },
        {
          "id": "OZBQDtnb6Y",
          "hint": null,
          "slug": "right-to-work",
          "title": "Right to work",
          "common": false,
          "options": [
            {
              "label": "Yes",
              "value": "yes"
            },
            {
              "label": "No",
              "value": "no"
            }
          ],
          "category": "Requirements / Right to work",
          "criteria": null,
          "guidance": null,
          "position": 7,
          "question": "Do you have the right to work?",
          "required": true,
          "sensitive": false,
          "validations": [
            "not-empty"
          ],
          "control_type": "single-choice",
          "control_subtype": "radio-compact"
        },
        {
          "id": "ZurmQOIawu",
          "hint": null,
          "slug": "start-up-exposure",
          "title": "Start-up Exposure",
          "common": false,
          "options": [],
          "category": null,
          "criteria": "To move on, the candidate must cover:\n• Their exposure to start-up or early-stage environments\n• What the operating environment was like",
          "guidance": "Encourage the candidate to describe whether they have worked in a technology start-up or early-stage organisation and what the day-to-day environment felt like.",
          "position": 14,
          "question": "Tell me about any experience you’ve had working in a technology start-up or early-stage organisation, and what the operating environment was like.",
          "required": true,
          "sensitive": false,
          "validations": [],
          "control_type": "assisted",
          "control_subtype": "interview"
        }
      ],
      "job_id": "bNOFKiAOnk",
      "location": "UK, or working closely within UK time-zone",
      "sections": [
        {
          "name": "common/UK Contact Details",
          "fields": [
            "full-name",
            "preferred-name",
            "email-address",
            "mobile-number"
          ]
        },
        {
          "name": "Requirements / Right to work",
          "fields": [
            "right-to-work"
          ]
        },
        {
          "name": "Assisted interview",
          "fields": [
            "scale-and-structure",
            "values-in-distributed-teams",
            "start-up-exposure"
          ]
        }
      ],
      "job_title": "Head of Operations (FTC)",
      "organisation": "Intersect MBO",
      "total_questions": 14
    },
    "status": "success"
  }
}

About the FirstStage API

What the API Returns

The get_application_form endpoint accepts a job_id string — the alphanumeric identifier found in any /jobs/<job_id>/view URL on the site — and returns the full application form definition for that listing. The response includes a steps array describing the three stages of the application (each step carries a name and label; the CV upload step also lists accepted file extensions), and a fields array containing every question in display order.

Question Objects and Sections

Each entry in fields includes an id, slug, title, question text, hint (markdown string or null), category (null for assisted questions), and full validation rules and answer options where applicable. The sections array maps site category labels to the ordered slug list of questions they contain, letting you reconstruct the form's visual grouping without doing that mapping yourself.

Job Metadata

Alongside the form definition, the response echoes the job_id you submitted and surfaces listing-level metadata: job_title, organisation (the hiring organisation's name), and location (free-text location from the listing). The integer total_questions field equals the length of the fields array and gives you a quick count without iterating.

Scope and Limitations

The API covers the application form definition only — it does not return candidate submissions, employer-side data, or a list of currently open roles. Each call is scoped to a single job_id; there is no batch or search parameter in the current endpoint. Form content reflects the state of the listing at the time of the request.

Reliability & maintenance

The FirstStage API is a managed, monitored endpoint for intersect-mbo.firststage.co — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when intersect-mbo.firststage.co 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 intersect-mbo.firststage.co 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?+
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 application form complexity across multiple Intersect MBO job listings by comparing total_questions and fields arrays
  • Extract question hint and validation rule data to pre-populate or validate candidate answers in an external tool
  • Map sections to fields slugs to reconstruct the visual form layout for an accessibility review
  • Pull job_title, organisation, and location to enrich a job-tracking spreadsheet with listing metadata
  • Detect when required question types (e.g. file upload with specific extensions from the steps array) change between application cycles
  • Compare question ordering across different job listings to identify standardised versus role-specific form sections
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 Intersect MBO FirstStage have an official developer API?+
Intersect MBO's FirstStage careers site does not publish a documented public developer API for accessing job application form data.
What does `get_application_form` return beyond the question list?+
In addition to the ordered fields array, the endpoint returns steps (the three application stages with labels and, for the upload step, accepted CV file extensions), sections (category labels mapped to ordered question slugs), and listing metadata: job_title, organisation, location, job_id, and total_questions.
Does the API return a list of open job listings on the site?+
No. The API covers the application form definition for a single listing identified by job_id. It does not expose a search or browse endpoint for discovering available roles. You can fork this API on Parse and revise it to add a job-listing discovery endpoint.
Can I retrieve submitted application data or employer-side responses?+
The API returns form definitions only — question structure, hints, validation rules, and listing metadata. Candidate submissions and employer responses are not exposed. You can fork the API on Parse and revise it to target additional data surfaces if they become accessible.
Does the API support batch lookups for multiple job IDs in one call?+
The current get_application_form endpoint accepts one job_id per request. There is no batch parameter. You can fork the API on Parse and revise it to accept an array of IDs and iterate over them server-side.
Page content last updated . Spec covers 1 endpoint from intersect-mbo.firststage.co.
Related APIs in JobsSee all →