Pinpoint HQ APImagic.pinpointhq.com ↗
Retrieve the full application form structure for any Pinpoint HQ job posting — sections, fields, types, options, and conditional logic — via one API call.
What is the Pinpoint HQ API?
The Pinpoint HQ Application Form API exposes the complete structure of job application forms hosted on Pinpoint HQ career sites through a single endpoint, get_application_form. Each response returns all form sections and their fields — including field types, labels, required status, and selectable options — across up to six standard sections such as Personal Details, Questions, and Diversity and Inclusion, identified by a company subdomain and a posting UUID.
curl -X GET 'https://api.parse.bot/scraper/ab4c6f42-482f-4233-ad21-0cdb35016958/get_application_form?subdomain=magic&posting_id=08a504b1-6330-47e2-964c-4c9075d8f81e' \ -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 magic-pinpointhq-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: Pinpoint HQ Application Form API — fetch and inspect a job posting's form."""
from parse_apis.magic_pinpointhq_com_api import PinpointHQ, PostingNotFound
client = PinpointHQ()
# Fetch the full application form for a known job posting.
try:
form = client.application_forms.get(
subdomain="magic",
posting_id="08a504b1-6330-47e2-964c-4c9075d8f81e",
)
except PostingNotFound:
print("Posting not found — check the subdomain and posting ID.")
raise
print(f"Job: {form.job_title}")
print(f"Posting ID: {form.posting_id}")
print(f"Sections: {len(form.sections)}")
# Walk each section and its fields.
for section in form.sections:
print(f"\n--- {section.section_title} (#{section.section_index}) ---")
if section.section_description:
print(f" {section.section_description}")
for field in section.fields:
required_tag = "*" if field.required else ""
print(f" [{field.field_type}] {field.title}{required_tag}")
if field.accepted_formats:
print(f" Accepted formats: {', '.join(field.accepted_formats)}")
if field.description:
print(f" Note: {field.description}")
print("\nexercised: application_forms.get / Section / Field navigation")
Retrieves the complete application form for a Pinpoint HQ job posting, including all sections (Personal Details, Profile, Questions, Job Preferences, Diversity and Inclusion, Submit Application). Each section contains its fields with types, labels, required status, options for select/multi-select fields, conditional display logic, and accepted file formats for uploads. Makes a single HTTP request to the posting's application page.
| Param | Type | Description |
|---|---|---|
| subdomainrequired | string | The company's Pinpoint HQ subdomain (e.g. 'magic' from magic.pinpointhq.com). |
| posting_idrequired | string | UUID of the job posting (e.g. '08a504b1-6330-47e2-964c-4c9075d8f81e'). Found in the posting URL path. |
{
"type": "object",
"fields": {
"sections": "Array of form sections, each containing section_index, section_title, section_description, and fields array",
"job_title": "Job title for the posting",
"posting_id": "The posting UUID"
},
"sample": {
"data": {
"sections": [
{
"fields": [
{
"title": "First Name",
"required": true,
"field_type": "text"
},
{
"title": "Last Name",
"required": true,
"field_type": "text"
},
{
"title": "Email Address",
"required": true,
"field_type": "email"
},
{
"title": "Phone",
"required": true,
"field_type": "text"
},
{
"title": "LinkedIn URL",
"required": false,
"field_type": "url"
},
{
"title": "Country",
"required": true,
"field_type": "select"
},
{
"title": "Street Address",
"required": true,
"field_type": "text"
},
{
"title": "City",
"required": true,
"field_type": "text"
},
{
"title": "State",
"required": true,
"field_type": "select"
},
{
"title": "Zipcode",
"required": true,
"field_type": "text"
}
],
"section_index": 1,
"section_title": "Personal Details",
"section_description": "We'll need these details in order to be able to contact you."
},
{
"fields": [
{
"title": "Résumé / CV",
"required": true,
"field_type": "file_upload",
"accepted_formats": [
"doc",
"docx",
"pdf"
]
},
{
"title": "Personal Summary",
"required": false,
"field_type": "textarea",
"description": "This section is optional. Use it to tell us a little more about yourself."
}
],
"section_index": 2,
"section_title": "Profile",
"section_description": null
},
{
"fields": [
{
"index": 0,
"title": "Did someone refer you to Magic, Inc.?",
"required": true,
"field_type": "long_text",
"question_id": 415701
},
{
"index": 4,
"title": "What is your English proficiency level?",
"options": [
"C2 — Bilingual / Native",
"C1 — Advanced",
"B2 — Upper Intermediate",
"B1 or below"
],
"required": true,
"field_type": "single_select",
"question_id": 1356828
},
{
"index": 8,
"title": "Can you commit to working 40 hours per week?",
"options": [
"Yes",
"No"
],
"required": true,
"field_type": "boolean",
"question_id": 1356832
},
{
"index": 9,
"title": "Are you currently employed?",
"options": [
"Yes",
"No"
],
"required": true,
"field_type": "boolean",
"conditional": {
"conditions": [
{
"value": "true",
"operator": "equals"
}
],
"parent_question_id": 1356832
},
"question_id": 1356833
}
],
"section_index": 3,
"section_title": "Questions",
"section_description": null
}
],
"job_title": "Account Executive - Global, Remote (UNCAPPED COMMISSIONS)",
"posting_id": "08a504b1-6330-47e2-964c-4c9075d8f81e"
},
"status": "success"
}
}About the Pinpoint HQ API
What the API Returns
The get_application_form endpoint returns the full structure of a Pinpoint HQ-hosted job application form. The top-level response includes job_title, posting_id, and a sections array. Each element in sections carries a section_index, section_title, section_description, and a fields array describing every input on that section of the form.
Inputs and Identification
Two parameters are required. subdomain is the company-specific prefix of the Pinpoint HQ career site URL — for example, magic from magic.pinpointhq.com. posting_id is the UUID found in the job posting URL path, such as 08a504b1-6330-47e2-964c-4c9075d8f81e. Together they uniquely identify any public posting across all Pinpoint HQ-hosted career sites.
Form Sections and Field Detail
Pinpoint HQ application forms are divided into named sections. Common sections include Personal Details, Profile, Questions, Job Preferences, Diversity and Inclusion, and Submit Application. Each field in the fields array includes its type (e.g. text, select, checkbox), label, required status, and — where applicable — the full list of options. Conditional logic between fields is also present in the response where the source form defines it, making it possible to reconstruct the exact branching behavior a candidate would encounter.
Coverage Scope
This API covers publicly accessible job postings on any Pinpoint HQ subdomain career site. The data reflects the application form structure at time of request. It does not cover posted job description copy, candidate submission data, or internal recruiter-side configuration.
The Pinpoint HQ API is a managed, monitored endpoint for magic.pinpointhq.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when magic.pinpointhq.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 magic.pinpointhq.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?+
- Audit conditional field logic across multiple Pinpoint HQ job postings to ensure consistency in hiring workflows.
- Pre-populate or mirror application forms in an internal applicant tracking system by reading field types and options.
- Check whether Diversity and Inclusion fields are present and what options they expose for a given posting.
- Aggregate required fields across postings to identify which roles have the longest or most complex application forms.
- Validate that custom Questions sections contain specific required fields before a job posting goes live.
- Build a candidate-facing form preview by reconstructing section order and field labels from the API response.
| 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 Pinpoint HQ have an official developer API?+
What does the `sections` array actually contain?+
sections includes section_index (ordering), section_title (e.g. 'Personal Details' or 'Diversity and Inclusion'), section_description, and a fields array. Each field carries its type, label, required flag, available options for select/checkbox fields, and any conditional logic that governs its visibility.Does the API return the job description text alongside the form?+
job_title, posting_id, and the full sections structure, but does not include the job description body, salary range, location, or other listing metadata. You can fork this API on Parse and revise it to add an endpoint that retrieves the job listing detail.Can I retrieve forms for postings that require a login or are unlisted?+
posting_id corresponds to a non-public posting, the endpoint will not return form data.Can I retrieve multiple postings for a company in a single call?+
get_application_form targets one posting via a single subdomain and posting_id pair. To collect forms for multiple postings, you would need to call the endpoint once per posting. You can fork this API on Parse and revise it to add a batch or listing endpoint.