CareerBuilder Scraper - Jobs, Salaries & Company Profiles avatar

CareerBuilder Scraper - Jobs, Salaries & Company Profiles

Pricing

from $1.20 / 1,000 job scrapeds

Go to Apify Store
CareerBuilder Scraper - Jobs, Salaries & Company Profiles

CareerBuilder Scraper - Jobs, Salaries & Company Profiles

Scrape CareerBuilder.com job listings by search or URL. Returns title, company profile, location with coordinates, salary range, employment type, apply link, posting dates, and full job description, with date sorting and optional detail enrichment.

Pricing

from $1.20 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

3

Monthly active users

a day ago

Last modified

Share

CareerBuilder Scraper: Job Listings, Salaries & Company Profiles

CareerBuilder Scraper turns CareerBuilder job search into a clean dataset. Search by keyword and location, or paste search-result and job-detail links, and get a flat record per job: title, the hiring company's profile, location with map coordinates, salary range, employment type, the apply link, posting dates, and, on request, the complete job description. Run it once, resume an interrupted crawl, or schedule it and get only new and changed jobs on later runs. Export to JSON, CSV or Excel, read the dataset through the API, or pipe results into the apps you already use.

Why This Scraper?

  • Rich, flat records. Over 40 possible fields per job, including the hiring company's profile (logo, website, size, description), map coordinates, salary min/max with currency and unit, remote or onsite, and the direct apply link.
  • Two ways to start. Search by keyword and location, optionally ordered newest first, or paste search-result and job-detail URLs and let the actor walk them.
  • Full descriptions on demand. Turn on detail enrichment to attach each job's complete description, billed only for jobs actually returned.
  • Multi-search. Give several keywords and several locations, and every combination is searched.
  • Built for recurring monitoring. Resume continues one interrupted run without re-collecting or re-billing what it already has. Incremental mode tracks a search across scheduled runs and classifies each job as it changes.
  • Optional export. Pipe results straight into Notion, Linear, Airtable, or Apify via MCP connectors, right after the dataset is written.

Use Cases

  • Job boards and aggregators: compile current CareerBuilder listings by keyword and region for a meta-search product.
  • Recruiting and sourcing teams: track new postings for competitive intelligence or candidate pipelines by keyword and location.
  • Compensation and salary benchmarking: collect salary ranges across roles and regions where CareerBuilder publishes them.
  • Labor market research: schedule incremental runs to track how job counts and postings shift over time for a given search.
  • Employer and company research: pull the hiring company's profile fields (size, website, description) attached to each posting.

Data You Get

Sample shape: values are illustrative placeholders, not from a live listing.

FieldExample
jobId00000000-0000-0000-0000-000000000000
title"Sample Software Engineer"
company"Sample Company"
companyLogo"https://media.example.com/logo.png"
companyWebsite"http://www.example.com"
companySize"100 to 499 Employees"
location"New York, NY, US"
city / state / country"New York" / "NY" / "US"
latitude / longitude40.714 / -74.006
isRemotefalse
employmentType"Full-time"
industry"Software"
salary"USD 160,000 - 185,000 YEAR"
salaryMin / salaryMax160000 / 185000
salaryCurrency"USD"
salaryUnit"YEAR"
snippet"Short summary of the role."
descriptionfull HTML job description (short in search results, full only with detail enrichment on or for pasted job-detail links)
datePosted"2026-01-01"
dateRecency"9 days ago"
applyType"INTEGRATED"
applyUrl"https://apply.example.com/job/000"
directApplytrue
url"https://www.careerbuilder.com/job-details/sample--00000000-0000-0000-0000-000000000000"

Each record also carries companyDescription, companyFoundingDate and companyLocation (employer profile detail), jobLocationType (the raw on-site, remote or hybrid decision behind isRemote), isSalaryExtracted (whether the salary was stated by the employer rather than estimated), seoJobId (used to build the job's detail-page URL), status, jobType and promoted (posting metadata), provider (the listing's source name), formattedDate, createdDate and modifiedDate (raw posting timestamps), and isEligibleForExpertApply. With Incremental mode on, records also carry changeType, changedFields, firstSeenAt and lastSeenAt.

How to Use

  1. Pick a mode: search (keywords, with optional locations) or url (paste CareerBuilder search-result or job-detail links).
  2. For search mode, fill in Job keywords and, optionally, Locations, and pick a Sort by order. For URL mode, paste one or more links.
  3. Turn on Fetch full job details if you want the complete description attached (one extra request, and one billed unit, per job actually returned).
  4. Set Max jobs to control run size and cost, then click Start. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search by keyword and location, sorted by date:

