# FastPeopleSearch Scraper — Phones, Emails & Addresses (`memo23/fastpeoplesearch-scraper`) Actor

Search FastPeopleSearch by name, reverse phone, or reverse address and get full US person records: typed phones with carrier, decoded emails, address history, relatives, associates & jobs. Anti-bot bypass built in - no proxies, no browser, no login. Export JSON, CSV or Excel.

- **URL**: https://apify.com/memo23/fastpeoplesearch-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 person 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/actors/running/actors-in-store.md#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

## FastPeopleSearch Scraper — Phones, Emails & Addresses

Turn a name, phone number, or street address into full US person records.
Search FastPeopleSearch.com by name (with optional city/state), run reverse phone or reverse address lookups, or paste any FastPeopleSearch URL — and get structured rows with phone numbers, email addresses, current + past addresses, relatives, associates, and employment history.

### Why Use This Scraper?

- ✅ Three search modes — name, reverse phone, reverse address — plus direct URL input
- ✅ Email addresses included and decoded to plain text (most alternatives skip these)
- ✅ Phone numbers with carrier, line type, and first-reported date
- ✅ Full address history with counties and recorded dates, plus property details for the current home
- ✅ Relatives and associates with ages and profile links — ready for network mapping
- ✅ Anti-bot handling built in — no proxy setup, no browser, no login
- ✅ Export as JSON, CSV, or Excel, or pull rows through the Apify API

### Overview

The FastPeopleSearch Scraper is built for skip tracers, real-estate investors, lead-generation teams, and researchers who need structured US people data without copying it off the site by hand.

The output is person-shaped rows. Whatever you start from — a name search, a phone number, an address, or a pasted URL — the dataset is a stream of person records, one row per profile. A reverse phone lookup that matches three people produces three person rows.

The site sits behind an aggressive anti-bot wall. This actor routes every request through unblocking infrastructure that clears it automatically, so a run needs zero proxy configuration on your side.

### Supported Inputs

#### Search modes

| Mode | You provide | Example |
|---|---|---|
| Name search | `firstName`, `lastName`, optional `city` + `state` | John Smith in NY |
| Reverse phone | `phone` (any format) | `(206) 592-2882` |
| Reverse address | `address`, `city`, `state`, optional `zip` | 123 Main St, Dallas, TX |

#### URL types (advanced)

| URL type | Pattern | Example |
|---|---|---|
| Name listing | `/name/{first}-{last}_{city}-{st}` | `https://www.fastpeoplesearch.com/name/john-smith_ny` |
| Reverse phone | `/{AAA-BBB-CCCC}` | `https://www.fastpeoplesearch.com/206-592-2882` |
| Reverse address | `/address/{street}_{city}-{st}` | `https://www.fastpeoplesearch.com/address/123-main-st_dallas-tx` |
| Person profile | `/{name}_id_G{id}` | `https://www.fastpeoplesearch.com/amanda-smith_id_G4156490107428859261` |

#### Copy-pasteable startUrls

```json
{
  "startUrls": [
    "https://www.fastpeoplesearch.com/name/john-smith_ny",
    "https://www.fastpeoplesearch.com/206-592-2882",
    "https://www.fastpeoplesearch.com/amanda-smith_id_G4156490107428859261"
  ],
  "maxItems": 20
}
```

#### Unsupported inputs

- ❌ URLs outside `fastpeoplesearch.com`
- ❌ Bulk CSV of names in a single run (one name per run — or use startUrls with multiple listing URLs)
- ❌ Anything behind a login or paywall (the site has none for the data this actor collects)

### Use Cases

| Audience | Use case |
|---|---|
| **Skip tracers** | Locate current addresses and working phone numbers from a name or an old address |
| **Real-estate investors** | Reverse-address lookups on distressed properties to reach the owner directly |
| **Lead-gen teams** | Turn sparse contact lists into full records with phones and emails |
| **Collections / legal** | Verify identity, address history, and known relatives before contact |
| **Researchers** | Bulk-export people data for genealogy or demographic analysis |

### How It Works

![How FastPeopleSearch Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-fastpeoplesearch.png)

