# Familytreenow Relatives Address History Scraper (`jungle_synthesizer/familytreenow-relatives-address-history-scraper`) Actor

Adjacent expansion off a lane our own P\&L already proves. Three FamilyTreeNow-class actors

- **URL**: https://apify.com/jungle\_synthesizer/familytreenow-relatives-address-history-scraper.md
- **Developed by:** [BowTiedRaccoon](https://apify.com/jungle_synthesizer) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.40 / 1,000 record scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Relatives, Address History & Family Records Search — FamilyTreeNow

Search [FamilyTreeNow](https://www.familytreenow.com) by name and state, and get back a full person record: current address, prior addresses, phone numbers, possible relatives, and possible associates. One query also reaches FamilyTreeNow's census, death, marriage, divorce, and public-member-tree facets — the same free aggregator, six record types, one run.

***

### FamilyTreeNow Scraper Features

- Returns the full relationship graph — possible relatives and possible associates as separate arrays, not a truncated string
- Extracts a person's complete prior-address chain, not just their current city and state
- Pulls phone numbers on file for each matched person
- Covers all six FamilyTreeNow record facets automatically: living people, census, death, marriage, divorce, and public member trees
- Searches multiple states in one run — useful when you don't know which state a person moved to
- Tags every record with its `record_type`, so a batch of results sorts itself
- No account, login, or API key required — just a name and a state

***

### Who Uses FamilyTreeNow Data?

- **Skip tracers and PIs** — start from a name and a list of possible states, and walk the returned relatives and prior addresses toward a current location
- **Background check services** — build a locate report from address history and known associates instead of a single stale address
- **Genealogy researchers** — pull census, marriage, divorce, and death facets for the same name in one query, which is most of a family tree's raw material
- **Debt collection and process serving** — chase a subject through their prior-address chain when the address on file is a decade old
- **Data brokers and identity resolution teams** — cross-reference relatives and associates against other people-search sources to confirm a match

***

### How FamilyTreeNow Scraper Works

1. Give it a first name, last name, and one or more states. City is optional and narrows the search further.
2. For each state, the scraper queries FamilyTreeNow's living-people results for that name, then follows each matching person's own record to pull their full relatives, associates, prior addresses, and phone numbers.
3. Once the living-people facet is covered, it moves on to the other five record types — census, death, marriage, divorce, public member trees — for the same name, up to your `maxItems` cap.
4. Every record is tagged with which facet and which state's search it came from, so a mixed-state, mixed-facet run can be split with one filter.

***

### Input

```json
{
  "firstName": "John",
  "lastName": "Smith",
  "states": ["TX"],
  "maxItems": 20
}
```

Searching more than one state, and narrowing to a specific city:

```json
{
  "firstName": "John",
  "lastName": "Smith",
  "city": "Houston",
  "states": ["TX", "CA"],
  "maxItems": 30
}
```

| Field          | Type    | Default | Description |
|----------------|---------|---------|-------------|
| `firstName`    | String  | —       | First name of the person to search for. Required. |
| `lastName`     | String  | —       | Last name of the person to search for. Required. |
| `city`         | String  | —       | Optional city to narrow the search. Combined with each selected state as "City, ST" — leave it blank to search the whole state(s). |
| `states`       | Array   | —       | One or more US states to search within. Required — FamilyTreeNow needs at least one state to run a search. Selecting more than one runs the search once per state. |
| `maxItems`     | Integer | `10`    | Maximum number of records to return, counted across every selected state and all six record facets. |
| `resumeCursor` | String  | —       | Cursor from a previous run's Output. Leave empty for a fresh search. |

***

### FamilyTreeNow Scraper Output Fields

```json
{
  "full_name": "John Smith",
  "name_suffix": null,
  "birth_month_year": "Oct 1985",
  "age": 40,
  "current_city": "Bastrop",
  "current_state": "TX",
  "prior_addresses": [
    "1071 E Centerville Rd #2212, Garland, TX 75041",
    "173 Lba Dr, Bastrop, TX 78602"
  ],
  "possible_relatives": ["Andrew Lane Smith", "Ariel Kay Smith"],
  "possible_associates": ["Alishia M Dsouza", "Betty Jean Johnson"],
  "phone_numbers": ["(214) 708-6530", "(512) 718-4798"],
  "record_type": "living_people",
  "record_permalink": "/record/YqGdaZgc0ZluaCq5-PEzKQ",
  "detail_url": "https://www.familytreenow.com/search/people/results?...",
  "source_query": { "firstName": "John", "lastName": "Smith", "city": null, "state": "TX" },
  "scraped_at": "2026-09-28T16:26:50.713Z"
}
```

| Field                 | Type    | Description |
|-----------------------|---------|--------------|
| `full_name`           | String  | The person's full name as published. |
| `name_suffix`         | String  | Generational suffix (Jr, Sr, II, III, IV) when FamilyTreeNow includes one — null otherwise. |
| `birth_month_year`    | String  | Month and year of birth, or an approximate birth year on older census records. |
| `age`                 | Integer | Current age, where FamilyTreeNow publishes one. Not available on every record type. |
| `current_city`        | String  | City of the person's current address, when known. |
| `current_state`       | String  | State of the person's current address, when known. |
| `prior_addresses`     | Array   | Full prior-address chain — street, city, state, and zip where available. Populated for living-people records. |
| `possible_relatives`  | Array   | Full names from FamilyTreeNow's relationship graph. |
| `possible_associates` | Array   | Full names of people FamilyTreeNow lists as associates of this person. |
| `phone_numbers`       | Array   | Phone numbers on file for this person. |
| `record_type`         | String  | Which of the six facets this record came from: `living_people`, `census`, `death`, `marriage`, `divorce`, or `public_member_tree`. |
| `record_permalink`    | String  | FamilyTreeNow's permanent `/record/<id>` link for this record. |
| `detail_url`          | String  | The FamilyTreeNow page this record was read from. |
| `source_query`        | Object  | The `firstName` / `lastName` / `city` / `state` this row's search used — `state` tells you which of your selected states this row came from. |
| `scraped_at`          | String  | ISO timestamp of when the record was collected. |

`prior_addresses`, `possible_relatives`, `possible_associates`, and `phone_numbers` come back fullest on `living_people` records — the other five facets are genealogical source documents, so a census or marriage record carries fewer of them, and that's the record itself, not a gap in extraction.

***

### Resuming a large crawl

Every run emits a `resumeCursor` in its Output. If a large crawl stops before it finishes — because it hit `maxItems`, your spend cap (`maxTotalChargeUsd`), or was aborted — start a new run with **the same input** plus that `resumeCursor` to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.

- You are **not re-charged** for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its `resumeCursor` is no longer valid.
- `resumeCursor` is opaque — supply it unmodified.

***

### FAQ

#### How do I search FamilyTreeNow for someone?

Give this scraper a first name, last name, and at least one state. FamilyTreeNow Scraper handles the rest — matching, following each result to its full record, and widening to the other five record facets if your `maxItems` budget has room left.

#### What data can I get from FamilyTreeNow?

Full name, birth month/year, current and prior addresses, phone numbers, possible relatives, and possible associates for living people — plus census, death, marriage, divorce, and public-member-tree records for the same name.

#### Does this return every record type, or just living people?

Both. Living-people results get the full relationship-graph treatment; the actor then automatically queries the other five facets — census, death, marriage, divorce, public member trees — for the same name, tagging each row with its `record_type`.

#### Can I search multiple states in one run?

Yes. `states` takes an array — select as many as you want, and the actor runs the search once per state, tagging each result's `source_query.state` so you know where it came from.

#### Do I need an account or API key for FamilyTreeNow?

No. FamilyTreeNow Scraper runs on a first name, last name, and state — no login, no API key, no browser extension.

#### How much does FamilyTreeNow Scraper cost to run?

Billing is per record returned. Run cost scales with `maxItems` and the number of record facets your search actually has data in — a name with no marriage or divorce records on file simply returns fewer rows for the same cap.

***

### Need More Features?

Need a different filter, a bulk-search mode, or another people-search source? [File an issue](https://console.apify.com/actors/issues) or get in touch.

### Why Use FamilyTreeNow Scraper?

- **Named source, not a black box** — you know exactly which site the data came from and can verify any record yourself.
- **The full relationship graph** — possible relatives and possible associates come back as arrays with real names, not a truncated "Related: A, B, C..." string cut off at the first few matches.
- **Six record facets in one run** — living people, census, death, marriage, divorce, and public member trees, all from the same name and state query.

# Actor input Schema

## `sp_intended_usage` (type: `string`):

What will this data feed? E.g. lead lists, KYB checks, price tracking.

## `sp_improvement_suggestions` (type: `string`):

Provide any feedback or suggestions for improvements.

## `sp_contact` (type: `string`):

We'll personally help with your use case. No spam.

## `resumeCursor` (type: `string`):

Leave empty for a fresh crawl. To CONTINUE a previous run where it stopped — without paying again for records you already received — paste the `resumeCursor` value from that run's Output (the run's OUTPUT key). Resume promptly: the previous run's data expires with your account's retention window (free tier: your ~10 most recent runs).

## `firstName` (type: `string`):

First name of the person to search for.

## `lastName` (type: `string`):

Last name of the person to search for.

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

Optional city to narrow the search. Combined with each selected state as "City, ST" — leave blank to search the whole state(s).

## `states` (type: `array`):

One or more US states to search within — required (FamilyTreeNow's citystatezip parameter needs at least one state). Selecting more than one runs the search once per state, up to maxItems total.

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

Maximum number of records to scrape, across every selected state and all six record facets (living people, census, death, marriage, divorce, public member trees).

## Actor input object example

```json
{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "firstName": "John",
  "lastName": "Smith",
  "states": [
    "TX"
  ],
  "maxItems": 10
}
```

# 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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "firstName": "John",
    "lastName": "Smith",
    "states": [
        "TX"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("jungle_synthesizer/familytreenow-relatives-address-history-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 = {
    "sp_intended_usage": "Describe your intended use...",
    "sp_improvement_suggestions": "Share your suggestions here...",
    "sp_contact": "Share your email here...",
    "firstName": "John",
    "lastName": "Smith",
    "states": ["TX"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("jungle_synthesizer/familytreenow-relatives-address-history-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sp_intended_usage": "Describe your intended use...",
  "sp_improvement_suggestions": "Share your suggestions here...",
  "sp_contact": "Share your email here...",
  "firstName": "John",
  "lastName": "Smith",
  "states": [
    "TX"
  ],
  "maxItems": 10
}' |
apify call jungle_synthesizer/familytreenow-relatives-address-history-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jungle_synthesizer/familytreenow-relatives-address-history-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/yqlUBaljIt7nC9Gos/builds/IJW1UYcFp3b29dQbZ/openapi.json