{
"mode": "search",
"queries": ["registered nurse"],
"location": ["Dallas, TX"],
"sortBy": "date",
"fetchDetails": true,
"maxItems": 50
}

Paste links (a search page and a job detail page):

{
"mode": "url",
"startUrls": [
"https://www.careerbuilder.com/jobs-software-engineer-in-new-york,ny",
"https://www.careerbuilder.com/job-details/sample--00000000-0000-0000-0000-000000000000"
],
"fetchDetails": true,
"maxItems": 20
}

Recurring monitoring of one search, only changes returned:

{
"mode": "search",
"queries": ["truck driver"],
"location": ["Chicago, IL"],
"incrementalMode": true,
"stateKey": "chicago-truck-driver-watch",
"maxItems": 0
}

Continue an interrupted run:

{
"mode": "search",
"queries": ["software engineer"],
"resumeFromRunId": "<previous run or dataset id>",
"maxItems": 50
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/careerbuilder-scraper").call(run_input={
"mode": "search", "queries": ["software engineer"], "location": ["New York, NY"]
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["title"], job["company"], job["salary"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/careerbuilder-scraper').call({
mode: 'search', queries: ['software engineer'], location: ['New York, NY'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Resume and recurring updates

Two different features, both optional:

  • Resume (resumeFromRunId) continues one specific interrupted crawl: paste a previous run or dataset ID and the actor skips every job already collected there, so you don't pay twice. No state is kept beyond that one run.
  • Incremental mode (incrementalMode) is for scheduling the same search again and again and getting only what changed. The actor keeps its own baseline for the search, keyed by stateKey or an automatic key derived from the search or URLs and the detail setting, and classifies every job as NEW, UPDATED (with changedFields), UNCHANGED, REAPPEARED or EXPIRED. By default only NEW, UPDATED and REAPPEARED jobs return; UNCHANGED jobs are suppressed and not billed unless emitUnchanged is on.
  • EXPIRED is only produced after a run in which every tracked search returned results (the first results page of each search, up to about 50 jobs), with no Max jobs cap hit and no Resume in play, and only when emitExpired is on. A job that drops off that first page counts as no longer found. REAPPEARED can only happen to a job that such a complete scan previously found missing; if emitExpired has never been turned on for a search, no job can ever be marked EXPIRED, and so REAPPEARED never occurs either. Combining Resume with Incremental mode on a search that already has tracked state is rejected: use one or the other, or pick a different stateKey.
  • Change detection ignores dateRecency (a relative label like "9 days ago" that drifts on its own every day) and description (short in search results and full only with detail enrichment, so it can't be compared across runs where that setting differs). datePosted, salary and every other field are real data and do trigger UPDATED.

Send results into your apps (MCP connectors)

Optionally pipe every job straight into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each job, not the full JSON, one entry per job with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify then Settings then Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the mcpConnectors input field. Notion gets a page per job; Linear, Airtable and Apify get a best-effort write of the same summary.
  3. For Notion, also set notionParentPageUrl to the page under which item pages should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (keywords and optional locations) or url (paste links).
queriesarraynone (prefill: ["software engineer"])Job titles or keywords to search (search mode).
locationarraynone (prefill: ["New York, NY"])Optional locations as City, ST or a city name; each keyword is searched in each location. Leave empty for nationwide.
startUrlsarraynone (prefill: one sample search URL)CareerBuilder search-result or job-detail URLs (url mode).
sortBystringrelevancerelevance (site order) or date (reorders the jobs fetched for each search newest first; it does not change which jobs are fetched).
fetchDetailsbooleanfalseAttach the complete job description to each job.
maxItemsinteger20Total jobs to return across all searches or URLs (0 = no limit). Each search reads the first results page (up to about 50 jobs) per keyword and location pair.
resumeFromRunIdstringnoneContinue one specific interrupted run, skipping jobs it already collected.
incrementalModebooleanfalseRecurring monitoring: classify jobs as NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED against a stored baseline.
stateKeystringnone (auto-derived)Name a monitoring campaign, or leave empty for a key derived automatically from the search and detail settings.
emitUnchangedbooleanfalseAlso return (and bill) unchanged jobs, marked UNCHANGED.
emitExpiredbooleanfalseAlso return (and bill) jobs no longer found, marked EXPIRED. Only produced after a complete, non-resumed, non-capped scan.
proxyobjectResidential proxy group, country USConnection settings.
mcpConnectorsarraynoneOptionally send a summary of each job to apps you authorized under Integrations.
notionParentPageUrlstringnoneNotion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on jobs written to each connector per run. Does not affect the dataset.

Output Example

Sample shape: values are illustrative placeholders, not from a live listing.

{
"mode": "search",
"jobId": "00000000-0000-0000-0000-000000000000",
"seoJobId": "sample-software-engineer--00000000-0000-0000-0000-000000000000",
"title": "Sample Software Engineer",
"url": "https://www.careerbuilder.com/job-details/sample--00000000-0000-0000-0000-000000000000",
"status": "ACTIVE",
"jobType": "FULL_TIME",
"promoted": false,
"provider": "CareerBuilder",
"industry": "Software",
"company": "Sample Company",
"companyLogo": "https://media.example.com/logo.png",
"companyWebsite": "http://www.example.com",
"companyDescription": "A sample employer description.",
"companySize": "100 to 499 Employees",
"companyFoundingDate": "1998",
"companyLocation": "1 Main St, NY, US",
"location": "New York, NY, US",
"city": "New York",
"state": "NY",
"country": "US",
"latitude": 40.714,
"longitude": -74.006,
"isRemote": false,
"jobLocationType": "ON_SITE",
"employmentType": "Full-time",
"salary": "USD 160,000 - 185,000 YEAR",
"salaryMin": 160000,
"salaryMax": 185000,
"salaryCurrency": "USD",
"salaryUnit": "YEAR",
"isSalaryExtracted": true,
"snippet": "Short summary of the role.",
"description": "Full multi-paragraph job description text.",
"datePosted": "2026-01-01",
"dateRecency": "9 days ago",
"formattedDate": "Jan 1, 2026",
"createdDate": "2026-01-01T00:00:00Z",
"modifiedDate": "2026-01-01T00:00:00Z",
"applyType": "INTEGRATED",
"applyUrl": "https://apply.example.com/job/000",
"directApply": true,
"isEligibleForExpertApply": false
}

Plan Requirement

This actor's connection defaults to the residential proxy group scoped to United States traffic, matching where CareerBuilder serves its listings, so no extra setup is needed for typical use. If you clear that default or switch to a different connection setting, reliability may drop and the run logs a warning; the actor automatically falls back to an alternate connection rather than stopping outright.

FAQ

How much does it cost?

You are billed for each job returned, plus a separate detail-enrichment charge for each returned job that carries the full description: jobs enriched with Fetch full job details on, and any job-detail links pasted in URL mode (those always arrive complete). It is charged once per job, only for jobs actually returned, never for jobs suppressed by Incremental mode. The Pricing tab shows current rates. Use Max jobs to cap the cost of any run.

This actor collects only publicly available job-listing data. You are responsible for how you use it: follow CareerBuilder's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution.

Can I get only new or changed jobs on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Later runs return only NEW, UPDATED and REAPPEARED jobs by default; unchanged jobs are not billed. EXPIRED is opt-in (emitExpired) and only appears after a full, uncapped, non-resumed scan, so don't expect it on a first run or a capped run. REAPPEARED can only follow such an expiry.

What's the difference between Resume and Incremental mode?

Resume continues one specific interrupted run from a run or dataset ID, so it never re-collects (or re-bills) what that run already got. Incremental mode is for running the same search again and again over time and getting only what changed since last time. Combining both on a search that already has tracked Incremental state is rejected; the run stops with a message asking you to remove one or set a different stateKey.

Why did my run fail instead of returning an empty dataset?

A run fails outright, with a clear status message, in two cases: an invalid resumeFromRunId that can't be resolved to a dataset, or resumeFromRunId combined with incrementalMode on a search that already has tracked state. Everything else, including CareerBuilder refusing every request, finishes as a normal run: an empty or small dataset with a status message explaining why, for example that nothing could be scanned, or that Incremental mode found nothing changed. Run it again in a few minutes if nothing could be scanned.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push job summaries into Notion, Linear or Airtable.

๐Ÿ”— Want more jobs data?

Pair this actor with these related scrapers from the same team:

๐Ÿ’ผ Monster Jobs Scraper
Scrape Monster.com job listings from search and direct job URLs. Extract full...
๐Ÿ’ผ ZipRecruiter Scraper
From $1/1K. Scrape ZipRecruiter jobs with titles, companies, salaries, locations...
๐Ÿ’ผ NIJobs Scraper
Scrape NIJobs.com listings across Northern Ireland by keyword, location, salary, posted...
๐Ÿ’ผ Dice.com Scraper
Scrape tech job listings from Dice.com by keyword, filters, or URL. Extract job titles...
๐Ÿ’ผ Wellfound Jobs Scraper
Scrape startup jobs from Wellfound.com by keyword, location, role, or remote status...
๐Ÿ’ผ JobTeaser Scraper
Scrape early-career jobs and internships from JobTeaser across Europe. Search with 15...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support & custom scrapers

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.