1. **Input** — pick a search mode and fill the matching fields, or paste FastPeopleSearch URLs
2. **Clear the wall** — every request goes through unblocking infrastructure that passes the site's anti-bot check
3. **Walk the results** — the actor pages through the listing and opens each person profile concurrently
4. **Parse the record** — phones, emails (decoded from obfuscation), addresses, relatives, associates, employment
5. **Output** — one row per person, exportable as JSON, CSV, or Excel

### Input Configuration

#### Input fields

| Field | Type | Required | Notes |
|---|---|---|---|
| `searchMode` | `string` enum | optional | `name` (default), `phone`, or `address`. Ignored when `startUrls` is set |
| `firstName` | `string` | for name mode | First name to search |
| `lastName` | `string` | for name mode | Last name to search |
| `city` | `string` | optional / address mode | Narrows name searches; required for address mode |
| `state` | `string` enum | optional / address mode | Two-letter US state (50 states + DC) |
| `phone` | `string` | for phone mode | Any format — digits are extracted |
| `address` | `string` | for address mode | Street part, e.g. `123 Main St` |
| `zip` | `string` | optional | Makes address mode more precise |
| `startUrls` | `array<string>` | optional | FastPeopleSearch URLs; overrides the search fields |
| `maxItems` | `integer` | optional | Hard cap on person records. Default `10` |
| `maxConcurrency` | `integer` | optional | Parallel profile fetches. Default `5` |

#### Common scenarios

**1. Name search narrowed to a state**

```json
{
  "searchMode": "name",
  "firstName": "John",
  "lastName": "Smith",
  "state": "NY",
  "maxItems": 25
}
```

**2. Reverse phone lookup**

```json
{
  "searchMode": "phone",
  "phone": "(206) 592-2882",
  "maxItems": 5
}
```

**3. Reverse address lookup**

```json
{
  "searchMode": "address",
  "address": "6507 Steilacoom Blvd SW",
  "city": "Lakewood",
  "state": "WA",
  "maxItems": 10
}
```

### Output Overview

Each dataset item is one person record containing:

- **Identity** — `fullName`, `firstName`, `lastName`, `age`, `bornMonthYear`, `akas[]`
- **Contact** — `phones[]` (number, line type, carrier, first-reported date, primary flag), `emails[]`, `primaryPhone`
- **Location** — `currentAddress` (street/city/state/zip/county + since-date), `coordinates`, `pastAddresses[]` with recorded dates
- **Property** — `currentAddressPropertyDetails` (square feet, year built, estimated value, last sale, occupancy type)
- **Network** — `relatives[]` and `associates[]`, each with name, age, and profile URL
- **Work** — `currentEmployment[]` and `workExperience[]` (employer, title, location)
- **Meta** — `personId`, `profileUrl`, `maritalStatusText`, `scrapedAt`

Field availability follows the site: a profile without a listed email produces an empty `emails` array, not a missing run.

### Output Samples

#### Reverse address start, trimmed

```jsonc
{
  "type": "person",
  "personId": "G5374097278778066177",
  "profileUrl": "https://www.fastpeoplesearch.com/mary-huff_id_G5374097278778066177",
  "fullName": "Mary L Huff",
  "firstName": "Mary",
  "lastName": "Huff",
  "age": 71,
  "bornMonthYear": "October 1954",
  "currentAddress": {
    "fullAddress": "6507 Steilacoom Blvd SW, Lakewood, WA, 98499",
    "street": "6507 Steilacoom Blvd SW",
    "city": "Lakewood",
    "state": "WA",
    "zip": "98499",
    "county": "Pierce County",
    "since": "January 2012"
  },
  "coordinates": { "latitude": 47.176693, "longitude": -122.524788 },
  "currentAddressPropertyDetails": {
    "bedrooms": "3",
    "squareFeet": "1,438",
    "yearBuilt": "1928",
    "estimatedValue": "$468,000",
    "occupancyType": "Owner Occupied"
  },
  "phones": [
    {
      "number": "(253) 380-5662",
      "type": "Wireless",
      "carrier": "T-Mobile USA Inc",
      "firstReported": "September 2025",
      "isPrimary": true
    }
  ],
  "primaryPhone": "(253) 380-5662",
  "emails": ["marylhuff@gmail.com", "mary.huff@intel.com"],
  "akas": ["Mary Huff", "Mary L Smith"],
  "pastAddresses": [
    {
      "fullAddress": "120 Walzer Rd Rochester NY 14622",
      "city": "Rochester",
      "state": "NY",
      "county": "Monroe County",
      "recordedDate": "June 2017"
    }
  ],
  "relatives": [
    { "name": "Amanda Smith", "age": "Age 46 (May 1980)", "profileUrl": "https://www.fastpeoplesearch.com/amanda-smith_id_G4156490107428859261" }
  ],
  "currentEmployment": [
    { "employer": "WASHINGTON STATE DEPARTMENT OF ECOLOGY", "title": "FLOODPLAIN MANAGEMENT UNIT SUPERVISOR", "location": "Salt Lake City, UT" }
  ],
  "scrapedAt": "2026-09-02T20:39:30.355Z"
  /* pastAddresses, relatives, associates, workExperience trimmed */
}
```

