# Seniorly Senior Living Scraper (`piotrv1001/seniorly-senior-living-scraper`) Actor

The Seniorly Senior Living Scraper extracts community listings from Seniorly city and state directories, capturing names, addresses, phone numbers, monthly rates, state license and inspection records — ideal for senior care lead generation and housing market research.

- **URL**: https://apify.com/piotrv1001/seniorly-senior-living-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** Lead generation, Real estate, 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 community 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 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

### 🏡 Seniorly Senior Living Scraper

Easily extract **senior living community data from [Seniorly](https://www.seniorly.com)** — one of the largest senior living marketplaces in the US. The **Seniorly Senior Living Scraper** collects assisted living, memory care, independent living, board & care homes, skilled nursing facilities, CCRCs, and active adult communities for any US city or entire state, including **monthly pricing, state license records, 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, independent living, board & care homes, skilled nursing, continuing care retirement communities, and active adult.
- 🗺️ **City or whole-state coverage**: paste a city URL, or a state URL to sweep every city in that state automatically.
- 💰 **Real pricing**: starting and maximum monthly rates, **price per room type** (studio, one bedroom, shared, private), the local city average, and cheapest available care option.
- 📜 **State license records**: license number, status, licensed capacity, and a **direct link to the state regulator's latest inspection report** — data you will not find in most directories.
- 🤝 **Recorded move-in prices**: actual transacted monthly fees from recent nearby move-ins, with care type, room type, and date — real prices, not just asking prices.
- ⭐ **Ratings & reviews**: Seniorly score, aggregate rating, per-category ratings (staff, cleanliness, dining, value, activities), an AI review summary, and **every review with full text**.
- 🛎️ **Rich community profiles**: care services, amenities grouped by category, room availability, resident capacity, photos, official website, and neighborhood livability scores.
- 📞 **Contact-ready output**: phone numbers, full addresses, and geo-coordinates for every community.
- ⚡ **Fast & affordable**: pay only for the results you get — no startup fees.

### 🛠️ How to scrape Seniorly senior living data

1. **Enter start URLs** — paste city listing URLs from seniorly.com (e.g. `https://www.seniorly.com/assisted-living/california/san-francisco`), a state URL to cover every city in that state (e.g. `https://www.seniorly.com/memory-care/oregon`), or direct community profile URLs.
2. **Set the limits** — choose how many communities you want with **Max items**.
3. **(Optional) Enable full details** — turn on **Scrape full community details** to also get room-by-room pricing, license and inspection records, recorded move-in prices, full reviews, amenities, and neighborhood scores.
4. **Run the Actor** — download the dataset as JSON, CSV, or Excel, or fetch it via API.

### ⚙️ Input

| Field | Type | Description |
| --- | --- | --- |
| `startUrls` | array | Seniorly city listing URLs, state URLs, or community profile URLs |
| `maxItems` | integer | Maximum number of communities to scrape (default: `50`, `0` = no limit) |
| `scrapeDetails` | boolean | Also visit each community profile for room pricing, license records, move-in prices, full reviews, amenities, and neighborhood scores (default: `false`) |

Example input:

```json
{
    "startUrls": [{ "url": "https://www.seniorly.com/assisted-living/california/san-francisco" }],
    "maxItems": 50,
    "scrapeDetails": false
}
```

### 📊 Sample output

```json
{
    "id": "buena-vista-manor-house",
    "name": "Buena Vista Manor House",
    "url": "https://www.seniorly.com/assisted-living/california/san-francisco/buena-vista-manor-house",
    "careTypes": ["Assisted Living", "Memory Care"],
    "address": {
        "street": "399 Buena Vista Avenue East",
        "city": "San Francisco",
        "state": "CA",
        "zip": "94117",
        "formattedAddress": "399 Buena Vista Avenue East, San Francisco, CA 94117",
        "latitude": 37.7665378,
        "longitude": -122.4405872
    },
    "startingRate": 5100,
    "currency": "USD",
    "rating": 4.75,
    "reviewCount": 8,
    "slyScore": 99,
    "communitySize": "51 +",
    "isVerified": true,
    "image": "https://d1qiigpe5txw4q.cloudfront.net/uploads/8f47bf.../photo_01.jpg"
}
```

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

```json
{
    "phone": "(415) 863-1721",
    "website": "https://www.buenavistamanorhouse-sf.com/",
    "capacity": 87,
    "pricing": {
        "startingRate": 5100,
        "maxRate": 8300,
        "cityAverage": 5500,
        "byRoomType": { "Shared Bedroom": 5500, "Studio": 7600, "One Bedroom": 8300, "Private Room": 7000 },
        "cheapestPrice": 5100,
        "cheapestRoomType": "Shared Bedroom",
        "cheapestCareType": "Assisted Living"
    },
    "roomTypes": [{ "roomType": "Shared Bedroom", "price": 5100, "quantityAvailable": 30, "squareFootage": 238 }],
    "licensing": {
        "licenseNumber": "380540203",
        "licenseStatus": "LICENSED",
        "licensedCapacity": 87,
        "licenseUrl": "https://www.ccld.dss.ca.gov/carefacilitysearch/FacDetail/380540203",
        "lastInspectionReport": "https://www.ccld.dss.ca.gov/transparencyapi/api/FacilityReports?facNum=380540203"
    },
    "careServices": ["Medication management", "Dementia care", "24-hour supervision"],
    "servicesAndAmenities": { "Health care services": ["Diabetes care"], "Dining services": ["Restaurant style dining"] },
    "recentMoveIns": [
        { "name": "Ivy Park At Cathedral Hill", "careType": "Assisted Living", "roomType": "One Bedroom", "fee": 6995, "date": "2024-08-31T00:00:00Z" }
    ],
    "reviewSummary": "Buena Vista Manor House receives predominantly positive reviews for its warm, caring environment...",
    "ratingCategories": [{ "name": "Staff", "rating": 5, "reviewCount": 4 }],
    "reviews": [
        {
            "author": "Frank",
            "rating": 4,
            "text": "Buena Vista Manor House has been run by David for decades...",
            "date": "2022-11-19T20:17:21Z",
            "relation": "Toured community"
        }
    ],
    "neighborhood": { "zipcode": "94117", "scores": { "neighborhood": 75, "health": 90, "transportation": 80 } }
}
```

### 📋 Main output fields

| Field | Description |
| --- | --- |
| `name` | Community name |
| `careTypes` | Care types offered (assisted living, memory care, ...) |
| `address` | Street, city, state, ZIP, and latitude/longitude |
| `phone` | Community phone number (details mode) |
| `rating` / `reviewCount` | Aggregate review score and count |
| `slyScore` | Seniorly's own 0–100 community score |
| `startingRate` | Starting monthly rate in USD |
| `pricing` / `roomTypes` | Max rate, city average, and price per room type (details mode) |
| `licensing` | State license number, status, capacity, and inspection report link (details mode) |
| `recentMoveIns` | Recorded transacted move-in fees nearby (details mode) |
| `reviews` / `reviewSummary` / `ratingCategories` | Full review text and per-category scores (details mode) |
| `careServices` / `servicesAndAmenities` | Services and amenities offered (details mode) |
| `neighborhood` | Livability scores for the community's ZIP code (details mode) |
| `website` | Community's official website (details mode) |

### 💰 How much does it cost to scrape Seniorly?

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

| Event | Price | What you get |
| --- | --- | --- |
| Community listing | **$0.005** | Listing record: name, address, care types, rating, Seniorly score, starting rate, photos |
| Community detail | **$0.02** | Full profile: everything above plus phone, room pricing, license and inspection records, move-in prices, all reviews, amenities, neighborhood scores |

Examples: 50 community listings ≈ **$0.25** · 50 fully-detailed communities ≈ **$1.00** · all ~600 communities in Oregon ≈ **$3.00** as listings or **$12.00** with full details. Apify's free plan includes $5 of monthly credit — enough to try the Actor on a full city or a small state.

### 💡 Use cases

- **Lead generation** for senior care placement agencies, insurers, and service providers
- **Market research** on senior living pricing, capacity, and competition by region
- **Price benchmarking** using recorded move-in fees alongside published asking rates
- **Compliance and due diligence** with license status and state inspection report links
- **Review analysis** of resident and family sentiment across communities
- **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 communities you care about.
- Use a **state URL** (e.g. `https://www.seniorly.com/memory-care/oregon`) to sweep every city in a state from a single input — duplicate communities across overlapping cities are removed automatically.
- Add one start URL per care type to cover a location fully — a city URL only returns communities for the care type in the URL.
- Set `maxItems: 0` to remove the item limit when scraping whole states.

### ❓ FAQ

**Is it legal to scrape Seniorly?**
This Actor extracts publicly available business information (community names, addresses, prices, license records, public reviews). Web scraping of public data is generally legal, but you should review Seniorly's Terms of Service and consult a legal professional for your specific use case. Reviewer contact details are never collected — only the public first name shown on the site.

**Can I scrape an entire state?**
Yes — pass a state URL such as `https://www.seniorly.com/assisted-living/oregon` and the Actor will crawl every city listing in that state for you.

**Does one city URL cover all care types?**
No — care type is part of the URL. Add one start URL per care type (e.g. assisted living *and* memory care) to cover a location completely.

**What if a community profile 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`):

Seniorly pages to scrape. Use city listing URLs (e.g. <code>https://www.seniorly.com/assisted-living/california/san-francisco</code>), state URLs to cover every city in a state (e.g. <code>https://www.seniorly.com/memory-care/oregon</code>), or direct community profile URLs. Browse <a href='https://www.seniorly.com' target='_blank'>seniorly.com</a> to find pages for any care type and location.

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

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

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

Visit each community's profile to also extract room-by-room pricing, state license and inspection records, recorded move-in prices, full reviews, amenities, care services and neighborhood scores. Slower and costs more per community, but returns far 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.seniorly.com/assisted-living/california/san-francisco"
    }
  ],
  "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.seniorly.com/assisted-living/california/san-francisco"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/seniorly-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.seniorly.com/assisted-living/california/san-francisco" }] }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/seniorly-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.seniorly.com/assisted-living/california/san-francisco"
    }
  ]
}' |
apify call piotrv1001/seniorly-senior-living-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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