Capterra reviews
The Capterra scraper pulls product detail + review pages from capterra.com for a given list of product identifiers. Reviews are paginated server-side; the actor walks them while keeping the session fingerprint stable, parses both the embedded JSON-LD and the rendered DOM, and yields one dataset row per product header and per review.
Overview
- Worker
ultron-capterra-reviews- Runtime
- Python, anti-fingerprint Firefox engine, headless by default
- Targets
- Capterra product detail + paginated reviews
- Proxy
- Residential US (mandatory). Datacenter IPs trigger anti-bot.
- Defaults
- 25 reviews per product, 4000 ms per request, headless on
- Max reviews / product
- 500
- Webhook target
scraper-webhook.51ultron.com/apify
Pulled when an Ultron skill needs review signal for a vendor evaluation, a competitive teardown, or a buyer-intent enrichment for a CRM contact. Sibling to the G2 reviews scraper; the two share the same dataset row shape so downstream consumers can merge them on product identity.
Input schema
One required field, four knobs.
capterra.com/p/<capterraId>/<slug>/reviews/. Wrong slug for the right id returns a 200 with the wrong product. Validate inputs against a known-good source before firing at volume.Crawl flow
Five phases per product.
The actor reads JSON-LD first because it carries authoritative aggregateRating + reviewCount. The DOM walk that follows is the only path to per-review prose, so missing JSON-LD silently does not abort; the actor falls back to DOM-only product info and continues to reviews.
Output shape
One row per product header, then one row per review.
Anti-bot strategy
Capterra fronts DataDome. Datacenter IPs are blocked at the TCP layer.
| Defense | Counter |
|---|---|
| DataDome challenge | Anti-fingerprint Firefox engine bypasses the JS challenge with a real browser DOM. |
| IP reputation gating | Residential US proxy. Datacenter or non-US IPs trigger captcha walls. |
| Rate-limit per IP | 4000 ms per request with 50 percent jitter is the empirically safe floor. Below that, the actor hits soft-block within 50 requests. |
| TLS fingerprint sniffing | The anti-fingerprint browser exposes a Firefox ClientHello, not the default Python or Node TLS fingerprint. |
| Cookie consent gate | Auto-accepted on first page load with a deterministic click selector. |
Webhook contract
Terminal-status callback to the central scraper-webhook worker.
/docs/ingest/webhook.How to trigger it
From chat v2, a skill, or the orchestrator.
Direct chat: the user names a product set and any Ultron skill with the reviews-capture tool fires a single run with that product list. The actor name and dataset routing are baked into the skill metadata, so the model does not need to know the worker name.
From a scheduled task: a daily cron entry under the review-monitor schedule replays the workspace product set against the actor, so net-new reviews land in the brain within 24 hours.
From a multi-source run: the scraper orchestrator can fan out across capterra-reviews + g2-reviews + similarweb-bulk in parallel and merge their outputs into a unified competitor dossier.