CareerBuilder Scraper at a glance
CareerBuilder Scraper is a ready-to-run Apify actor from abotapi for collecting jobs data. Its documented output includes title, change type (incremental mode), company, location and salary, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Jobs, Automation, Developer Tools
- Pricing
- $2.00 per 1,000 results (Free plan), from $1.20 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 18 options
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.
What CareerBuilder Scraper can do
- 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.
- Optional export. Pipe results straight into Notion, Linear, Airtable, or Apify via MCP connectors, right after the dataset is written.
Choose what to collect
These inputs let you configure CareerBuilder Scraper - Jobs, Salaries & Company Profiles. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | search = provide job keywords and optional locations. url = paste search-result or job-detail URLs and walk them. |
queriesarray | One or more job titles or keywords, e.g. software engineer, registered nurse, truck driver. |
keywordsstring | Optional single-keyword alias; added to the Job keywords list. |
locationarray | Optional. One or more locations as 'City, ST' (e.g. New York, NY) or a city name. Each keyword is searched in each location. Leave empty for nationwide. |
startUrlsarray | Paste CareerBuilder search-result URLs (jobs-...) or job-detail URLs (job-details/...). Multi-URL supported. |
startUrlstring | Optional single-URL alias; added to the URLs list (URL mode). |
sortBystring | Order of results within each search page (newest first when set to date). The site offers no server-side sort, so this re-orders the jobs of each fetched page only; it does not change which jobs are fetched. |
Show 11 more inputs
| Input | What it controls |
|---|---|
fetchDetailsboolean | Attach the complete job description to each job. Leave off for description-light results. |
maxItemsinteger | Total jobs to return across all searches or URLs. This is the run cap (0 means the maximum of 1,000,000). |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue an interrupted crawl without returning or charging for jobs already collected there. For recurring daily/weekly monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns all matching jobs as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED jobs. A job is UPDATED when any of its output fields changes (title, company, location, salary, snippet, datePosted, apply link, etc.); the changed field names are listed in changedFields. Excluded from the comparison (still present in the output): dateRecency ("3 days ago"), formattedDate and promoted, which drift or rotate without any real change to the job; and description, skills, identifier, occupationalCategory and validThrough, which are only filled when detail enrichment runs or on pasted job-detail links, so they cannot be compared across runs; plus any field you list in "Ignore fields when detecting changes". Turn on "Emit unchanged" or "Emit expired" only when you also want those jobs returned (and billed). State is kept separately for each search/URL and detail-mode setup; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/URL and detail settings: different searches then never mix state with each other. |
emitUnchangedboolean | Off by default. Turn on to also return jobs that have not changed since the last run, marked UNCHANGED. This returns and bills extra rows you already have, so leave it off unless you specifically want the full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return jobs that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Max jobs capped it or when Resume was used. This returns and bills extra synthetic rows, so leave it off unless you need expiry tracking. |
ignoreFieldsForChangesarray | Optional. Output field names (for example salaryMax or companyDescription) to exclude from UPDATED change detection and from changedFields, in addition to the built-in exclusions (dateRecency, formattedDate, promoted, description, skills, identifier, occupationalCategory, validThrough). Excluded fields still appear in the output rows. Use it when a field is noisy for your setup. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify then Settings then API & Integrations, then select it here. Notion gets a page-per-item export; other connectors get a best-effort write. Leave empty to skip. Supported: Notion, Linear, Airtable, Apify. |
notionParentPageUrlstring | URL or id of the Notion page under which item pages are created. Required only for the Notion export. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
titleTitle (text)changeTypeChange type (incremental mode) (text)companyCompany (text)locationLocation (text)salarySalary (text)employmentTypeType (text)isRemoteRemote (boolean)datePostedPosted (text)applyUrlApply (link)urlURL (link)changedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)Show 13 more fields
lastSeenAtLast seen (incremental mode) (date)descriptionDescription (text)skillsSkills (array)occupationalCategoryOccupational category (text)validThroughValid through (text)identifierEmployer posting ID (text)companyWebsiteCompany website (link)companyDescriptionCompany description (text)companySizeCompany size (text)companyFoundingDateFounded (text)companyLocationCompany location (text)companyLogoLogo (image)industryIndustry (text)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"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
}Ways to use this data
- 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.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does CareerBuilder Scraper return?
The documented output for CareerBuilder Scraper includes title, change type (incremental mode), company, location, salary, type, remote and posted. Availability of each field depends on the source page and the selected mode.
How much does CareerBuilder Scraper cost?
It costs $2.00 per 1,000 results on the Apify Free plan and from $1.20 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
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.
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.
