Built In APIbuiltin.com ↗
Access Built In tech job listings, salary ranges, benefits, and company profiles via 3 endpoints. Filter by location, work type, and keyword.
What is the Built In API?
The Built In API provides access to tech job listings across three endpoints, covering search, job details, and title autocomplete. Use search_jobs to query positions by keyword, city, and work arrangement, or call get_job_details with a job URL to retrieve full posting data including salary range, benefits, education requirements, geographic coordinates, and a direct application link.
curl -X GET 'https://api.parse.bot/scraper/6d219b8a-e458-441d-90b9-c6c9e9d8ec99/search_jobs?page=1&query=software+engineer&page_size=3&work_type=remote' \ -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 builtin-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: Built In Jobs SDK — search listings, drill into details, get suggestions."""
from parse_apis.built_in_jobs_api import BuiltIn, WorkType, JobNotFound
client = BuiltIn()
# Search remote software engineering jobs, capped at 5 results
for job in client.jobsummaries.search(query="software engineer", work_type=WorkType.REMOTE, limit=5):
print(job.title, job.company, job.salary)
# Drill into the first result's full details
listing = client.jobsummaries.search(query="data scientist", limit=1).first()
if listing:
detail = listing.details()
print(detail.title, detail.company, detail.employment_type)
if detail.salary:
print(detail.salary.min, detail.salary.max, detail.salary.currency)
if detail.location:
print(detail.location.city, detail.location.state)
# Get autocomplete suggestions for a partial query
for suggestion in client.jobsummaries.suggest(query="machine", limit=5):
print(suggestion)
# Typed error handling: attempt to fetch a job that may not exist
try:
gone = client.jobs.get(job_url="/job/nonexistent/99999999")
print(gone.title, gone.company)
except JobNotFound as exc:
print(f"Job not found: {exc.job_url}")
print("exercised: jobsummaries.search / listing.details / jobsummaries.suggest / jobs.get")Full-text search over Built In job listings with optional filters for work type and location. Returns paginated results (up to 25 per page). Query matches job titles and descriptions. Omitting all filters returns all available listings. Paginates via integer page counter.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination (1-based) |
| query | string | Search keyword matching job titles and descriptions |
| location | string | City name to filter results by geographic location |
| work_type | string | Work arrangement filter. Empty string returns all types. |
{
"type": "object",
"fields": {
"jobs": "array of job listing summaries with id, title, url, company, company_url, company_logo, work_type, location, salary, experience_level, posted",
"page": "integer, current page number",
"total_pages": "integer, total number of pages available",
"results_on_page": "integer, number of jobs returned on this page"
},
"sample": {
"data": {
"jobs": [
{
"id": "4993252",
"url": "https://builtin.com/job/software-engineer/3656874",
"title": "Software Engineer",
"posted": "Reposted 6 Hours Ago",
"salary": "125K-200K Annually",
"company": "Simplex Trading",
"location": "Chicago, IL, USA",
"work_type": "In-Office",
"company_url": "https://builtin.com/company/simplex-trading",
"company_logo": "https://cdn.builtin.com/cdn-cgi/image/f=auto,fit=scale-down,w=128,h=128/sites/www.builtin.com/files/2023-10/simplex-logo%20square.white%20bckgrnd.jpg",
"experience_level": "Mid level"
}
],
"page": 1,
"total_pages": 400,
"results_on_page": 25
},
"status": "success"
}
}About the Built In API
Endpoints and Data Coverage
The API exposes three endpoints. search_jobs accepts optional query, location, work_type (remote, hybrid, or office), and page parameters, returning up to 25 jobs per page. Each result in the jobs array includes the job id, title, url, company, company_url, company_logo, work_type, location, salary, and experience_level. Pagination is handled through page, total_pages, and results_on_page fields in the response.
Job Details and Company Data
get_job_details accepts either a relative path (e.g., /job/software-engineer/3985663) or a full Built In URL. The response includes structured salary data (currency, min, max, unit), a benefits array, industry tags, a full location object with latitude and longitude, the date_posted in ISO format, required education level, a company_url pointing to the company's Built In profile, and a how_to_apply URL for direct applications.
Title Autocomplete
suggest_job_titles takes a partial string via the query parameter and returns up to 10 matching title strings in a suggestions array. This is useful for building search interfaces or validating job title inputs before passing them to search_jobs.
The Built In API is a managed, monitored endpoint for builtin.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when builtin.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 builtin.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?+
- Aggregate remote tech job listings filtered by city and keyword for a job board or newsletter
- Pull salary min/max and currency data from job postings to build compensation benchmarking datasets
- Display benefits and education requirements from
get_job_detailsin a candidate-facing job digest - Use latitude/longitude from job location objects to plot tech hiring density on a map
- Autocomplete job title inputs in a search UI using
suggest_job_titlesbefore executing a full search - Track
date_postedacross engineering roles at specific companies to monitor hiring velocity - Compile a dataset of company profiles and industry tags from Built In job postings for market research
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Built In have an official developer API?+
What does the `search_jobs` endpoint return for salary data?+
jobs array includes a salary field. Full structured salary details — currency, min, max, and unit — are returned by get_job_details when you fetch a specific posting. Not every listing on Built In includes salary information, so those fields may be null or absent for some results.Can I filter search results by company or industry?+
search_jobs endpoint filters by query, location, and work_type. Company-specific or industry filtering is not currently supported as a direct parameter. get_job_details does return industry tags for individual postings. You can fork this API on Parse and revise it to add a company or industry filter endpoint.Does the API return the full job description text?+
get_job_details response covers structured fields: salary, benefits, location, education, industry, company profile, and application link. A free-text job description body is not currently included in the returned fields. You can fork the API on Parse and revise it to add full description text extraction.How does pagination work in `search_jobs`?+
page (current page), total_pages, and results_on_page. Pass an integer to the page parameter to retrieve subsequent pages. Each page returns up to 25 job objects.