Built In Jobs Scraper avatar

Built In Jobs Scraper

Pricing

from $0.84 / 1,000 results

Go to Apify Store
Built In Jobs Scraper

Built In Jobs Scraper

Tech jobs from Built In: title, company, location, salary range, employment type, industries, benefits and the full description. Browse by category, city or remote, or search by keyword. A category Built In does not recognise is reported, not quietly replaced.

Pricing

from $0.84 / 1,000 results

Rating

0.0

(0)

Developer

Ibnu Adzim

Ibnu Adzim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Share

Tech jobs from Built In — title, company, location, salary range, employment type, industries, benefits and the full description.

Why use this actor

  • Complete rows, not just links. Built In's listing pages publish only four things per job: title, link, position and a one-line summary. No company, no location, no salary, no date. This actor reads each job's own page to fill all of that in, and does it by default.
  • Salary ranges as numbers, with currency and period — not a string you have to parse.
  • Per-job benefits lists. 401(k) matching, parental leave, fertility benefits, mental-health cover and the rest, as a structured list. Very few job boards publish this.
  • A typo can't hand you the wrong jobs. Ask Built In for a category it does not recognise and it returns ten perfectly real, completely unrelated jobs with a 200 OK — no error, no redirect. This actor spots that and returns an error row instead of the wrong data.
  • Nothing depends on page markup. Every field comes from the structured data Built In publishes for search engines, so a site redesign does not silently empty your dataset.
  • No account, no login, no API key.

How it works

  1. You pick categories (dev-engineering, remote, san-francisco), keywords, or nothing at all for the full listing.
  2. The actor reads the listing pages, collecting job links and deduplicating.
  3. It then reads each job's own page for the employer, salary, location, date, benefits and full description.
  4. Results land in your dataset as JSON, CSV or Excel, with one summary row per query.

Input

{
"categories": ["dev-engineering"],
"searchTerms": [],
"includeJobDetails": true,
"maxItemsPerQuery": 100,
"maxPagesPerQuery": 5,
"maxConcurrency": 5,
"minRequestInterval": 0.5,
"proxyConfiguration": { "useApifyProxy": true }
}
FieldTypeDescription
categoriesarrayThe path segment from Built In's own URL — dev-engineering, remote, san-francisco. An unrecognised one is reported as an error rather than quietly replaced with generic jobs.
searchTermsarrayKeyword search. Combine with categories and every category is searched with every term.
includeJobDetailsbooleanOn by default — without it you get titles and links and nothing else, because that is all the listing publishes. Costs one request per job.
maxItemsPerQueryintegerStop after this many unique jobs per query. 0 = no cap. Default 100.
maxPagesPerQueryintegerListing-page ceiling. Page size varies between about 10 and 27 jobs, so use the item cap for a precise budget. Default 5.
maxConcurrencyintegerRequests in flight, which matters most during the detail pass. Default 5.
minRequestIntervalnumberSeconds between request starts. Default 0.5.
proxyConfigurationobjectApify Proxy. Datacenter is the default and is sufficient.

Output

Three record types share one dataset, told apart by recordType.

JOB

{
"_input": "category=dev-engineering",
"_source": "S1-jsonld-list+S2-jsonld-detail",
"_scrapedAt": "2026-09-16T04:13:58Z",
"recordType": "JOB",
"jobId": "11198462",
"title": "Software Engineer, Behavior Validation",
"jobUrl": "https://builtin.com/job/software-engineer-behavior-validation/11198462",
"summary": "Develop behavior validation products for autonomous vehicle software…",
"detailCompanyName": "General Motors",
"detailCompanyUrl": "https://builtin.com/company/general-motors",
"detailCompanyLogo": "https://builtin.com/sites/www.builtin.com/files/2025-06/gm_avatar_white_blue%201.png",
"detailSalaryMin": 123200,
"detailSalaryMax": 189100,
"detailSalaryCurrency": "USD",
"detailSalaryPeriod": "YEAR",
"employmentType": "FULL_TIME",
"datePosted": "2026-09-16",
"validThrough": "2026-10-16T03:22:34+00:00",
"directApply": false,
"industry": ["Automotive", "Big Data", "Information Technology", "Robotics", "… 3 more"],
"jobBenefits": ["Offers 401(K)", "Provides 401(K) matching", "Offers generous parental leave", "… 17 more"],
"applicantLocationRequirements": { "@type": "Country", "name": "USA" },
"hiringOrganization": { "@type": "Organization", "name": "General Motors", "sameAs": "https://builtin.com/company/general-motors" },
"baseSalary": { "@type": "MonetaryAmount", "currency": "USD", "value": { "minValue": 123200, "maxValue": 189100, "unitText": "YEAR" } },
"description": "<b>Description</b><br><strong>Role</strong>… (full HTML)",
"listPosition": 1,
"pageNumber": 1
}
FieldDescription
jobId / jobUrlBuilt In's job id and a direct link.
titleJob title.
summaryThe one-line summary from the listing page.
descriptionThe full job description (HTML) from the job's own page.
detailCompanyName / detailCompanyUrl / detailCompanyLogoThe employer.
detailSalaryMin / detailSalaryMax / detailSalaryCurrency / detailSalaryPeriodSalary range, already split into numbers.
detailCity / detailRegion / detailCountry / detailPostalCodeLocation, flattened from the posting's address.
employmentTypeFULL_TIME, PART_TIME, CONTRACTOR, …
datePosted / validThroughWhen it was posted and when it expires.
industryThe employer's industry tags.
jobBenefitsStructured benefits list — often 20+ entries.
applicantLocationRequirementsWhere applicants must be based.
directApplyWhether Built In accepts the application directly.
baseSalary / hiringOrganization / jobLocation / identifierThe original structured objects, kept whole.
_detailErrorPresent only when a job's own page could not be read.

SEARCH_SUMMARY

FieldDescription
category / searchTermWhat was queried.
pagesFetched / jobsReturned / duplicatesDroppedWhat the run did.
collectionPageTitleThe page title Built In returned — this is what proves the category applied.
unfilteredPageTitleThe generic title, for comparison.
jobDetailsRequested / jobDetailFailuresWhether the detail pass ran, and how many pages failed.
stoppedBecausemax_items_reached, max_pages_reached, no_new_jobs, no_more_results.
upstreamTotalNotPublishedAlways true — Built In publishes no result total anywhere, so none is invented.
pageSizeVariesAlways true — pages hold roughly 10–27 jobs.

ERROR

_errorMeaning
category_not_appliedBuilt In ignored the category and served generic jobs. The rows were discarded.
invalid_inputA malformed category slug, refused before any request.
blockedEvery attempt was refused; try the residential proxy group.
unexpected_shapeA 200 without the structured data this actor depends on.
fetch_failedNetwork or server trouble after retries.

Known limits

  • No result total. Built In does not publish one, so runs are bounded by your page and item caps rather than by a known total.
  • Page size is not fixed (roughly 10–27 jobs), so a page count is not a precise job budget.
  • The detail pass is one request per job. A 500-job run is ~500 requests.
  • Company profiles are not scraped — each job carries its employer's name, Built In page and logo, but not the full company profile.