# Verified Reviews $2/1k💰Avis Vérifiés+Recensioni IT/FR/EN (`memo23/verified-reviews-scraper`) Actor

Scrape Verified Reviews / Avis Vérifiés / Recensioni Verificate (Skeepers): full review texts, ratings, dates, reviewer names, categories + business rating summaries with star distributions. All 3 live domains (IT, FR, EN), star & keyword filters, AI summaries. JSON, CSV, Excel.

- **URL**: https://apify.com/memo23/verified-reviews-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** E-commerce
- **Stats:** 22 total users, 3 monthly users, 74.9% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $2.00 / 1,000 reviews

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?

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

## Verified Reviews (Skeepers) Scraper — Reviews, Ratings & Business Info

Extract customer reviews and business rating data from **Verified Reviews / Avis Vérifiés / Recensioni Verificate** (the Skeepers review platform) — full review texts, star ratings, review + experience dates, reviewer names, business categories, and per-brand rating summaries with star distributions. Works with all three live country domains: **recensioni-verificate.com (Italy)**, **avis-verifies.com (France)**, and **verified-reviews.com (English/US)**. Export as JSON, CSV, or Excel.

![How the Verified Reviews Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-verified-reviews.png)

### Why use this scraper?

- **All three live Skeepers domains** — the only scraper that handles the Italian domain (recensioni-verificate.com) alongside the French (avis-verifies.com) and English/US (verified-reviews.com) ones, with automatic brand lookup across all of them.
- **Complete review records** — review UUID, star rating, full text, author, publication date AND purchase/experience date (both ISO-formatted), business category, and collection source (verified purchase vs third-party).
- **Server-side filters you don't pay for** — filter by star rating (e.g. only 1–2★ complaints) and keyword (e.g. "delivery", "rimborso", "livraison") before scraping. You're never charged for filtered-out reviews.
- **Business intelligence mode** — one row per brand with average rating, total review count, and the full star distribution. Ideal for monitoring hundreds of brands cheaply.
- **Fast** — review pages are fetched in parallel; hundreds of reviews arrive in seconds.
- **Fair charging** — brands not on the platform are skipped and never charged. Exact `maxItems` accounting: you get precisely the number of rows you asked for.

### What you can scrape

| Input | Example |
|---|---|
| Italian certificate URL | `https://www.recensioni-verificate.com/recensioni-clienti/uniecampus.it` |
| French certificate URL | `https://www.avis-verifies.com/avis-clients/but.fr` |
| English/US certificate URL | `https://www.verified-reviews.com/reviews/halfpricegolfballs.com` |
| Brand website domain | `uniecampus.it`, `but.fr` — looked up automatically across all country domains |

### Use cases

