# Local.com Reviews Scraper: Live Ratings Data (`b2b_leads/local-real-time-data-scraper`) Actor

Collect live Local.com review intelligence at scale: keyword search across expert reviews and buying guides, category top picks with scores, and full in-depth product reviews. Structured JSON streamed to your dataset in real time.

- **URL**: https://apify.com/b2b_leads/local-real-time-data-scraper.md
- **Developed by:** [Emmanuel](https://apify.com/b2b_leads) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 results

This Actor is paid per event. 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

## Local.com Real-Time Data

Live review intelligence from Local.com — expert product reviews, category top picks with scores, and in-depth buying guides, delivered as structured JSON the second each record is collected.

> **Free trial:** free Apify plans get **2 results per run**. Upgrade to a paid plan for unlimited exports.

### Who this is for

- **Affiliate marketers & publishers** tracking which products top each Local.com category
- **Competitor researchers** watching rival rankings, scores, and review coverage
- **Agencies & brands** monitoring their own products' review presence and summaries
- **Content teams** finding content gaps across software, finance, health, and lifestyle topics
- **AI-agent builders** feeding fresh, structured review data into chatbots and copilots

Use cases: affiliate shortlist building, leaderboard tracking over time, review-coverage audits, buying-guide research, pros/cons harvesting, content-gap analysis.

### Features

| Feature | What you get |
|---|---|
| 🔍 Category Search (default on) | Keyword search across expert reviews and buying guides. Fast cards: title, page type, category, excerpt. Optional **Enrich with full review details** merges the full summary, section outline, dates, and image into the *same* row (`detailsFetched: true`). |
| 🏆 Category Details | Top-pick leaderboard per category URL: product name, tagline, score out of 10, score label, vendor link, image. |
| ⭐ Reviews | Full in-depth expert review per review URL: summary, section outline, publish/update dates, image, content snippet. |
| 🔗 Scrape By URL | Any Local.com category, review, guide, or search URL — page type auto-detected. |

Every discovered item is always saved — enriching never drops rows and never creates duplicates.

### Input reference

| Field | Type | Default | Notes |
|---|---|---|---|
| `country` | select | `US` | Market region (`US`, `CA`, `UK`, `AU`). |
| `enableCategorySearch` | checkbox | `true` | Primary discovery feature. |
| `searchKeywords` | string list | `["payroll software", "seo tools", "antivirus"]` | Required when search is on. |
| `searchMaxResults` | number | `10` | Max results per keyword (1–100). |
| `searchFetchFullDetails` | checkbox | `false` | Enrich each search row in place. Adds a little extra time per record. |
| `enableCategoryDetails` | checkbox | `false` | Requires `categoryUrls`. |
| `categoryUrls` | string list | `[]` | e.g. `https://www.local.com/payroll-software`. |
| `enableReviews` | checkbox | `false` | Requires `reviewUrls`. |
| `reviewUrls` | string list | `[]` | e.g. `https://www.local.com/payroll-software/reviews/gusto`. |
| `enableScrapeByUrl` | checkbox | `false` | Requires `scrapeUrls` (Local.com URLs only). |
| `scrapeUrls` | string list | `[]` | Any Local.com page. |
| `webhookUrl` / `webhookFormat` | text / select | `""` / `json` | Extra real-time push per record; `json` or `slack`. |
| `proxyConfiguration` | proxy | Residential US | Residential recommended at scale. |

Empty input still runs a useful demo: Category Search over three sample keywords, 10 results each.

### Output reference

One dataset row per item (`featureType`: `category_search`, `category_details`, `review`, `scrape_by_url`).

- **Search rows:** `keyword`, `title`, `page_url`, `page_type` (`review`/`guide`), `category`, `product_name`, `excerpt`, `image_url`, `sections`, `published_at`, `updated_at`, `position`, `detailsFetched`.
- **Category rows:** `category`, `product_name`, `tagline`, `score` (0–10), `score_label`, `vendor_url`, `image_url`, `position`.
- **Review rows:** `category`, `product_name`, `title`, `excerpt`, `sections`, `published_at`, `updated_at`, `image_url`, `content_snippet`.
- **URL rows:** `pageType`, `title`, `product_name`, `data` (structured payload).

OUTPUT views: `allResults`, `overview`, `search`, `details`, `reviews`, `scrape_by_url`.

### Webhooks

Set `webhookUrl` to POST every record in real time as JSON (`webhookFormat: json`), or as a Slack-friendly message (`slack`). Best-effort delivery — a failed webhook never stops the run or the dataset write.

### MCP / AI-agent usage

Pair with the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp): your agent can start runs and query the dataset with natural language.

Example prompt for your agent:

> “Using the Local.com Real-Time Data actor, search Local.com for 'payroll software', enrich the top results, and tell me which products are reviewed and what each review covers.”

### FAQ

- **Which connection should I use?** Residential US works best. The default is already set — just click Start.
- **How fresh is the data?** Every run collects live data at runtime; each row carries a `scrapedAt` timestamp.
- **What does the free trial include?** 2 results per run on free Apify plans. Paid plans are uncapped.
- **Does enriching filter anything out?** No. Every discovered result is saved; enrichment only adds fields to the same row.
- **Do webhooks replace the dataset?** No — the dataset is always written. Webhooks are an additional real-time copy.

