# Funeral Home Lead Finder - Tribute, Frazer, Passare (`seibs.co/funeral-home-lead-finder`) Actor

Enriched Google Maps leads for US funeral homes, mortuaries, crematories, cemeteries, pet aftercare. Detects Tribute, Continental Computing, Frazer, Passare, FAM, FuneralONE, Halcyon, ASD. SCI/Dignity, Carriage, Park Lawn, StoneMor pre-blocked.

- **URL**: https://apify.com/seibs.co/funeral-home-lead-finder.md
- **Developed by:** [Seibs.co](https://apify.com/seibs.co) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 base lead records

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

## Funeral Home Lead Finder

Enriched US funeral home, mortuary, crematory, and cemetery leads from Google Maps with deathcare SaaS detection. Major rollups pre-blocked.

### What does Funeral Home Lead Finder do?

Funeral Home Lead Finder pulls Google Maps listings for US funeral homes, mortuaries, crematories, cemeteries, casket / monument retailers, preplanning offices, and pet aftercare providers. Each record is enriched with phone, website, emails, social handles, and detected deathcare-management platform usage. Major rollups (Service Corporation International / Dignity Memorial, Carriage Services, Park Lawn, StoneMor, Foundation Partners) are pre-blocked so the dataset surfaces only family-owned independents.

### Features

- US-wide Google Maps coverage across 6 deathcare sub-verticals.
- Service line classification: funeral_home, crematory, cemetery, casket_monument, preplanning, pet_aftercare.
- Major chains pre-blocked (SCI / Dignity, Carriage, Park Lawn, StoneMor, Foundation Partners, NorthStar Memorial Group).
- Email scraping with role bucketing.
- Deathcare platform detection: Tribute Technology, Continental Computing, Frazer, Passare, FuneralONE, FDMS, Halcyon, ASD answering service.
- Preneed insurance carrier signals (Homesteaders, Global Atlantic, NGL).
- Social handle extraction.
- Confidence score per record.
- Pay-per-event pricing.

### Use cases

- Deathcare SaaS outbound for Tribute Technology, Continental Computing, Frazer, Passare, FuneralONE, FDMS, Halcyon, ASD competitors.
- Funeral-PE rollup sourcing (Foundation Partners, Park Lawn add-on acquisitions).
- Preneed insurance carrier prospecting (Homesteaders, Global Atlantic, NGL).
- Casket / urn / register-book supplier sales to independents.
- Crematory equipment vendor sales (Matthews, B&L Cremation Systems).
- Pet aftercare market sizing - rapidly growing sub-vertical.

### FAQ

**Q: Is this legal?**
A: Yes. Data is sourced from publicly listed Google Maps business profiles and the firms' own public websites. No login walls are bypassed; no private data is scraped. You are responsible for compliance with CAN-SPAM, TCPA, and state privacy laws when contacting the leads.

**Q: Why might a run fail or return zero records?**
A: The most common cause is the Apify free-plan compute / proxy credit ceiling - large premium runs can exhaust it mid-run. We soft-fail by default so the run still finishes with whatever was already enriched and writes a partial dataset rather than throwing. If a paid run errors out, check the run log for the rate-limit or proxy-bandwidth message.

**Q: Why are SCI / Dignity Memorial, Carriage, Park Lawn etc excluded?**
A: We target family-owned independents (1-5 locations) because that is where the deathcare SaaS, preneed insurance, and casket/urn supplier TAM lives. Public rollups run centralized procurement and custom internal stacks - they aren't realistic buyers for Tribute / Frazer / Passare-class products, so they are pre-blocked when `exclude_chains: true`. Set `exclude_chains: false` if you specifically want corporate locations.

**Q: How fresh is the data?**
A: Records are fetched live at run time - Google Maps listings reflect the current snapshot, and website enrichment reflects the homepage as of the run timestamp (`scraped_at`). There is no stale cache.

**Q: Can I schedule daily or weekly runs?**
A: Yes. Use Apify's built-in Schedules feature to run this actor on any cron interval. Pair with a webhook to push only the diff (new homes, changed tech_stack) to your CRM.

**Q: Does it integrate with my CRM?**
A: Yes - via Zapier, Make, n8n, or direct webhook. Dataset records map cleanly into HubSpot, Salesforce, Pipedrive, Clay, Apollo, and Instantly. See the Integrations section below.

**Q: What does it cost in practice?**
A: Pay-per-event: $0.004 base, $0.008 with email, $0.015 fully enriched with deathcare-platform or preneed-insurance signals. A typical statewide independent run lands in the $5-30 range. No subscription, no minimum.

---

### Related Actors

Pair this actor with other SEIB intelligence sources to build a richer outbound motion:

- [US Gov Contracts Intel](https://apify.com/seibs.co/us-gov-contracts-intel) - find funeral homes holding federal contracts (VA national cemeteries, Memorial Day vendors, DoD repatriation)
- [B2B Sales Triggers](https://apify.com/seibs.co/b2b-sales-triggers) - detect ownership changes, succession events, and hiring spikes to time the outreach
- [Google Maps Reviews Pro](https://apify.com/seibs.co/google-maps-reviews-pro) - pull full review history per location to score reputation and surface complaint patterns

---

### Integrations

````

- Zapier - push to HubSpot/Salesforce/Pipedrive/Apollo
- Make.com - workflow automation
- n8n - self-hosted automation
- Apify webhooks - POST to your endpoint
- API + dataset export (JSON/CSV/Excel/XML)
- MCP / AI agents - call from Claude/GPT/LangChain

````

---

### Input

The Actor takes a JSON input. Full schema: see the Input tab.

```json
{
  "search_terms": ["funeral home", "mortuary", "crematory"],
  "locations": ["Austin, TX", "Dallas, TX", "Houston, TX"],
  "max_results_per_query": 100,
  "enrichment_tier": "premium",
  "service_lines": ["funeral_home", "crematory"],
  "exclude_chains": true
}
````

### Output

**Sample output:** [`.actor/sample-output.json`](./.actor/sample-output.json) — copy-paste-ready preview of real-looking records.

First record inline:

```json
{
  "place_id": "ChIJRuNqJmFiBe7a3WzSvOrKnGjCf8b",
  "name": "Restful Pines Funeral Home",
  "category": "Funeral home",
  "vertical": "funeral_home",
  "service_line": "funeral_home",
  "address": {
    "street": "3872 Mission Rd",
    "city": "St. Louis",
    "state": "MO",
    "zip": "63101",
    "country": "US",
    "lat": 38.651,
    "lng": -90.2154
  },
  "phone": "(314) 555-1081",
  "phone_e164": "+13145550181",
  "website": "https://restfulpinesfh.com/",
  "google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJRuNqJmFiBe7a3WzSvOrKnGjCf8b",
  "rating": 4.9,
  "reviews_count": 184,
  "hours": {
    "mon": "8:00 AM - 6:00 PM",
    "tue": "8:00 AM - 6:00 PM",
    "wed": "8:00 AM - 6:00 PM",
    "thu": "8:00 AM - 6:00 PM",
    "fri": "8:00 AM - 5:00 PM",
    "sat": "Closed",
    "sun": "Closed"
  },
  "claimed": true,
  "scraped_at": "2026-05-10T10:23:10Z",
  "confidence_score": 0.62,
  "enrichment": {
    "tier": "premium",
    "emails": [
      "info@restfulpinesfh.com",
      "hello@restfulpinesfh.com"
    ],
    "social": {
      "facebook": "https://www.facebook.com/restfulpinesfh",
      "instagram": "https://www.instagram.com/restfulpinesfh",
      "linkedin": "https://www.linkedin.com/company/restfulpinesfh"
    },
    "tech_stack": [
      "passare",
      "google_tag_manager",
      "tribute_tech",
      "halcyon"
    ],
    "license_numbers": [
      "MO-101269"
    ],
    "service_area_mentions": [
      "St. Louis",
      "Kansas City",
      "Springfield"
    ],
    "year_founded": 2014,
    "fleet_hints": [],
    "homepage_title": "Restful Pines Funeral Home | St. Louis, MO",
    "homepage_status": 200,
    "bbb": {
      "accredited": true,
      "rating": "A+"
    },
    "open_24_7": false,
    "licensed_bonded_insured": false,
    "locations_count": 2,
    "spanish_speaking": false,
    "linkedin_company": "https://www.linkedin.com/company/restfulpinesfh",
    "yelp_url": "https://www.yelp.com/biz/restfulpinesfh-st.-louis",
    "third_party_reviews": [],
    "press_mentions": [],
    "awards": [],
    "team_size_hints": [
      "5 team members"
    ],
    "owner_names": [
      "Maria Chen"
    ],
    "employee_count": 8,
    "role_emails": {
      "executive": [
        "mchen@restfulpinesfh.com"
      ],
      "billing": [
        "billing@restfulpinesfh.com"
      ],
      "support": [
        "support@restfulpinesfh.com"
      ],
      "generic": [
        "info@restfulpinesfh.com"
      ]
    },
    "financing_processors": [
      "affirm",
      "klarna"
    ],
    "payment_processors": [
      "square"
    ],
    "hiring_signals": {
      "actively_hiring": true,
      "indicators": [
        "careers page link",
        "we're hiring banner"
      ]
    },
    "insurance_carriers_accepted": [],
    "languages_offered": [],
    "online_booking_platforms": [
      "calendly"
    ],
    "customer_count_signals": {
      "customers_served": 1500,
      "reviews_count": 184,
      "projects_completed": null,
      "locations_served": null,
      "raw_matches": [
        "Trusted by 1500+ clients"
      ]
    },
    "chatbot_platforms": [
      "intercom"
    ],
    "email_marketing_platforms": [
      "mailchimp"
    ],
    "lead_capture_ctas": {
      "has_free_quote_cta": true,
      "has_get_started_cta": true,
      "has_appointment_booking": false,
      "has_callback_request": true,
      "has_contact_form": true,
      "cta_count": 3
    },
    "mobile_app_links": {
      "has_ios_app": false,
      "has_android_app": false,
      "ios_app_id": null,
      "android_app_id": null
    },
    "certifications_credentials": [
      "NFDA"
    ],
    "financing_accepted": [
      "credit_card",
      "cash"
    ],
    "growth_signals": {
      "growth_score": 0.4,
      "components": {
        "hiring": 0.6,
        "employee_scale": 0.4,
        "multi_location": 0.5
      },
      "indicators_count": 2
    },
    "jsonld": {
      "name": "Restful Pines Funeral Home",
      "phone": "(314) 555-1081",
      "email": "info@restfulpinesfh.com",
      "address": {
        "street": "3872 Mission Rd",
        "city": "St. Louis",
        "region": "MO",
        "zip": "63101"
      },
      "opening_hours": [
        "Mo-Fr 08:00-18:00"
      ],
      "social_urls": [
        "https://www.facebook.com/restfulpinesfh",
        "https://www.instagram.com/restfulpinesfh"
      ],
      "aggregate_rating": {
        "rating": 4.9,
        "count": 184
      },
      "employee_count": 8,
      "founders": [
        "Maria Chen"
      ]
    }
  }
}
```

Each item is one independent funeral business with contact details and an `enrichment` block. Realistic sample:

```json
{
  "place_id": "ChIJyyyyyyyyyyyyyyyyyyyyyy",
  "name": "Hillside Family Funeral Home",
  "service_line": "funeral_home",
  "category": "Funeral home",
  "vertical": "funeral_homes",
  "address": {
    "street": "412 W Anderson Ln",
    "city": "Austin",
    "state": "Texas",
    "zip": "78752",
    "country": "US",
    "lat": 30.3441,
    "lng": -97.7197
  },
  "phone": "(512) 555-0114",
  "phone_e164": "+15125550114",
  "website": "https://hillsidefamilyfh.com/",
  "google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJyyyyyyyyyyyyyyyyyyyyyy",
  "rating": 4.9,
  "reviews_count": 312,
  "claimed": true,
  "confidence_score": 0.91,
  "scraped_at": "2026-05-14T19:22:11Z",
  "enrichment": {
    "tier": "premium",
    "emails": ["info@hillsidefamilyfh.com"],
    "social": {
      "facebook": "https://www.facebook.com/hillsidefamilyfh"
    },
    "tech_stack": ["tribute_technology", "wordpress", "google_tag_manager"],
    "year_founded": 1962,
    "linkedin_company": "https://www.linkedin.com/company/hillside-family-funeral-home",
    "awards": ["best of austin 2024"],
    "homepage_status": 200
  }
}
```

The dataset preview ships with two tabs: **Overview** and **Detailed**.

### Pricing

Pay-per-event - billed only on records actually emitted:

| Event | Price | When charged |
|---|---|---|
| Base record | $0.004 | Every record |
| Email enrichment | + $0.004 | At least one verified email scraped |
| Premium signals | + $0.007 | Deathcare management platform or preneed insurance signal detected |

**Effective:** $0.004 base / $0.008 with email / $0.015 fully enriched. A 1,000-record state-wide enriched run typically lands between $5 and $15.

### Support

- Email: jtseib@live.com
- Issues / feature requests: open an issue on the Actor's Issues tab in Apify Console.
- See the rest of the SEIB lead-finder portfolio under [seibs.co](https://apify.com/seibs.co) on Apify.

### Changelog

See [CHANGELOG.md](./CHANGELOG.md).

# Actor input Schema

## `search_terms` (type: `array`):

Google Maps search queries. Example: \['funeral home']. Up to 10 terms per run.

## `locations` (type: `array`):

US locations. Format: 'City, ST' or ZIP. Up to 25 locations per run.

## `max_results_per_query` (type: `integer`):

Cap per (term × location) tuple. Hard ceiling 500. Hard max 100 to protect compute budget.

## `enrichment_tier` (type: `string`):

base = Maps profile only ($0.004/record). email = + scraped email ($0.008/record). premium = + platform/stack detection ($0.015/record). Default 'base' avoids per-record website-visit compute. Set 'premium' to enable deep tech-stack detection (incurs additional compute time).

## `service_lines` (type: `array`):

Restrict output to these types.

## `exclude_chains` (type: `boolean`):

Drop records matching the built-in chain blocklist.

## `max_concurrent_enrichments` (type: `integer`):

Parallel HTTP fetches. 8 is safe.

## Actor input object example

```json
{
  "search_terms": [
    "funeral home"
  ],
  "locations": [
    "Austin, TX"
  ],
  "max_results_per_query": 50,
  "enrichment_tier": "base",
  "service_lines": [],
  "exclude_chains": true,
  "max_concurrent_enrichments": 4
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

Narrow, token-efficient slice of every record. Consumer: LLM agents (Claude, GPT, LangChain tools), MCP hosts, dashboards. SDR-skim fields: name, vertical, service line, city, state, phone, email, website, confidence\_score.

## `datasetItemsDetailed` (type: `string`):

All fields for every record. Consumer: humans browsing the dataset in the Apify UI, RAG ingest pipelines, and full backups. Larger payload — not recommended as a direct LLM tool response.

## `datasetItemsUnwind` (type: `string`):

Same records, but each element of the `technologies` array is promoted to its own row. Consumer: Zapier / Make / n8n / Google Sheets users who want one row per item, and LLM agents that prefer flat rows over nested arrays.

## `datasetItemsMcp` (type: `string`):

First 50 overview records as a clean JSON array. Wrap on the agent side in an MCP tool-call response envelope, e.g. `{ "ok": true, "data": <this array>, "meta": { "actor": "funeral-home-lead-finder", "count": <len>, "view": "overview" } }`. Consumer: MCP servers, Claude Desktop, Cursor, OpenAI Assistants tool calls.

## `datasetItemsCsv` (type: `string`):

Spreadsheet-friendly export of the overview view. Consumer: humans, sales-ops teams, Excel / Google Sheets users.

# 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 = {
    "search_terms": [
        "funeral home"
    ],
    "locations": [
        "Austin, TX"
    ],
    "max_results_per_query": 50,
    "enrichment_tier": "base",
    "max_concurrent_enrichments": 4
};

// Run the Actor and wait for it to finish
const run = await client.actor("seibs.co/funeral-home-lead-finder").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 = {
    "search_terms": ["funeral home"],
    "locations": ["Austin, TX"],
    "max_results_per_query": 50,
    "enrichment_tier": "base",
    "max_concurrent_enrichments": 4,
}

# Run the Actor and wait for it to finish
run = client.actor("seibs.co/funeral-home-lead-finder").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 '{
  "search_terms": [
    "funeral home"
  ],
  "locations": [
    "Austin, TX"
  ],
  "max_results_per_query": 50,
  "enrichment_tier": "base",
  "max_concurrent_enrichments": 4
}' |
apify call seibs.co/funeral-home-lead-finder --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=seibs.co/funeral-home-lead-finder",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Funeral Home Lead Finder - Tribute, Frazer, Passare",
        "description": "Enriched Google Maps leads for US funeral homes, mortuaries, crematories, cemeteries, pet aftercare. Detects Tribute, Continental Computing, Frazer, Passare, FAM, FuneralONE, Halcyon, ASD. SCI/Dignity, Carriage, Park Lawn, StoneMor pre-blocked.",
        "version": "0.1",
        "x-build-id": "xrIKGvUZZMyQMW91b"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/seibs.co~funeral-home-lead-finder/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-seibs.co-funeral-home-lead-finder",
                "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/seibs.co~funeral-home-lead-finder/runs": {
            "post": {
                "operationId": "runs-sync-seibs.co-funeral-home-lead-finder",
                "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/seibs.co~funeral-home-lead-finder/run-sync": {
            "post": {
                "operationId": "run-sync-seibs.co-funeral-home-lead-finder",
                "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": [
                    "search_terms",
                    "locations",
                    "enrichment_tier"
                ],
                "properties": {
                    "search_terms": {
                        "title": "Search terms",
                        "maxItems": 10,
                        "type": "array",
                        "description": "Google Maps search queries. Example: ['funeral home']. Up to 10 terms per run.",
                        "default": [
                            "funeral home"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "locations": {
                        "title": "Locations",
                        "maxItems": 25,
                        "type": "array",
                        "description": "US locations. Format: 'City, ST' or ZIP. Up to 25 locations per run.",
                        "default": [
                            "Austin, TX"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "max_results_per_query": {
                        "title": "Max results per query",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Cap per (term × location) tuple. Hard ceiling 500. Hard max 100 to protect compute budget.",
                        "default": 50
                    },
                    "enrichment_tier": {
                        "title": "Enrichment tier",
                        "enum": [
                            "base",
                            "email",
                            "premium"
                        ],
                        "type": "string",
                        "description": "base = Maps profile only ($0.004/record). email = + scraped email ($0.008/record). premium = + platform/stack detection ($0.015/record). Default 'base' avoids per-record website-visit compute. Set 'premium' to enable deep tech-stack detection (incurs additional compute time).",
                        "default": "base"
                    },
                    "service_lines": {
                        "title": "Funeral business types (optional filter)",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Restrict output to these types.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "funeral_home",
                                "crematory",
                                "cemetery",
                                "casket_monument",
                                "preplanning",
                                "pet_aftercare"
                            ]
                        },
                        "default": []
                    },
                    "exclude_chains": {
                        "title": "Exclude major chains / national franchises",
                        "type": "boolean",
                        "description": "Drop records matching the built-in chain blocklist.",
                        "default": true
                    },
                    "max_concurrent_enrichments": {
                        "title": "Max concurrent website enrichments",
                        "minimum": 1,
                        "maximum": 8,
                        "type": "integer",
                        "description": "Parallel HTTP fetches. 8 is safe.",
                        "default": 4
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
