# Businesses Without Websites - Local Leads with Phone & Rating (`tenfoldfleet/businesses-without-websites`) Actor

Find local businesses without a website in any city: plumbers, dentists, salons or any Google Maps category, with phone, address, Google rating, reviews and claimed status. Web design and local SEO leads, 1,000 per search in seconds. $7 per 1,000 leads plus $0.015 per run; failed searches free.

- **URL**: https://apify.com/tenfoldfleet/businesses-without-websites.md
- **Developed by:** [Tenfold Fleet](https://apify.com/tenfoldfleet) (community)
- **Categories:** Lead generation, Marketing, SEO tools
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 leads

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### What does Businesses Without Websites do?

**Businesses Without Websites** finds **local businesses that have a phone number but no website**: plumbers, dentists, hair salons, roofers, landscapers or any of 5,300+ **Google Maps categories**, in any city. Each lead comes with **phone**, **address**, **Google rating**, **number of reviews**, **claimed status** and a **Google Maps link**, so you can call or visit them the same day.

It is built for **web design agencies**, **freelance web developers** and **local SEO** consultants who sell websites to small businesses. Instead of scraping Google Maps one result at a time, it reads the **DataForSEO Business Listings** database (built from Google Maps), so you get **up to 1,000 leads per search in seconds**, and many categories x cities in one run. Use it from the Apify Console or as a **no-website leads API** from your code, Make, Zapier, n8n or an AI agent.

### Why use it to find businesses without websites?

- 🎯 **Web design leads**: a business with 200 Google reviews and no website is the warmest prospect a web designer can call.
- 📍 **Local SEO prospects**: businesses that only have a Facebook or Instagram page (`socialOnlyWebsite: true`) need a real site and a better local presence.
- ⚡ **Fast and cheap**: no Maps scraping and no browser, so 1,000 leads come back in seconds, not minutes.
- 🗺️ **Many categories x many cities in one run**: e.g. 5 trades in 10 cities = 50 searches, run 5 at a time.
- ⭐ **Quality filters**: minimum rating, minimum number of reviews and only claimed Google Business Profiles, so you call active businesses first.
- 🤖 **Automation**: schedule it weekly and push new leads to your CRM, Google Sheets or cold-calling list.

### What data can it extract?

| Field | Example | Description |
|---|---|---|
| `name` | `Brayden's Plumbing` | Business name on Google Maps |
| `category` | `Plumber` | Main Google category |
| `phone` | `+15128903144` | Business phone number |
| `address`, `city`, `region`, `zip`, `country` | `Austin`, `Texas`, `78734`, `US` | Business address |
| `rating` / `reviewsCount` | `4.9` / `233` | Google rating and number of reviews |
| `isClaimed` | `true` | Owner has claimed the Google Business Profile |
| `socialOnlyWebsite` / `socialUrl` | `true` / `https://www.facebook.com/...` | Its only "website" is a Facebook or Instagram page |
| `latitude` / `longitude` | `30.3768` / `-97.9622` | Location |
| `placeId` / `cid` / `googleMapsUrl` | `ChIJ_d4t...` | Google identifiers and a Maps link |
| `lastUpdated` | `2026-09-23 03:47:48 +00:00` | When the listing data was last refreshed |
| `searchCategory` / `searchLocation` | `plumber` / `Austin, TX` | Which of your searches found it |

Business fields only: no owner names, no personal emails and no website scraping.

### How to find local businesses without a website

1. Click **Try for free**.
2. Add **Business categories**, e.g. `plumber`, `dentist`, `hair salon`, `roofing_contractor`.
3. Add **Locations**: `Austin, TX`, `Leeds, UK`, `Toronto, ON`, `Berlin, Germany`, or `latitude,longitude` for a radius search.
4. Optionally set **Minimum Google rating**, **Minimum number of reviews** or **Only claimed profiles**.
5. Click **Start** and download your leads as **CSV, Excel, JSON or HTML**, or read them through the API.

### How much does it cost?

You pay **$0.007 per lead** (**$7 per 1,000 leads**) plus **$0.015 per run**, which covers the data provider's fixed fee per search. **Invalid categories or locations, duplicates and failed searches are free.** Set a **maximum cost per run** and the Actor only fetches as many leads as that budget covers.

| Actor | Price per 1,000 leads |
|---|---|
| **This Actor** (up to 1,000 leads per search, rating/review/claimed filters, social-only flag) | **$7** |
| xmiso_scrapers no-website leads | $4.90 to $7.90 (by Apify plan) |
| santhej/nowebsite-lead-finder | $6.40 to $8 (by Apify plan) |

Prices as listed on Apify Store in October 2026.

**Free Apify plan: the first 10 leads per run.** Every search costs us a data fee and free-plan runs earn nothing, so free-plan runs return 10 leads to try it out. Any paid Apify plan gets up to 1,000 leads per search.

### Input

```json
{
    "categories": ["plumber", "roofing_contractor", "hair salon"],
    "locations": ["Austin, TX", "Leeds, UK", "30.2672,-97.7431"],
    "radiusKm": 10,
    "maxLeadsPerSearch": 100,
    "minRating": 4,
    "minReviews": 10,
    "onlyClaimed": false,
    "includeSocialOnly": true
}
```

- **categories**: Google Maps categories. Plurals and spaces are fine; common words like `roofer`, `attorney`, `barber` or `mechanic` are mapped to the Google category. An unknown category is listed as a free row with suggestions.
- **locations**: a city name matches the business's address city (`Austin` also finds Austin, MN, so add the state: `Austin, TX`). Two-letter codes after a city are read as US states first, so write the country name for other countries (`Berlin, Germany`, `Mumbai, India`). `latitude,longitude` searches a radius of **radiusKm** around the point; `latitude,longitude,25` sets the radius per location.
- **maxLeadsPerSearch**: up to 1,000 per category x location. Businesses with the most Google reviews come first.
- **includeSocialOnly**: also return businesses whose only link is a Facebook or Instagram page (on by default).

### Output

```json
{
    "name": "Brayden's Plumbing",
    "category": "Plumber",
    "address": "16405 Clara Van St #6500, Austin, TX 78734",
    "city": "Austin",
    "region": "Texas",
    "zip": "78734",
    "country": "US",
    "phone": "+15128903144",
    "rating": 4.9,
    "reviewsCount": 233,
    "isClaimed": true,
    "socialOnlyWebsite": false,
    "socialUrl": null,
    "latitude": 30.3768453,
    "longitude": -97.9622039,
    "placeId": "ChIJ_d4txLw5W4YRjFC-a-s4c6E",
    "cid": "11633704846204227724",
    "googleMapsUrl": "https://www.google.com/maps?cid=11633704846204227724",
    "additionalCategories": [],
    "lastUpdated": "2026-09-23 03:47:48 +00:00",
    "searchCategory": "plumber",
    "searchLocation": "Austin, TX",
    "error": null
}
```

Download the dataset as **JSON, CSV, Excel, XML or HTML**, or use the API.

### How fresh is the data?

The listings come from a database built from Google Maps and refreshed continuously (see `lastUpdated`), not from a live Maps scrape. To check it, we compared 20 leads with a live Google Maps search on 13 Oct 2026: **18 were found live and none of the 18 had its own website** (14 of 15 still had no link at all and one now links to a directory listing; the social-only ones still had only a Facebook/Instagram page or no link). 2 were not found in the top live results (renamed or closed). Expect a small share of leads to have gained a website since the last refresh, so check before you pitch.

### Tips

- Start with **minReviews 10**: businesses with reviews are open, busy and can afford a website.
- Unclaimed profiles (`isClaimed: false`) are a second pitch: Google Business Profile setup.
- For big cities with suburbs, add the suburbs as separate locations or use `latitude,longitude` with a radius.
- Search related categories together (`plumber`, `hvac_contractor`, `electrician`): duplicates across searches are removed and not charged.

### FAQ

#### Does it scrape Google Maps?

No. It queries the DataForSEO Business Listings database, which is built from Google Maps. That is why it is fast and can return 1,000 leads per search.

#### Which countries work?

Any country Google Maps covers. Use the city name with the country (`Lyon, France`) or coordinates.

#### Why did a search return few leads?

Most businesses in many categories already have a website. Try more categories, nearby cities or a coordinate radius, or turn **includeSocialOnly** on.

#### Why did my run stop before searching every city?

Each category x location search has a data fee even when it finds nothing. If a run's searches keep finding few or no leads, the Actor stops early and lists the searches it skipped as free rows. Use bigger cities, a `latitude,longitude` radius, more common categories or a higher **maxLeadsPerSearch**. A run does at most 250 searches; repeated categories or locations (`plumber` and `plumbers`) are searched once.

#### Can I get emails or owner names?

No. This Actor returns business listing fields only: name, phone, address, rating and links. To get every business in a Google Maps search, with or without a website, plus emails and social profiles from their websites, use [Google Maps Extractor](https://apify.com/tenfoldfleet/google-maps-extractor).

### Disclaimer

This Actor returns publicly listed business information only (business names, business phone numbers and addresses). It does not collect owner names, personal emails or other personal data. Some business listings, such as sole traders, may still count as personal data under the **GDPR** and similar laws: you are responsible for having a legitimate interest, honouring opt-outs and do-not-call registers, and following the marketing laws of your country (e.g. PECR, TCPA, CAN-SPAM). Google is a trademark of Google LLC; this Actor is not affiliated with Google or DataForSEO.

### More tools from Tenfold Fleet

| Actor | Output |
|---|---|
| [AliExpress Keyword Scraper - Exact Sold Counts by Search Term](https://apify.com/tenfoldfleet/aliexpress-search-scraper) | product |
| [Amazon Product Scraper - Details, Prices & Search by ASIN](https://apify.com/tenfoldfleet/amazon-product-scraper) | product |
| [ATS Jobs Scraper - Greenhouse, Lever, Ashby & 5 More](https://apify.com/tenfoldfleet/ats-jobs-scraper) | job posting |
| [Backlinks Checker - Referring Domains, Anchors & Domain Rank](https://apify.com/tenfoldfleet/backlinks-checker) | backlink |
| [Bilibili Scraper - Videos, Comments, Danmaku & Search](https://apify.com/tenfoldfleet/bilibili-scraper) | video or comment |
| [Contact Details Scraper - One Lead Record per Company Website](https://apify.com/tenfoldfleet/company-contact-finder) | website with contacts |
| [Google Ads Transparency Center Scraper - Competitor Ads by Site](https://apify.com/tenfoldfleet/google-ads-transparency-scraper) | ad |
| [Google AI Overviews Checker - Citations & Domain Tracker](https://apify.com/tenfoldfleet/google-ai-overviews-checker) | keyword checked |
| [Google Jobs Scraper - Salary, Apply Links & Posting Dates](https://apify.com/tenfoldfleet/google-jobs-scraper) | job listing |
| [Google Keyword Planner Alternative - Ideas, Bids & Volume](https://apify.com/tenfoldfleet/google-keyword-planner) | keyword idea |
| [Google News Scraper - Articles, Real URLs & Full Text](https://apify.com/tenfoldfleet/google-news-scraper) | article |
| [Google Trends Scraper - Interest, Regions & Related Queries](https://apify.com/tenfoldfleet/google-trends-scraper) | keyword |
| [Keyword Ideas & Related Keywords - Difficulty, Volume & CPC](https://apify.com/tenfoldfleet/keyword-ideas) | keyword idea |
| [Keyword Search Volume, CPC & Difficulty Checker (Bulk)](https://apify.com/tenfoldfleet/keyword-search-volume) | keyword with data |
| [Remote Job Board Scraper - Remote Jobs Aggregator, 7 Sites](https://apify.com/tenfoldfleet/remote-jobs-aggregator) | unique remote job |
| [SEEK Job Scraper - Australia, NZ, Jobstreet & JobsDB](https://apify.com/tenfoldfleet/seek-job-scraper) | job listing |
| [SEO Audit Tool - Technical On-Page SEO Checker & Score](https://apify.com/tenfoldfleet/seo-audit-tool) | page audit |
| [SEO Competitor Keywords - Domain Ranked Keywords & Keyword Gap](https://apify.com/tenfoldfleet/seo-competitor-keywords) | keyword |
| [Shopify Inventory Scraper - SKUs, Variants & In-Stock Status](https://apify.com/tenfoldfleet/shopify-products-scraper) | product |
| [Shopify App & Theme Detector - Store Analyzer & Contacts](https://apify.com/tenfoldfleet/shopify-store-analyzer) | shopify store |
| [Sitemap URL Extractor - All URLs from sitemap.xml & robots.txt](https://apify.com/tenfoldfleet/sitemap-url-extractor) | url |
| [Technology Detector - Wappalyzer & BuiltWith Alternative](https://apify.com/tenfoldfleet/tech-stack-detector) | website |
| [URL to Markdown - Web Page to LLM-Ready Text for AI Agents](https://apify.com/tenfoldfleet/url-to-markdown) | page |
| [Website Traffic Checker - Bulk Domain Traffic Estimate](https://apify.com/tenfoldfleet/website-traffic-checker) | domain with traffic data |
| [Workday Jobs Scraper - myworkdayjobs.com API with Salary](https://apify.com/tenfoldfleet/workday-jobs-scraper) | job posting |
| [YouTube Livestream & Channel Scraper - Videos, Likes & Stats](https://apify.com/tenfoldfleet/youtube-channel-scraper) | video |
| [YouTube Comments Scraper - Replies, Likes & Sort by Newest](https://apify.com/tenfoldfleet/youtube-comments-scraper) | comment |
| [YouTube Shorts Analytics Scraper - Views, Likes & Hashtags](https://apify.com/tenfoldfleet/youtube-shorts-scraper) | short |
| [YouTube Captions Downloader - Transcript & Subtitles Scraper](https://apify.com/tenfoldfleet/youtube-transcript-scraper) | transcript |

# Actor input Schema

## `categories` (type: `array`):

Google Maps business categories to search, e.g. plumber, dentist, hair_salon, roofing_contractor, landscaper, auto_repair_shop. Plurals and spaces are fine ("hair salons"). Every category is searched in every location.

## `locations` (type: `array`):

Cities to search: "Austin", "Austin, TX", "Leeds, UK", "Toronto, ON", "Berlin, Germany". The business's address city must match. Two-letter codes after a city are read as US states first ("Austin, TX"), so write the country name for other countries. For a radius search around a point, use "latitude,longitude" (e.g. "30.2672,-97.7431").

## `radiusKm` (type: `integer`):

Search radius for locations given as "latitude,longitude". City names use the address city instead. You can also write "latitude,longitude,radiusKm".

## `maxLeadsPerSearch` (type: `integer`):

Maximum leads per category x location search (up to 1,000). The businesses with the most Google reviews come first.

## `minRating` (type: `number`):

Only businesses rated at least this (0-5). 0 = no filter.

## `minReviews` (type: `integer`):

Only businesses with at least this many Google reviews (an active business). 0 = no filter.

## `onlyClaimed` (type: `boolean`):

Only businesses whose owner has claimed (verified) their Google Business Profile.

## `includeSocialOnly` (type: `boolean`):

Also return businesses that list a Facebook or Instagram page as their website (flagged socialOnlyWebsite = true). Turn off for businesses with no link at all.

## Actor input object example

```json
{
  "categories": [
    "plumber",
    "roofing_contractor"
  ],
  "locations": [
    "Austin, TX"
  ],
  "radiusKm": 10,
  "maxLeadsPerSearch": 20,
  "minRating": 0,
  "minReviews": 0,
  "onlyClaimed": false,
  "includeSocialOnly": true
}
```

# 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 = {
    "categories": [
        "plumber",
        "roofing_contractor"
    ],
    "locations": [
        "Austin, TX"
    ],
    "maxLeadsPerSearch": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("tenfoldfleet/businesses-without-websites").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 = {
    "categories": [
        "plumber",
        "roofing_contractor",
    ],
    "locations": ["Austin, TX"],
    "maxLeadsPerSearch": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("tenfoldfleet/businesses-without-websites").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 '{
  "categories": [
    "plumber",
    "roofing_contractor"
  ],
  "locations": [
    "Austin, TX"
  ],
  "maxLeadsPerSearch": 20
}' |
apify call tenfoldfleet/businesses-without-websites --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tenfoldfleet/businesses-without-websites"
        }
    }
}
```

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/0hObZ8ZTi8UZYB1wQ/builds/8W4bbabepa9joCBt0/openapi.json
