# Sitejabber Scraper \[PPR] (`zadexinho/sitejabber-scraper`) Actor

Scrape Sitejabber reviews, star ratings, business profiles, reviewer data, and star distributions. Enter company domains or category URLs. Filter by stars, date range, verified-only, or sort order. HTTP-only extraction — hundreds of reviews in seconds.

- **URL**: https://apify.com/zadexinho/sitejabber-scraper.md
- **Developed by:** [zadexinho](https://apify.com/zadexinho) (community)
- **Categories:** E-commerce, SEO tools, Lead generation
- **Stats:** 18 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.90 / 1,000 review scrapeds

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

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

### Sitejabber Scraper

Scrape reviews, ratings, and business data from Sitejabber.com.

**What you get:**

- Review text, star rating (1-5), date, and verification status
- Business replies with timestamps
- Reviewer name, location, helpful votes, and review count
- Business profile: overall rating, total reviews, categories, star distribution, claimed status
- Direct links to reviews and profiles

**How it works:**

- Enter company domains (`amazon.com`) or full Sitejabber URLs
- Or pass a category URL to discover companies in an industry
- Filter by star rating, date range, verified-only, or sort order
- HTTP-only extraction — no browser, scrapes hundreds of reviews in seconds

### What data can you extract?

| Field | Type | Description |
|-------|------|-------------|
| `reviewId` | string | Unique Sitejabber review ID |
| `title` | string | Review headline |
| `text` | string | Full review text |
| `rating` | integer | Star rating (1-5) |
| `createdAt` | string | Publication date |
| `isVerified` | boolean | Whether the review is verified |
| `updatedAt` | string | Date review was last edited (null if never edited) |
| `helpfulCount` | integer | Number of "helpful" votes |
| `url` | string | Direct link to the review |
| `businessReply.text` | string | Business owner's reply text |
| `businessReply.createdAt` | string | Date of business reply |
| `reviewer.name` | string | Reviewer display name |
| `reviewer.numberOfReviews` | integer | Total reviews by this reviewer |
| `reviewer.helpfulVotes` | integer | Total helpful votes received |
| `reviewer.location` | string | Reviewer location |
| `reviewer.profileUrl` | string | Link to reviewer profile |
| `business.name` | string | Business display name |
| `business.domain` | string | Business domain |
| `business.overallRating` | number | Overall rating (0-5) |
| `business.totalReviews` | integer | Total number of reviews |
| `business.categories` | string\[] | Business categories |
| `business.starDistribution` | object | Review count per star level |
| `business.claimedByOwner` | boolean | Whether the business is claimed |
| `business.website` | string | Business website URL |
| `business.profileUrl` | string | Link to Sitejabber profile |

### How to scrape Sitejabber reviews

1. Enter one or more company domains in the **Companies** field (e.g., `amazon.com`, `ebay.com`). Full Sitejabber URLs also work.
2. Set **Max Reviews Per Company** to control volume. Use `0` for all reviews.
3. Optionally apply filters — star rating, sort order, date range, or verified-only.
4. Click **Start** and download results from the **Dataset** tab as JSON, CSV, or Excel.

To discover companies by industry, enter a Sitejabber category URL (e.g., `https://www.sitejabber.com/categories/shopping`) in the **Category URL** field.

### How much does it cost?

Pay-per-event pricing — you are charged per review scraped.

| Tier | Price per review | Price per 1,000 reviews |
|------|-----------------|------------------------|
| FREE | $0.0015 | $1.50 |
| BRONZE | $0.0013 | $1.30 |
| SILVER | $0.0011 | $1.10 |
| GOLD | $0.0009 | $0.90 |

**Example:** Scraping 1,000 reviews on the FREE tier costs approximately **$1.50**.

Business metadata and reviewer info are included at no extra charge.

### Use cases

- **Sentiment monitoring** — Track customer sentiment for your brand and competitors
- **Market research** — Aggregate reviews across an entire product category
- **NLP pipelines** — Feed review text into sentiment analysis or topic modeling
- **Competitor tracking** — Monitor review trends, response rates, and star distributions
- **Reputation management** — Find businesses with declining ratings
- **Cross-platform analysis** — Compare Sitejabber vs Trustpilot vs BBB review distributions
- **Academic research** — Collect review datasets for consumer behavior studies
- **Client reporting** — Export review data to spreadsheets and dashboards

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `companies` | string\[] | — | Company domains or Sitejabber URLs |
| `categoryUrl` | string | — | Sitejabber category URL to discover companies |
| `maxReviewsPerCompany` | integer | `100` | Max reviews per company (0 = all) |
| `sort` | enum | `most_recent` | Sort: `most_recent`, `highest_rated`, `lowest_rated`, `most_helpful` |
| `stars` | string\[] | all | Filter by star rating: 1, 2, 3, 4, 5 |
| `dateRange` | enum | all time | `lastWeek`, `lastMonth`, `last6months`, `lastYear` |
| `verifiedOnly` | boolean | `false` | Only return verified reviews |
| `withRepliesOnly` | boolean | `false` | Only return reviews with business replies |
| `includeBusinessInfo` | boolean | `true` | Attach business data to each review |
| `includeReviewerInfo` | boolean | `true` | Attach reviewer data to each review |
| `startPage` | integer | `1` | Page to start from (for incremental scraping) |
| `requestDelay` | integer | `300` | Delay between requests in ms |
| `proxy` | object | off | Apify proxy configuration |

#### Input examples

**Single company:**

```json
{
    "companies": ["amazon.com"],
    "maxReviewsPerCompany": 50
}
```

**Multiple companies with filters:**

```json
{
    "companies": ["ebay.com", "walmart.com", "target.com"],
    "maxReviewsPerCompany": 200,
    "sort": "most_recent",
    "stars": ["1", "2"],
    "verifiedOnly": true
}
```

**Category discovery:**

```json
{
    "categoryUrl": "https://www.sitejabber.com/categories/shopping",
    "maxReviewsPerCompany": 20
}
```

### Output example

```json
{
    "reviewId": "39887",
    "title": "Amazon Subscription Failure",
    "text": "Despite cancelling my subscription, Amazon is still charging me a monthly fee...",
    "rating": 1,
    "createdAt": "2026-02-15",
    "updatedAt": null,
    "isVerified": false,
    "helpfulCount": 0,
    "url": "https://www.sitejabber.com/reviews/amazon.com#39887",
    "businessReply": null,
    "reviewer": {
        "name": "Louise S.",
        "numberOfReviews": 1,
        "helpfulVotes": 0,
        "location": "Australia",
        "profileUrl": "https://www.sitejabber.com/users/louises899"
    },
    "business": {
        "name": "Amazon",
        "domain": "amazon.com",
        "overallRating": 2.6,
        "totalReviews": 11103,
        "categories": ["Shopping", "Marketplace"],
        "profileUrl": "https://www.sitejabber.com/reviews/amazon.com",
        "starDistribution": {"5": 6218, "4": 1443, "3": 555, "2": 555, "1": 2332},
        "claimedByOwner": false,
        "website": "http://amazon.com/"
    }
}
```

### Tips

- Set `maxReviewsPerCompany` to `0` to scrape all reviews. 10,000+ reviews supported — paginates automatically.
- Use `sort: "most_recent"` with `dateRange: "lastWeek"` to monitor recent feedback.
- Use `stars: ["1", "2"]` to focus on negative reviews for reputation tracking.
- Use `sort: "most_helpful"` to get the most impactful reviews first.
- Use `startPage` for incremental scraping — skip pages from a previous run.
- Use `categoryUrl` to discover companies without knowing their domains.
- Increase `requestDelay` to `500`+ if you experience rate limiting on large runs.

### FAQ

#### How many reviews can I scrape?

No hard limit. Set `maxReviewsPerCompany` to `0` to collect all reviews. The scraper paginates automatically.

#### How fast is it?

100 reviews in under 5 seconds. HTTP-only — no browser overhead.

#### Do I need a proxy?

For most runs, no. Enable Apify proxy for large runs (10,000+ reviews) if you hit rate limiting.

#### What happens if a company is not on Sitejabber?

The scraper logs a warning and moves to the next company. It does not fail the entire run.

#### What is star distribution?

The `starDistribution` field shows how many reviews exist at each star level (1-5). Analyze rating patterns without fetching every review.

#### Does Sitejabber have an API?

Sitejabber's official API is restricted to business owners — you can only access your own reviews. This scraper fills that gap for any company.

#### Can I export to CSV or Excel?

Yes. Download from the **Dataset** tab in JSON, CSV, Excel, or XML format.

#### Can I scrape Sitejabber and Trustpilot together?

Use this actor for Sitejabber and the [Trustpilot Scraper](https://apify.com/zadexinho/trustpilot-scraper) for Trustpilot. Both produce the same review structure for easy cross-platform analysis.

### Changelog

- **v0.3** — Pay-per-event pricing with spending limit support. README rewrite.
- **v0.1.3** — Compiled regex, early filter termination, proxy warnings, browserforge 1.2.3 pin.
- **v0.1** — Initial release. Reviews, business data, reviewer profiles, category browsing, star/date filters, concurrent pagination, circuit breaker.

# Actor input Schema

## `companies` (type: `array`):

Add business domains (e.g., amazon.com, ebay.com) or full Sitejabber URLs (e.g., https://www.sitejabber.com/reviews/amazon.com). One per entry.

## `categoryUrl` (type: `string`):

Enter a Sitejabber category URL to discover and scrape all businesses in that category (e.g., https://www.sitejabber.com/online-business/shopping).

## `maxReviewsPerCompany` (type: `integer`):

Set the maximum number of reviews to scrape per business. Use 0 for unlimited.

## `sort` (type: `string`):

Select how reviews are sorted.

## `stars` (type: `array`):

Select star ratings to include. Leave empty for all ratings.

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

Select a time period to filter reviews.

## `verifiedOnly` (type: `boolean`):

Return only reviews marked as verified by Sitejabber.

## `withRepliesOnly` (type: `boolean`):

Return only reviews that have a reply from the business.

## `includeBusinessInfo` (type: `boolean`):

Attach business metadata (name, overall rating, total reviews, categories) to each review.

## `includeReviewerInfo` (type: `boolean`):

Attach reviewer metadata (display name, review count, helpful votes) to each review.

## `startPage` (type: `integer`):

Page number to start scraping from. Use for incremental scraping (e.g., start from page 5 if you already have pages 1-4).

## `requestDelay` (type: `integer`):

Set the delay between HTTP requests in milliseconds. Increase to 1000+ if you experience rate limiting.

## `proxy` (type: `object`):

Configure proxy settings. Not required for most use cases — Sitejabber has minimal anti-bot protection.

## Actor input object example

```json
{
  "companies": [
    "amazon.com"
  ],
  "maxReviewsPerCompany": 100,
  "sort": "most_recent",
  "dateRange": "",
  "verifiedOnly": false,
  "withRepliesOnly": false,
  "includeBusinessInfo": true,
  "includeReviewerInfo": true,
  "startPage": 1,
  "requestDelay": 300,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "companies": [
        "amazon.com"
    ],
    "maxReviewsPerCompany": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("zadexinho/sitejabber-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 = {
    "companies": ["amazon.com"],
    "maxReviewsPerCompany": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("zadexinho/sitejabber-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 '{
  "companies": [
    "amazon.com"
  ],
  "maxReviewsPerCompany": 100
}' |
apify call zadexinho/sitejabber-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zadexinho/sitejabber-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/uC7wNFcw7baL6B1UN/builds/x1YDR47ARdaoYh4t2/openapi.json
