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

The Caring.com Senior Living Scraper extracts facility listings and enriched profiles from Caring.com directories, capturing names, pricing, ratings, full reviews, amenities, room types, capacity, and contact details — ideal for lead generation and senior care market research.

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

## Pricing

from $5.00 / 1,000 facility listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

### 🏡 Caring.com Senior Living Scraper

Easily extract **senior living facility data from [Caring.com](https://www.caring.com/senior-living)** — one of the largest senior care directories in the US. The **Caring.com Senior Living Scraper** collects assisted living communities, memory care facilities, nursing homes, independent living, home care agencies, and more for any US city, including **pricing, ratings, full reviews, amenities, and contact details**.

Running on the Apify platform gives you scheduled runs, API access, webhooks, monitoring, and one-click export to JSON, CSV, or Excel.

### ✨ Features

- 🏥 **All care types**: assisted living, memory care, nursing homes, independent living, senior apartments, CCRCs, adult day care, home care, hospices, and more.
- 📍 **City-level coverage**: scrape every facility listed for a city, including nearby communities — hundreds of results from a single start URL.
- 💰 **Pricing data**: starting prices and (with details enabled) full price ranges per facility.
- ⭐ **Ratings & reviews**: average rating, review counts, and — with details enabled — **every review with full text**, author, date, and the facility's response.
- 🛎️ **Rich facility profiles**: amenities by category, services, room types, resident capacity, photos, FAQs, awards, and official websites.
- 📞 **Contact-ready output**: phone numbers, full addresses, and geo-coordinates for every facility.
- ⚡ **Fast & affordable**: pay only for the results you get — no startup fees.

### 🛠️ How to scrape Caring.com senior living data

1. **Enter start URLs** — paste city-level directory URLs from caring.com (e.g. `https://www.caring.com/senior-living/assisted-living/california/los-angeles`) or direct facility profile URLs.
2. **Set the limits** — choose how many facilities you want with **Max items**.
3. **(Optional) Enable full details** — turn on **Scrape full facility details** to also get complete reviews, price ranges, amenities, room types, FAQs, and photos.
4. **Run the Actor** — download the dataset as JSON, CSV, or Excel, or fetch it via API.

### ⚙️ Input

| Field | Type | Description |
| --- | --- | --- |
| `startUrls` | array | Caring.com city directory URLs or facility profile URLs |
| `maxItems` | integer | Maximum number of facilities to scrape (default: `50`, `0` = no limit) |
| `scrapeDetails` | boolean | Also visit each facility's profile page for full reviews, price ranges, amenities, room types, FAQs, and photos (default: `false`) |

Example input:

```json
{
    "startUrls": [{ "url": "https://www.caring.com/senior-living/assisted-living/california/los-angeles" }],
    "maxItems": 50,
    "scrapeDetails": false
}
````

### 📊 Sample output

```json
{
    "id": "669e4bd2-6368-4d2d-8826-d1db6b847f86",
    "name": "Sakura Gardens of Los Angeles",
    "url": "https://www.caring.com/senior-living/california/los-angeles/sakura-gardens-of-los-angeles",
    "careTypes": ["Assisted Living", "Independent Living", "Memory Care"],
    "address": {
        "street": "325 S Boyle Ave",
        "city": "los-angeles",
        "state": "california",
        "zipCode": "90033",
        "formattedAddress": "325 S Boyle Ave, Los Angeles, CA 90033",
        "latitude": 34.044483185,
        "longitude": -118.220046997
    },
    "phoneNumber": "3232125811",
    "averageRating": 4.79,
    "reviewCount": 29,
    "startingPrice": 3920,
    "currency": "USD",
    "description": "Sakura Gardens of Los Angeles, located at 325 South Boyle Avenue...",
    "image": "https://d3ep5zm82rva6t.cloudfront.net/...jpg",
    "isVerified": true
}
```

With **Scrape full facility details** enabled, each item additionally contains:

```json
{
    "minimumPrice": 3920,
    "maximumPrice": 5840,
    "residentCapacity": 177,
    "website": "http://www.keiro.org",
    "amenities": [{ "name": "Coffee Shop", "category": "Campus/Building Details" }],
    "services": [{ "name": "Assisted Living", "startingPrice": 3920 }],
    "accommodations": [{ "bedCount": 1, "bathroomCount": 1, "startingPrice": 4500 }],
    "reviews": [
        {
            "title": "I am a friend or relative of a current/past resident",
            "content": "My mother is 97 years of age and has been a resident...",
            "rating": 5,
            "authorName": "Kathryn",
            "createdAt": "2021-10-15T01:53:16.000Z",
            "providerResponse": "Thank you for taking the time..."
        }
    ],
    "faqs": [{ "question": "What makes the dining program exceptional?", "answer": "..." }],
    "awards": [{ "year": 2022, "name": "Caring Stars" }],
    "photos": ["https://d3ep5zm82rva6t.cloudfront.net/...jpg"]
}
```

### 📋 Main output fields

| Field | Description |
| --- | --- |
| `name` | Facility name |
| `careTypes` | Care types offered (assisted living, memory care, ...) |
| `address` | Street, city, state, ZIP, and latitude/longitude |
| `phoneNumber` | Facility phone number |
| `averageRating` / `reviewCount` | Aggregate review score and count |
| `startingPrice` | Starting monthly price in USD |
| `minimumPrice` / `maximumPrice` | Full price range (details mode) |
| `reviews` | All reviews with full text (details mode) |
| `amenities` / `services` / `accommodations` | Facility offerings (details mode) |
| `website` | Facility's official website (details mode) |

### 💰 How much does it cost to scrape Caring.com?

The Actor uses transparent **pay-per-result** pricing — no startup fees:

| Event | Price | What you get |
| --- | --- | --- |
| Facility listing | **$0.005** | Listing record: name, address, phone, rating, starting price, care types, photos |
| Facility detail | **$0.02** | Full profile: everything above plus all reviews, price range, amenities, room types, FAQs, awards |

Examples: 50 facility listings ≈ **$0.25** · 50 fully-detailed facilities ≈ **$1.00** · all ~800 assisted living listings in Los Angeles ≈ **$4.00**. Apify's free plan includes $5 of monthly credit — enough to try the Actor on a full city.

### 💡 Use cases

- **Lead generation** for senior care placement agencies, insurers, and service providers
- **Market research** on senior living pricing, capacity, and competition by region
- **Review analysis** of resident and family sentiment across facilities
- **Directory building** and data enrichment with verified contact information
- **Investment research** into the senior housing market

### 🎯 Tips for best results

- Start with **listing-only mode** (default) to map a market cheaply, then re-run with `scrapeDetails: true` on the facilities you care about.
- One city URL covers **both city and nearby results** — duplicate facilities across overlapping cities are removed automatically.
- Use the generic city URL (e.g. `https://www.caring.com/senior-living/california/los-angeles`) to get all care types at once, or a care-type URL to narrow down.
- Set `maxItems: 0` to remove the item limit when scraping whole cities.

### ❓ FAQ

**Is it legal to scrape Caring.com?**
This Actor extracts publicly available business information (facility names, addresses, prices, public reviews). Web scraping of public data is generally legal, but you should review Caring.com's Terms of Service and consult a legal professional for your specific use case. Do not use the data to violate privacy laws.

**Can I scrape an entire state?**
Yes — add one start URL per city. City-level URLs give the most complete coverage since nearby results overlap between cities and are deduplicated automatically.

**What if a facility page can't be loaded in details mode?**
The Actor automatically falls back to saving the listing data it already collected, so you never lose a result.

**Need a custom solution or hit an issue?**
Open an issue on the Actor's **Issues tab** — feedback and feature requests are welcome.

# Actor input Schema

## `startUrls` (type: `array`):

Caring.com pages to scrape. Use city-level directory URLs (e.g. <code>https://www.caring.com/senior-living/assisted-living/california/los-angeles</code>) or direct facility profile URLs. Browse <a href='https://www.caring.com/senior-living' target='_blank'>caring.com/senior-living</a> to find directory pages for any care type and city.

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

Maximum number of facilities to scrape. Set to 0 for no limit.

## `scrapeDetails` (type: `boolean`):

Visit each facility's profile page to also extract full reviews, detailed pricing, amenities, room types, FAQs, and photos. Slower and costs more per facility, but returns much richer data.

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

Proxy settings for the scraper. The default configuration works fine in most cases.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.caring.com/senior-living/assisted-living/california/los-angeles"
    }
  ],
  "maxItems": 50,
  "scrapeDetails": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://www.caring.com/senior-living/assisted-living/california/los-angeles"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/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 = { "startUrls": [{ "url": "https://www.caring.com/senior-living/assisted-living/california/los-angeles" }] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/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 '{
  "startUrls": [
    {
      "url": "https://www.caring.com/senior-living/assisted-living/california/los-angeles"
    }
  ]
}' |
apify call piotrv1001/caring-com-senior-living-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Caring.com Senior Living Scraper",
        "description": "The Caring.com Senior Living Scraper extracts facility listings and enriched profiles from Caring.com directories, capturing names, pricing, ratings, full reviews, amenities, room types, capacity, and contact details — ideal for lead generation and senior care market research.",
        "version": "0.0",
        "x-build-id": "QnjNF0hqfwxlhVDls"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/piotrv1001~caring-com-senior-living-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-piotrv1001-caring-com-senior-living-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/piotrv1001~caring-com-senior-living-scraper/runs": {
            "post": {
                "operationId": "runs-sync-piotrv1001-caring-com-senior-living-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/piotrv1001~caring-com-senior-living-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-piotrv1001-caring-com-senior-living-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": [
                    "startUrls"
                ],
                "properties": {
                    "startUrls": {
                        "title": "Start URLs",
                        "type": "array",
                        "description": "Caring.com pages to scrape. Use city-level directory URLs (e.g. <code>https://www.caring.com/senior-living/assisted-living/california/los-angeles</code>) or direct facility profile URLs. Browse <a href='https://www.caring.com/senior-living' target='_blank'>caring.com/senior-living</a> to find directory pages for any care type and city.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of facilities to scrape. Set to 0 for no limit.",
                        "default": 50
                    },
                    "scrapeDetails": {
                        "title": "Scrape full facility details",
                        "type": "boolean",
                        "description": "Visit each facility's profile page to also extract full reviews, detailed pricing, amenities, room types, FAQs, and photos. Slower and costs more per facility, but returns much richer data.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings for the scraper. The default configuration works fine in most cases.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