# Actor input Schema

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

Local.com publishes US-focused expert reviews. Keep US for the most reliable results.

## `enableCategorySearch` (type: `boolean`):

Live keyword search across Local.com expert reviews and buying guides — payroll software, SEO tools, antivirus, website builders, and more. On by default and prefilled so you can click Start and get results in seconds.

## `searchKeywords` (type: `array`):

One search per keyword, e.g. payroll software. Required when Category Search is on.

## `searchMaxResults` (type: `integer`):

Maximum reviews and guides to return for each keyword (1–100). Default 10 — perfect for instant demo runs.

## `searchFetchFullDetails` (type: `boolean`):

When on, each search result stays ONE row (featureType category_search, detailsFetched=true) but is enriched with the full review summary, section outline, dates, and image. Adds a little extra time per record. When off, you get fast cards with title, page type, category, and excerpt. Every discovered result is always saved — never filtered out.

## `enableCategoryDetails` (type: `boolean`):

Collect the top-pick product leaderboard for specific Local.com category pages — product names, taglines, scores, and images.

## `categoryUrls` (type: `array`):

Full Local.com category URLs, e.g. https://www.local.com/payroll-software.

## `enableReviews` (type: `boolean`):

Collect full in-depth expert reviews for specific Local.com products by URL — summary, section outline, dates, and imagery.

## `reviewUrls` (type: `array`):

Full Local.com review URLs, e.g. https://www.local.com/payroll-software/reviews/gusto.

## `enableScrapeByUrl` (type: `boolean`):

Paste any Local.com URL — category page, expert review, buying guide, or search page.

## `scrapeUrls` (type: `array`):

Any Local.com category, review, guide, or search URL.

## `webhookUrl` (type: `string`):

Optional. Every record is always saved to the run dataset — this webhook is an ADDITIONAL real-time push. Each new row is also POSTed to this URL (Slack, Discord, Zapier, Make, n8n, custom research bot).

## `webhookFormat` (type: `string`):

json = full record object; slack = Slack-friendly message payload.

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

Residential proxy recommended for the most reliable results at scale.

## Actor input object example

```json
{
  "country": "US",
  "enableCategorySearch": true,
  "searchKeywords": [
    "payroll software",
    "seo tools",
    "antivirus"
  ],
  "searchMaxResults": 10,
  "searchFetchFullDetails": false,
  "enableCategoryDetails": false,
  "categoryUrls": [],
  "enableReviews": false,
  "reviewUrls": [],
  "enableScrapeByUrl": false,
  "scrapeUrls": [
    "https://www.local.com/seo-tools"
  ],
  "webhookUrl": "",
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `allResults` (type: `string`):

Full dataset for this run (every featureType).

## `overview` (type: `string`):

Core fields across features, including detailsFetched for search rows.

## `search` (type: `string`):

featureType=category_search only. One result = one row; full review details are merged when "Enrich with full review details" is enabled.

## `details` (type: `string`):

featureType=category_details — top-pick products only from the Category Details feature (specific URLs), not from search enrichment.

## `reviews` (type: `string`):

featureType=review — one row per expert review.

## `scrape_by_url` (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 = {
    "country": "US",
    "enableCategorySearch": true,
    "searchKeywords": [
        "payroll software",
        "seo tools",
        "antivirus"
    ],
    "searchMaxResults": 10,
    "searchFetchFullDetails": false,
    "enableCategoryDetails": false,
    "categoryUrls": [],
    "enableReviews": false,
    "reviewUrls": [],
    "enableScrapeByUrl": false,
    "scrapeUrls": [
        "https://www.local.com/seo-tools"
    ],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("b2b_leads/local-real-time-data-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 = {
    "country": "US",
    "enableCategorySearch": True,
    "searchKeywords": [
        "payroll software",
        "seo tools",
        "antivirus",
    ],
    "searchMaxResults": 10,
    "searchFetchFullDetails": False,
    "enableCategoryDetails": False,
    "categoryUrls": [],
    "enableReviews": False,
    "reviewUrls": [],
    "enableScrapeByUrl": False,
    "scrapeUrls": ["https://www.local.com/seo-tools"],
    "webhookFormat": "json",
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("b2b_leads/local-real-time-data-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 '{
  "country": "US",
  "enableCategorySearch": true,
  "searchKeywords": [
    "payroll software",
    "seo tools",
    "antivirus"
  ],
  "searchMaxResults": 10,
  "searchFetchFullDetails": false,
  "enableCategoryDetails": false,
  "categoryUrls": [],
  "enableReviews": false,
  "reviewUrls": [],
  "enableScrapeByUrl": false,
  "scrapeUrls": [
    "https://www.local.com/seo-tools"
  ],
  "webhookFormat": "json",
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call b2b_leads/local-real-time-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,b2b_leads/local-real-time-data-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/87vNebGvgLST31OrB/builds/joCbfeAfyfREjbKoI/openapi.json
