# Ziprecruiter Phone Number Scraper - Country & Carrier Data (`code-beat/ziprecruiter-phone-number-scraper-fast-and-reliable`) Actor

💼 ZipRecruiter Phone Number Scraper extracts employer and hiring contact numbers at scale with country filters and carrier data. ✅ Line-typed, validated output. 🧑‍💼 Perfect for staffing agencies & HR tech sales teams.

- **URL**: https://apify.com/code-beat/ziprecruiter-phone-number-scraper-fast-and-reliable.md
- **Developed by:** [Code Beat](https://apify.com/code-beat) (community)
- **Categories:** Lead generation, Jobs, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

### Ziprecruiter Phone Number Scraper 📞

**Ziprecruiter Phone Number Scraper** helps you collect publicly available phone numbers from Ziprecruiter profiles, bios, and posts using keywords and country targeting. It’s a practical ZipRecruiter phone scraper for marketers, researchers, and recruitment data scraper workflows, helping with ZipRecruiter lead generation, prospect data extraction, and talent acquisition leads at scale.

### What Does Ziprecruiter Phone Number Scraper Do? 🤖

Ziprecruiter Phone Number Scraper takes your keywords, optional location filter, and country selection, then scans public Ziprecruiter content for matching contact details. It scrapes, extracts, collects, filters, and exports results into a structured dataset with the profile title, description, URL, phone number, country, and dial code. This ZipRecruiter contact extractor is useful when you need recruitment data scraper results without manual checking. Instead of spending hours on candidate contact scraping or employer phone lookup, you can automate the process and scale your outreach more efficiently.

### What Can Ziprecruiter Phone Number Scraper Extract? 📊

This actor returns a clean dataset with the most useful fields for phone number harvesting and job board scraper workflows. Each result includes the keyword that triggered the match, a title, supporting description text, the profile URL, and the phone number details tied to the selected country. It’s a straightforward ZipRecruiter phone number extractor for recruiter contact extraction and job posting data extraction.

| Data Type | Field Name | Description |
|---|---|---|
| Discovery | `keyword` | The keyword that found this result |
| Identity | `title` | The profile or result title |
| Context | `description` | Supporting public text associated with the result |
| Navigation | `url` | Direct link to the profile or result page |
| Contact | `phone_number` | Phone number found in public data |
| Geography | `country` | The selected country used for targeting |
| Dialing | `dial_code` | Dial code for the selected country |

#### Key Features of Ziprecruiter Phone Number Scraper ⚡

- ✅ **Keyword-Driven Search:** Use your own keywords to find relevant public Ziprecruiter results for lead generation and prospect data extraction.
- 🌍 **Location Targeting:** Add a location to narrow results and improve precision for local recruitment data scraper campaigns.
- 📞 **Country-Based Phone Targeting:** Select the country you want to target so the extracted phone numbers match your outreach needs.
- 🔄 **Reliable Scraping Runs:** Built for automated web scraping with built-in proxy support for reliable scraping and resilience.
- 📊 **Structured Dataset Output:** Results are saved in a tidy dataset, making it easy to review, export, or analyze.
- 💾 **Real-Time Saving:** Results are stored as they are found, reducing the risk of losing data during longer runs.
- ⏱️ **Configurable Limit:** Set `maxPhoneNumbers` to control how many phone numbers the actor collects in one run.
- 🔁 **Resilient Processing:** Includes retries and fallbacks for resilience when public pages are less consistent than expected.

### How to Use Ziprecruiter Phone Number Scraper 🚀

1. **Open the Actor** — Find **Ziprecruiter Phone Number Scraper** in the Apify Store.
2. **Go to Input** — Open the Input tab in the Apify Console.
3. **Add Keywords** — Enter the terms you want to search for, such as industries, job roles, or company-related terms.
4. **Set Location** — Optionally filter by location if you want more relevant results.
5. **Choose a Country** — Select the target country for phone number extraction.
6. **Set the Limit** — Adjust `maxPhoneNumbers` if you want to cap the run.
7. **Run the Actor** — Start the actor and monitor progress in the logs.
8. **Download Results** — Export the dataset once the run completes.

No coding required.

### Ziprecruiter Phone Number Scraper Output Format 📦

The actor saves results to your Apify dataset in structured JSON format, ready for export or integration into your workflow.

#### Input Example

```json
{
  "keywords": [
    "marketing",
    "founder"
  ],
  "location": "London",
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20
}
```

#### Output Example

```json
[
  {
    "keyword": "marketing",
    "title": "Sarah Johnson",
    "description": "Marketing consultant available for freelance campaigns and partnerships.",
    "url": "https://www.ziprecruiter.com/profile/sarah-johnson",
    "phone_number": "+44 7700 900123",
    "country": "United Kingdom",
    "dial_code": "+44"
  }
]
```

| Field | Label | Format | Description |
|---|---|---|---|
| `keyword` | Keyword | text | The keyword used to find the result |
| `title` | Title | text | The result title or profile name |
| `description` | Description | text | Supporting public text from the result |
| `url` | Url | link | Direct URL to the profile or result |
| `phone_number` | Phone Number | text | Phone number extracted from public data |
| `country` | Country | text | Target country selected for the run |
| `dial_code` | Dial Code | text | Dial code associated with the selected country |

### 🎯 Use Cases of Ziprecruiter Phone Number Scraper

**B2B Lead Generation:** Build targeted prospect lists from public Ziprecruiter data for outreach campaigns and sales development.

**Recruitment Data Scraper Workflows:** Gather public contact details that can support hiring research, recruiter contact extraction, and outreach planning.

**Employer Phone Lookup:** Identify phone numbers tied to relevant public profiles for follow-up and verification.

**Talent Acquisition Leads:** Discover potential contacts and build lists for sourcing, partnerships, or business development.

**Job Board Scraper Research:** Analyze public profile and post data for market signals, niche trends, and contact discovery.

### How Much Will Ziprecruiter Phone Number Scraper Cost You? 💰

Pricing depends on your Apify usage and the amount of data processed. This actor is built for scalable automated web scraping, so setting `maxPhoneNumbers` helps you control runtime and volume. Apify also provides a free tier for new users, and you can monitor usage directly in the Apify Console while the actor runs.

### Is It Legal to Scrape Ziprecruiter? ⚖️

This actor collects publicly available data from Ziprecruiter and does not require access to private profiles or protected content. Whether a particular use is allowed depends on your own compliance with applicable laws, platform terms, and local regulations. Use extracted data responsibly for research, marketing, or recruitment use cases. For questions, support, or data removal requests, contact <codebeatapi@gmail.com>.

### Ziprecruiter Phone Number Scraper Input Parameters 📋

```json
{
  "keywords": [
    "marketing",
    "founder"
  ],
  "location": "London",
  "country": "United Kingdom (+44)",
  "maxPhoneNumbers": 20
}
```

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `keywords` | Array | ✅ Yes | `["marketing","founder"]` | Keywords to search for. Use terms that match the kind of public contacts you want to find. |
| `location` | String | No | `""` | Optional location filter. Leave it empty if you want broader results. |
| `country` | String | ✅ Yes | `United Kingdom (+44)` | Country to target for phone numbers. Pick the country that matches your campaign or research focus. |
| `maxPhoneNumbers` | Integer | No | `20` | Maximum number of phone numbers to collect before the actor stops. |

### During the Actor Run ⏱️

You’ll see live progress in the logs while the actor runs, and results are saved to the dataset as they are found. Runtime depends on how broad your keywords are, how many phone numbers you want, and how much public data is available. If results are lower than expected, try broader keywords or a different country selection.

### Final Note ✉️

Start using Ziprecruiter Phone Number Scraper to automate phone number harvesting from public Ziprecruiter data in minutes. It’s a fast way to support ZipRecruiter lead generation and recruitment data scraper workflows at scale. Questions? Reach out at <codebeatapi@gmail.com>.

### FAQ — Ziprecruiter Phone Number Scraper ❓

#### How does Ziprecruiter Phone Number Scraper find phone numbers?

It uses your keywords and country selection to identify relevant public Ziprecruiter content, then extracts phone numbers from publicly available sources. It only returns data it can find in public text.

#### What types of Ziprecruiter profiles can I scrape?

You can scrape public Ziprecruiter profiles, bios, and posts that include phone numbers in publicly available content. If a result does not include a phone number, it won’t appear in the dataset.

#### What did your tests show about Ziprecruiter Phone Number Scraper?

The actor is designed for bulk extraction with smart filters and structured output. Like most job board scraper tools, results depend on the keywords you choose and how much public contact data is available.

#### Why scrape Ziprecruiter for phone numbers?

Ziprecruiter is useful for recruitment data scraper and talent acquisition leads workflows because it can surface public contact details tied to relevant profiles. That makes outreach faster than manual phone number harvesting.

#### How much does Ziprecruiter Phone Number Scraper cost to use?

Your cost depends on Apify usage and how much data you collect. Setting `maxPhoneNumbers` helps you control the run size and keep your scraping budget predictable.

#### How does Ziprecruiter Phone Number Scraper help my business?

It saves time by automating public contact discovery, making it easier to build prospect lists, support recruiter contact extraction, and collect structured lead data for outreach.

#### What are the challenges of using a Ziprecruiter scraper?

Results can vary because not every profile or post includes a phone number. Broader keywords, a different country choice, or a looser location filter can help improve coverage.

#### How do I choose the right Ziprecruiter Phone Number Scraper?

Look for clear input options, structured dataset output, country targeting, and a configurable result limit. Support is available at <codebeatapi@gmail.com>.

### 🆘 Support & Feedback

Need help with Ziprecruiter Phone Number Scraper or want to request a feature?

- 🐞 **Bug Reports:** Send details to <codebeatapi@gmail.com>
- ✨ **Custom Features:** Contact <codebeatapi@gmail.com>
- 📧 **General Support:** <codebeatapi@gmail.com>

### Country & Time Targeting

**Target Country** did two jobs already: it supplies the dial code the search
looks for, and it is the region numbers are parsed against. It now does a third

- Google is asked to answer as if searching from that country (`gl`). Turn on
  **Strict country filter** to also restrict results to pages Google attributes to
  it (`cr=countryXX`); that is much tighter and returns noticeably fewer results.

**Result Language** restricts results to one language (`hl` + `lr`).

**Time Range** limits results to a publication window - past hour, 24 hours,
week, month, year, or an explicit *Custom range* via **Custom range: from** /
**to** in `YYYY-MM-DD` form. Selecting *Custom range* without either date falls
back to no time filter rather than silently searching all of time.

### Region resolution

| Field | Meaning |
| --- | --- |
| `regionAmbiguous` | `true` when the number was printed without a country code and the same national digits are valid in more than one country |
| `phoneIsMobile` | `true`/`false` where the numbering plan can tell, empty where it genuinely cannot (US, Canada, Mexico) |
| `phoneCallingCode` | The country's international calling code, as a number |
| `phoneCountryName` | Full country name, falling back to the two-letter code rather than guessing |

`regionAmbiguous` is the important one. A number written as `020 7946 0958` is
only a UK number because the run targeted the UK - the country shown is a
reading, not a fact, and this column tells you which rows those are.

# Actor input Schema

## `scrapeMode` (type: `string`):

Find New Numbers (default) searches About.Me by keyword. Validate My List skips searching entirely and instead runs the numbers you paste into Phone List (below) through the same deliverability checks.

## `keywords` (type: `array`):

Enter keywords to search for (e.g., 'Target Keyword'). Only used in Find New Numbers mode.

## `location` (type: `string`):

Filter by location (e.g., 'London', 'California'). Leave empty for global search. Only used in Find New Numbers mode.

## `country` (type: `string`):

Select the country to target for phone numbers. Only used in Find New Numbers mode.

## `phoneList` (type: `array`):

Paste the phone numbers you want checked for deliverability (any format - the selected Country is used as the default region for numbers without a country code). Only used when Scrape Mode is set to "Validate My List".

## `maxPhoneNumbers` (type: `integer`):

Stop scraping after this many phone numbers are found. Setting a higher limit extends the scraping duration. Only used in Find New Numbers mode.

## `minQualityScore` (type: `number`):

Drop any number whose quality score (0.0-1.0) falls below this. Leave at 0 for no filter.

## `requireStrictValid` (type: `boolean`):

Drop numbers that fail strict validity (correct length/format for the region) - mainly relevant in Validate My List mode, since search results are already strictly valid by construction.

## `excludeTollFree` (type: `boolean`):

Drop numbers identified as toll-free.

## `excludePremiumRate` (type: `boolean`):

Drop numbers identified as premium-rate.

## `requireCountryMatch` (type: `boolean`):

Drop numbers whose own detected region does not match the Country you selected (e.g. shared dial codes like +1 covering the US, Canada, and Caribbean nations).

## `strictCountry` (type: `boolean`):

Restrict Google to pages it attributes to the country you selected (cr=countryXX), rather than only preferring them. Much tighter targeting, noticeably fewer results.

## `searchLanguage` (type: `string`):

Restrict results to one language. Leave on "Any language" for no filter.

## `timeRange` (type: `string`):

Only return pages Google indexed within this window. A number published last month is far more likely to still be answered than one last seen years ago.

## `customDateFrom` (type: `string`):

Only used when Time Range is "Custom range". Format: YYYY-MM-DD.

## `customDateTo` (type: `string`):

Only used when Time Range is "Custom range". Format: YYYY-MM-DD.

## Actor input object example

```json
{
  "scrapeMode": "Find New Numbers",
  "keywords": [
    "recruiter",
    "hiring manager"
  ],
  "country": "United States (+1)",
  "phoneList": [],
  "maxPhoneNumbers": 20,
  "minQualityScore": 0,
  "requireStrictValid": false,
  "excludeTollFree": false,
  "excludePremiumRate": false,
  "requireCountryMatch": false,
  "strictCountry": false,
  "searchLanguage": "",
  "timeRange": "Any time",
  "customDateFrom": "",
  "customDateTo": ""
}
```

# 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 = {
    "keywords": [
        "recruiter",
        "hiring manager"
    ],
    "phoneList": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("code-beat/ziprecruiter-phone-number-scraper-fast-and-reliable").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 = {
    "keywords": [
        "recruiter",
        "hiring manager",
    ],
    "phoneList": [],
}

# Run the Actor and wait for it to finish
run = client.actor("code-beat/ziprecruiter-phone-number-scraper-fast-and-reliable").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 '{
  "keywords": [
    "recruiter",
    "hiring manager"
  ],
  "phoneList": []
}' |
apify call code-beat/ziprecruiter-phone-number-scraper-fast-and-reliable --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,code-beat/ziprecruiter-phone-number-scraper-fast-and-reliable"
        }
    }
}

```

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/l4hu3h0ik0ClKXy2T/builds/bzvFPNIF43shv6ieq/openapi.json
