Getting Started
To use the API, you'll need an API key. Free tier includes 100 requests/day. See pricing →
Get an API Key
Create a new API key. Requires authentication (JWT token in Authorization header).
Authentication
Include your API key in the Authorization header using the Bearer scheme:
Authorization: Bearer bp_your_api_key_here
Endpoints
Search and filter job listings. Returns paginated results with job details, categories, and health status.
| Parameter | Type | Description |
|---|---|---|
| limit | int | Max results (1-100, default: 50) |
| offset | int | Pagination offset (default: 0) |
| sector | string | Filter by sector (e.g., "engineering", "sales") |
| role | string | Filter by role type (e.g., "frontend", "backend") |
| seniority | string | Filter by seniority (e.g., "junior", "senior", "lead") |
| source | string | Filter by source (e.g., "greenhouse", "lever", "workable") |
| location | string | Filter by location (case-insensitive partial match) |
| health_status | string | Filter by health: "healthy", "dead", "broken", "redirect", "unchecked" |
Get job market trends with week-over-week deltas. Returns breakdown by sector, role type, and seniority.
| Parameter | Type | Description |
|---|---|---|
| period | string | Time period: "7d", "30d", or "90d" (default: "7d") |
Get absence signals — companies or sectors that have jobs absent for 7+ days or expired for 30+ days. Helps detect hiring freezes or laid-off teams.
| Parameter | Type | Description |
|---|---|---|
| sector | string | Filter by sector |
| company | string | Filter by company name |
Get aggregate statistics: total jobs, breakdown by source, last fetch times, and health status counts.
No parameters required.
Response Format
All responses follow a consistent format:
{
"success": true,
"data": { ... },
"meta": {
"api_version": "v1",
"total": 1234,
"limit": 50,
"offset": 0
}
}
Rate Limits
Free Tier
requests / hour
Pro Tier
requests / day
Rate limit info is included in response headers: X-RateLimit-Limit, X-RateLimit-Remaining.
Code Examples
cURL
curl -H "Authorization: Bearer bp_your_api_key" \
"https://boardpulse.polsia.app/v1/jobs?limit=10§or=engineering"
JavaScript (fetch)
const response = await fetch('https://boardpulse.polsia.app/v1/jobs?limit=10', {
headers: {
'Authorization': 'Bearer bp_your_api_key'
}
});
const data = await response.json();
console.log(data);
Python (requests)
import requests
response = requests.get(
'https://boardpulse.polsia.app/v1/jobs',
params={'limit': 10, 'sector': 'engineering'},
headers={'Authorization': 'Bearer bp_your_api_key'}
)
print(response.json())
Error Codes
401 Unauthorized
Invalid or missing API key. Check your Authorization header.
429 Rate Limited
You've exceeded your rate limit. Wait before retrying. Header includes retry_after seconds.
400 Bad Request
Invalid parameters. Check the message for details.
See the full API at boardpulse.polsia.app