Clutch Scraper avatar

Clutch Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Clutch Scraper

Clutch Scraper

Scrape B2B service providers from Clutch: agency name, rating, review count, hourly rate, minimum project size, team size, location, phone and service breakdown, with sponsored placements flagged.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Juan ignacio Veltri

Juan ignacio Veltri

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Clutch Scraper — B2B agencies with rates, team size and sponsored placements flagged

Scrape service providers from any Clutch directory: agency name, rating, review count, hourly rate, minimum project size, team size, city, phone, and the percentage breakdown of what each agency actually does.

The field nobody else returns

Half the providers at the top of a Clutch page are paid placements. Every row here carries isSponsored, so you can tell a ranking from an advert. On the page used to build this Actor, 25 of 49 listings were sponsored.

Without that flag, a Clutch export reads like a merit ranking when the top of it is inventory.


Quick start

{ "startUrls": ["https://clutch.co/agencies/digital-marketing"] }

Only agencies that earned their spot:

{
"startUrls": ["https://clutch.co/agencies/digital-marketing"],
"excludeSponsored": true,
"minRating": "4.5",
"minReviews": 25,
"maxPagesPerListing": 10
}

Find specialists, not generalists — Clutch publishes each agency's split of expertise:

{
"startUrls": ["https://clutch.co/developers"],
"serviceKeywords": ["Mobile App Development"],
"minReviews": 10
}

Filter on Clutch first (by location, budget, service) and paste the resulting URL — the Actor follows that exact list.


Input

FieldTypeDefaultDescription
startUrlsarraydigital marketing agenciesAny Clutch directory listing
maxPagesPerListinginteger3~49 providers per page
minRatingstringe.g. 4.5
minReviewsintegerPast agencies with a single glowing review
excludeSponsoredbooleanfalseDrop paid placements
onlyWithPhonebooleanfalseDrop providers with no phone
locationKeywordsarrayMatch against city or state
serviceKeywordsarrayMatch against the service breakdown
maxItemsinteger200Total cap. 0 = no cap
includeSeenbooleantrueOff = only providers not seen in previous runs

Output

{
"id": "clutch:25800",
"url": "https://clutch.co/profile/ignite-visibility",
"legalName": "Ignite Visibility",
"rating": 4.8,
"reviewsCount": 175,
"hourlyRate": "$100 - $149 / hr",
"minProjectSize": "$1,000+",
"employeesRange": "250 - 999",
"isSponsored": true,
"rank": 1,
"location": { "city": "San Diego", "state": "CA", "country": "US" },
"contact": { "name": "Ignite Visibility", "phones": ["6197521955"] },
"services": [
{ "name": "Search Engine Optimization", "share": 40 },
{ "name": "Advertising", "share": 10 },
{ "name": "Email Marketing", "share": 10 },
{ "name": "Pay Per Click", "share": 10 }
],
"website": null,
"taxId": null
}

services shares always add up to 100 — that is Clutch's own allocation of expertise, and it is the quickest way to tell an agency that does SEO from one that merely lists it.


Why this one holds up

Clutch marks its listings with schema.org microdataitemprop="ratingValue", priceRange, telephone, the full postal address. That exists so search engines can read the page, which means Clutch cannot change it without damaging its own traffic. The core of every row comes from there.

Only three things live outside it, because schema.org has no equivalent: team size, the service breakdown, and whether the placement is paid.


Notes and limits

  • Provider websites are not on listing pages. They live on each provider's own profile, which is a separate request per provider. website is therefore null — that is what the page publishes, not a gap in the extraction.
  • The fiscal fields are null (taxId, activityCode, foundedAt). They belong to the same company schema this Actor shares with tax-registry sources, and a services directory does not publish them.
  • Clutch is behind Cloudflare. This Actor runs through Apify's unblocking proxy, so you do not configure anything — but it is why runs are slower than a plain HTTP scraper, and why the default rate is conservative.
  • Providers with no rating are dropped by minRating, because claiming they pass a threshold they never published would misreport the filter you asked for.

Pricing

Pay per result. You are charged for providers that actually land in your dataset — filtered out and duplicate rows cost nothing.