# Care.com Scraper (`crawlerbros/care-com-scraper`) Actor

Scrape Care.com caregiver listings and profiles - babysitters, nannies, senior caregivers, pet sitters, housekeepers, tutors. Search by category and US city, or fetch a full profile by URL: rates, experience, ratings, background-check status, reviews.

- **URL**: https://apify.com/crawlerbros/care-com-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Lead generation, Jobs
- **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/platform/actors/running/actors-in-store#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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Care.com Scraper

Scrape publicly listed caregiver profiles from Care.com — babysitters, nannies, senior caregivers, home health aides, special-needs caregivers, pet sitters, dog walkers, housekeepers, and tutors. Also scrape family-posted **caregiver job postings** and **child care center / senior living community** business directories from the same site. Search by category and US city, or fetch a single caregiver's full public profile by URL. No login, no cookies, no proxy required.

### What this actor does

- **Two modes:** `searchCaregivers` (browse a category + city listing page) and `getProfiles` (fetch full detail for specific caregiver profile URLs)
- **12 categories** in the dropdown: 9 individual-caregiver verticals (child care, senior care, pet care, housekeeping, tutoring), plus **Caregiver Job Postings** (families hiring — a different record shape, see below), **Child Care Centers**, and **Assisted Living / Senior Living Communities** (businesses, not individual caregivers). A free-text override covers 150+ further niche category pages Care.com publishes (e.g. `dog-sitters`, `overnight-nannies`, `date-night-babysitters`, `independent-living`) — the actor auto-detects whether an unlisted slug is a caregiver, job, or center category from the page's own data.
- **Filters:** minimum years of experience, minimum average review rating, background-check-only, availability (full-time / part-time) — these only apply to individual-caregiver categories (`minRating` also applies to center categories); job postings have no filterable fields, so filters are ignored for that category
- **Automatic pagination** across a category+city's full result set, up to `maxItems`
- **Local market stats** — one extra summary record per caregiver-category search with category+city-level caregiver supply/pricing data (toggle with `includeMarketStats`)
- **Empty fields are omitted** — every record only contains what the public listing actually discloses

### Output per caregiver

