BuiltIn Jobs Scraper avatar

BuiltIn Jobs Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
BuiltIn Jobs Scraper

BuiltIn Jobs Scraper

Scrape tech and startup job listings from builtin.com by keyword, city, or category. Get title, company, location, work mode, salary band, seniority, top skills, categories, and posted date in structured rows.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share


🎯 What this scrapes

BuiltIn (builtin.com) is a tech/startup job-listing aggregator that pulls in postings from thousands of employers — not a single company's own careers page. This Actor scrapes builtin.com/jobs and its keyword/category/city filter variants into structured rows: title, company, location(s), work mode (remote/hybrid/onsite), salary band, seniority, category tags, top skills, and a description snippet. Built on curl-cffi with browser TLS impersonation and Apify Proxy rotation.

🔥 What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python.
  • 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per page, Retry-After honoured.
  • 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.

💡 Use cases

  • Recruiting-agency sourcing — surface fresh tech/startup roles across many employers in one feed, filterable by keyword, city, or category.
  • Talent-market research — track salary bands, seniority mix, and remote/hybrid/onsite split for a given role or region.
  • Sales intel for HR-tech vendors — spot companies actively hiring for a target function as a buying signal.
  • Competitive hiring watch — monitor a category or city's job volume and salary trends over time.
  • Job-board aggregation — feed a normalized BuiltIn slice into a broader multi-source job dataset.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
searchstringno'engineer'Keyword search term, e.g. engineer. Matches BuiltIn's ?search= query param. Leave empty to…
citystringno'—'City filter, free text or slug (e.g. Austin, TX or austin-tx) — normalized automatically.…
categorystringno'—'BuiltIn category filter, free text or slug (e.g. Data Science or data-science) — normalized…
maxResultsintegerno100Cap on emitted rows (~25 job cards per page). Pagination stops once this cap is reached, even mid-page.
proxyConfigurationobjectno{'useApifyProxy': True}Apify Proxy configuration. No anti-bot signal observed on this target — the default shared/datacenter pool is…

Example input

{
"search": "engineer",
"city": null,
"category": null,
"maxResults": 5,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
job_idstringNumeric ID suffix of the job URL / card's data-builtin-track-job-id.
titlestringJob title.
urlstringAbsolute URL to the job posting on builtin.com.
company_namestringHiring company name.
company_url['string', 'null']Absolute URL to the company's builtin.com profile; null if the card lacks the link.
company_logo_url['string', 'null']Company logo image URL.
locationstringRaw location text, e.g. 'Olathe, KS, USA' or '3 Locations'.
locationsarrayParsed list of individual locations when the card shows 'N Locations'; otherwise a single-element list matching…
work_modestringOne of Remote, Hybrid, Onsite, or Not specified.
posted_textstringRaw relative-time text, e.g. '7 Minutes Ago'.
posted_at_estimate['string', 'null']ISO-8601 timestamp computed from posted_text; null if unparseable.
salary_raw['string', 'null']Raw salary text, e.g. '142K-204K Annually'; null if no salary is listed.
salary_min['integer', 'null']First number in salary_raw, K/M suffix expanded.
salary_max['integer', 'null']Second number in salary_raw, or equal to salary_min if only one number is present.
seniority['string', 'null']Seniority level, e.g. 'Senior level'.
categoriesarrayJob category tags (may be empty).
top_skillsarrayTop skill tags (may be empty).
description_snippetstringPlain-text description excerpt (may be empty).

Example output

{
"job_id": "10451551",
"title": "Sr. Finance Manager, Supply Chain",
"url": "https://builtin.com/job/sr-finance-manager-supply-chain/10451551",
"company_name": "Aerospace Corporation",
"company_url": "https://builtin.com/company/aerospace-corporation",
"company_logo_url": "https://cdn.builtin.com/logos/aerospace-corp.png",
"location": "El Segundo, CA, USA",
"locations": [
"El Segundo, CA, USA"
],
"work_mode": "Hybrid",
"posted_text": "7 Minutes Ago",
"posted_at_estimate": "2026-07-30T14:23:00Z",
"salary_raw": "142K-204K Annually",
"salary_min": 142000,
"salary_max": 204000,
"seniority": "Senior level",
"categories": [
"Aerospace",
"Machine Learning",
"Cybersecurity",
"Defense"
],
"top_skills": [
"Excel",
"SAP",
"Forecasting"
],
"description_snippet": "The Aerospace Corporation is seeking a Senior Finance Manager..."
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.02One-off warm-up charge per run
result$0.0015Per dataset item

Example: 1 000 results at the rates above ≈ $1.52. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

BuiltIn shows roughly 25 job cards per page; large result sets paginate accordingly and pagination stops as soon as a page is empty or repeats the previous page's job IDs. There is no enumerated city/category taxonomy — free text is passed through and resolved by the target, so a typo'd filter silently returns zero rows rather than an error. Only fields present on the listing card itself are captured; this Actor does not follow through to each job's own detail page or the employer's company profile.

❓ FAQ

Does this cover every BuiltIn city and category?

Free-text city/category values are slugified and passed straight to builtin.com. An unmatched slug returns zero rows (a valid empty filter), not an error.

Why is salary_raw sometimes null?

Not every listing publishes a salary band on builtin.com. When the card has no salary line, salary_raw/salary_min/salary_max are all null.

What does work_mode return when it's unclear?

Unrecognized or missing work-mode text falls back to "Not specified" rather than guessing.

Can I combine search, city, and category?

Yes. category and city are path segments; search is a query param (moving city alongside it when both are set). Combining search with a category path is supported but its narrowing behavior is unverified — worst case is an unfiltered-by-category result, never an error.

How fresh is posted_at_estimate?

Computed from BuiltIn's own relative-time text (e.g. '7 Minutes Ago') at the moment your run executes. Phrasing outside the known patterns leaves it null while posted_text keeps the raw string.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.