# Caring.com Senior Living Directory Scraper (`codingfrontend/caring-com-senior-living-scraper`) Actor

Extract public Caring.com senior living directory listings, provider profiles, costs, ratings, services, amenities, and reviews; independent and not endorsed by Caring.com.

- **URL**: https://apify.com/codingfrontend/caring-com-senior-living-scraper.md
- **Developed by:** [Coding Frontned](https://apify.com/codingfrontend) (community)
- **Categories:** Other, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Caring.com Senior Living Directory Scraper

Extract structured facility data from public Caring.com senior living and senior care directories. Supply city/state/care-type directory URLs, explicit provider profile URLs, or both.

The Actor uses lightweight HTTP requests and parses public structured page data. It does not submit lead forms, sign in, bypass access controls, or collect private resident information.

### Data included

Each provider record can include:

- Stable provider IDs, name, category, and care types
- Public description, street address, city, state, county, postal code, and coordinates
- Published phone number and provider website
- Overall rating, review count, rating breakdown, and public reviews
- Minimum and maximum published costs with currency
- Service-level starting costs, room-type costs, and license identifiers
- Resident capacity, amenities, accommodations, awards, and photos
- Caring.com profile URL, originating directory URL, and scrape timestamp

Optional values that are not published are omitted rather than represented as null, empty strings, placeholders, or invented estimates.

### Search a directory

```json
{
    "searchUrls": [
        "https://www.caring.com/senior-living/assisted-living/new-york/new-york"
    ],
    "maxResults": 10,
    "maxReviewsPerProvider": 10,
    "maxPhotosPerProvider": 10
}
```

Use any public Caring.com directory path under `/senior-living/` or `/senior-care/`, including assisted living, memory care, nursing homes, independent living, continuing care, adult day care, and in-home care pages where Caring.com publishes a provider list.

### Extract explicit provider profiles

```json
{
    "searchUrls": [],
    "providerUrls": [
        "https://www.caring.com/senior-living/new-york/new-york/sunrise-at-east-56th"
    ],
    "maxResults": 1
}
```

Only public HTTPS Caring.com URLs are accepted.

### Output example

```json
{
    "recordId": "provider-id",
    "name": "Example Senior Living Community",
    "careTypes": ["Assisted Living", "Memory Care"],
    "formattedAddress": "123 Example St, New York, NY 10001",
    "rating": 4.2,
    "reviewCount": 4,
    "minimumCost": 5000,
    "costCurrency": "USD",
    "amenities": ["Pets", "All Inclusive Rent"],
    "providerUrl": "https://www.caring.com/senior-living/example",
    "scrapedAt": "2026-01-01T00:00:00.000Z"
}
```

This illustrates the record shape. Production results always come from the requested live public pages.

### Responsible limits

- Results are capped at 100 profiles per run.
- Concurrency is capped at 3 with at least 750 ms request pacing.
- Every request uses bounded retries with exponential backoff.
- The actor-side deadline is below five minutes, and unexpectedly large pages are rejected.
- Records are deduplicated by stable public provider ID.
- Direct public access is the default; Apify Proxy can be enabled in the input.

Caring.com content, pricing, availability, licenses, reviews, and contact details can change. Published cost fields are reproduced as provided and may not identify a billing period or all required fees. Verify important financial, medical, licensing, and availability decisions directly with the provider and relevant regulator.

You are responsible for complying with Caring.com's terms, robots directives, privacy requirements, and applicable law. Do not use the output for harassment, health profiling, deceptive marketing, or automated high-impact decisions.

### Dataset access

The Actor writes records to the default Apify dataset. Export them through the Console or dataset API in JSON, CSV, Excel, XML, and other supported formats.

### Support

When reporting a problem, include the public URL, input without secrets, run ID, and the expected field.

# Actor input Schema

## `searchUrls` (type: `array`):

Public Caring.com directory URLs under /senior-living/ or /senior-care/.

## `providerUrls` (type: `array`):

Optional public Caring.com provider profile URLs. These are combined with profiles discovered from directory URLs.

## `maxResults` (type: `integer`):

Hard cap on unique provider records saved.

## `maxReviewsPerProvider` (type: `integer`):

Maximum public reviews included in each record.

## `maxPhotosPerProvider` (type: `integer`):

Maximum published photo URLs included in each record.

## `maxConcurrency` (type: `integer`):

Responsible concurrency cap for public provider pages.

## `requestDelayMillis` (type: `integer`):

Minimum pacing delay between Caring.com requests.

## `maxRetries` (type: `integer`):

Bounded attempts with exponential backoff for transient failures.

## `maxPageMbytes` (type: `integer`):

Reject unexpectedly large HTML responses.

## `maxRunMillis` (type: `integer`):

Actor-side deadline capped below five minutes.

## `proxyConfiguration` (type: `object`):

Optional Apify Proxy. Direct public access is used by default.

## Actor input object example

```json
{
  "searchUrls": [
    "https://www.caring.com/senior-living/assisted-living/new-york/new-york"
  ],
  "providerUrls": [],
  "maxResults": 10,
  "maxReviewsPerProvider": 10,
  "maxPhotosPerProvider": 10,
  "maxConcurrency": 1,
  "requestDelayMillis": 1000,
  "maxRetries": 3,
  "maxPageMbytes": 8,
  "maxRunMillis": 240000,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("codingfrontend/caring-com-senior-living-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("codingfrontend/caring-com-senior-living-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 '{}' |
apify call codingfrontend/caring-com-senior-living-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/aeHVgq3DvZeKTeDV6/builds/CeIdRbP17GdXKUK4U/openapi.json
