# ConsumerAffairs Reviews Scraper (`parsebird/consumeraffairs-scraper`) Actor

Scrape ConsumerAffairs reviews for any company: rating, full text, author, location, date, topics, verified badge, and company replies, plus company rating, review count, and profile. Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/consumeraffairs-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.39 / 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.
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?

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

### ConsumerAffairs Reviews Scraper

Scrape **ConsumerAffairs reviews** for any company — star rating, full review text, author, location, date, topics, verified badge, and the company's reply — plus each company's overall rating, total review count, and profile. Export to JSON, CSV, or Excel, or use the API.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Paste ConsumerAffairs company URLs, sort by recent, top, helpful, or oldest, filter by star rating or date, and get every review with full text and company responses — handled behind ConsumerAffairs' PerimeterX bot protection with residential proxies.
</td>
</tr></table>

<br>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Use the Apify Actor "parsebird/consumeraffairs-scraper" to scrape customer reviews and company profiles from ConsumerAffairs.com. Call it with the ApifyClient: from apify_client import ApifyClient; client = ApifyClient("<APIFY_TOKEN>"); run = client.actor("parsebird/consumeraffairs-scraper").call(run_input={"companyUrls": ["https://www.consumeraffairs.com/insurance/geico.htm", "auto_warranty/carshield"], "maxReviewsPerCompany": 200, "sortBy": "recent"}); reviews = client.dataset(run["defaultDatasetId"]).list_items().items. Key inputs: companyUrls (array of strings, required, full ConsumerAffairs company URLs or paths like "insurance/geico"), maxReviewsPerCompany (integer, default 100, 0 = all), sortBy ("recent" | "top_reviews" | "most_helpful" | "oldest", default "recent"), ratingFilter (array of "1"-"5"), reviewsNewerThan (date "YYYY-MM-DD"), includeCompanyProfile (boolean, default true), maxPagesPerCompany (integer, default 50), maxRequestsPerCrawl (integer, default 1000), proxy (object, default Apify RESIDENTIAL US). Review fields (default dataset): type, companyName, companySlug, companyUrl, category, reviewId, rating, reviewText, authorName, authorLocation, authorImageUrl, publishedDate, publishedDateText, topics, complaintCategory, verified, verifiedLabel, resolutionStatus, companyReply, companyReplyBy, companyReplyDate, companyReplyDateText, reviewUrl, pageNumber, sortBy, scrapedAt. Company profile fields ("companies" dataset of the run): companyName, companySlug, companyUrl, category, categoryUrl, overallRating, totalReviews, ratingDistribution, accredited, logoUrl, popularMentions, companyType, yearFounded, address, city, state, postalCode, country, website, socialMedia. Full API docs: https://apify.com/parsebird/consumeraffairs-scraper/api — get a token at https://console.apify.com/settings/integrations
```

### What is ConsumerAffairs Reviews Scraper?

[ConsumerAffairs](https://www.consumeraffairs.com/) is a US consumer review platform with more than 3 million consumer reviews of insurers, home warranty providers, auto warranty companies, lenders, retailers, and other businesses. **ConsumerAffairs Reviews Scraper** turns those review pages into structured data: one row per review, plus one profile per company.

The easiest way to try it: paste a company page such as `https://www.consumeraffairs.com/insurance/geico.htm` into **Company URLs** and click **Start**. ConsumerAffairs has no public reviews API, so this Actor works as a **ConsumerAffairs API alternative**.

### What can ConsumerAffairs Reviews Scraper do?