### Key Output Fields

#### Identity

- `fullName`, `firstName`, `lastName`, `age`, `bornMonthYear`, `akas[]`, `personId`, `profileUrl`

#### Phones

- `phones[].number`, `phones[].type` (Wireless / Landline / Voip), `phones[].carrier`, `phones[].firstReported`, `phones[].isPrimary`, `primaryPhone`

#### Emails

- `emails[]` — plain-text addresses, decoded from the site's obfuscation

#### Addresses

- `currentAddress.{street, city, state, zip, county, since}`, `coordinates.{latitude, longitude}`
- `pastAddresses[].{fullAddress, street, city, state, zip, county, recordedDate}`
- `currentAddressPropertyDetails.{squareFeet, yearBuilt, estimatedValue, lastSaleAmount, occupancyType, …}`

#### People network

- `relatives[].{name, age, profileUrl}`, `associates[].{name, age, profileUrl}`

#### Employment

- `currentEmployment[].{employer, title, location}`, `workExperience[].{employer, title}`

### FAQ

#### Which URLs are supported?

Any `fastpeoplesearch.com` URL: name listings (`/name/john-smith_ny`), reverse phone pages (`/206-592-2882`), reverse address pages (`/address/...`), and direct person profiles (`/{name}_id_G{id}`). URLs on other hosts are not.

#### Do I get person rows or search-result rows?

Person rows, always. Listing pages are only used to find profiles; every dataset item is a full parsed profile.

#### Are emails always present?

No — they appear when the site lists them for that person. In testing, most adult profiles carried 5–12 addresses, but some have none. Emails that the site obfuscates are decoded to plain text automatically.

#### How do I search a whole state vs. one city?

Set `state` alone for a state-wide search, or `city` + `state` to narrow it. Leaving both empty searches nationwide, which is broad — cap it with `maxItems`.

#### Can I paste multiple searches into one run?

Yes — build the listing URLs yourself and pass them in `startUrls` (e.g. three `/name/...` URLs). Each is paged through until `maxItems` is reached.

#### Can I scrape private or paywalled data?

No. The actor reads only the public profile pages; there is no login and no paid-content access.

#### Why do requests take longer than a normal scraper?

Every request goes through unblocking infrastructure to pass the site's anti-bot wall. A profile typically takes 3–30 seconds. Concurrency (default 5) keeps total run time reasonable.

#### What happens when the anti-bot check still blocks a request?

The actor retries up to 4 times per page with fresh unblocker sessions. Persistent failures are logged and skipped — a run never hangs on one bad URL.

### Support

Found a bug or have a feature request? Open an issue on the actor's Issues tab in the Apify Console, or email **muhameddidovic@gmail.com**.

### Additional Services

Need bulk name-list runs, a custom export shape, monitoring on a schedule, or the same data from another people-search site? I do tailored work — drop me a line at **muhameddidovic@gmail.com**.

### Explore More Scrapers

If you found this useful, you might also like:

