# Radaris People Search (SkipTrace Lookup) (`parsebird/radaris-people-search`) Actor

Look up US people by name on Radaris. Extract addresses, relatives, aliases, age, and geo-coordinates as structured skip-trace data. Export as JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/radaris-people-search.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.79 / 1,000 people

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?

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

### Radaris People Search (SkipTrace Lookup)

**Radaris People Search** is a lightweight skip-trace tool that looks up US people by name on [radaris.com](https://radaris.com) and returns clean, structured public-record data — **addresses, relatives, alternate names, age, and geo-coordinates** — one row per matched person. It is HTTP-only, needs no login or browser, and pairs with Apify schedules to enrich your lead lists on a recurring basis.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Enter a full name (plus an optional city or US state) and get up to 500 person records — each with known addresses, family members and associates, name aliases, approximate age, and latitude/longitude for the primary home location.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Actor: parsebird/radaris-people-search (Apify). Purpose: skip-trace / people search on radaris.com by name. Call with ApifyClient: client.actor("parsebird/radaris-people-search").call(run_input={"fullName": "John Smith", "state": "CA", "city": "", "maxItems": 3}). Inputs: fullName (string, REQUIRED — Radaris indexes by name only), city (string, optional, narrows results), state (string, optional, 2-letter abbreviation like CA/TX/NY or full name), phone (string, optional, accepted but UNUSED — no phone reverse-lookup), email (string, optional, accepted but UNUSED — no email reverse-lookup), maxItems (integer, default 3, max 500), proxyConfiguration (object, defaults to Apify residential US proxy). Output: one dataset row per person with type="skip_trace_person", id, url (radaris profile URL), fullName, firstName, lastName, age, addresses [{street?, city, state, zip?, country}], relatives [{name, relation?, url?}], alternateNames [string], latitude, longitude, scrapedAt (ISO-8601 UTC). Only populated fields are included. If fullName is blank the actor returns a single {type:"invalid_input"} row instead of failing. API docs: https://apify.com/parsebird/radaris-people-search/api. Get a token at https://console.apify.com/account/integrations.
```

### What does Radaris People Search do?

Radaris aggregates US public records — property and address history, relatives and associates, aliases, and age — and indexes them by person name. This **Radaris scraper** automates that lookup:

- 🔍 **Name-based search** — pass any `fullName` (e.g. `John Smith`); the actor queries Radaris and parses every candidate profile it surfaces.
- 📍 **City and state filters** — add a `city` or `state` to push matching records to the top of the results.
- 🏠 **Address history** — every known location for each person, parsed into `street`, `city`, `state`, `zip`, and `country`.
- 👪 **Relatives and associates** — family members and known associates, with links to their Radaris pages when available.
- 🪪 **Alternate names** — alias and alternate-spelling variants Radaris has on file.
- 🗺️ **Geo-coordinates** — latitude and longitude for the primary home location, geocoded from the address.
- ⚡ **HTTP-only and fast** — no browser runtime, no cookies, no login. Runs cheaply and finishes in seconds.
- 🗓️ **Automation-ready** — combine with Apify [scheduling](https://docs.apify.com/platform/schedule), the [API](https://apify.com/parsebird/radaris-people-search/api), and [integrations](https://docs.apify.com/platform/integrations) (Make, Zapier, n8n, webhooks) to run recurring skip-trace enrichments against your own lists.

`phone` and `email` inputs are accepted so the actor is a drop-in for skip-trace pipelines, but Radaris has no phone or email reverse-lookup, so those values are ignored.

### What data can you extract from Radaris?

| Field | Type | Description |
|-------|------|-------------|
| `type` | string | Always `skip_trace_person` for person rows. |
| `id` | string | Stable Radaris name identifier, e.g. `John-Smith`. |
| `url` | string | Canonical radaris.com profile URL. |
| `fullName` | string | Matched person's full name. |
| `firstName` | string | Given name. |
| `lastName` | string | Family name. |
| `age` | integer | Age, when Radaris exposes it. |
| `addresses` | object\[] | Known locations: `{street?, city, state, zip?, country}`. |
| `relatives` | object\[] | Family members and known associates: `{name, relation?, url?}`. |
| `alternateNames` | string\[] | Alternate spellings and known aliases. |
| `latitude` | number | Latitude of the primary home location. |
| `longitude` | number | Longitude of the primary home location. |
| `scrapedAt` | string | ISO-8601 UTC timestamp of the scrape. |

Only populated fields are included in each row — there are no `null` values.

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `fullName` | string | **Yes** | — | Full name to look up, e.g. `John Smith`. If blank, the run returns one `invalid_input` row instead of failing. |
| `city` | string | No | — | City to narrow the search, e.g. `Dallas`. Matching records are returned first. |
| `state` | string | No | — | US state to narrow the search. Accepts a 2-letter abbreviation (`CA`, `TX`, `NY`) or a full state name. |
| `phone` | string | No | — | Accepted for compatibility but unused — Radaris has no phone reverse-lookup. |
| `email` | string | No | — | Accepted for compatibility but unused — Radaris has no email reverse-lookup. |
| `maxItems` | integer | No | 3 | Maximum person records to return (max 500). Radaris typically surfaces 20–35 candidates per name. |
| `proxyConfiguration` | object | No | Apify residential US | Proxy settings. Radaris rate-limits by IP, so a residential US proxy is used by default. |

#### Example input

```json
{
    "fullName": "John Smith",
    "state": "CA",
    "maxItems": 3
}
```

### Output example

```json
{
    "type": "skip_trace_person",
    "id": "John-Smith",
    "url": "https://radaris.com/p/John/Smith/",
    "fullName": "John Smith",
    "firstName": "John",
    "lastName": "Smith",
    "age": 46,
    "addresses": [
        {"city": "Nevada City", "state": "CA", "country": "USA"},
        {"city": "Grass Valley", "state": "CA", "country": "USA"}
    ],
    "alternateNames": ["John B Smith"],
    "relatives": [
        {"name": "Andrea Mason", "url": "https://radaris.com/p/Andrea/Mason-US/"},
        {"name": "David Smith", "url": "https://radaris.com/p/David/Smith/"}
    ],
    "latitude": 39.2625993,
    "longitude": -121.0187304,
    "scrapedAt": "2026-08-29T00:05:02Z"
}
```

Download the dataset in **JSON, CSV, Excel, HTML, RSS, or XML** from the **Storage** tab or via the API.

### How to look up people on Radaris

1. Open the **Input** tab of **Radaris People Search** on Apify.
2. Enter a **Full name** — for example `John Smith`.
3. Optionally add a **City** and/or **US state** to narrow the results.
4. Set **Max person records** (start with the default `3` to keep the first run cheap).
5. Click **Start** and wait a few seconds.
6. Open the **Storage / Dataset** tab to view results, or export as JSON, CSV, or Excel.
7. To automate, open the **Schedules** tab and add a recurring run, or call the actor from the [API](https://apify.com/parsebird/radaris-people-search/api).

#### Run it from the API

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("parsebird/radaris-people-search").call(run_input={
    "fullName": "John Smith",
    "state": "CA",
    "maxItems": 3,
})

for person in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(person["fullName"], person.get("addresses"))
```

**JavaScript:**

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('parsebird/radaris-people-search').call({
    fullName: 'John Smith',
    state: 'CA',
    maxItems: 3,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### How much does it cost to scrape Radaris?

This actor uses **pay-per-result** pricing. You are charged once per person record pushed to the dataset (the `invalid_input` sentinel row is free), plus Apify platform usage, which is minimal because the actor is HTTP-only.

| Plan tier | Price per 1,000 person records |
|-----------|-------------------------------|
| Free | $0.99 |
| Bronze | $0.89 |
| Silver | $0.89 |
| Gold | $0.79 |

A typical lookup returning 3 records costs well under one cent in result fees. Enriching a list of 1,000 names at 3 records each costs roughly **$3** on the Free tier.

### Use cases

- **Skip tracing** — locate current and past addresses for debt collection, process serving, or asset recovery.
- **Real-estate lead enrichment** — append owner addresses, relatives, and aliases to distressed-property or absentee-owner lists.
- **People and background research** — build a profile of known locations, associates, and name variants for a person of interest.
- **Identity verification** — cross-check a claimed name against public-record address history.
- **Genealogy and family research** — trace relatives and associates across locations.
- **List hygiene** — validate and de-duplicate contact lists against public records.

### How it works

1. The actor splits `fullName` into a first and last name and builds a Radaris search request, adding your `city` / `state` filters.
2. It fetches the Radaris results page over an Apify residential US proxy, rotating the proxy session automatically on rate limits.
3. It parses each candidate profile card — name, age, address history, relatives, and aliases.
4. Records matching your `city` / `state` filter are moved to the top; the rest are kept as fallback.
5. For each returned person, the primary address is geocoded to latitude/longitude.
6. Each person is pushed as one dataset row with only its populated fields.

### FAQ

**Does Radaris support phone or email reverse-lookup?**
No. Radaris indexes people by name only. The `phone` and `email` inputs exist so the actor is a drop-in for skip-trace pipelines, but they are not used for the lookup.

**Why do all rows share the same `id` and `url`?**
Radaris groups every person for a given name under one name page (e.g. `radaris.com/p/John/Smith/`). Each dataset row is a distinct candidate under that name, differentiated by age, addresses, relatives, and aliases.

**How many records will I get per name?**
Radaris typically surfaces 20–35 candidates per name on a single page. `maxItems` caps how many are returned and billed; there is no deep pagination beyond what Radaris shows.

**What happens if the name has no matches?**
The run finishes successfully with an empty dataset and a warning in the log. Try a different spelling or drop the city/state filter.

**Why is a residential proxy required?**
Radaris rate-limits aggressively by IP. The actor defaults to Apify's residential US proxy and rotates the session on blocks. You can override `proxyConfiguration`, but non-residential proxies are likely to be throttled.

**Are latitude and longitude always present?**
They are best-effort. Coordinates come from geocoding the primary address; if geocoding fails or the person has no usable address, the fields are omitted.

**Can I schedule recurring runs?**
Yes. Use the **Schedules** tab to run daily, weekly, or at any interval, or trigger runs from the [API](https://apify.com/parsebird/radaris-people-search/api), webhooks, or [integrations](https://docs.apify.com/platform/integrations) like Make and Zapier.

**Something looks wrong or broke.**
Open an issue on the **Issues** tab with your input and the run ID — feedback is welcome and helps keep the actor reliable.

### Related actors

- [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) — extract emails, phones, and social links from any website.
- [Shopify Store Leads Scraper](https://apify.com/parsebird/shopify-store-leads-scraper) — find Shopify stores and their contact details.
- [UK Companies House Scraper](https://apify.com/parsebird/uk-companies-house-scraper) — bulk UK company and officer records.
- [NorthData Scraper](https://apify.com/parsebird/northdata-scraper) — company and management data from NorthData.

### Legal and compliance

This actor collects data that Radaris publishes publicly, without logging in. Public records and people-search data are subject to laws that vary by jurisdiction and use case. In the United States, using this data for employment screening, tenant screening, credit decisions, or insurance eligibility is regulated by the **Fair Credit Reporting Act (FCRA)** and is not a permitted use of this actor's output. You are responsible for ensuring your use complies with the FCRA, state privacy laws, the [Radaris Terms of Service](https://radaris.com/page/terms), and any other applicable regulations. Read Apify's guide on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) for background. If you are the subject of a record and want it removed, use the [Radaris opt-out / privacy control](https://radaris.com/control-privacy) page.

# Actor input Schema

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

Full name to look up, e.g. John Smith. Required — if left blank the run returns a single invalid\_input row instead of failing.

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

Optional city to narrow the search, e.g. Dallas. Records from this city are returned first.

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

Optional US state to narrow the search. Accepts a 2-letter abbreviation (CA, TX, NY) or the full state name.

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

Accepted for compatibility with skip-trace pipelines but unused — Radaris does not support phone reverse-lookup.

## `email` (type: `string`):

Accepted for compatibility with skip-trace pipelines but unused — Radaris does not support email reverse-lookup.

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

Maximum number of person records to return. Radaris typically surfaces 20-35 candidates per name.

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

Radaris rate-limits by IP. Residential US proxy is strongly recommended and used by default.

## Actor input object example

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

# Actor output Schema

## `dataset` (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("parsebird/radaris-people-search").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("parsebird/radaris-people-search").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 '{
  "fullName": "John Smith",
  "state": "CA",
  "maxItems": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call parsebird/radaris-people-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/radaris-people-search"
        }
    }
}

```

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/4sXM0Haoxdj8d9j6c/builds/ICPjM3W6yJV7oqgRg/openapi.json
