# Indeed Phone Number Scraper (`premiumscraper/indeed-phone-number-scraper`) Actor

Indeed phone number scraper returns, for every phone number found on Indeed: phone number in international and national format, country code, line type, mobile flag, WhatsApp-capable flag, carrier, region, timezone, company name, domain, country, page title, source URL and date found

- **URL**: https://apify.com/premiumscraper/indeed-phone-number-scraper.md
- **Developed by:** [Premium Scraper](https://apify.com/premiumscraper) (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 phone number delivereds

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

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#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

### 🎯 What the Indeed Phone Number Scraper does

The **indeed phone number scraper** finds published phone numbers on Indeed and gives you a clean, exportable list. Point the indeed phone number scraper at a keyword, a location and a country, press start, and every matching company comes back as a row you can use straight away.

This indeed phone number scraper is built for one job only. It searches Indeed and nothing else, so every setting, every filter and every column exists to make Indeed results better rather than to cover twenty other sites badly.

| | |
|---|---|
| 🔎 **Finds** | Public phone numbers on Indeed |
| 🎛️ **Filters** | 11 settings, every one tested against live results |
| 💾 **Exports** | CSV · Excel · JSON · XML · API |
| 💳 **You pay for** | Each phone number delivered, plus the two optional 💲 checks when you switch them on |
| 🔐 **Login needed** | None |

Looking for an **indeed phone number finder**? That is this actor. It is the same job under a different name, and every row it returns names the page it came from.

### ⚡ Why choose this Indeed Phone Number Scraper

A good **indeed phone number scraper** is judged on one thing: how many usable phone numbers it puts in front of you. This indeed phone number scraper is tuned for that, and it is honest about what it cannot do.

- 🎯 **Built only for Indeed** — the indeed phone number scraper knows this site's page shapes, so it looks in the right places instead of guessing.
- 🧪 **Every filter is proven** — each setting in this indeed phone number scraper was measured against live results and kept only because it actually changes what you get. Controls that could not do anything were removed rather than shipped.
- 💳 **You pay per result** — the indeed phone number scraper charges for phone numbers it delivers. No charge for searches, filters or settings. The two checks marked 💲 on the form cost a little extra, and only on the rows they actually ran on.
- 🌍 **Country aware** — the indeed phone number finder searches the country you choose, so a UK search returns UK results.
- 🔁 **Duplicate-free** — the indeed phone number scraper removes repeats inside a run and across scheduled runs.
- 📤 **Export anywhere** — CSV, Excel, JSON, XML or the API.
- 🧾 **Every row is checkable** — an indeed phone number finder is only as good as its sources, so each result carries the exact page it came from.

If you have been looking for an **indeed phone number finder** or an **indeed company phone scraper**, this is the same job done properly and priced per result.

### 👥 Who uses this Indeed Phone Number Scraper

The **indeed phone number scraper** is used by teams who need real contacts rather than a raw page dump. If any of these is you, the indeed company phone scraper will fit.

- **Sales teams** — need an indeed contact scraper that returns phone numbers they can act on today, with the source page attached to every row
- **Agencies** — run the extract indeed phone numbers across several client niches and export phone numbers per campaign
- **Recruiters** — use the indeed phone number finder to reach phone numberss directly instead of waiting on a platform inbox
- **Founders** — run an indeed company phone scraper early, before there is budget for a data vendor, and pay only for the phone numbers that come back
- **Researchers** — use the indeed contact scraper to measure how many phone numberss in a market publish a public contact at all

Whether you call it **extract indeed phone numbers**, an **indeed phone number finder** or simply an indeed company phone scraper, the output is the same: a verified, exportable list.

### 📥 Indeed Phone Number Scraper input settings — every field explained

Every setting the **indeed phone number scraper** offers is listed below, grouped exactly as it appears on the input form. Leave anything blank and the indeed phone number scraper uses a sensible default — you can run it with just a keyword.

#### Main settings

| Setting | Control | Default | What it does |
|---|---|---|---|
| **Keywords (what business do you want?)** | text list | — | What you are looking for — a trade, niche or job title. One per line. |
| **Location (one only)** | text box | empty | Towns, cities or areas to focus on. One per line. |
| **Countries** | multi-select | `United States (+1)` | Countries — tick the ones you want to keep. |
| **📞 Number codes to search for (optional)** | text list | — | 📞 Number codes to search for (optional) — one entry per line. Results that do not match are dropped. |
| **How many phone numbers per keyword?** | number box | `20` | How many phone numbers to collect before the run stops. |

#### 🔎 Filters — where to search, and when it was published

| Setting | Control | Default | What it does |
|---|---|---|---|
| **🕒 Only pages from this period** | dropdown | `any` | Only keep pages published within the period you choose. |

#### 🔎 Filters — decide which numbers you keep

| Setting | Control | Default | What it does |
|---|---|---|---|
| **Line types to keep** | multi-select | `all` | Keeps only the kinds of number you pick, such as mobiles. |
| **💲 Only numbers found in a WhatsApp or chat link** | toggle | Off | Keeps only numbers that can receive WhatsApp messages. |

#### ⭐ Quality — stop wrong numbers getting in

| Setting | Control | Default | What it does |
|---|---|---|---|
| **📣 Commercial-intent signals (best filter for phone numbers)** | multi-select | everything | Keeps only results that look like a business rather than a private person. |
| **Open the result pages for more numbers** | toggle | On | Turn this on to open each result page and look for contacts the search result did not show. Slower, and it finds more. |

#### 📦 Delivery & duplicates

| Setting | Control | Default | What it does |
|---|---|---|---|
| **💲 Only give me numbers I have not seen before** | toggle | Off | Turn this on to skip anything this actor has already given you before. |

### 📤 Indeed Phone Number Scraper output — every field you get

Each row the **indeed phone number scraper** returns is one phone number with everything known about it. The indeed phone number scraper never returns a bare list — every result carries its source so you can verify it.

| Field | Type | What it contains |
|---|---|---|
| `phoneNumber` | text | **The phone number**, in international format. |
| `phoneNational` | text | The same number written the way it is dialled locally. |
| `phoneInternational` | text | The full international form, with the country code. |
| `phoneExtension` | text | The extension, when the page states one. |
| `telLink` | text | A ready-to-use `tel:` link. |
| `whatsappLink` | on / off | A ready-to-use WhatsApp link, for numbers that can take one. |
| `whatsappCapable` | on / off | True when the number can receive WhatsApp messages. |
| `phoneAudience` | text | Extra detail about this result, when the page provides it. |
| `phoneLineType` | text | Mobile, landline, toll-free, VoIP, premium rate, shared cost or pager. On +1 numbers this reads 'fixed line or mobile', because the digits do not separate the two. |
| `phoneIsMobile` | on / off | True for numbers that can receive a text message. **Empty on +1 numbers** (US and Canada): those digits genuinely do not say whether a number is a mobile or a landline. |
| `phoneIsValid` | on / off | True when the number is a valid, dialable number. |
| `phoneCarrier` | text | Network operator, where it can be identified. **Empty across the US and Canada** - no offline operator list exists for +1 numbers. |
| `phoneRegionCode` | text | Two-letter country code the number belongs to. |
| `phoneCountryCode` | text | Dialling code, for example 44 or 1. |
| `phoneCountryName` | text | Country the number belongs to. |
| `phoneLocation` | text | Region or city the number is registered to. |
| `phoneTimezones` | list | Timezones for the number - useful for deciding when to call. |
| `bestTimeToCall` | text | A sensible local calling window, worked out from the timezone. |
| `businessName` | text | The business name, when the page states one. |
| `websiteDomain` | text | The website domain the contact belongs to. |
| `sourceUrl` | text | **The exact page it was found on**, so any row can be checked in one click. |
| `sourceTitle` | text | The page title as it appeared in the result. |
| `sourceSnippet` | text | A short piece of the page text around the contact. |
| `platformName` | text | Which site the row came from. |
| `category` | text | What the business does, when the page states it. |
| `matchedKeyword` | text | The keyword that matched this result. |
| `seedKeyword` | text | The keyword you originally typed. |
| `searchLocation` | text | The location you asked the run to search. |
| `searchCountry` | text | The country you asked the run to search. |
| `dialCode` | text | Dialling code used for the search. |
| `confidence` | number | How confident the actor is in this row, from 0 to 1. |
| `confidenceBand` | text | The same confidence as high, medium or low. |
| `isNewSinceLastRun` | on / off | True when this contact was not in your previous run. |
| `firstSeenAt` | date | When this contact was first seen, across all your runs. |
| `scrapedAt` | date | When this row was collected, so runs can be compared over time. |
| `platform` | text | Which site the row came from. |
| `keyword` | text | The keyword this row came from - useful when you run several. |
| `title` | text | The page title as it appeared in the result. |
| `description` | text | The description text shown with the result. |
| `country` | text | Country the result was matched to. |

Download the indeed phone number scraper results as CSV, Excel, JSON or XML, or read them through the Apify API.

Every column above is a column the indeed contact scraper really writes, under the name it really writes it under. Where a value cannot honestly be established for a particular row the cell is left empty and the table says why — an empty cell is never a value that was quietly guessed. That is what separates extract indeed phone numbers results you can trust from output that just fills rows.

Every row also carries the original column names — `platform`, `keyword`, `title`, `description`, `url`, `phone_number`, `dial_code`, `country` — with the meanings they have always had, so an existing spreadsheet, Make scenario or Google Sheet keeps working unchanged.

### 💡 What people use this Indeed Phone Number Scraper for

Every use below is something the **indeed phone number scraper** is already doing for somebody. A good indeed phone number finder earns its place by removing a manual job, not by adding a dashboard.

- **Sales calling** — the indeed phone number scraper builds a call list of phone numbers with the line type on every row, so you know which numbers can take a call and which can take a text.
- **WhatsApp campaigns** — the indeed phone number scraper can keep only WhatsApp-capable numbers, so a broadcast list contains nothing that will bounce.
- **Local lead generation** — point the indeed phone number scraper at a trade and a city and it returns Indeed companys with a published number.
- **Field sales and territory planning** — every row from the indeed phone number scraper carries a region and a timezone, so calls can be scheduled sensibly.
- **List refresh** — a scheduled run of the indeed phone number scraper returns only numbers that are new since the last run.

Each of these works the same way: set a keyword, let the indeed company phone scraper run, export the phone numbers.

### 🚀 How to run the Indeed Phone Number Scraper

Running the **indeed phone number scraper** takes three steps:

1. **Type your keyword** — the trade, niche or job title you are looking for.
2. **Pick a country, then a location** — the indeed phone number scraper matches results to it.
   ⚠️ **One place OR one postcode — never both.** The box is searched exactly as you type it, as a single phrase. `Dhaka 1207` is not searched as `Dhaka` and as `1207`; it is searched as the words `Dhaka 1207`, and almost no page prints a town beside its postcode. To cover both, run it twice.
3. **Set how many results you want** — then press **Start**.

No login, no cookies, no setup. An indeed contact scraper should not need an account to read pages that are already public.

That is all the indeed phone number scraper needs. Every other setting is optional and exists for when you want to narrow the list further.

Most people run the extract indeed phone numbers once with defaults, look at the rows, then add a filter or two. Starting narrow is the usual mistake — an indeed phone number finder works best when it is allowed to find everything first.

### 🧭 Getting more out of the Indeed Phone Number Scraper

Five things that reliably increase what the **indeed phone number scraper** returns:

1. **Use one keyword per run at first.** The indeed company phone scraper goes deeper on a single term than it can across five.
2. **Set the country before the location.** The indeed contact scraper matches results to the country first, so this is what stops a search drifting abroad.
3. **Leave the filters empty to begin with.** Every filter in this extract indeed phone numbers removes rows; none of them add any.
4. **Raise the target rather than the depth.** Ask the indeed phone number finder for more results and it widens the search itself.
5. **Schedule it weekly.** The indeed company phone scraper returns only what is new, so a list stays fresh at a fraction of the first run's cost.

### ⏱️ Indeed Phone Number Scraper speed — what slows a run down, and what to avoid

An **indeed phone number scraper** run with sensible settings finishes in minutes. Two things change that, and both are worth knowing before your first run.

**Do not stack narrowing filters.** This is the single most common mistake. Every filter you fill in competes for the same small budget of conditions per search, and past a handful the searches stop matching real pages — so a run set up to be precise comes back nearly empty instead. Pick the one or two filters that matter and leave the rest blank. The indeed contact scraper is designed to be narrowed *after* you have seen what a wide run returns.

**Settings that make extract indeed phone numbers runs take longer:**

| Setting | Effect on run time |
| --- | --- |
| Open each result's own pages | The largest single cost. Minutes become tens of minutes. Use it only when you need contacts that are not visible in the listing. |
| More areas to cover | Each extra area is another round of searching. The usual reason a run takes longer than expected. |
| Deeper result pages | Later pages hold steadily worse results, so depth costs time faster than it adds contacts. |
| Splitting searches by date | Every search becomes several. Use it to reach old results, not as a routine setting. |
| More expansion terms | More terms means more searching. The defaults stop where extra terms stop finding anything new. |

**Settings that make it faster:** raise how many requests run at once, lower the result target, and leave the page-opening options off. The indeed phone number finder already stops early when a line of searching has clearly run dry, so you rarely need to cap it by hand.

**Leave these alone:** the network settings. They are not interchangeable, and changing them is the one edit that will return nothing at all rather than less.

### ❓ Indeed Phone Number Scraper frequently asked questions

Common questions about the **indeed company phone scraper**, answered plainly.

**Do I need an account or login for Indeed?**

No. The indeed phone number scraper only reads pages that are already public. Nothing private is touched, and you never give this actor a password.

**What am I charged for?**

You pay for each phone number the indeed phone number scraper actually delivers. A run that finds nothing costs nothing. Searching, filtering and every setting on the form are free — the charge is per result, so your cost always matches what you receive. Two optional checks add a small amount on top, and both are marked with 💲 on the form so you can see them before you switch them on: “Only numbers found in a WhatsApp or chat link” and “Only give me numbers I have not seen before”. They are charged only on a row where the check actually ran, never for turning the setting on.

**How many results can the indeed phone number scraper return?**

Set the target yourself. The indeed phone number scraper keeps going until it reaches your target or runs out of matching pages, and it tells you which of the two happened at the end of the run.

**Can I run the indeed phone number scraper on a schedule?**

Yes. Scheduled runs of the indeed phone number scraper return only what is new since the previous run, so a list stays current without collecting the same rows twice.

**Which countries does the indeed phone number scraper support?**

Pick any country from the dropdown. The indeed phone number scraper adjusts its search and its results to that country, and every row records the country it was matched to.

**Can I export the results?**

Yes — every run can be downloaded as CSV, Excel, JSON or XML, or pulled through the Apify API into your own system.

**Does the indeed phone number scraper tell me if a number is a mobile?**

Yes. Every row from the indeed phone number scraper carries the line type, whether it is a mobile, and whether it can carry WhatsApp, so you can split calling and texting lists before you start.

**Is this the same as indeed contact scraper?**

Yes. The terms extract indeed phone numbers, indeed phone number finder and indeed company phone scraper all describe this job. This one is built for Indeed specifically, which is why its results are cleaner than a general tool's.

### ⚠️ What this Indeed Phone Number Scraper will not do

Being straight about the limits of this **indeed phone number scraper** is more useful than overselling it:

- The indeed phone number scraper only returns contacts that are **already published in public**. It cannot reveal anything a company has chosen to keep private.
- Results depend on what is actually published. A niche where few companys publish a contact will return fewer rows, and the indeed phone number scraper will tell you that rather than pad the list.
- The indeed phone number scraper reports the line type from the number itself. It does not screen against any do-not-call register — that remains your responsibility.
- Use the results lawfully. You are responsible for complying with GDPR, CAN-SPAM, PECR and any local rules that apply to your outreach.

An indeed contact scraper that promises more than this is promising something it cannot deliver. This extract indeed phone numbers tells you what it found, where it found it, and what it could not find.

### 🔗 Scrapers related to this Indeed Phone Number Scraper

If this **indeed phone number scraper** is useful, these cover neighbouring jobs. Each one is built for its own site rather than trying to cover everything badly.

- [Reed.co.uk Email Scraper](https://apify.com/premiumscraper/reed-co-uk-email-scraper) — public emails from Reed.co.uk employers
- [SEEK Email Scraper](https://apify.com/premiumscraper/seek-email-scraper) — public emails from SEEK employers
- [Totaljobs Email Scraper](https://apify.com/premiumscraper/totaljobs-email-scraper) — public emails from Totaljobs employers
- [ZipRecruiter Email Scraper](https://apify.com/premiumscraper/ziprecruiter-email-scraper) — public emails from ZipRecruiter employers
- [Reed.co.uk Phone Number Scraper](https://apify.com/premiumscraper/reed-co-uk-phone-number-scraper) — public phone numbers from Reed.co.uk employers
- [SEEK Phone Number Scraper](https://apify.com/premiumscraper/seek-phone-number-scraper) — public phone numbers from SEEK employers

Browse everything at [apify.com/premiumscraper](https://apify.com/premiumscraper).

Each one is priced the same way as this indeed phone number finder: per result delivered, nothing else.

### 📬 Indeed Phone Number Scraper support

Questions about the **indeed phone number scraper**, a bug, or a filter you would like added? Email **premiumscraper@gmail.com** and you will get a reply.

If the indeed phone number scraper did not return what you expected, send the run ID — that is usually enough to see what happened.

Feature requests are welcome. Several filters in this indeed company phone scraper exist because somebody asked for them.

You can reach the team behind this indeed contact scraper at **premiumscraper@gmail.com** for anything at all — a question before you buy, a problem during a run, or a site you would like covered next.

# Actor input Schema

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

Type the role being hired for or the kind of employer - care assistant, hgv driver, staffing agency, home care. One line per keyword. Related keywords are searched automatically, so keep each line short. Examples: care assistant, hgv driver, staffing agency, registered nurse. TIP: give SEVERAL keywords, one per line - each one finds a different set of companies, so three keywords return far more contacts than one.

## `locations` (type: `string`):

One town, city, area or postcode. Leave empty to search the whole country. SPELLING MATTERS: the location is searched exactly as written, so a misspelt place returns nothing at all rather than fewer results - there is no place list behind this box, so nothing will correct it for you. Use the spelling local businesses use on their own pages. ⚠️ Country, number code and location must all be the SAME country. They are combined in one search, not offered as alternatives - a location or a number code from a different country than the one selected returns few results or none, and there is no guarantee of any. ⚠️ ONE PLACE OR ONE POSTCODE — NEVER BOTH. This box is searched exactly as you type it, as a single phrase. "Dhaka 1207" is not searched as "Dhaka" and as "1207"; it is searched as the words "Dhaka 1207", and almost no page prints a town and its postcode side by side, so you will get very little. To cover both, run the actor twice — the town on one run, the postcode on the other.

## `countries` (type: `array`):

Which countries the phone numbers must belong to. You can pick several. This sets the search region, the phone number format we look for, and the country check on every number we keep. ⚠️ Country, number code and location must all be the SAME country. They are combined in one search, not offered as alternatives - a location or a number code from a different country than the one selected returns few results or none, and there is no guarantee of any.

## `dialCodes` (type: `array`):

Dialling codes, area codes or mobile prefixes to hunt for, written the way pages in your market print them - "+39", "02", "347", "0161". Each one you add is searched alongside the contact words, so the more you give the more numbers come back. ⚠️ THEY MUST BELONG TO THE COUNTRY YOU SELECTED ABOVE. A US area code on an Italian search finds nothing at all - the two are combined, not offered as alternatives. Country, number code and location must all be the same country. Leave this empty and the search runs on the contact words alone, which is how it works for every country. Adding codes narrows it; it never widens it.

## `maxResults` (type: `integer`):

How many to collect FOR EACH KEYWORD you typed - not for the whole run. Two keywords at 20 gives you up to 40. Start small to see what a site returns, then raise it. TO GET MORE, ADD MORE KEYWORDS - vary them (plumber, emergency plumber, boiler repair). Each one reaches a different set of companies, so three keywords at 50 beats one keyword at 150.

## `dateRange` (type: `string`):

Filters on the date the search last indexed the page, which is a good network for 'this business is still trading'.

## `phoneLineTypes` (type: `array`):

Leave 'All types' selected to keep every number the actor finds - mobile, fixed line, VoIP, toll-free and the ones the carrier does not disclose. Pick specific types only if you want to narrow it: 'Mobile' alone gives you an SMS- and WhatsApp-ready list and drops office landlines.

## `businessSignals` (type: `array`):

THE strongest filter in this actor for phone hunting. A page that says 'emergency', '24 hour', 'free quote' or 'call us today' is a page that WANTS to be phoned, so it prints the number in plain text instead of hiding it in an image or a contact form. These words sit right next to the number, which also drags the number into the search's result summary — so you often get the phone without opening the page at all. **Do not stack this with several other narrowing filters.** Each filter you add competes for the same small budget of conditions per search, and past a handful the searches stop matching real pages - you get a near-empty run rather than a precise one. Pick the one or two that matter most and leave the rest empty.

## `visitPages` (type: `boolean`):

Slower and more expensive, but it reads the whole page instead of just the search's short text, so it finds far more numbers and it is the only way WhatsApp links can be found. Turn this on when quality matters more than speed. **Slowest setting in the actor.** Leaving it off keeps a run to minutes; turning it on opens each result's own pages and can multiply the run time several times over. Worth it only when you need contacts that are not visible in the listing itself.

## Actor input object example

```json
{
  "keywords": [
    "care assistant",
    "staffing agency"
  ],
  "locations": "",
  "countries": [
    "United States (+1)"
  ],
  "dialCodes": [
    "+39",
    "02",
    "347"
  ],
  "maxResults": 5,
  "dateRange": "any",
  "phoneLineTypes": [
    "all"
  ],
  "businessSignals": [],
  "visitPages": true
}
```

# Actor output Schema

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

Every row this run delivered. Use the Export button on the Output tab for CSV, Excel, JSON or XML.

# 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": [
        "care assistant",
        "staffing agency"
    ],
    "countries": [
        "United States (+1)"
    ],
    "maxResults": 5,
    "phoneLineTypes": [
        "all"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("premiumscraper/indeed-phone-number-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 = {
    "keywords": [
        "care assistant",
        "staffing agency",
    ],
    "countries": ["United States (+1)"],
    "maxResults": 5,
    "phoneLineTypes": ["all"],
}

# Run the Actor and wait for it to finish
run = client.actor("premiumscraper/indeed-phone-number-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 '{
  "keywords": [
    "care assistant",
    "staffing agency"
  ],
  "countries": [
    "United States (+1)"
  ],
  "maxResults": 5,
  "phoneLineTypes": [
    "all"
  ]
}' |
apify call premiumscraper/indeed-phone-number-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,premiumscraper/indeed-phone-number-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/4fYZc6oibUc0KW4Gy/builds/R5JltqjsjcX5XtWiL/openapi.json
