HireHive APIamcsgroup.hirehive.com ↗
Retrieve the full application form structure from any HireHive job listing: fields, screening questions, consent block, and LinkedIn button availability.
What is the HireHive API?
The HireHive Application Form API exposes 10+ structured response fields from any public HireHive job listing page in a single call to the get_application_form endpoint. Pass any HireHive job URL and get back the job identifiers, form title, submit button label, personal information fields, profile upload fields, job-specific screening questions with their answer options, and the full data-privacy consent block — ready to use without manual parsing.
curl -X GET 'https://api.parse.bot/scraper/de08ef77-1447-4d7f-8e94-68f51725da38/get_application_form?job_url=https%3A%2F%2Famcsgroup.hirehive.com%2Fhead-of-partnerships-alliances-wmd-deutschland-remote-oder-osterreich-remote-HeIUYV' \ -H 'X-API-Key: $PARSE_API_KEY'
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 amcsgroup-hirehive-com-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: HireHive Job Application Form API — fetch and inspect a job's application form."""
from parse_apis.amcsgroup_hirehive_com_api import HireHive, JobNotFound
client = HireHive()
# Fetch the application form for a specific job listing.
try:
form = client.application_forms.get(
job_url="https://amcsgroup.hirehive.com/head-of-partnerships-alliances-wmd-deutschland-remote-oder-osterreich-remote-HeIUYV"
)
except JobNotFound:
print("Job listing not found — it may have been removed.")
raise
print(f"Job: {form.job_title} (ID {form.job_id})")
print(f"Apply with LinkedIn: {form.apply_with_linkedin_available}")
# Walk personal-information fields and their constraints.
for field in form.personal_information:
constraint = f"max_length={field.max_length}" if field.max_length else ""
print(f" [{field.type}] {field.label} — required={field.required} {constraint}")
if field.options:
for opt in field.options[:3]:
print(f" option: {opt.value} — {opt.label}")
# Walk screening questions.
if form.details:
for q in form.details:
print(f" Q: {q.question} (type={q.type}, required={q.required})")
# Inspect the consent block when present.
if form.consent:
print(f"Consent: {form.consent.heading} — {form.consent.privacy_policy_url}")
print("exercised: application_forms.get")
Returns the application form for one HireHive job listing page in a single request. The result carries the job identifiers and title, whether an Apply-with-LinkedIn button is offered, and four sections: personal_information (candidate fields such as name, address, country with its full option list and default, current company/title, email, phone), profile (resume/CV upload and cover letter), details (the job's screening questions in order, each with question_id, the form field name, input type, required flag, and options for radio/checkbox/select questions; null options for free-text), and consent (the data-privacy statement, policy link, and checkbox). Each field records its form field name, input type, required flag, and any length/pattern constraints the site declares. A job URL that the site no longer recognises (it redirects to the careers home page) yields a stale_input error; a URL that is not a HireHive job page is rejected before any request.
| Param | Type | Description |
|---|---|---|
| job_urlrequired | string | Full URL of the HireHive job listing page, of the form https://<company>.hirehive.com/<job-slug>. |
{
"type": "object",
"fields": {
"job_id": "string, HireHive numeric job identifier",
"job_url": "normalised URL of the listing page that was read",
"job_title": "job title as shown on the listing page",
"company_id": "string, HireHive numeric company identifier",
"form_title": "heading shown above the application form",
"submit_label": "text of the form's submit button",
"sections.consent": "object describing the data-privacy consent block: heading, statement, privacy_policy_url, checkbox_label, name, required; null when the form has no consent block",
"sections.details": "array of job-specific screening questions in form order; each has question_id, question text, name, type (text/radio/checkbox/select), required, and options (array of {value,label}) or null for free-text",
"sections.profile": "array of application fields (resume/CV upload typed 'file', cover letter typed 'textarea') with the same field shape as personal_information",
"apply_with_linkedin_available": "boolean, whether the form offers an Apply with LinkedIn button",
"sections.personal_information": "array of candidate fields in form order; each has label, name (form field name), type (text/email/select/...), required, max_length, min_length, pattern, default_value, and options (array of {value,label} for select fields, otherwise null)"
},
"sample": {
"data": {
"job_id": "210554",
"job_url": "https://amcsgroup.hirehive.com/head-of-partnerships-alliances-wmd-deutschland-remote-oder-osterreich-remote-HeIUYV",
"sections": {
"consent": {
"name": "consent",
"heading": "Data Privacy Statement",
"required": true,
"statement": "I have read, understand and accept the content of the Privacy Policy.",
"checkbox_label": "I consent for my data to be processed for this application",
"privacy_policy_url": "https://go.amcsgroup.com/doc/amcs-recruitment-privacy-policy"
},
"details": [
{
"name": "Application.Answers[0].Answer",
"type": "text",
"options": null,
"question": "What is your notice period?",
"required": true,
"question_id": "193365"
},
{
"name": "Application.Answers[4].SelectedAnswers",
"type": "radio",
"options": [
{
"label": "business fluent",
"value": "170043"
},
{
"label": "no knowledge",
"value": "170046"
}
],
"question": "How well do you understand, write and speak German?",
"required": true,
"question_id": "193369"
}
],
"profile": [
{
"name": "Application.Resume.Name",
"type": "file",
"label": "Resume / CV",
"options": null,
"pattern": null,
"required": true,
"max_length": null,
"min_length": null,
"default_value": null
},
{
"name": "Application.CoverLetter",
"type": "textarea",
"label": "Cover letter",
"options": null,
"pattern": null,
"required": true,
"max_length": null,
"min_length": 20,
"default_value": null
}
],
"personal_information": [
{
"name": "Candidate.FirstName",
"type": "text",
"label": "First name",
"options": null,
"pattern": null,
"required": true,
"max_length": 100,
"min_length": null,
"default_value": null
},
{
"name": "Candidate.CountryId",
"type": "select",
"label": "Country",
"options": [
{
"label": "United States",
"value": "231"
},
{
"label": "Germany (Deutschland)",
"value": "81"
}
],
"pattern": null,
"required": true,
"max_length": null,
"min_length": null,
"default_value": "81"
},
{
"name": "Candidate.Email",
"type": "email",
"label": "Email",
"options": null,
"pattern": "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,63}$",
"required": true,
"max_length": 150,
"min_length": null,
"default_value": null
},
{
"name": "Candidate.Phone",
"type": "text",
"label": "Phone",
"options": null,
"pattern": null,
"required": false,
"max_length": 100,
"min_length": null,
"default_value": null
}
]
},
"job_title": "Head of Partnerships & Alliances (w/m/d)",
"company_id": "5455",
"form_title": "Apply for position now",
"submit_label": "Apply for position now",
"apply_with_linkedin_available": true
},
"status": "success"
}
}About the HireHive API
What the API returns
The single get_application_form endpoint accepts a job_url parameter — a full URL of the form https://<company>.hirehive.com/<job-slug> — and returns a structured object covering every section of the candidate-facing application form. Top-level fields include job_id, company_id, job_title, form_title, submit_label, and apply_with_linkedin_available (a boolean indicating whether the listing offers LinkedIn-assisted applying).
Form sections in detail
The sections object contains four keys. sections.personal_information lists candidate fields such as name, address, and country. sections.profile carries file and textarea fields for resume/CV upload and cover letter. sections.details is an ordered array of job-specific screening questions — each with a question_id, question text, field name, and type (text, radio, checkbox, or select) plus any answer options — giving a complete picture of the custom questions a recruiter has attached to that listing. sections.consent describes the data-privacy block: heading, consent statement, privacy_policy_url, checkbox label, field name, and whether the field is required; it is null when no consent block is present.
Coverage and scope
The API works with any publicly accessible HireHive job listing page regardless of company subdomain — not just amcsgroup.hirehive.com. Results reflect the form as it appears on the listing at request time. There is no pagination; one call maps to one job URL and returns the complete form structure for that listing.
The HireHive API is a managed, monitored endpoint for amcsgroup.hirehive.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when amcsgroup.hirehive.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 amcsgroup.hirehive.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?+
- Pre-fill or mirror a HireHive application form inside your own careers portal using the returned field definitions.
- Audit hiring compliance by checking whether
sections.consentis present andprivacy_policy_urlis populated across multiple listings. - Build an ATS integration that reads
sections.detailsscreening questions before submitting candidate answers programmatically. - Detect which job listings offer
apply_with_linkedin_availableto route candidates through LinkedIn-assisted flows. - Aggregate screening question types across listings to benchmark how different roles use text, radio, and checkbox fields.
- Validate that required fields such as resume upload in
sections.profileare consistently present across a company's active listings.
| 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 HireHive offer an official developer API?+
What does `sections.details` contain and how is it ordered?+
sections.details is an array of job-specific screening questions in the exact order they appear on the form. Each element includes a question_id, the question text, a field name, a type value (text, radio, checkbox, or select), and — for choice-based types — the available answer options. The contents vary per listing because recruiters configure these questions individually.Does the API return the full job description or salary details?+
Can I retrieve forms for multiple job listings in one request?+
get_application_form call maps to exactly one job_url. You can fork it on Parse and revise to add a batch endpoint that accepts multiple URLs and returns an array of form objects.What happens when a listing has no data-privacy consent block?+
sections.consent is returned as null when the listing does not include a consent block. All other sections are still returned normally, so the absence of a consent block does not affect the rest of the response.