# CareerBliss Company Reviews & Salaries Scraper (`crawlerbros/careerbliss-scraper`) Actor

Scrape CareerBliss.com - employee company reviews, star ratings across 8 workplace categories, real salary data by job title, and a directory of featured employers. No login, no cookies, no API key required.

- **URL**: https://apify.com/crawlerbros/careerbliss-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## CareerBliss Company Reviews & Salaries Scraper

Scrape [CareerBliss.com](https://www.careerbliss.com) — real employee-written company reviews with 8-category workplace ratings, real salary data broken down by job title, aggregate company ratings, national job-title salary/career overviews, live open job postings by job title, the yearly Happiest Companies ranking, and directories of featured employers and job titles. Fully public, no login, no cookies, and no API key required.

### What this actor does

- **Employee reviews** — per-company employee reviews with an overall star rating and ratings across 8 workplace categories (Person You Work For, People You Work With, Work Setting, Support You Get, Rewards You Receive, Growth Opportunities, Company Culture, Way You Work).
- **Salaries by job title** — average annual salary per job title at a company, sample size, and comparison to the national average for that role, plus real employee salary highlights (quote + posted date + location) where available.
- **Company overview** — aggregate employer rating, total review count, % of employees who'd recommend the company, company-wide average salary, highest/lowest paying job titles, and top/low-rated workplace categories.
- **Job title overview** — national aggregate career data for a job title across all of CareerBliss: open job count, average salary, average review rating, review count, and a broad per-company salary breakdown (dozens of real companies hiring for that title, not just a handful).
- **Job title reviews** — individual employee reviews for a job title written at many different companies nationwide (e.g. what Registered Nurses across dozens of hospitals/employers say), unlike the per-company `reviews` mode which is scoped to one employer at a time.
- **Browse company directory** — the featured/major-employer directory listed on CareerBliss, or (via `browseCompaniesLetter`) the *full* alphabetical company directory for a starting letter — thousands of companies, useful for building a large `companySlugs` list or discovering lesser-known employers.
- **Browse job title directory** — the featured job-title directory listed on CareerBliss, useful for discovering job-title slugs.
- **Job listings** — live, nationwide open job postings for a given job title: hiring company, location, how recently it was posted, a description snippet, and a working apply link.
- **Happiest Companies** — CareerBliss's yearly ranked list of the 50 happiest companies to work for, with rank, overall rating, logo, and a real featured employee-review excerpt for each.
- **Keyword search** — free-text search across CareerBliss (the same search CareerBliss's own header search box uses) for job postings, companies, employee reviews, company salary summaries, or career-advice articles matching a keyword — no company or job-title slug required. For job postings, you can also leave the keyword empty and set only a location to browse every open posting in that city/state.
- **Top companies by industry** — CareerBliss's curated "top-rated companies currently hiring" ranking for any of ~100 industry categories (e.g. Real Estate, Data Services, Hospitals and Health Centers, Legal Services) — rank, rating, and a real featured-employee-review excerpt per company, a great way to discover employer slugs within a specific sector.

### Modes

| Mode | Description |
|---|---|
| `reviews` (default) | Paginated employee reviews for one or more companies |
| `salaries` | Job-title salary breakdown for one or more companies |
| `companyOverview` | One aggregate-rating record per company |
| `browseCompanies` | Directory of featured companies (name, slug, URLs) |
| `jobTitleOverview` | National career/salary aggregate for one or more job titles, across all companies |
| `jobTitleReviews` | Individual employee reviews for one or more job titles, across many companies nationwide |
| `browseJobTitles` | Directory of featured job titles (name, slug, URLs) |
| `jobListings` | Live open job postings for one or more job titles, nationwide |
| `happiestCompanies` | Yearly ranked list of CareerBliss's 50 Happiest Companies |
| `search` | Free-text keyword search across jobs, companies, reviews, salaries, or advice articles — no slug needed |
| `topCompaniesByIndustry` | Top-rated companies currently hiring in a chosen industry category (~20 per industry, ~100 industries) |

### Output fields

#### Review records (`recordType: "review"`)

- `reviewId`, `companyName`, `companySlug`, `jobTitle`
- `overallRating` (0–5), `location`, `reviewText`
- `personYouWorkForRating`, `peopleYouWorkWithRating`, `workSettingRating`, `supportYouGetRating`, `rewardsYouReceiveRating`, `growthOpportunitiesRating`, `companyCultureRating`, `wayYouWorkRating` (1–5 each, when the reviewer provided them)
- `postedRelative` (e.g. `"Posted 5 years ago"`, only present on CareerBliss's featured "spotlight" review, one per company reviews page)
- `sourceUrl`, `companyUrl`, `scrapedAt`

#### Salary records (`recordType: "salary"` or `"salaryHighlight"`)

- `companyName`, `companySlug`, `jobTitle`, `annualSalary` (USD)
- `salaryCount` (sample size), `nationalAverageSalary` (comparison, aggregate records)
- `location`, `salaryRating`, `reviewQuote`, `postedRelative` (real highlighted employee salary reports, when present)
- `sourceUrl`, `companyUrl`, `scrapedAt`

#### Company overview records (`recordType: "companyOverview"`)

- `companyName`, `companySlug`, `overallRating` (0–5), `reviewCount`
- `recommendPercent` (% of reviewers who'd recommend working there)
- `averageAnnualSalary`, `averageHourlyRate` (USD, company-wide average across all shared salaries)
- `salaryContributorCount` (number of employees who shared a salary for this company)
- `highestPayingJobTitle`, `highestPayingJobSalary`, `lowestPayingJobTitle`, `lowestPayingJobSalary` (USD)
- `topRatedCategories`, `lowRatedCategories` (which of the 8 workplace categories employees rated highest/lowest, when reviews reveal a clear low side)
- `ceo`, `foundedYear`, `companySize` (e.g. `"1,300,000+"` or `"50 - 99"`), `industry`, `headquarters` (city, state), `website` (official company site) — CareerBliss's company-profile fields; smaller/newer companies may have only some of these on file
- `reviewsUrl`, `salariesUrl`, `companyUrl`, `scrapedAt`

#### Company directory records (`recordType: "company"`)

- `companyName`, `companySlug`, `companyUrl`, `reviewsUrl`, `salariesUrl`, `scrapedAt`

#### Job title overview records (`recordType: "jobTitleOverview"`)

- `jobTitle`, `jobTitleSlug`, `openJobCount`, `averageSalary` (USD, national), `averageReviewRating` (0–5), `reviewCount`
- `topCompanies` — array of `{ companyName, companySlug, averageSalary, salaryCount, salariesUrl }`, one entry per real company with reported salaries for this title (typically dozens of companies, pulled from CareerBliss's full per-company salary breakdown for the title, not just the handful featured on the overview page)
- `overviewUrl`, `salariesUrl`, `reviewsUrl`, `jobsUrl`, `scrapedAt`

#### Job title review records (`recordType: "jobTitleReview"`)

- `reviewId`, `jobTitle`, `jobTitleSlug`, `companyName`, `companySlug` (the specific company this reviewer worked at — varies per record)
- `overallRating` (0–5), `location`
- `personYouWorkForRating`, `peopleYouWorkWithRating`, `workSettingRating`, `supportYouGetRating`, `rewardsYouReceiveRating`, `growthOpportunitiesRating`, `companyCultureRating`, `wayYouWorkRating` (1–5 each, when the reviewer provided them)
- `reviewText` (free-text quote, when the reviewer left one — most cards on this national listing carry ratings only)
- `sourceUrl`, `companyUrl`, `scrapedAt`

#### Job title directory records (`recordType: "jobTitle"`)

- `jobTitle`, `jobTitleSlug`, `overviewUrl`, `salariesUrl`, `reviewsUrl`, `scrapedAt`

#### Job listing records (`recordType: "jobListing"`)

- `jobId`, `jobTitle` (the posting's own title, may differ from the searched job title), `jobTitleSlug`
- `companyName`, `location`, `postedRelative` (e.g. `"Posted 1 week ago"`, when shown)
- `summary` (job description excerpt), `featured` (`true` on sponsored/featured postings, omitted otherwise)
- `applyUrl` (working CareerBliss link to the live posting), `sourceUrl`, `scrapedAt`

#### Happiest Companies records (`recordType: "happiestCompany"`)

- `rank` (1–50), `companyName`, `companySlug`, `overallRating` (0–5), `logoUrl`
- `reviewQuote`, `reviewQuoteUrl` (a real featured employee-review excerpt for that company)
- `companyUrl`, `reviewsUrl`, `salariesUrl`, `jobsUrl`, `scrapedAt`

#### Top companies by industry records (`recordType: "industryTopCompany"`)

- `rank`, `companyName`, `companySlug`, `industrySlug`, `overallRating` (0–5)
- `reviewQuote`, `reviewQuoteUrl` (a real featured employee-review excerpt for that company)
- `logoUrl` (when CareerBliss has one on file for this ranking page — not always present)
- `companyUrl`, `reviewsUrl`, `salariesUrl`, `jobsUrl`, `scrapedAt`

#### Search — job results (`recordType: "searchJob"`)

- `jobId`, `jobTitle`, `companyName`, `location`, `salaryRange` (raw range text as posted, e.g. `"$115,000 - $185,000 per year"`)
- `summary` (job description excerpt), `category`, `postedRelative`, `postedDate` (ISO-8601)
- `featured` (`true` on sponsored postings, omitted otherwise), `applyUrl`, `sourceUrl`, `scrapedAt`

#### Search — company results (`recordType: "searchCompany"`)

- `companyName`, `companySlug`, `overallRating` (0–5), `reviewCount`
- `averageAnnualSalary`, `highestPayingJobSalary`, `lowestPayingJobSalary` (USD)
- `sourceUrl`, `companyUrl`, `reviewsUrl`, `salariesUrl`, `scrapedAt`

#### Search — review results (`recordType: "searchReview"`)

- `reviewId`, `companyName`, `companySlug`, `jobTitle`, `overallRating` (0–5), `location`, `reviewText`
- `postedRelative`, `postedDate` (ISO-8601), `sourceUrl`, `scrapedAt`

#### Search — salary results (`recordType: "searchSalary"`)

- `companyName`, `companySlug`, `salaryCount`, `highestPayingJobSalary`, `lowestPayingJobSalary` (USD)
- `summary`, `sourceUrl`, `companyUrl`, `scrapedAt`

#### Search — advice/interview-question article results (`recordType: "searchResource"`)

- `title`, `author`, `category`, `summary`, `postedRelative`, `postedDate` (ISO-8601), `sourceUrl`, `scrapedAt`

Empty or unavailable fields are always omitted — every field present in the output has a real value.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `reviews` | `reviews` / `salaries` / `companyOverview` / `browseCompanies` / `jobTitleOverview` / `jobTitleReviews` / `browseJobTitles` / `jobListings` / `happiestCompanies` / `search` / `topCompaniesByIndustry` |
| `companySlugs` | array | `["google"]` | Company slugs or full CareerBliss URLs, e.g. `google`, `amazon`, `https://www.careerbliss.com/microsoft/` (used by `reviews` / `salaries` / `companyOverview`) |
| `browseCompaniesLetter` | string | – | Used only by `browseCompanies`: a starting letter (`a`-`z`) or `1` for digit-led names, to scrape CareerBliss's full paginated alphabetical directory (thousands of companies) instead of the small featured list |
| `industry` | string | – | Required for `topCompaniesByIndustry`: one of ~100 CareerBliss industry categories (e.g. `real-estate`, `data-services`, `legal-services`) — pick from the dropdown |
| `jobTitleSlugs` | array | `["software-engineer"]` | Job title slugs or full CareerBliss URLs, e.g. `software-engineer`, `accountant` (used by `jobTitleOverview` / `jobTitleReviews` / `jobListings`) |
| `searchQuery` | string | – | Free-text keyword to search for, e.g. `nurse`, `google`, `software engineer` (required for `search`, except when `searchType=job` and `searchLocation` is set — leave empty then to browse all open postings in that location) |
| `searchType` | string | `job` | What kind of result to return for `search`: `job`, `company`, `review`, `salary`, or `resource` |
| `searchLocation` | string | – | Optional city/state to narrow `search` job results to, e.g. `Austin, TX` (only applies when `searchType` is `job`) |
| `reviewsSortOrder` | string | `date` (newest first) | Order to fetch reviews in: `date` (newest first), `date_asc` (oldest first), `rate` (highest rating first), `rate_asc` (lowest rating first) — used by `reviews` |
| `minRating` | integer | – | Drop reviews below this star rating (1–5) — used by `reviews` / `jobTitleReviews` |
| `maxRating` | integer | – | Drop reviews above this star rating (1–5) — used by `reviews` / `jobTitleReviews` |
| `minSalary` | integer | – | Drop salary records below this annual USD amount |
| `maxSalary` | integer | – | Drop salary records above this annual USD amount |
| `jobTitleContains` | string | – | Keep only records whose job title contains this text (used by `reviews` / `salaries` / `jobListings` / `search` with `searchType=job` or `review`) |
| `locationContains` | string | – | Keep only records whose location contains this text (used by `reviews` / `salaries` / `jobListings` / `jobTitleReviews` / `search` with `searchType=job` or `review`) |
| `maxItems` | integer | `50` | Hard cap on emitted records (1–2000) |

#### Example: Amazon reviews rated 4+ stars

```json
{
  "mode": "reviews",
  "companySlugs": ["amazon"],
  "minRating": 4,
  "maxItems": 30
}
```

#### Example: Software Engineer salaries at Google and Microsoft

```json
{
  "mode": "salaries",
  "companySlugs": ["google", "microsoft"],
  "jobTitleContains": "software engineer",
  "maxItems": 50
}
```

#### Example: discover companies to scrape

```json
{
  "mode": "browseCompanies",
  "maxItems": 100
}
```

#### Example: full company directory for companies starting with "S"

```json
{
  "mode": "browseCompanies",
  "browseCompaniesLetter": "s",
  "maxItems": 1000
}
```

#### Example: national career overview for a job title

```json
{
  "mode": "jobTitleOverview",
  "jobTitleSlugs": ["software-engineer", "registered-nurse"],
  "maxItems": 50
}
```

#### Example: open job postings for Registered Nurse in California

```json
{
  "mode": "jobListings",
  "jobTitleSlugs": ["registered-nurse"],
  "locationContains": "CA",
  "maxItems": 50
}
```

#### Example: nurse reviews across many hospitals nationwide, 4+ stars

```json
{
  "mode": "jobTitleReviews",
  "jobTitleSlugs": ["registered-nurse"],
  "minRating": 4,
  "maxItems": 50
}
```

#### Example: discover job titles to scrape

```json
{
  "mode": "browseJobTitles",
  "maxItems": 100
}
```

#### Example: this year's 50 Happiest Companies

```json
{
  "mode": "happiestCompanies",
  "maxItems": 50
}
```

#### Example: keyword search for nursing jobs in a city

```json
{
  "mode": "search",
  "searchQuery": "nurse",
  "searchType": "job",
  "searchLocation": "Austin, TX",
  "maxItems": 50
}
```

#### Example: find companies by keyword (no slug needed)

```json
{
  "mode": "search",
  "searchQuery": "software",
  "searchType": "company",
  "maxItems": 30
}
```

#### Example: browse all open jobs in a location (no keyword needed)

```json
{
  "mode": "search",
  "searchType": "job",
  "searchLocation": "Chicago, IL",
  "maxItems": 30
}
```

#### Example: top-rated companies hiring in Real Estate

```json
{
  "mode": "topCompaniesByIndustry",
  "industry": "real-estate",
  "maxItems": 20
}
```

### How to find `companySlugs`

A company's slug is the first path segment of its CareerBliss URL. For `https://www.careerbliss.com/amazon/reviews/` the slug is `amazon`. You can also paste the full company URL directly into `companySlugs` — the actor extracts the slug automatically. Run `mode: "browseCompanies"` to get a starting list of well-known employer slugs.

### How to find `jobTitleSlugs`

A job title's slug is the first path segment of its CareerBliss job-title URL. For `https://www.careerbliss.com/software-engineer/` the slug is `software-engineer`. You can also paste the full job-title URL directly into `jobTitleSlugs`. Run `mode: "browseJobTitles"` to get a starting list of well-known job-title slugs, or check the `topCompanies[].companySlug` values returned by `jobTitleOverview` to feed into `companySlugs`.

### Reliability

- Pure HTTP requests with automatic retry and exponential backoff on `403`, `429`, and `5xx` responses — no proxy or browser automation needed.
- Filters that reference a field the record doesn't have (e.g. `minRating` on a review with no numeric rating) pass through rather than being silently dropped.
- Invalid or unresolvable company slugs produce a clear status message instead of a silent empty run.
- An impossible filter range (e.g. `minRating` greater than `maxRating`) is detected immediately and reported via a status message, instead of scanning every page before returning zero results.

### Limitations

- Review pagination and salary listings reflect what CareerBliss currently displays publicly; very small or unlisted companies may have limited or no data.
- `search` mode's underlying keyword-search endpoint can occasionally repeat a handful of results across adjacent result pages; the actor dedupes automatically, so this only means very high `maxItems` values on a narrow query may return fewer unique records than requested once CareerBliss's own search index is exhausted. When this happens, the run's status message reports how many records were actually available.
- `salaries` mode paginates through a company's entire public salary history, not just the first page.
- CareerBliss's own page markup only includes the per-review star-rating widget on most cards for `reviewsSortOrder: date` (default) and `rate`; for `date_asc` and `rate_asc` it omits the widget from nearly every card except the page's featured "spotlight" review, so `overallRating` (and therefore `minRating`/`maxRating` filtering) is far less complete under those two sort orders — use `date` or `rate` when rating filtering matters.
- `jobTitleReviews` cards mostly carry the overall + per-category star ratings without a free-text quote (the full write-up lives on the individual company's own review page); `reviewText` is included whenever a card does have one.
- `applyUrl` on `jobListing`/`searchJob` records is CareerBliss's own apply-redirect link. It performs a live lookup against the underlying syndicated job feed at click time, so — exactly as on careerbliss.com itself — it can occasionally lead to a "job no longer available" page if that specific posting has since been filled or pulled by the original poster. `sourceUrl` on these records always points to a stable, always-resolvable CareerBliss page (the job-title listing page or search-results page).

### FAQ

**Do I need a CareerBliss account or API key?**
No. This actor only reads publicly available pages — no login, cookies, or API key required.

**Can I scrape multiple companies in one run?**
Yes — pass multiple entries in `companySlugs` and the actor will process each one, respecting the shared `maxItems` cap across all of them.

**Why do some reviews have fewer than 8 category ratings?**
Not every CareerBliss reviewer fills in every category. Only the categories the reviewer actually rated are included in the output — never a placeholder value.

**Are the salary figures real?**
Yes — `annualSalary`, `nationalAverageSalary`, and `jobTitleOverview`'s `averageSalary` are parsed directly from CareerBliss's published salary data (self-reported by employees and aggregated by CareerBliss), not estimated or fabricated.

**What's the difference between `salaries` and `jobTitleOverview`?**
`salaries` returns per-company salary records for the companies you specify in `companySlugs`. `jobTitleOverview` returns one national aggregate record per job title — total open jobs, average salary and review rating across all companies, and the top-paying companies for that title — for the titles you specify in `jobTitleSlugs`.

**What's in `jobListings`, and how is it different from `jobTitleOverview`?**
`jobTitleOverview` gives you the aggregate national picture for a job title (average salary, review rating, top companies). `jobListings` gives you the individual open postings themselves — real, currently-live job ads with hiring company, location, and a working apply link — for the job titles you specify in `jobTitleSlugs`.

**What's the difference between `reviews` and `jobTitleReviews`?**
`reviews` returns every review at one specific company (you supply `companySlugs`). `jobTitleReviews` returns individual reviews for one job title written at many DIFFERENT companies nationwide (you supply `jobTitleSlugs`) — useful for seeing how a role is rated across employers rather than at a single company.

**Can I search CareerBliss without knowing a company or job-title slug?**
Yes — use `mode: "search"` with `searchQuery` set to any keyword (a job title, company name, or skill). It uses CareerBliss's own site-wide keyword search, so you don't need to already know a slug. Set `searchType` to `job` (default), `company`, `review`, `salary`, or `resource` to pick what kind of result to get back.

**Can I get all open jobs in a city without picking a keyword?**
Yes — with `mode: "search"` and `searchType: "job"`, leave `searchQuery` empty and set `searchLocation` (e.g. `"Chicago, IL"`) on its own. This browses every open posting CareerBliss has for that location instead of filtering by keyword.

**How do I find top-rated employers in a specific industry?**
Use `mode: "topCompaniesByIndustry"` with `industry` set to one of the ~100 available categories (e.g. `real-estate`, `hospitals-and-health-centers`, `legal-services`). This returns CareerBliss's curated top-rated-companies-currently-hiring list for that sector, with each company's slug ready to feed into `companySlugs` for a deeper look via `reviews`, `salaries`, or `companyOverview`.

# Actor input Schema

## `mode` (type: `string`):

What to scrape.

## `companySlugs` (type: `array`):

CareerBliss company identifiers — either the URL slug (e.g. `google`, `amazon`, `microsoft`) or a full company page URL (e.g. `https://www.careerbliss.com/google/`). Find slugs by browsing careerbliss.com or using mode=browseCompanies.

## `browseCompaniesLetter` (type: `string`):

Optional: scrape the FULL alphabetical company directory for a single starting letter (e.g. `a`, `t`) or `1` for companies starting with a digit — this can return thousands of companies (paginated, capped by Max items) instead of the ~40-company featured list on the browse-companies homepage. Leave empty to scrape the small featured directory instead.

## `industry` (type: `string`):

CareerBliss industry category to fetch the top-rated hiring companies for (typically ~20 companies per industry, ranked by employee rating). Each result includes the company slug, which can be fed into companySlugs for reviews/salaries/companyOverview.

## `jobTitleSlugs` (type: `array`):

CareerBliss job-title identifiers — either the URL slug (e.g. `software-engineer`, `accountant`, `registered-nurse`) or a full job-title page URL (e.g. `https://www.careerbliss.com/software-engineer/`). Find slugs by using mode=browseJobTitles. With mode=jobTitleOverview, returns the national average salary, open job count, average review rating, and top-paying companies for that title across all of CareerBliss. With mode=jobTitleReviews, returns individual employee reviews for that title written at many different companies nationwide (not scoped to one company). With mode=jobListings, returns actual open job postings for that title nationwide.

## `searchQuery` (type: `string`):

Free-text keyword to search CareerBliss for — a job title, company name, or skill (e.g. `nurse`, `google`, `software engineer`). Required for mode=search, EXCEPT when searchType=job and searchLocation is set — in that case you can leave this empty to browse ALL open postings in that location instead of filtering by keyword. Uses CareerBliss's own site-wide search, so no company or job-title slug needs to be known in advance.

## `searchType` (type: `string`):

What kind of result to return for the search keyword.

## `searchLocation` (type: `string`):

Optional: narrow job-posting search results to a city/state, e.g. `Austin, TX` or `New York`. Only applies when searchType=job. If searchQuery is left empty, setting this alone browses ALL open job postings in that location (no keyword needed).

## `reviewsSortOrder` (type: `string`):

Order to fetch employee reviews in. Newest first is the CareerBliss default. Note: CareerBliss only renders the per-review star rating in its "Oldest first" and "Lowest rating first" page markup for a handful of reviews per page (unlike "Newest first"/"Highest rating first", which carry it on every card) — `overallRating` is simply omitted (never faked) on cards where it isn't served, and `minRating`/`maxRating` cannot filter out a review whose rating CareerBliss didn't expose.

## `minRating` (type: `integer`):

Drop reviews with an overall star rating below this value (1-5).

## `maxRating` (type: `integer`):

Drop reviews with an overall star rating above this value (1-5).

## `minSalary` (type: `integer`):

Drop salary records below this annual USD amount.

## `maxSalary` (type: `integer`):

Drop salary records above this annual USD amount.

## `jobTitleContains` (type: `string`):

Keep only records whose job title contains this text (case-insensitive). For mode=search, applies to searchType=job/review results.

## `locationContains` (type: `string`):

Keep only records whose location contains this text (case-insensitive), e.g. `CA` or `New York`. For mode=search, applies to searchType=job/review results.

## `maxItems` (type: `integer`):

Hard cap on emitted records across all requested companies.

## Actor input object example

```json
{
  "mode": "reviews",
  "companySlugs": [
    "google"
  ],
  "browseCompaniesLetter": "",
  "jobTitleSlugs": [
    "software-engineer"
  ],
  "searchType": "job",
  "reviewsSortOrder": "date",
  "maxItems": 50
}
```

# Actor output Schema

## `records` (type: `string`):

Dataset containing all scraped CareerBliss reviews, salaries, overviews, or company directory entries.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "reviews",
    "companySlugs": [
        "google"
    ],
    "jobTitleSlugs": [
        "software-engineer"
    ],
    "searchType": "job",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/careerbliss-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "reviews",
    "companySlugs": ["google"],
    "jobTitleSlugs": ["software-engineer"],
    "searchType": "job",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/careerbliss-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "reviews",
  "companySlugs": [
    "google"
  ],
  "jobTitleSlugs": [
    "software-engineer"
  ],
  "searchType": "job",
  "maxItems": 50
}' |
apify call crawlerbros/careerbliss-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,crawlerbros/careerbliss-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/BIIbSPuA59MjpTJSk/builds/CBRm1M1hAxLeTowAT/openapi.json