- **Reputation monitoring** — track your own (or competitors') average rating, star distribution, and fresh complaints over time.
- **Complaint mining** — pull only 1–2★ reviews mentioning "delivery" or "refund" to find operational weak spots.
- **Market research** — compare rating distributions across all brands in a category.
- **Lead generation** — business rows include the brand's own website, category, and (where published) contact email.
- **AI / NLP pipelines** — clean, deduplicated review texts with dates and ratings, ready for sentiment analysis.

### Input configuration

Example — all 1–2 star reviews mentioning delivery, for one brand:

```json
{
    "mode": "reviews",
    "brandDomains": ["but.fr"],
    "starRatings": ["1", "2"],
    "searchKeyword": "livraison",
    "maxItems": 500
}
```

Example — rating summaries for a portfolio of brands:

```json
{
    "mode": "business",
    "brandDomains": ["uniecampus.it", "but.fr", "grandiscuole.it"],
    "country": "auto"
}
```

| Field | Type | Description |
|---|---|---|
| `mode` | string | `reviews` (default) — full review data. `business` — one rating-summary row per brand. |
| `startUrls` | array | Certificate-page URLs on either live domain. |
| `brandDomains` | array | Brand website domains to look up (alternative to URLs). |
| `country` | string | Domain for brand lookups: `auto` (default), `it`, `fr`, or `en`. |
| `starRatings` | array | Only reviews with these ratings (1–5). Server-side. |
| `searchKeyword` | string | Full-text keyword filter. Server-side. |
| `includeBusinessInfo` | boolean | Reviews mode: also push one business row per brand. |
| `maxItems` | integer | Maximum rows returned (default 1000). |
| `maxConcurrency` | integer | Parallel page fetches per brand (1–10, default 5). |

### Output samples

Review row:

```json
{
    "rowType": "review",
    "reviewId": "42fc6ac2-e9eb-4e3d-aa28-ce25797a2480",
    "rating": 1,
    "text": "Decisamente da migliorare in maniera profonda il servizio clienti...",
    "authorName": "Ilaria E.",
    "category": "Insegnamento e formazione",
    "reviewDate": "2026-06-22",
    "experienceDate": "2026-06-15",
    "source": "third-party",
    "brandDomain": "uniecampus.it",
    "brandName": "uniecampus.it",
    "country": "it",
    "certificateUrl": "https://www.recensioni-verificate.com/recensioni-clienti/uniecampus.it",
    "page": 1
}
```

Business row:

```json
{
    "rowType": "business",
    "brandName": "but.fr",
    "brandDomain": "but.fr",
    "websiteUrl": "https://www.but.fr/",
    "category": "Maison & jardin",
    "logoUrl": "https://api-upload-public.s3.eu-west-1.amazonaws.com/website/.../logo.png",
    "address": "1, avenue Spinoza, 77184 EMERAINVILLE, FR",
    "email": null,
    "averageRating": 4.5,
    "totalReviews": 732404,
    "reviewsLast12Months": 123286,
    "ratingDistribution": { "1": 5, "2": 3, "3": 7, "4": 23, "5": 62 },
    "country": "fr"
}
```

### Key output fields

- **`reviewId`** — the platform's stable UUID for the review (deduplication-safe).
- **`reviewDate` / `experienceDate`** — publication date vs the date of the underlying purchase/experience, both `YYYY-MM-DD`.
- **`source`** — `verified-purchase` (collected by Skeepers after a real transaction) or `third-party` (imported from another collection channel).
- **`ratingDistribution`** — percentage of reviews per star band, straight from the certificate page.
- **`totalReviews` / `reviewsLast12Months`** — lifetime review count vs reviews received in the last 12 months, for tracking recent volume without date math.
- **`aiSummary`** — the platform's AI-generated summary of all reviews (business rows; currently rendered on the English domain).

### FAQ

**Which countries are covered?**
Italy (recensioni-verificate.com), France (avis-verifies.com), and the English/international domain (verified-reviews.com, where US and other English-market brands live) — the three domains where Skeepers still serves consumer review pages. The former UK, Spanish, German, Dutch, and Portuguese sites were shut down by Skeepers and redirect to marketing pages; URLs from those domains are reported and skipped.

**What about product reviews?**
This actor scrapes **brand-level** certificate pages (the merchant's overall reviews). Product-level review widgets embedded on merchant sites are a different system and out of scope.

**Are merchant replies included?**
No — the Skeepers certificate pages do not display merchant replies, so they cannot be scraped.

**What happens with brands that aren't on the platform?**
They're logged as skipped, no review events are charged for them, and the run still finishes successfully — the run's status message names every brand that wasn't found and the country domains it checked. A run only fails if the input has no usable target at all, or if the site could not be reached.

**Do I need a proxy?**
No. Both live domains work without one. A proxy option exists for very large pulls if you ever hit rate limits.

### Support & feature requests

Found an issue or need an extra field? Open an issue on the actor's **Issues** tab in the Apify Console — issues are typically answered within 24 hours.

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/verified-reviews-scraper`).

**Purpose:** Extract customer reviews and per-brand rating summaries from the Skeepers review platform (Verified Reviews / Avis Vérifiés / Recensioni Verificate) across all three live country domains.

**Minimal input:**

```json
{
    "mode": "reviews",
    "startUrls": [],
    "brandDomains": ["uniecampus.it"],
    "country": "auto",
    "starRatings": ["1", "2"],
    "searchKeyword": "",
    "includeBusinessInfo": false,
    "maxItems": 25,
    "maxConcurrency": 5
}
```

Instead of `brandDomains`, you can pass `startUrls` with certificate-page URLs, e.g. `{"url": "https://www.recensioni-verificate.com/recensioni-clienti/uniecampus.it"}`.

**Output:** one dataset row per review or per brand. Review rows carry rowType, reviewId, rating, text, authorName, category, reviewDate, experienceDate, source, brandDomain, brandName, country, certificateUrl, page. Business rows carry rowType, brandName, brandDomain, websiteUrl, category, logoUrl, address, email, averageRating, totalReviews, reviewsLast12Months, ratingDistribution {1, 2, 3, 4, 5}, country.

**Behaviors an agent should know:**

- `mode` selects output: `reviews` (default, paginated review rows) or `business` (one rating-summary row per brand). Set `includeBusinessInfo: true` in reviews mode to also emit business rows.
- Always set `maxItems` — an uncapped run pages through every review on a large brand. Provide input via `brandDomains` (looked up on `country`) or `startUrls`.
- `starRatings` and `searchKeyword` are applied server-side; filtered-out reviews are never fetched or charged.
- Brands not on the platform are logged as skipped and never charged; the run succeeds with zero rows and names them in its status message, so an empty dataset is never a silent failure.
- Billing: you are charged only for rows actually pushed — see the Pricing tab on the actor page.
- Both live domains work without a proxy; the `proxy` option is only for very large pulls that hit rate limits.

### ⚠️ Disclaimer

This actor only collects publicly available data that anyone can see by visiting the Verified Reviews certificate pages. It does not access private data, bypass authentication, or collect personal information beyond what reviewers chose to publish. You are responsible for how you use the data — ensure your use complies with applicable laws (GDPR, CCPA) and the target website's terms of service. This actor is not affiliated with or endorsed by Skeepers, Verified Reviews, Avis Vérifiés, or Recensioni Verificate.

### SEO Keywords

verified reviews scraper, avis vérifiés scraper, recensioni verificate scraper, skeepers reviews scraper, scrape verified reviews, avis verifies API, recensioni verificate API, extract customer reviews, French review platform scraper, Italian review platform scraper, e-commerce review scraper, brand reputation data, review monitoring tool, customer feedback scraper, star rating scraper

# Actor input Schema

## `mode` (type: `string`):

Reviews: full review texts with ratings, dates, and categories. Business info: one summary row per brand (average rating, total reviews, star distribution) — no review pagination.

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

Verified Reviews certificate pages on any live domain. Italian: recensioni-verificate.com/recensioni-clienti/{brand}. French: avis-verifies.com/avis-clients/{brand}. English/US: verified-reviews.com/reviews/{brand}.

## `brandDomains` (type: `array`):

Alternative to URLs: the brand's own website domain, e.g. uniecampus.it or private-sport-shop.com. Each is looked up on the country domain(s) below. Brands not on the platform are skipped and never charged.

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

Which Verified Reviews domain to look brand domains up on. Auto probes Italian, then French, then English.

## `starRatings` (type: `array`):

Reviews mode: only return reviews with these star ratings. Applied server-side, so you never pay for filtered-out reviews. Empty = all ratings.

## `searchKeyword` (type: `string`):

Reviews mode: only reviews matching this keyword (server-side full-text filter), e.g. delivery, rimborso, livraison.

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

Reviews mode: additionally push one business-info row per brand (average rating, total review count, star distribution).

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

Maximum rows to return (reviews and/or business rows). You are only charged for rows actually pushed.

## `maxConcurrency` (type: `integer`):

Parallel review-page fetches per brand. Keep moderate — the platform rate-limits aggressive clients.

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

Optional. Both live domains work without a proxy. Only set this if you hit rate limits on very large pulls.

## Actor input object example

```json
{
  "mode": "reviews",
  "startUrls": [
    {
      "url": "https://www.recensioni-verificate.com/recensioni-clienti/uniecampus.it"
    }
  ],
  "country": "auto",
  "includeBusinessInfo": false,
  "maxItems": 100,
  "maxConcurrency": 5
}
```

# 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.recensioni-verificate.com/recensioni-clienti/uniecampus.it"
        }
    ],
    "maxItems": 100,
    "maxConcurrency": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/verified-reviews-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.recensioni-verificate.com/recensioni-clienti/uniecampus.it" }],
    "maxItems": 100,
    "maxConcurrency": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/verified-reviews-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 '{
  "startUrls": [
    {
      "url": "https://www.recensioni-verificate.com/recensioni-clienti/uniecampus.it"
    }
  ],
  "maxItems": 100,
  "maxConcurrency": 5
}' |
apify call memo23/verified-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/verified-reviews-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/JfH6NUk4quhF3drnf/builds/3Pte5wtalJxKcX1i7/openapi.json