- [**Realtor.com Agents Scraper**](https://apify.com/memo23/realtor-search-cheerio) — all US real-estate agents, no 3k limit
- [**Zillow Agents Leads Scraper**](https://apify.com/memo23/zillow-agents-leads-scraper-ppe) — agent lead lists from Zillow
- [**Clutch.co Scraper**](https://apify.com/memo23/apify-clutch-cheerio) — agencies, reviews, and emails with AI insights

Full list at [apify.com/memo23](https://apify.com/memo23).

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/fastpeoplesearch-scraper`).

**Purpose:** US people search on FastPeopleSearch.com — name, reverse-phone, or reverse-address input; returns one row per person including decoded email addresses, typed phone numbers, address history, relatives, and associates.

**Minimal input:**

```json
{ "searchMode": "name", "firstName": "John", "lastName": "Smith", "state": "NY", "maxItems": 5 }
```

**Output:** one dataset row per person — `fullName`, `firstName`, `lastName`, `age`, `bornMonthYear`, `akas[]`, `phones[] {number, type, carrier, firstReported, isPrimary}`, `primaryPhone`, `emails[]`, `currentAddress {street, city, state, zip, county, since}`, `coordinates {latitude, longitude}`, `currentAddressPropertyDetails {…}`, `pastAddresses[]`, `relatives[] {name, age, profileUrl}`, `associates[]`, `currentEmployment[]`, `workExperience[]`, `personId`, `profileUrl`, `scrapedAt`.

**Behaviors an agent should know:**

- Always set `maxItems` — a broad name search can match hundreds of profiles.
- `startUrls` (any fastpeoplesearch.com listing or profile URLs) overrides the search-mode fields when present.
- `searchMode: "phone"` needs only `phone`; `searchMode: "address"` needs `address` + `city` + `state`.
- Billing is per person record returned; requests that fail or find no match cost nothing extra.
- Requests route through anti-bot unblocking — expect 3–30 s per page, so prefer small `maxItems` for interactive use.
- US data only; no login-gated content is accessed.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by FastPeopleSearch.com or its operators. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available people-search pages — no authenticated endpoints, paid features, or content behind any login wall. People-search data is sensitive: users are responsible for ensuring their use complies with FastPeopleSearch.com's Terms of Service, the Fair Credit Reporting Act (this actor is not a consumer reporting agency and its output must not be used for FCRA-regulated purposes such as employment, credit, or tenancy screening), applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization.

***

### SEO Keywords

fastpeoplesearch scraper, scrape fastpeoplesearch, fastpeoplesearch API, fastpeoplesearch.com scraper, Apify fastpeoplesearch, people search scraper, reverse phone lookup API, reverse address lookup scraper, skip tracing tool, skip tracing data, people finder API, phone number lookup scraper, email finder people search, address history data, relatives and associates data, US public records scraper, contact enrichment data, real estate lead generation, property owner lookup, truepeoplesearch alternative

# Actor input Schema

## `searchMode` (type: `string`):

How to search: `name` (first + last name, optionally narrowed by city/state), `phone` (reverse phone lookup), or `address` (who lives at a street address). Ignored when Start URLs are provided.

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

First name of the person to search for (required for name mode).

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

Last name of the person to search for (required for name mode).

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

City — optional for name mode (narrows results), required for address mode.

## `state` (type: `string`):

Two-letter US state abbreviation (e.g. NY, CA). Narrows name searches; required for address mode.

## `phone` (type: `string`):

Phone number for reverse lookup (required for phone mode). Any format works — digits are extracted, e.g. `(555) 123-4567` or `5551234567`.

## `address` (type: `string`):

Street address for reverse lookup (required for address mode), e.g. `123 Main St`. Combine with City and State.

## `zip` (type: `string`):

Optional ZIP code — makes address mode more precise.

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

Full fastpeoplesearch.com URLs to crawl. Listing and person profile URLs are auto-classified; mix both in the same array if useful.

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

Hard cap on the number of person records scraped. Broad name searches can return hundreds of matches; use this cap to limit billing.

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

Maximum number of person profile pages processed in parallel.

## Actor input object example

```json
{
  "searchMode": "name",
  "firstName": "John",
  "lastName": "Smith",
  "state": "NY",
  "maxItems": 10,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset of person records with phones, emails, address history, relatives, associates and employment history.

# 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 = {
    "firstName": "John",
    "lastName": "Smith",
    "state": "NY"
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/fastpeoplesearch-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 = {
    "firstName": "John",
    "lastName": "Smith",
    "state": "NY",
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/fastpeoplesearch-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 '{
  "firstName": "John",
  "lastName": "Smith",
  "state": "NY"
}' |
apify call memo23/fastpeoplesearch-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/fastpeoplesearch-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/FWTZr5i5hz07RPAsE/builds/JOkFA0qhaPeDjQfMO/openapi.json
