# Hotfrog Business Directory Scraper (`compute-edge/hotfrog-scraper`) Actor

Scrape business listings from Hotfrog.com. Extracts company name, address, phone, website, description, coordinates, opening hours, and categories. Supports 18+ countries with city-level and category filtering.

- **URL**: https://apify.com/compute-edge/hotfrog-scraper.md
- **Developed by:** [Compute Edge](https://apify.com/compute-edge) (community)
- **Categories:** Lead generation
- **Stats:** 15 total users, 5 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.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

## Hotfrog Business Directory Scraper

**Extract business listings from Hotfrog.com** — the global business directory covering 18+ countries. This Actor scrapes company names, addresses, phone numbers, websites, descriptions, GPS coordinates, opening hours, and business categories.

### What data can you scrape from Hotfrog?

| Field | Description |
|-------|-------------|
| **name** | Business name |
| **description** | Full business description |
| **streetAddress** | Street address |
| **city** | City |
| **state** | State or region |
| **postalCode** | Postal/ZIP code |
| **addressCountry** | Country code |
| **phone** | Phone number |
| **website** | Business website URL |
| **email** | Email address (when available) |
| **latitude / longitude** | GPS coordinates |
| **openingHours** | Business opening hours |
| **categories** | Business categories |
| **image** | Business logo or photos |
| **url** | Hotfrog profile URL |

### Why Scrape Hotfrog.com? Top Use Cases

- **No login required** — all data is publicly accessible
- **18 countries supported** — US, UK, Australia, Canada, Germany, India, and more
- **City + category filtering** — search by location and business type
- **Structured data extraction** — uses JSON-LD schema.org data for high accuracy
- **Fast and efficient** — uses CheerioCrawler (no browser needed), keeping compute costs low
- **Pagination support** — automatically follows search result pages
- **Two modes** — quick search results or full detail page scraping

### How to scrape Hotfrog business data

1. Go to the [Hotfrog Scraper](https://apify.com/seatsignal/hotfrog-scraper) page on Apify Store
2. Click **Try for free**
3. Set your **Country** (e.g., `us`, `uk`, `au`)
4. Enter a **City** (e.g., `new-york`, `london`, `sydney`) — use hyphens for multi-word cities
5. Optionally enter a **Category** (e.g., `plumber`, `restaurant`, `dentist`)
6. Set **Max Pages** to control how many search result pages to scrape
7. Toggle **Scrape Detail Pages** on for full data (name, phone, coordinates, hours) or off for a quick list
8. Click **Start** and wait for results

### Input example

```json
{
    "country": "us",
    "city": "new-york",
    "category": "plumber",
    "maxPages": 5,
    "scrapeDetails": true,
    "maxRequestsPerCrawl": 500
}
````

### Output example

Each business listing returns a JSON object like this:

```json
{
    "url": "https://www.hotfrog.com/company/765cdb7128e815dc42caaefe455a30cd/escape-room-madness/new-york/entertainment-industry",
    "searchCountry": "us",
    "searchCity": "new-york",
    "searchCategory": "plumber",
    "name": "Escape Room Madness",
    "description": "Welcome to Escape Room Madness, the ultimate destination for immersive and thrilling escape room experiences in the heart of New York City!",
    "image": "https://assets.centralindex.com/W/48/634c0468c89fcf07e25de8526b60cc28.jpg",
    "streetAddress": "38 W 32nd St",
    "city": "New York",
    "addressCountry": "us",
    "phone": "2122398800",
    "latitude": 40.747839,
    "longitude": -73.987443,
    "openingHours": [
        {
            "@type": "OpeningHoursSpecification",
            "dayOfWeek": ["Friday", "Saturday", "Sunday"],
            "opens": "10:00",
            "closes": "23:30"
        }
    ]
}
```

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

This Actor uses **CheerioCrawler** (no browser), so compute costs are very low.

| Scenario | Pages | Results | Est. Compute | Est. Actor Fee |
|----------|-------|---------|-------------|----------------|
| One city, one category | 5 | ~80 | ~$0.01 | ~$0.16 |
| One city, all categories | 20 | ~320 | ~$0.05 | ~$0.64 |
| Multiple cities | 100 | ~1,600 | ~$0.25 | ~$3.20 |

Actor pricing: **$0.002 per result** + minimal compute costs. A typical run of 5 pages costs under $0.20 total.

### Supported countries

| Code | Country | Code | Country |
|------|---------|------|---------|
| `us` | United States | `de` | Germany |
| `uk` | United Kingdom | `at` | Austria |
| `au` | Australia | `ch` | Switzerland |
| `ca` | Canada | `br` | Brazil |
| `nz` | New Zealand | `mx` | Mexico |
| `za` | South Africa | `ar` | Argentina |
| `in` | India | `ie` | Ireland |
| `sg` | Singapore | `ph` | Philippines |
| `hk` | Hong Kong | `my` | Malaysia |

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `country` | string | Yes | `us` | Country code from the supported list |
| `city` | string | Yes | `new-york` | City name with hyphens (e.g., `los-angeles`) |
| `category` | string | No | — | Business category or keyword (e.g., `plumber`) |
| `maxPages` | integer | No | `5` | Max search result pages (1-100) |
| `scrapeDetails` | boolean | No | `true` | Visit detail pages for full data |
| `maxRequestsPerCrawl` | integer | No | `500` | Safety limit on total HTTP requests |

### Tips for best results

- **Finding city names**: Go to [hotfrog.com](https://www.hotfrog.com), search for a city, and copy the URL slug (e.g., `new-york`, `los-angeles`, `san-francisco`)
- **Category keywords**: Use common business categories like `plumber`, `electrician`, `restaurant`, `dentist`, `lawyer`
- **Quick mode**: Set `scrapeDetails` to `false` for a fast list of names, addresses, and URLs without visiting each detail page
- **Large scrapes**: Increase `maxPages` and `maxRequestsPerCrawl` together. Each page has ~16 businesses.

### Integrations

Connect Hotfrog data with your workflow:

- **API** — Access results programmatically via the [Apify API](https://docs.apify.com/api/v2)
- **Webhooks** — Get notified when a scrape completes
- **Zapier / Make** — Pipe results into Google Sheets, CRMs, or databases
- **Python / Node.js** — Use the [Apify SDK](https://docs.apify.com/sdk/js) to run and retrieve data

### FAQ

#### Is it legal to scrape Hotfrog?

Hotfrog.com is a publicly accessible business directory. This scraper only extracts publicly available business information that companies have voluntarily listed. Always review the site's Terms of Service before use.

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

Actor pricing is $0.002 per result plus Apify compute costs. A typical run of 5 pages (~80 businesses) costs under $0.20 total. See the pricing table above for detailed estimates.

#### Can I export Hotfrog data to Excel or Google Sheets?

Yes. Apify datasets can be exported in JSON, CSV, Excel, and other formats directly from the platform. You can also connect via Zapier or Make for automatic exports.

#### How often is the Hotfrog data updated?

You can schedule this scraper to run at any interval — hourly, daily, or weekly — to keep your business directory data fresh.

#### What countries does Hotfrog cover?

Hotfrog covers 18+ countries including the US, UK, Australia, Canada, Germany, India, Singapore, and more. See the supported countries table above.

### Other Scrapers by SeatSignal

- [IQS Industrial Supplier Scraper](https://apify.com/seatsignal/iqsdirectory-scraper) — Industrial manufacturer and supplier data from IQSDirectory.com
- [Financial Advisor Directory Scraper](https://apify.com/seatsignal/plannersearch-scraper) — FPA PlannerSearch certified financial planner data
- [SBIR Government Grants Scraper](https://apify.com/seatsignal/sbir-awards-scraper) — 220,000+ government grant awards with contact info
- [SEC EDGAR Financials Scraper](https://apify.com/seatsignal/sec-edgar-scraper) — Public company financial data and SEC filings
- [Medicare Provider Scraper](https://apify.com/seatsignal/medicare-provider-scraper) — Healthcare provider directory data from CMS

### Legal disclaimer

This Actor extracts publicly available business information from Hotfrog.com. It does not extract private user data, bypass authentication, or access protected content. The scraped data consists of business listings that companies have voluntarily published on Hotfrog's public directory.

Users are responsible for ensuring their use of scraped data complies with applicable laws, including GDPR and CCPA. For questions about data usage, consult a legal professional.

### Support

- **Issues?** Open an issue on the Actor's Apify page
- **Custom data needs?** Contact us for enterprise solutions

# Actor input Schema

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

Country code for the Hotfrog domain (e.g., 'us', 'au', 'uk', 'ca').

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

City name for the search (e.g., 'new-york', 'los-angeles', 'chicago'). Use hyphens for multi-word cities.

## `category` (type: `string`):

Optional business category or search keyword (e.g., 'plumber', 'restaurant', 'dentist'). Leave empty to get all businesses in the city.

## `maxPages` (type: `integer`):

Maximum number of search result pages to scrape. Each page contains ~16 businesses.

## `scrapeDetails` (type: `boolean`):

If true, visits each business's detail page to extract full contact info, description, and coordinates. Slower but more complete.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum total HTTP requests. Safety limit to prevent runaway costs.

## Actor input object example

```json
{
  "country": "us",
  "city": "new-york",
  "maxPages": 5,
  "scrapeDetails": true,
  "maxRequestsPerCrawl": 500
}
```

# 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 = {
    "city": "new-york"
};

// Run the Actor and wait for it to finish
const run = await client.actor("compute-edge/hotfrog-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 = { "city": "new-york" }

# Run the Actor and wait for it to finish
run = client.actor("compute-edge/hotfrog-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 '{
  "city": "new-york"
}' |
apify call compute-edge/hotfrog-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Hotfrog Business Directory Scraper",
        "description": "Scrape business listings from Hotfrog.com. Extracts company name, address, phone, website, description, coordinates, opening hours, and categories. Supports 18+ countries with city-level and category filtering.",
        "version": "0.1",
        "x-build-id": "R5IjwSRUstmVoTesD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/compute-edge~hotfrog-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-compute-edge-hotfrog-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/compute-edge~hotfrog-scraper/runs": {
            "post": {
                "operationId": "runs-sync-compute-edge-hotfrog-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/compute-edge~hotfrog-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-compute-edge-hotfrog-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": [
                    "country",
                    "city"
                ],
                "properties": {
                    "country": {
                        "title": "Country",
                        "enum": [
                            "us",
                            "au",
                            "uk",
                            "ca",
                            "nz",
                            "za",
                            "in",
                            "sg",
                            "hk",
                            "my",
                            "ph",
                            "ie",
                            "de",
                            "at",
                            "ch",
                            "br",
                            "mx",
                            "ar"
                        ],
                        "type": "string",
                        "description": "Country code for the Hotfrog domain (e.g., 'us', 'au', 'uk', 'ca').",
                        "default": "us"
                    },
                    "city": {
                        "title": "City",
                        "type": "string",
                        "description": "City name for the search (e.g., 'new-york', 'los-angeles', 'chicago'). Use hyphens for multi-word cities."
                    },
                    "category": {
                        "title": "Category / Search Term",
                        "type": "string",
                        "description": "Optional business category or search keyword (e.g., 'plumber', 'restaurant', 'dentist'). Leave empty to get all businesses in the city."
                    },
                    "maxPages": {
                        "title": "Max Pages",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of search result pages to scrape. Each page contains ~16 businesses.",
                        "default": 5
                    },
                    "scrapeDetails": {
                        "title": "Scrape Detail Pages",
                        "type": "boolean",
                        "description": "If true, visits each business's detail page to extract full contact info, description, and coordinates. Slower but more complete.",
                        "default": true
                    },
                    "maxRequestsPerCrawl": {
                        "title": "Max Requests",
                        "minimum": 1,
                        "maximum": 10000,
                        "type": "integer",
                        "description": "Maximum total HTTP requests. Safety limit to prevent runaway costs.",
                        "default": 500
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
