# FreeIndex UK Business Directory Scraper — Trades Leads & Phones (`scrapersdelight/freeindex-uk-scraper`) Actor

Turn any FreeIndex UK category into a clean trades lead list — business name, phone, website, full postal address, geo, star rating and review count. One row per business, from the site's public LocalBusiness schema. No login.

- **URL**: https://apify.com/scrapersdelight/freeindex-uk-scraper.md
- **Developed by:** [Scrapers Delight](https://apify.com/scrapersdelight) (community)
- **Categories:** Automation, Lead generation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$5.00 / 1,000 per business returneds

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 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

## FreeIndex UK Business Directory Scraper

**Turn any FreeIndex category into a clean UK trades lead list — in one run.**

Paste a FreeIndex category URL (plumbers, electricians, builders, driving
schools, anything) and get back one row per business: company name, phone,
website, full postal address, geo-coordinates, star rating and review count —
ready for outbound, enrichment, or your CRM.

### What you get (one row per business)

| Field | Example |
|---|---|
| `businessName` | PJM Plumbing & Gas Ltd |
| `phone` | 07814 385292 |
| `website` | https://idrivemanchester.co.uk |
| `streetAddress` | 22 Alexandra Road |
| `locality` / `region` | Sale / Greater Manchester |
| `postalCode` | M33 3FE |
| `latitude` / `longitude` | 53.4195664 / -2.3091702 |
| `ratingValue` / `reviewCount` | 5.0 / 382 |
| `priceRange` | £ |
| `category` | Plumbers |
| `description` | Welcome to … |
| `profileUrl` / `profileId` | …/profile(pjm-plumbing-gas-ltd)\_608625.htm / 608625 |
| `scrapedAt` | ISO-8601 timestamp |

### Use cases

- **UK trades lead generation** — plumber, electrician, builder, roofer contact lists
- **Home-services outbound** — dialer / SMS lists with real phone numbers
- **Local SEO & prospecting** — a Checkatrade / Yell alternative data source
- **Lead resale & enrichment** — feed names + websites into an email-finder

### How to use

1. Open a FreeIndex category, e.g.
   `https://www.freeindex.co.uk/categories/property/construction/plumbing_services/`
2. Paste one or more such category URLs into **Category listing URLs**.
3. Set **Max businesses** (default 200; `0` = the whole category).
4. Leave **Only keep leads with a phone** on for a dial-ready list.
5. Run. Pagination is fully automatic — the actor walks every result page for you.

### Honesty box

Phone, website, full postal address, geo and rating are pulled from the site's
**public LocalBusiness schema** (JSON-LD) and public HTML — the same data any
visitor sees. **Email is not published by FreeIndex, so email is not included**
(you can enrich names + websites with a separate email-finder). No login, no
personal data beyond public business listings.

### FAQ

- **Do I need to handle pagination?** No — it's automatic. The actor reads the
  category's pagination keys and walks every result page until the last one.
- **Are ratings and reviews included?** Yes, when the business has them
  (`ratingValue` + `reviewCount`).
- **Which proxy should I use?** The default **shared Apify proxy pool** is
  enough. FreeIndex has no anti-bot gate, and a measured A/B returned the same
  businesses with the same phone / website / address fill on both lanes at a
  fraction of the cost. Switch to **RESIDENTIAL, country GB** only if a very
  large sweep starts hitting blocks.
- **How is it priced?** Pay-per-result: you're charged per business lead
  returned. Cap the run with **Max businesses**.

# Actor input Schema

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

FreeIndex category pages, e.g. https://www.freeindex.co.uk/categories/property/construction/plumbing\_services/

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

Stop after this many leads (0 = all).

## `onlyWithPhone` (type: `boolean`):

Drop any business that does not publish a phone number.

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

Proxy settings. The shared Apify proxy pool is the default: FreeIndex is a classic-ASP directory with no anti-bot gate, and a measured A/B (3 runs per lane) returned the same 20/20 businesses with identical phone, website and address fill on both lanes. RESIDENTIAL with country GB stays available as a one-click escalation if a very large sweep starts hitting blocks.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.freeindex.co.uk/categories/property/construction/plumbing_services/"
    }
  ],
  "maxItems": 200,
  "onlyWithPhone": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `records` (type: `string`):

The dataset of scraped FreeIndex businesses (one item per business/lead).

# 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 = {
    "startUrls": [
        {
            "url": "https://www.freeindex.co.uk/categories/property/construction/plumbing_services/"
        }
    ],
    "maxItems": 200,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapersdelight/freeindex-uk-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 = {
    "startUrls": [{ "url": "https://www.freeindex.co.uk/categories/property/construction/plumbing_services/" }],
    "maxItems": 200,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapersdelight/freeindex-uk-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 '{
  "startUrls": [
    {
      "url": "https://www.freeindex.co.uk/categories/property/construction/plumbing_services/"
    }
  ],
  "maxItems": 200,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapersdelight/freeindex-uk-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ISFuO5MVJxeafxlm2/builds/je1af6JXTzqTTnIvD/openapi.json
