# Radaris People Scraper — US Background Search (`saregaa/radaris-scraper`) Actor

Extract public US background data from Radaris. Get full names, aliases, ages, relatives, address history, and employer info in structured CSV/JSON.

- **URL**: https://apify.com/saregaa/radaris-scraper.md
- **Developed by:** [Saregaa](https://apify.com/saregaa) (community)
- **Categories:** Lead generation, Automation, Real estate
- **Stats:** 6 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

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

## 🔍 Radaris People Scraper — SkipTrace & People Lookup

> **Find anyone in the US by name.** Extract structured public records — addresses, phone numbers, relatives, employment, education, and aliases — directly from Radaris.com using clean JSON-LD parsing. No browser required. No login. No cookies.

---

### What This Actor Does

This actor performs **name-based people lookups** against [radaris.com](https://radaris.com) — one of the largest US public records aggregators. It returns rich, structured profiles ready for your CRM, spreadsheet, or automation pipeline.

Input a first name, last name, and optional US state — get back clean, structured records in seconds.

---

### Why This Actor vs. The Competition

Most Radaris scrapers on Apify extract **only** name and address. This actor goes further.

| Feature | This Actor | crawlerbros/radaris-people-search |
|---|---|---|
| **Phone numbers** | ✅ Extracted | ❌ Not available |
| **Job title** | ✅ Extracted | ❌ Not available |
| **Current employer** | ✅ Extracted | ❌ Not available |
| **Education / Alumni** | ✅ Extracted | ❌ Not available |
| **Aliases / alternate names** | ✅ Extracted | ✅ |
| **Relatives** | ✅ Extracted | ✅ |
| **Addresses** | ✅ Full street + city + state + zip | ✅ Partial |
| **Profile ID** | ✅ Numeric Radaris ID | ❌ Name-based only |
| **State filter** | ✅ `?ql=STATE` | ✅ |
| **Proxy support** | ✅ Full Apify proxy config (incl. US Residential) | ⚠️ Basic |
| **Out-of-funds protection** | ✅ 402/407 detection + graceful exit | ❌ |
| **Split first/last name** | ✅ Auto-parsed from full name | ✅ |
| **Graceful failure handling** | ✅ Logs + exits cleanly per error type | ⚠️ Basic |

**Bottom line:** if you need more than just a name and a city, this is the actor to use.

---

### Output Fields

Each scraped profile is a clean JSON object:

```json
{
  "id": "123456789",
  "fullName": "Michael Anderson",
  "firstName": "Michael",
  "lastName": "Anderson",
  "birthDate": "1978",
  "jobTitle": "Software Engineer",
  "workCompany": "Acme Corp",
  "education": "Indiana University",
  "phones": ["+13175550192"],
  "addresses": [
    "1234 Maple St, Indianapolis, IN, 46201"
  ],
  "relatives": [
    "Sandra K Anderson",
    "James T Anderson"
  ],
  "aliases": [
    "Mike Anderson",
    "M Anderson"
  ]
}
````

| Field | Type | Description |
|---|---|---|
| `id` | string | Numeric Radaris profile ID extracted from URL |
| `fullName` | string | Full name as listed on Radaris |
| `firstName` | string | Given name |
| `lastName` | string | Family name |
| `birthDate` | string | Birth year or date (if public) |
| `jobTitle` | string | Current or last known job title |
| `workCompany` | string | Employer name |
| `education` | string | Educational institution |
| `phones` | string\[] | Known phone numbers |
| `addresses` | string\[] | Known residential addresses |
| `relatives` | string\[] | Family members and known associates |
| `aliases` | string\[] | Alternate name spellings |

***

### Input

```json
{
  "firstName": "Michael",
  "lastName": "Anderson",
  "state": "IN",
  "maxItems": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"],
    "apifyProxyCountry": "US"
  }
}
```

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `firstName` | string | ✅ | — | First name of the person to search |
| `lastName` | string | ✅ | — | Last name of the person to search |
| `state` | string | ❌ | — | US state code to narrow results (`CA`, `TX`, `IN`, etc.) |
| `maxItems` | integer | ❌ | `3` | Max number of profiles to scrape and return |
| `proxyConfiguration` | object | ❌ | — | Apify proxy config (US Residential strongly recommended) |

> **Note:** Using Apify US Residential Proxies (`RESIDENTIAL` group, country `US`) is strongly recommended to avoid 403 blocks from Radaris. Datacenter IPs may be throttled.

***

### How It Works

1. **Builds the Radaris search URL** from the input first and last name, optionally appending a `?ql=STATE` filter.
2. **Fetches the page** with a Chrome-impersonated TLS fingerprint via `curl_cffi` — no browser, no Playwright overhead.
3. **Parses all `<script type="application/ld+json">` blocks** on the search results page to find encoded profile links (`data-elink`).
4. **Decodes the Base64-encoded profile URLs** and visits each one individually.
5. **Extracts the `Person` JSON-LD entity** from each profile page — this is the richest structured data Radaris provides.
6. **Cleans and normalizes** every field: splits names, parses addresses, deduplicates phones, extracts employer and education.
7. **Pushes results** to the Apify default dataset.

***

### Error Handling

The actor handles all error modes gracefully and logs everything.

| Scenario | Behavior |
|---|---|
| Missing `firstName` or `lastName` | Fails immediately with a clear message |
| Radaris returns 403 | Logs a warning, skips, continues |
| Proxy auth failure (407) | Logs a critical error, stops the run with exit code 2 |
| Payment required (402) | Logs a critical error, stops the run with exit code 2 |
| Profile page has no JSON-LD | Skips silently, continues to next profile |
| Any unexpected exception | Fails with exit code 3 and a descriptive message |

***

### Use Cases

- **Real estate skip tracing** — find landlord contact info, property owner phones and addresses
- **Lead enrichment** — append employment and contact data to your prospect lists
- **Genealogy & research** — identify relatives and known associates
- **CRM hygiene** — verify and update outdated contact records
- **Background checks** — aggregate public record data for due diligence

***

### Proxy Recommendation

Radaris actively limits access from datacenter IPs. For reliable results:

```json
"proxyConfiguration": {
  "useApifyProxy": true,
  "apifyProxyGroups": ["RESIDENTIAL"],
  "apifyProxyCountry": "US"
}
```

Using non-US or datacenter proxies will likely result in `403 Forbidden` responses and empty results.

***

### Legal Notice

This actor scrapes **publicly available data** from Radaris.com in compliance with its public-facing interface. All extracted information is already indexed and accessible without login. Users are responsible for ensuring their use of this data complies with applicable laws, including the FCRA (Fair Credit Reporting Act) and any relevant state privacy regulations. **Do not use this actor for FCRA-regulated purposes** (credit, employment, housing decisions).

***

### FAQ

**Do I need cookies or a login?**
No. The actor performs plain HTTP GET requests against public Radaris profile pages.

**Why do I get 403 errors?**
Radaris blocks some datacenter IPs. Switch to US Residential proxies.

**Can I look up someone by phone number?**
Not with this actor — Radaris only supports name-based search. For reverse phone lookup, see other actors in the store.

**Can I scrape more than 3 results?**
Yes — set `maxItems` to any number. Be mindful of proxy usage costs for large batches.

**Why does the actor sometimes find fewer results than expected?**
Radaris aggregates profiles per name. Narrow your search with a `state` filter to improve precision on common names.

**What does the numeric `id` field represent?**
It's the stable numeric identifier in the Radaris profile URL (e.g., `https://radaris.com/p/John/Smith/123456789`). It can be used to reconstruct the canonical profile URL.

# Actor input Schema

## `fullName` (type: `string`):

The full name of the person to search (e.g., John Smith)

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

Optional city to narrow down the search

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

Optional US state code to narrow search (e.g., CA, NY, IN)

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

Maximum number of profiles to scrape

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

Highly recommended: Use US Residential Proxies to avoid blocks.

## Actor input object example

```json
{
  "fullName": "John Smith",
  "state": "CA",
  "maxItems": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "fullName": "John Smith",
    "state": "CA",
    "maxItems": 3,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("saregaa/radaris-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 = {
    "fullName": "John Smith",
    "state": "CA",
    "maxItems": 3,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("saregaa/radaris-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 '{
  "fullName": "John Smith",
  "state": "CA",
  "maxItems": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call saregaa/radaris-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Radaris People Scraper — US Background Search",
        "description": "Extract public US background data from Radaris. Get full names, aliases, ages, relatives, address history, and employer info in structured CSV/JSON.",
        "version": "0.0",
        "x-build-id": "7NV0wk9HWLbPHQdll"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/saregaa~radaris-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-saregaa-radaris-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/saregaa~radaris-scraper/runs": {
            "post": {
                "operationId": "runs-sync-saregaa-radaris-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/saregaa~radaris-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-saregaa-radaris-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "fullName"
                ],
                "properties": {
                    "fullName": {
                        "title": "Full Name",
                        "type": "string",
                        "description": "The full name of the person to search (e.g., John Smith)"
                    },
                    "city": {
                        "title": "City",
                        "type": "string",
                        "description": "Optional city to narrow down the search"
                    },
                    "state": {
                        "title": "State",
                        "type": "string",
                        "description": "Optional US state code to narrow search (e.g., CA, NY, IN)"
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of profiles to scrape",
                        "default": 3
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Highly recommended: Use US Residential Proxies to avoid blocks."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