- 🔗 **Scrape any company** — paste full URLs (`https://www.consumeraffairs.com/insurance/geico.htm`) or short paths (`insurance/geico`, `auto_warranty/carshield`)
- 📝 **Full review text** — the complete review, not the truncated preview, with paragraph breaks kept
- 💬 **Company replies** — the response text, who replied, the reply date, and the resolution status label
- ⭐ **Sort and filter like the website** — most recent, top reviews, most helpful, or oldest; any combination of 1–5 star ratings
- 📅 **Date cut-off for monitoring** — collect only reviews newer than a date; with "Most recent" sorting the Actor stops paging once it reaches older reviews
- 🏢 **Company profiles** — overall rating, total reviews, star breakdown, accreditation, popular mentions, address, website, and social links
- 🛡️ **Bot protection handled** — ConsumerAffairs uses PerimeterX; the Actor uses residential proxies and switches IP automatically when one is blocked
- ⏱️ **Scheduling, API, and integrations** — run on a [schedule](https://docs.apify.com/platform/schedules), call it from the [Apify API](https://docs.apify.com/api/v2), and send results to Google Sheets, Slack, Make, or Zapier with [integrations](https://apify.com/integrations)

### What data can you extract from ConsumerAffairs?

**Reviews** (default dataset):

| Field | Description |
|-------|-------------|
| `rating` | Star rating 1–5 (`null` when ConsumerAffairs shows no stars, mostly on older reviews) |
| `reviewText` | Full review text |
| `authorName` / `authorLocation` | Reviewer name and city, state |
| `publishedDate` / `publishedDateText` | Review date as `YYYY-MM-DD` and as shown on the site |
| `topics` / `complaintCategory` | Topic tags such as Customer Service, Billing, Price (list and comma-separated text) |
| `verified` / `verifiedLabel` | Whether the review carries a verified badge, e.g. "Verified purchase" |
| `resolutionStatus` | Resolution label when shown, e.g. "Resolution In Progress" |
| `companyReply` / `companyReplyBy` / `companyReplyDate` | The company's response, its heading, and its date |
| `reviewId` / `reviewUrl` | ConsumerAffairs review ID and the company page link with the review's anchor |
| `companyName` / `companySlug` / `companyUrl` / `category` | The company the review belongs to |

**Company profiles** (`companies` dataset):

| Field | Description |
|-------|-------------|
| `overallRating` / `totalReviews` | Average star rating and total review count |
| `ratingDistribution` | Number of reviews for each star rating |
| `accredited` | Whether the company is ConsumerAffairs accredited |
| `popularMentions` | Topics ConsumerAffairs highlights for the company |
| `category` / `categoryUrl` | ConsumerAffairs category |
| `companyType` / `yearFounded` | Company type and founding year, when listed |
| `address` / `city` / `state` / `postalCode` / `country` | Company address, when listed |
| `website` / `socialMedia` / `logoUrl` | Website, social profiles, and logo |

### How to scrape ConsumerAffairs reviews

1. Open [ConsumerAffairs Reviews Scraper](https://apify.com/parsebird/consumeraffairs-scraper) in Apify Console and click **Try for free** (an Apify account is required).
2. Find the company on [consumeraffairs.com](https://www.consumeraffairs.com/) and copy the page address, e.g. `https://www.consumeraffairs.com/insurance/geico.htm`.
3. Paste one or more addresses into **Company URLs**.
4. Set **Max reviews per company** (`0` for all), and optionally a sort order, star ratings, or a **Reviews newer than** date.
5. Click **Start**.
6. Download reviews from the **Output** tab in JSON, CSV, Excel, HTML, or XML. Company profiles are in the run's `companies` dataset (Storage tab).

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `companyUrls` | string\[] | **Yes** | — | ConsumerAffairs company URLs or paths, e.g. `insurance/geico` or `https://www.consumeraffairs.com/auto_warranty/carshield.html` |
| `maxReviewsPerCompany` | integer | No | `100` | Maximum reviews per company. `0` = all reviews |
| `sortBy` | string | No | `recent` | `recent`, `top_reviews`, `most_helpful`, or `oldest` |
| `ratingFilter` | string\[] | No | all | Star ratings to keep, e.g. `["1", "2"]` |
| `reviewsNewerThan` | string | No | — | Keep only reviews published on or after this date (`YYYY-MM-DD`) |
| `includeCompanyProfile` | boolean | No | `true` | Save one profile per company to the `companies` dataset |
| `maxPagesPerCompany` | integer | No | `50` | Safety cap on review pages per company (1–500) |
| `maxRequestsPerCrawl` | integer | No | `1000` | Safety cap on page requests for the whole run, including retries |
| `debugSaveHtml` | boolean | No | `false` | Save raw page HTML to the key-value store for debugging |
| `proxy` | object | No | Apify RESIDENTIAL (US) | Proxy settings. Residential proxies are recommended; datacenter IPs are blocked by PerimeterX |

#### Example inputs

The 100 most recent reviews for two companies:

```json
{
  "companyUrls": [
    "https://www.consumeraffairs.com/insurance/geico.htm",
    "auto_warranty/carshield"
  ],
  "maxReviewsPerCompany": 100
}
```

Every 1- and 2-star review for American Home Shield:

```json
{
  "companyUrls": ["insurance/am_home"],
  "ratingFilter": ["1", "2"],
  "maxReviewsPerCompany": 0,
  "maxPagesPerCompany": 500
}
```

Weekly monitoring of new reviews (schedule this run):

```json
{
  "companyUrls": ["insurance/geico", "homeowners/choice_home_warranty"],
  "sortBy": "recent",
  "reviewsNewerThan": "2026-10-01",
  "maxReviewsPerCompany": 0
}
```

### Output example

Review:

```json
{
  "type": "review",
  "companyName": "CarShield",
  "companySlug": "auto_warranty/carshield",
  "companyUrl": "https://www.consumeraffairs.com/auto_warranty/carshield.html",
  "category": "Extended Auto Warranties",
  "reviewId": "14064982",
  "rating": 5,
  "reviewText": "Enrolling with CarShield was easy. The initial price was good, but it's still a hardship this day and age to pay that price every month. But it will take care of parts in the car that break down. That's the biggest benefit of having that financial backup. Get it. It's worth the sacrifice.",
  "authorName": "Ciello",
  "authorLocation": "Miami, FL",
  "authorImageUrl": null,
  "publishedDate": "2026-10-01",
  "publishedDateText": "Oct. 1, 2026",
  "topics": ["Price", "Maintenance", "Staff", "Rates"],
  "complaintCategory": "Price, Maintenance, Staff, Rates",
  "verified": true,
  "verifiedLabel": "Verified purchase",
  "resolutionStatus": null,
  "companyReply": "Thank you for the recommendation, Ciello! We’re happy that signing up was easy and that your coverage gives you added reassurance. We also hear your concerns about the monthly cost, and you’re welcome to contact us to review any options available for your budget.",
  "companyReplyBy": "Response from CarShield",
  "companyReplyDate": "2026-10-02",
  "companyReplyDateText": "Oct. 2, 2026",
  "reviewUrl": "https://www.consumeraffairs.com/auto_warranty/carshield.html#review-14064982",
  "pageNumber": 1,
  "sortBy": "recent",
  "scrapedAt": "2026-10-11T05:11:32.490Z"
}
```

Company profile:

```json
{
  "type": "company",
  "companyName": "CarShield",
  "companySlug": "auto_warranty/carshield",
  "companyUrl": "https://www.consumeraffairs.com/auto_warranty/carshield.html",
  "category": "Extended Auto Warranties",
  "categoryUrl": "https://www.consumeraffairs.com/auto_warranty/",
  "overallRating": 4.07,
  "totalReviews": 10637,
  "ratingDistribution": { "5": 7698, "4": 760, "3": 451, "2": 271, "1": 1457 },
  "accredited": true,
  "logoUrl": "https://cdn-mediahub.consumeraffairs.com/carshield_high_png_14rwqlp/o/130/x.webp",
  "popularMentions": ["Staff", "Customer Service", "Coverage", "Tech", "Price", "Punctuality & Speed"],
  "companyType": "Private",
  "yearFounded": 2005,
  "address": "333 Mid Rivers Mall Dr",
  "city": "Saint Peters",
  "state": "MO",
  "postalCode": "63376",
  "country": "United States",
  "website": "https://carshield.com",
  "socialMedia": {
    "facebook": "https://www.facebook.com/carshield",
    "twitter": "https://twitter.com/carshield",
    "linkedin": "https://www.linkedin.com/company/carshield",
    "youtube": "https://www.youtube.com/channel/UCj_zlCEXStYHykMV6WfUZ5Q"
  },
  "scrapedAt": "2026-10-11T05:11:31.154Z"
}
```

### Use ConsumerAffairs Reviews Scraper through the API

**Python** ([apify-client](https://docs.apify.com/api/client/python/)):

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("parsebird/consumeraffairs-scraper").call(run_input={
    "companyUrls": ["insurance/geico", "auto_warranty/carshield"],
    "maxReviewsPerCompany": 200,
    "sortBy": "recent",
})
for review in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(review["companyName"], review["rating"], review["publishedDate"], review["reviewText"][:80])
```

**JavaScript** ([apify-client](https://docs.apify.com/api/client/js/)):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('parsebird/consumeraffairs-scraper').call({
    companyUrls: ['insurance/geico', 'auto_warranty/carshield'],
    maxReviewsPerCompany: 200,
    sortBy: 'recent',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((r) => console.log(r.companyName, r.rating, r.publishedDate));
```

See the [API tab](https://apify.com/parsebird/consumeraffairs-scraper/api) for endpoints and more examples.

### Use cases

- **Reputation monitoring** — track new reviews and ratings for your company or competitors on a schedule
- **Customer experience research** — find recurring complaints by topic (billing, claims, customer service)
- **Competitor benchmarking** — compare ratings, rating breakdowns, and reply rates across companies in a category
- **Sentiment analysis and AI** — feed full review text into NLP models, LLMs, or dashboards
- **Response tracking** — measure how often and how fast companies reply to reviews
- **Market and due-diligence research** — review histories for insurers, warranty providers, lenders, and other consumer businesses

### How it works

1. For each company, the Actor loads the ConsumerAffairs company page and reads the profile: rating, review count, breakdown, and company information.
2. It loads the company's review list page by page with your sort order and star filter, exactly as the website does, and stops at the last page.
3. Each review is parsed into a row with its full text and company reply, and saved as soon as its page is processed.
4. Requests go through residential proxies. When PerimeterX blocks an IP, the Actor switches to a new one and retries.

### How much does it cost to scrape ConsumerAffairs reviews?

ConsumerAffairs Reviews Scraper uses **pay-per-event** pricing: you pay for each review and each company profile saved. Compute and residential proxy costs are included in the event price.

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| Review scraped (per 1,000) | **$4.99** | $4.79 | $4.59 | $4.39 |
| Company profile scraped (per 1,000) | **$1.99** | $1.79 | $1.59 | $1.39 |

For example, 1,000 reviews from one company cost about $5.00 on the Free plan ($4.99 for reviews plus $0.002 for the profile). Apify accounts include monthly platform usage credits, and you can set a maximum spend per run — the Actor stops when the limit is reached.

### Is it legal to scrape ConsumerAffairs?

Scraping publicly available data, such as reviews anyone can read without logging in, is generally legal in the US and many other jurisdictions. This Actor only collects data from public ConsumerAffairs pages and does not log in. Reviews include reviewer names and locations, which can be personal data: process it lawfully (for example under GDPR or CCPA) and review [ConsumerAffairs' terms](https://www.consumeraffairs.com/about/terms_of_use/) before use. Read more in Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

### Other review scrapers

- [Trustpilot Reviews Scraper](https://apify.com/parsebird/trustpilot-reviews-scraper) — company reviews from Trustpilot
- [BBB Scraper](https://apify.com/parsebird/bbb-scraper) — Better Business Bureau profiles, ratings, and complaints
- [Capterra Review Scraper](https://apify.com/parsebird/capterra-review-scraper) — software reviews from Capterra
- [Clutch.co Reviews Scraper](https://apify.com/parsebird/clutch-reviews-scraper) — B2B service provider reviews
- [Facebook Page Reviews Scraper](https://apify.com/parsebird/facebook-reviews-scraper) — reviews and recommendations from Facebook pages

### FAQ

**Do I need a ConsumerAffairs account or API key?**
No. The Actor reads public ConsumerAffairs pages. You only need an Apify account.

**How do I find a company's URL?**
Search for the company on [consumeraffairs.com](https://www.consumeraffairs.com/) and copy the address of its review page, e.g. `https://www.consumeraffairs.com/insurance/geico.htm`. You can also paste just the path (`insurance/geico`); the `.html` or `.htm` ending is optional.

**Can I scrape all reviews of a company?**
Yes. Set `maxReviewsPerCompany` to `0` and raise `maxPagesPerCompany` if needed. Later pages hold up to 150 reviews each. In our tests, all 5,585 listed GEICO reviews were collected in about 2 minutes.

**Why do some reviews have `rating: null`?**
ConsumerAffairs doesn't display a star rating on some reviews, mostly older ones. The Actor returns what the page shows rather than guessing.

**Why is there no review title?**
ConsumerAffairs reviews don't have titles — only the review text. Use `topics` for a quick summary of what a review is about.

**Why aren't dates always in perfect order?**
ConsumerAffairs sorts by when a review was created, while the displayed date can differ by a few days. The Actor keeps the site's order. With `reviewsNewerThan`, it only stops after a whole page has no newer reviews, so these small differences don't cause missed reviews.

**Where are the company profiles?**
In the run's `companies` dataset (Storage tab in Console), so review and company rows each get a clean table. Every review row also includes `companyName`, `companyUrl`, and `category`. Set `includeCompanyProfile` to `false` to skip profiles.

**Why does the Actor use residential proxies?**
ConsumerAffairs is protected by PerimeterX, which blocks datacenter IPs. Residential IPs work, and the Actor switches IPs automatically when one gets blocked. The proxy cost is included in the price.

**Can I schedule runs and get alerts for new reviews?**
Yes. Schedule the Actor with `sortBy: "recent"` and `reviewsNewerThan`, then connect [integrations](https://apify.com/integrations) like Slack, Google Sheets, or Zapier.

**Can I use it with AI agents?**
Yes. Copy the AI assistant block above into ChatGPT, Claude, or Cursor, or connect the Actor through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

Found a bug or need a new field? Open an issue on the Actor's **Issues** tab — feedback is welcome.

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/consumeraffairs-scraper/changelog.md

# Actor input Schema

## `companyUrls` (type: `array`):

Add ConsumerAffairs company review pages, as full URLs (https://www.consumeraffairs.com/insurance/geico.htm) or paths (insurance/geico). Open a company on consumeraffairs.com and copy the address bar.

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

Maximum number of reviews to save for each company. Set 0 for no limit.

## `sortBy` (type: `string`):

Order in which reviews are collected, using ConsumerAffairs' own sort options.

## `ratingFilter` (type: `array`):

Collect only reviews with these star ratings. Leave empty for all ratings.

## `reviewsNewerThan` (type: `string`):

Keep only reviews published on or after this date. With 'Most recent' sorting the Actor stops paging as soon as it reaches older reviews, which makes recurring monitoring runs cheap.

## `includeCompanyProfile` (type: `boolean`):

Save one company profile per company (overall rating, total reviews, rating breakdown, accreditation, address, website, social links) to the 'companies' dataset.

## `maxPagesPerCompany` (type: `integer`):

Safety cap on review pages loaded per company (40+ reviews per page).

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

Global safety cap on page requests for the whole run, including retries.

## `debugSaveHtml` (type: `boolean`):

Save the raw HTML of every loaded page to the key-value store. Leave off for normal runs.

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

ConsumerAffairs uses PerimeterX bot protection. Residential proxies (US) are the default and recommended; datacenter proxies are blocked.

## Actor input object example

```json
{
  "companyUrls": [
    "https://www.consumeraffairs.com/insurance/geico.htm"
  ],
  "maxReviewsPerCompany": 20,
  "sortBy": "recent",
  "ratingFilter": [],
  "includeCompanyProfile": true,
  "maxPagesPerCompany": 50,
  "maxRequestsPerCrawl": 1000,
  "debugSaveHtml": false,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `reviews` (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 = {
    "companyUrls": [
        "https://www.consumeraffairs.com/insurance/geico.htm"
    ],
    "maxReviewsPerCompany": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/consumeraffairs-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 = {
    "companyUrls": ["https://www.consumeraffairs.com/insurance/geico.htm"],
    "maxReviewsPerCompany": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/consumeraffairs-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 '{
  "companyUrls": [
    "https://www.consumeraffairs.com/insurance/geico.htm"
  ],
  "maxReviewsPerCompany": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call parsebird/consumeraffairs-scraper --silent --output-dataset

```

## MCP server setup

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