Jobs API endpoint
Lists a tenant's public Pinpoint (pinpointhq.com) board postings with inline detail (full HTML description, key responsibilities, skills, and benefits, plus structured compensation when the tenant publishes a pay range). The company is the tenant subdomain from its careers URL https://{company}.pinpointhq.com/.
/jobs/pinpoint/boardLists a tenant's public Pinpoint (pinpointhq.com) board postings with inline detail (full HTML description, key responsibilities, skills, and benefits, plus structured compensation when the tenant publishes a pay range — a single call covers the whole board, same shape as Ashby/Gem/Recruitee). An unknown subdomain returns 404.
Query parameters:
company (required) — the Pinpoint tenant subdomain from its careers URL https://{company}.pinpointhq.com/ (e.g. workwithus).Returns provider, company, count, total, and jobs[] (provider, id, title, company, department, location, remote, workplace_type, employment_type, url, apply_url, req_id, description_html, description_text, compensation, compensation_min, compensation_max, compensation_currency, compensation_period) plus source_url. workplace_type is one of onsite, remote, hybrid. employment_type is one of Full-time, Part-time, Contract, Temporary, Internship. compensation* is only present when the tenant published a pay range on that posting; compensation_period (one of hourly, daily, weekly, monthly, yearly) is only set when the summary states an explicit pay period. When compensation_visible is true but the structured fields are blank, compensation_* falls back to a pay figure stated inline in the description, when present; a posting with compensation_visible: false (the employer's explicit choice not to disclose) never gets a fallback figure. Pinpoint's public board does not expose a posted/created date, so posted_at is always empty for this provider.
| Field | Filled in, of 3 checked | Values in the sample |
|---|---|---|
| provider | 3 | “pinpoint” |
| id | 3 | |
| title | 3 | “Founding Legal Counsel” and 2 other values |
| company | 3 | “Workwithus” |
| department | 3 | “Operations” and 2 other values |
| location | 3 | “Remote” and 1 other value |
| location_city | 3 | “London” |
| location_state | 3 | “London” |
| remote | 3 | true in 3 of 3 |
| workplace_type | 3 | “remote” |
| employment_type | 3 | “Full-time” |
| url | 3 | workwithus.pinpointhq.com |
| apply_url | 3 | workwithus.pinpointhq.com |
| req_id | 3 | |
| description_html | 3 | median 8,106 characters |
| description_text | 3 | median 6,398 characters |
| compensation | 1 | “£70,000 - £90,000 / year” |
| compensation_min | 1 | 70,000 |
| compensation_max | 1 | 90,000 |
| compensation_currency | 1 | “GBP” |
| compensation_period | 1 | “yearly” |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| company | string | Yes | Pinpoint tenant subdomain (careers URL) | workwithus | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/jobs/pinpoint/board?company=workwithus" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"provider": "pinpoint",
"company": "workwithus",
"count": 3,
"total": 3,
"jobs": [
{
"provider": "pinpoint",
"id": "520855",
"title": "Product Reliability Engineer",
"company": "workwithus",
"department": "Engineering",
"location": "Remote",
"remote": true,
"workplace_type": "remote",
"employment_type": "Full-time",
"url": "https://workwithus.pinpointhq.com/en/postings/0e968d34-78ce-4d50-bc33-1f3f28e816c6",
"apply_url": "https://workwithus.pinpointhq.com/en/postings/0e968d34-78ce-4d50-bc33-1f3f28e816c6",
"req_id": "PIN-0395",
"description_text": "Hi, I'm Anca, Head of Developer Support...",
"compensation": "£60,000 - £70,000 / year",
"compensation_min": 60000,
"compensation_max": 70000,
"compensation_currency": "GBP"
}
],
"source_url": "https://workwithus.pinpointhq.com/postings.json"
}
}Request schema
No body schema
Response schema
#/definitions/jobs.boardResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | jobs.BoardResponse | No | ||||
| data.company | string | No | Company or board name the postings belong to. | |||
| data.count | integer | No | Number of jobs returned in this response. | |||
| data.jobs | array | No | Job postings on the board, one item per posting. Job record, 32 fields: ai_tools_mentioned, apply_url, benefits_mentioned, company, company_logo_url, compensation, compensation_currency, compensation_max, compensation_min, compensation_period, department, description_html and 20 more. Described under iCIMS Single Job API. | |||
| data.provider | string | No | Applicant tracking system the board was read from, for example `greenhouse` or `lever`. | |||
| data.source_url | string | No | URL the data was read from. | |||
| data.total | integer | No | Total number of open postings on the board, when the provider reports it. | |||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/jobs/pinpoint/board?company=workwithus" \
-H "x-api-key: $CRAWLORA_API_KEY"