**From `searchCaregivers`:**
- `publicId`, `profileUrl`, `serviceCode`, `category`
- `displayName`, `city`, `state`, `age`, `imageUrl`, `isPremium`
- `yearsOfExperience`, `avgReviewRating`, `numberOfReviews`, `hiredTimes`, `hasBackgroundCheck`
- `bioTitle`, `experienceSummary`, `isAiAssistedBio` (whether Care.com's own AI-assist tool helped write the bio — disclosed for every caregiver category checked)
- `hourlyRateFrom`, `hourlyRateTo`, `currencyCode`
- `qualities[]`, `supportedServices[]` — flattened from the vertical-specific certification/service flags Care.com discloses for that category
- `latestReview` (`rating`, `comment`, `reviewerName`), `reviews[]` (up to 5)

**Local market stats record** (`searchCaregivers` mode only, one per run when `includeMarketStats` is true, identified by `recordType: "marketStats"`):
- `category`, `city`, `state`, `zipcode`, `latitude`, `longitude`
- `totalProviders` — total caregivers Care.com lists for this category+city
- `avgYearsOfExperience`, `totalReviewCount`, `avgReviewRating`
- `avgHourlyRate`, `minHourlyRate`, `maxHourlyRate`, `currencyCode`
- `localFaqs[]` (`question`, `answer`) — Care.com's published "common questions about hiring a &lt;category&gt; in &lt;city&gt;" Q&A content (pricing guidance, how to find/choose a caregiver, booking lead time, etc.), HTML-stripped to plain text. Not emitted for the special-needs category, which Care.com doesn't publish this content for.
- `relatedArticles[]` (`title`, `url`, `description`, `imageUrl`, `publishedDate`) — Care.com's editorial blog content linked from the category+city page (parenting/caregiving tips), HTML-stripped to plain text. Not emitted for job-posting or center-directory categories.

**From `getProfiles`** — everything above (except the market-stats fields, which are search-only), plus:
- `serviceProfileId` — a stable numeric ID for this caregiver's specific service listing (join key distinct from the alphanumeric `publicId`; not populated on special-needs profiles, which use a differently-shaped payload with no such field — see note below)
- `memberId` — a stable UUID for the caregiver's underlying Care.com member account (a third join key alongside `publicId`/`serviceProfileId`; populated on every vertical including special-needs)
- `servicesOffered[]` — every vertical this caregiver has an active listing in (e.g. a caregiver may offer both child care and pet care), independent of which vertical's URL was fetched; not populated on special-needs profiles
- `firstName`, `zip`
- `languages[]`, `badges[]`, `isVaccinated`
- `backgroundChecks[]` (`checkName`, `completedAt`)
- `education[]`
- `numberOfChildren`, `ageGroups[]` (child care only)
- `petSpeciesCaredFor[]` (pet care only) — e.g. "Cares For Dogs", "Cares For Cats"
- `subjects[]`, `generalSubjects[]`, `otherSubjects` (tutoring only) — specific subjects taught, their general categories, and any caregiver-entered free-text subject
- `additionalJobInterests[]` (all verticals) — extra job types the caregiver is open to beyond their primary category, e.g. "Transportation", "Meal Prep Laundry", "Pet Help"
- `similarProfiles[]` (`profileUrl`, `displayName`, `city`, `imageUrl`, `avgReviewRating`) — other caregivers Care.com surfaces as similar/nearby on the same profile page, up to 5
- `reviews[]` (up to 20 — matching the maximum Care.com's own profile page embeds, with `reviewDate`, `careType`, `verifiedByCareCom`, and `reviewerType` (`Seeker` / `Provider`, when disclosed)) — for special-needs profiles this is always exactly 1 review (Care.com only discloses the single most recent review for that vertical, not a full list)
- `availability` (`Full Time` / `Part Time`) — only disclosed on individual profile pages, never on search listing pages
- `oneTimeRates[]` — per-unit one-time pricing where the caregiver's vertical discloses it (e.g. child care: `numberOfChildren` + `rate`; pet care: `activity` + `activityRateUnit` + `rate`)
- `gender`, `verifications[]` — disclosed on special-needs caregiver profiles
- `isAiAssistedBio` — whether Care.com's AI-assist tool helped write the bio; disclosed on child-care and special-needs profile pages, not disclosed on senior-care/pet-care/housekeeping/tutoring profile pages (omitted there rather than faked)
- `weeklySchedule` — the caregiver's self-reported recurring weekly availability, e.g. `{"Monday": ["6:00 AM - 6:00 PM"], "Saturday": ["8:00 AM - 12:00 PM", "2:00 PM - 6:00 PM"]}`; omitted when the caregiver hasn't filled one in

**Note on special needs caregivers:** Care.com serves special-needs profile pages (`/p/<id>/sn`) from a differently shaped API response than every other vertical. The actor detects and normalizes this automatically — `getProfiles` on a special-needs URL returns the same field set as any other vertical (minus a few fields, like individual `reviews[]`, that vertical simply doesn't expose on its own).

### Output for Caregiver Job Postings (`category: caregiver-jobs`)

A different record shape (`recordType: "job"`) — a family's job listing, not a caregiver's own profile:
- `jobId`, `jobDetailUrl`, `title`, `jobType` (`Full Time` / `Part Time`), `category`
- `startDate`, `city`, `state`, `description`
- `hourlyRateFrom`, `hourlyRateTo`, `currencyCode`
- `seekerAvatarUrl` — the posting family's avatar image

### Output for Child Care Centers / Assisted Living (`category: child-care-centers` / `assisted-living`)

A different record shape (`recordType: "center"`) — a business, not an individual caregiver:
- `providerId`, `name`, `category`, `profileUrl`, `logoUrl`, `isPremium`, `licenseVerified`
- `addressLine1`, `city`, `state`, `zip`, `latitude`, `longitude`, `distanceFromSearchLocationMiles`
- `avgReviewRating`, `numberOfReviews`, `latestReview` (`rating`, `comment`, `reviewerName`, `reviewDate`)
- `reviews[]` (up to 10 — a fuller review list distinct from `latestReview` above, with `rating`, `comment`, `reviewerName`, `reviewDate` when disclosed)
- `description`
- `phoneNumber` — the contact phone number Care.com displays for this business
- `estimatedMonthlyRate`, `currencyCode` — Care.com's displayed cost estimate for this business (more commonly disclosed on Assisted Living listings than Child Care Centers)
- `isPayPerLead` — whether this is a sponsored/pay-per-lead listing
- `tourRequestAvailable` — whether this business has online tour-scheduling enabled on its Care.com listing
- `discountOffers[]` (`audience`, `percentageOff` or `amountOff`, `currencyCode`) — a per-membership-tier promotional discount Care.com publishes on some center listings (e.g. "Premium" members get 5% off); omitted when the listing has no active offer
- `philosophies[]`, `schoolTypes[]` (child care centers, e.g. "Montessori", "Day Care")
- `amenities[]`, `supportedLanguages[]` (senior living communities — amenities flattened from Care.com's nested care-services/facility-amenities/food-amenities/room-type flags into readable labels, e.g. "Care Services: Hospice Care", "Room Types: One Bedroom")
- `images[]` (`url`, `thumbnailUrl`) — this business's public photo gallery, distinct from the single `logoUrl` above
- `license` (`status`, `name`, `verifiedDate`) — Care.com's license-verification record for this business, when disclosed (more detailed than the boolean `licenseVerified` above)
- `searchMatchReason` — why this business matched the searched city, e.g. "Postal Code Match" or "User Radius Match"
- `centerType` — Care.com's own business-account classification, e.g. "National Account", when disclosed
- `adsStatus` — whether this listing currently has active Care.com advertising, when disclosed
- `showsPhoneLeadIcon` — whether Care.com displays a "click to call" phone icon on this listing

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `mode` | string | `searchCaregivers` | `searchCaregivers` / `getProfiles` |
| `category` | string | `babysitters` | One of the 12 curated categories (dropdown) — 9 caregiver verticals + Caregiver Job Postings + Child Care Centers + Assisted Living |
| `customCategorySlug` | string | – | Any care.com category slug, overrides `category` |
| `city` | string | `Chicago` | US city (mode=searchCaregivers) |
| `state` | string | `IL` | US state, 2-letter code (mode=searchCaregivers) |
| `profileUrls` | array | – | Full `care.com/p/...` profile URLs (mode=getProfiles) |
| `minYearsExperience` | int | – | Drop caregivers below this years-of-experience (caregiver categories only) |
| `minRating` | int | – | Drop records below this average rating (1-5) — caregiver and center categories only |
| `backgroundCheckOnly` | bool | `false` | Only emit background-checked caregivers (caregiver categories only) |
| `availabilityFilter` | string | `any` | `any` / `fullTime` / `partTime` — only applies to `getProfiles` (see FAQ) |
| `includeMarketStats` | bool | `true` | Emit one extra `recordType: "marketStats"` summary record per caregiver-category search (mode=searchCaregivers) |
| `maxItems` | int | `60` | Hard cap on emitted records (1-2000) |

#### Example: search nannies in New York

```json
{
  "mode": "searchCaregivers",
  "category": "nannies",
  "city": "New York",
  "state": "NY",
  "minYearsExperience": 3,
  "backgroundCheckOnly": true,
  "maxItems": 100
}
````

#### Example: fetch specific profiles

```json
{
  "mode": "getProfiles",
  "profileUrls": [
    "https://www.care.com/p/arianag861/cc",
    "https://www.care.com/p/susana4010/sc"
  ]
}
```

#### Example: niche category via custom slug

```json
{
  "mode": "searchCaregivers",
  "customCategorySlug": "overnight-nannies",
  "city": "Los Angeles",
  "state": "CA"
}
```

#### Example: caregiver job postings

```json
{
  "mode": "searchCaregivers",
  "category": "caregiver-jobs",
  "city": "Austin",
  "state": "TX",
  "maxItems": 50
}
```

#### Example: child care centers

```json
{
  "mode": "searchCaregivers",
  "category": "child-care-centers",
  "city": "Denver",
  "state": "CO",
  "minRating": 4
}
```

### Use cases

- **Family/agency sourcing tools** — bulk-collect caregiver candidates for a city/category
- **Rate benchmarking** — analyze hourly rate ranges by category and metro area
- **Background-check compliance audits** — filter to only verified caregivers
- **Local labor-market research** — caregiver supply, experience levels, and review distributions by city
- **Review/reputation analysis** — aggregate caregiver review text and ratings

### FAQ

**Does this require a Care.com account or login?**  No. All data comes from Care.com's public SEO listing and profile pages, which are indexed by search engines and viewable without logging in.

**Why do some caregivers have no `hourlyRateFrom`/`hourlyRateTo`?**  Not every caregiver discloses a rate on their public profile; those fields are omitted rather than filled with a placeholder.

**What's the difference between `category` and `customCategorySlug`?**  `category` is a curated dropdown of 9 verified, high-traffic categories. Care.com actually publishes 150+ narrower category pages (age-specific, language-specific, schedule-specific, etc.) — paste any of those URL slugs into `customCategorySlug` to use it instead.

**How many results can I get per search?**  Care.com paginates 20 caregivers per page; the actor walks pages automatically up to `maxItems` or the category+city's total result count, whichever is smaller.

**What does `qualities` vs `supportedServices` mean?**  Care.com tracks different fields per vertical: child-care caregivers have qualities like "CPR Trained" and services like "Meal Preparation"; pet-care caregivers have qualities like "NAPPS Certified" and services like "Does Pet Walking". The actor flattens whichever boolean flags are `true` for that caregiver's vertical into readable labels.

**Is `avgReviewRating` out of 5?**  Yes.

**Can I look up a caregiver in a category not in the dropdown?**  Yes — use `customCategorySlug` with any slug from a `care.com/<slug>/<city-state>` URL (see Care.com's [full category directory](https://www.care.com/care-directory)).

**Why does `availabilityFilter` only work with `getProfiles`?**  Care.com discloses a caregiver's full-time/part-time availability only on their individual profile page, not on category+city search listing pages. Setting `availabilityFilter` while `mode=searchCaregivers` will exclude every record, since the field is never present to match against — leave it on `any` for that mode.

**Does `oneTimeRates` appear for every caregiver?**  No — only caregivers who disclosed one-time/per-unit pricing on their public profile (in addition to, or instead of, an hourly range) will have it, and only in `getProfiles` mode. It's shaped differently per vertical: child-care caregivers price per number of children, pet-care caregivers price per activity (sitting, boarding, dog walking, etc.).

**What is `similarProfiles`?**  Care.com's own profile pages surface a "similar caregivers" or "nearby caregivers" module linking to a handful of other public profiles in the same category/area. The actor captures those links (`getProfiles` mode only) so you can discover more candidates without a separate search.

**Why do only pet-care/tutoring profiles have `petSpeciesCaredFor`/`subjects`?**  Those are vertical-specific fields Care.com only collects for that category — a house cleaner's profile has no "subjects taught" field to disclose, so it's correctly omitted rather than emitted empty.

**What is `localFaqs`?**  Care.com publishes a "common questions" Q\&A block on every caregiver-category+city page (average rate, how to find a caregiver, how far in advance to book, etc.) — the actor captures it as part of the `marketStats` record, with HTML markup stripped down to plain text. It's not published for the special-needs category.

**What is `servicesOffered`?**  Many caregivers list themselves across more than one Care.com vertical (e.g. child care + pet care). `getProfiles` mode surfaces the full list of verticals a caregiver is active in, not just the one implied by the URL you fetched. Not populated on special-needs profiles.

**What is `tourRequestAvailable`?**  Whether a Child Care Center / Assisted Living listing has Care.com's online tour-request/scheduling feature turned on — most listings don't, some do.

**What is `relatedArticles`?**  Care.com links a handful of its own parenting/caregiving blog posts from each caregiver-category+city page (e.g. seasonal activity ideas, caregiver hiring guides). The actor captures these as part of the `marketStats` record — title, URL, a short description, a cover image, and publish date — with HTML markup stripped down to plain text. Not published for job-posting or center-directory categories.

**What is the `marketStats` record?**  When `mode=searchCaregivers`, the actor emits one extra record per run (`recordType: "marketStats"`) with category+city-level data Care.com publishes alongside the listing itself: total caregiver count, average years of experience, average review rating/count, and the min/avg/max hourly rate for that category+city. It's a single summary, not per-caregiver, so it's kept separate from the caregiver records rather than repeated on every one. Set `includeMarketStats` to `false` to skip it.

**What is `isAiAssistedBio`?**  Care.com now flags whether a caregiver's bio text was written with the help of its own AI-assist tool. It's a genuine boolean disclosed alongside the bio itself (both `true` and `false` are real signals, not placeholders) — populated on every caregiver-category search result, and on `getProfiles` for the child-care and special-needs verticals; the other verticals' profile-page bio payload simply doesn't carry the field, so it's omitted there rather than faked.

**Why doesn't `getProfiles` return `serviceProfileId` for special-needs caregivers?**  Care.com's special-needs vertical (service code `sn`) serves a differently-shaped API response that simply has no `serviceProfileId` field at all (see the note on special-needs profiles above) — it's omitted rather than faked.

**What's the difference between the caregiver categories and `caregiver-jobs`/`child-care-centers`/`assisted-living`?**  The 9 caregiver categories return individual caregivers' own listings (`recordType` absent, i.e. the default caregiver shape). `caregiver-jobs` returns job postings *families* have placed, hiring for a caregiver (`recordType: "job"`) — Care.com serves this from the same URL pattern and payload shape as a caregiver search, just with a different result list populated. `child-care-centers` and `assisted-living` return *businesses* (daycares, preschools, senior living communities), not individual people (`recordType: "center"`).

**Why are `minYearsExperience`/`backgroundCheckOnly`/`availabilityFilter` ignored when searching `caregiver-jobs` or center categories?**  Job postings and center listings simply have no years-of-experience, background-check, or availability field to filter on — Care.com never discloses those for a job posting or a business. Rather than silently dropping every record (the way an impossible `availabilityFilter` used to), those filters are treated as inapplicable no-ops for those two categories. `minRating` still works for center categories since centers do have their own review rating.

**Why does `curl`-ing a `profileUrl`/`imageUrl` from the output return HTTP 403?**  care.com fronts every page with Akamai bot detection that fingerprints the TLS handshake (JA3), not just the `User-Agent` header — plain `curl`/`wget` are blocked even with browser-like headers set. All output URLs load normally in a real web browser (and are exactly what the actor itself successfully fetches, via Chrome-TLS-impersonation). This is a scripted-verification quirk, not a broken or dead link.

### Data Source & Anti-Bot Notes

care.com's public SEO listing and profile pages are fetched directly (no proxy) using `curl_cffi` with Chrome-131 TLS/JA3 impersonation, which is required — care.com's Akamai bot-management layer blocks plain HTTP clients (including `curl` and default `requests`/`httpx`) purely on TLS fingerprint, independent of headers. Real browsers are unaffected.

# Actor input Schema

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

What to fetch.

## `category` (type: `string`):

Which kind of caregiver to search for (mode=searchCaregivers). Care.com covers child care, senior care, pet care, housekeeping, and tutoring verticals — plus family-posted job listings and business/center directories (child care centers, senior living communities), which return a different record shape (see README).

## `customCategorySlug` (type: `string`):

Care.com has 150+ niche category pages beyond the dropdown above (e.g. `dog-sitters`, `newborn-nannies`, `overnight-nannies`, `date-night-babysitters`, `home-organizers`, `independent-living`). Paste any slug from a care.com/<slug>/<city-st> URL here to override the Category dropdown. Leave empty to use Category. The actor auto-detects whether the slug is a caregiver, job-posting, or business/center category from the page's own data.

## `city` (type: `string`):

US city name to search in (mode=searchCaregivers).

## `state` (type: `string`):

US state for the city above (mode=searchCaregivers).

## `profileUrls` (type: `array`):

Full care.com profile URLs, e.g. `https://www.care.com/p/arianag861/cc`. Get these from search results.

## `minYearsExperience` (type: `integer`):

Drop caregivers with fewer years of experience than this (mode=searchCaregivers, caregiver categories only — has no effect on Caregiver Job Postings or Child Care Centers/Assisted Living categories, which have no years-of-experience field).

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

Drop records with an average review rating below this (1-5). Applies to caregiver categories and to Child Care Centers/Assisted Living (both expose a rating); has no effect on Caregiver Job Postings, which have no rating. Records with no reviews are dropped if this is set.

## `includeMarketStats` (type: `boolean`):

When true, emit one extra summary record per search with local-market data for the chosen category+city: total caregiver count, average years of experience, average review rating/count, and min/avg/max hourly rate (identified by `recordType: "marketStats"`, separate from the caregiver records). Only applies to caregiver categories — never emitted for Caregiver Job Postings or Child Care Centers/Assisted Living.

## `backgroundCheckOnly` (type: `boolean`):

Only emit caregivers with a completed Care.com background/care check (caregiver categories only — has no effect on Caregiver Job Postings or Child Care Centers/Assisted Living categories).

## `availabilityFilter` (type: `string`):

Only emit caregivers whose disclosed availability matches. Care.com only discloses this on individual profile pages (mode=getProfiles) — it is never populated by searchCaregivers, so setting this to anything but Any while searching will drop every record.

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

Hard cap on emitted records.

## Actor input object example

```json
{
  "mode": "searchCaregivers",
  "category": "babysitters",
  "city": "Chicago",
  "state": "IL",
  "profileUrls": [
    "https://www.care.com/p/arianag861/cc"
  ],
  "includeMarketStats": true,
  "backgroundCheckOnly": false,
  "availabilityFilter": "any",
  "maxItems": 60
}
```

# Actor output Schema

## `caregivers` (type: `string`):

Dataset containing all scraped records — individual caregiver records by default, or job-posting/center records (`recordType: "job"` / `"center"`) when a job-postings or center-directory category is selected.

# 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": "searchCaregivers",
    "category": "babysitters",
    "city": "Chicago",
    "state": "IL",
    "profileUrls": [
        "https://www.care.com/p/arianag861/cc"
    ],
    "includeMarketStats": true,
    "backgroundCheckOnly": false,
    "availabilityFilter": "any",
    "maxItems": 60
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/care-com-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": "searchCaregivers",
    "category": "babysitters",
    "city": "Chicago",
    "state": "IL",
    "profileUrls": ["https://www.care.com/p/arianag861/cc"],
    "includeMarketStats": True,
    "backgroundCheckOnly": False,
    "availabilityFilter": "any",
    "maxItems": 60,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": "searchCaregivers",
  "category": "babysitters",
  "city": "Chicago",
  "state": "IL",
  "profileUrls": [
    "https://www.care.com/p/arianag861/cc"
  ],
  "includeMarketStats": true,
  "backgroundCheckOnly": false,
  "availabilityFilter": "any",
  "maxItems": 60
}' |
apify call crawlerbros/care-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/care-com-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Care.com Scraper",
        "description": "Scrape Care.com caregiver listings and profiles - babysitters, nannies, senior caregivers, pet sitters, housekeepers, tutors. Search by category and US city, or fetch a full profile by URL: rates, experience, ratings, background-check status, reviews.",
        "version": "1.0",
        "x-build-id": "85GWNwY83bzPWtihF"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~care-com-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-care-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~care-com-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-care-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~care-com-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-care-com-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "searchCaregivers",
                            "getProfiles"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "searchCaregivers"
                    },
                    "category": {
                        "title": "Caregiver category",
                        "enum": [
                            "babysitters",
                            "nannies",
                            "senior-care",
                            "home-health-aides",
                            "special-needs",
                            "pet-care",
                            "dog-walkers",
                            "house-cleaning",
                            "tutors",
                            "caregiver-jobs",
                            "child-care-centers",
                            "assisted-living"
                        ],
                        "type": "string",
                        "description": "Which kind of caregiver to search for (mode=searchCaregivers). Care.com covers child care, senior care, pet care, housekeeping, and tutoring verticals — plus family-posted job listings and business/center directories (child care centers, senior living communities), which return a different record shape (see README).",
                        "default": "babysitters"
                    },
                    "customCategorySlug": {
                        "title": "Custom category slug (advanced, overrides Category)",
                        "type": "string",
                        "description": "Care.com has 150+ niche category pages beyond the dropdown above (e.g. `dog-sitters`, `newborn-nannies`, `overnight-nannies`, `date-night-babysitters`, `home-organizers`, `independent-living`). Paste any slug from a care.com/<slug>/<city-st> URL here to override the Category dropdown. Leave empty to use Category. The actor auto-detects whether the slug is a caregiver, job-posting, or business/center category from the page's own data."
                    },
                    "city": {
                        "title": "City",
                        "type": "string",
                        "description": "US city name to search in (mode=searchCaregivers).",
                        "default": "Chicago"
                    },
                    "state": {
                        "title": "State",
                        "enum": [
                            "AL",
                            "AK",
                            "AZ",
                            "AR",
                            "CA",
                            "CO",
                            "CT",
                            "DE",
                            "DC",
                            "FL",
                            "GA",
                            "HI",
                            "ID",
                            "IL",
                            "IN",
                            "IA",
                            "KS",
                            "KY",
                            "LA",
                            "ME",
                            "MD",
                            "MA",
                            "MI",
                            "MN",
                            "MS",
                            "MO",
                            "MT",
                            "NE",
                            "NV",
                            "NH",
                            "NJ",
                            "NM",
                            "NY",
                            "NC",
                            "ND",
                            "OH",
                            "OK",
                            "OR",
                            "PA",
                            "RI",
                            "SC",
                            "SD",
                            "TN",
                            "TX",
                            "UT",
                            "VT",
                            "VA",
                            "WA",
                            "WV",
                            "WI",
                            "WY"
                        ],
                        "type": "string",
                        "description": "US state for the city above (mode=searchCaregivers).",
                        "default": "IL"
                    },
                    "profileUrls": {
                        "title": "Profile URLs (mode=getProfiles)",
                        "type": "array",
                        "description": "Full care.com profile URLs, e.g. `https://www.care.com/p/arianag861/cc`. Get these from search results.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "minYearsExperience": {
                        "title": "Min years of experience",
                        "minimum": 0,
                        "maximum": 60,
                        "type": "integer",
                        "description": "Drop caregivers with fewer years of experience than this (mode=searchCaregivers, caregiver categories only — has no effect on Caregiver Job Postings or Child Care Centers/Assisted Living categories, which have no years-of-experience field)."
                    },
                    "minRating": {
                        "title": "Min average review rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Drop records with an average review rating below this (1-5). Applies to caregiver categories and to Child Care Centers/Assisted Living (both expose a rating); has no effect on Caregiver Job Postings, which have no rating. Records with no reviews are dropped if this is set."
                    },
                    "includeMarketStats": {
                        "title": "Include local market stats record (mode=searchCaregivers)",
                        "type": "boolean",
                        "description": "When true, emit one extra summary record per search with local-market data for the chosen category+city: total caregiver count, average years of experience, average review rating/count, and min/avg/max hourly rate (identified by `recordType: \"marketStats\"`, separate from the caregiver records). Only applies to caregiver categories — never emitted for Caregiver Job Postings or Child Care Centers/Assisted Living.",
                        "default": true
                    },
                    "backgroundCheckOnly": {
                        "title": "Background-checked only",
                        "type": "boolean",
                        "description": "Only emit caregivers with a completed Care.com background/care check (caregiver categories only — has no effect on Caregiver Job Postings or Child Care Centers/Assisted Living categories).",
                        "default": false
                    },
                    "availabilityFilter": {
                        "title": "Availability filter (mode=getProfiles only)",
                        "enum": [
                            "any",
                            "fullTime",
                            "partTime"
                        ],
                        "type": "string",
                        "description": "Only emit caregivers whose disclosed availability matches. Care.com only discloses this on individual profile pages (mode=getProfiles) — it is never populated by searchCaregivers, so setting this to anything but Any while searching will drop every record.",
                        "default": "any"
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 2000,
                        "type": "integer",
                        "description": "Hard cap on emitted records.",
                        "default": 60
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
