Clutch Agency Lookup: agency directory & ratings API from $3/1k avatar

Clutch Agency Lookup: agency directory & ratings API from $3/1k

Pricing

from $2.28 / 1,000 agency profile founds

Go to Apify Store
Clutch Agency Lookup: agency directory & ratings API from $3/1k

Clutch Agency Lookup: agency directory & ratings API from $3/1k

Clutch.co agency profile lookup by URL or slug: rating, review count, min. project size, hourly rate, employee count, founding year, location, and service-line breakdown, straight from the agency's own Clutch profile. One row per agency. Never charged for a miss.

Pricing

from $2.28 / 1,000 agency profile founds

Rating

0.0

(0)

Developer

Adrian Voss

Adrian Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

You give this actor a list of Clutch.co agency profile URLs (or bare slugs). For each one, it fetches the agency's own Clutch profile and returns rating, review count, minimum project size, hourly rate band, employee count, founding year, headquarters location, and the service-line breakdown Clutch itself shows on the page — one flat row per agency, straight from the profile, no third-party database in between.

Who it's for

You're building a vetted shortlist of agencies — a marketing lead pulling comparison data on ten SEO firms before a pitch, an agency ops team tracking how its own Clutch rating and review count move month to month, or a procurement analyst screening vendors by hourly rate and minimum project size before a call gets booked. Any of those is normally a copy-paste-by-hand job across a dozen open tabs; here it's a list in, a table out.

Why this one

  • Reads the live profile, not a cached snapshot. Every run fetches the agency's current Clutch page — a rating that moved last week or a hourly-rate band the agency just updated shows up on the next run, not next quarter.
  • The full stat block in one row. Rating, review count, minimum project size, hourly rate, employee count, founding year, headquarters, and service-line mix — the same numbers Clutch puts in its own profile-summary widget, parsed straight out of it.
  • Never charged for a miss. A slug that doesn't resolve to a real profile, or a request that gets blocked, still returns a row explaining why — and costs nothing.
  • Bare slug or full URL, your choice. Paste thrive-internet-marketing-agency or https://clutch.co/profile/thrive-internet-marketing-agency — both normalize to the same lookup.

What you get

FieldTypeDescription
querytextThe URL or slug you submitted, echoed back
foundbooleantrue if a real agency profile was found
statustextOK on a match; NOT_FOUND or BLOCKED on a miss
messagetextPlain-English reason for a miss — only present when found is false
scrapedAtISO 8601 datetimeWhen the profile was fetched
nametextAgency name
urllinkAgency's own website (as declared on its Clutch profile)
ratingnumberOverall Clutch rating (out of 5)
reviewCountnumberNumber of Clutch reviews behind that rating
minProjectSizetextMinimum project size Clutch lists for this agency, e.g. $1,000+
hourlyRatetextHourly rate band, e.g. $100 - $149 / hr
employeestextEmployee count band, e.g. 10 - 49
foundednumberFounding year
locationtextHeadquarters city/country, as shown on the profile
servicesarrayService-line breakdown Clutch shows for this agency, e.g. ["Search Engine Optimization", "Pay Per Click"]
clutchUrllinkThe canonical clutch.co profile URL that was fetched

Deselect any field in the Input tab's column picker to drop it from every row — query, found, status, message, and scrapedAt always stay.

Price

Pay-per-event. A flat per-run fee covers session/proxy warmup; you're billed per item only when data is actually found and returned — see .actor/pay_per_event.json for exact prices. A miss is never charged.

1,000 agency lookups: ~$3 if every profile resolves, less for any misses, less again on a paid Apify plan. A miss — a bad slug, a profile that no longer exists, a blocked request — is never billed.

How to use

  1. In the Apify Console. Open the actor page and click Start — the profiles field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~clutch-agency-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"profiles":["thrive-internet-marketing-agency"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.
  1. Open the Input tab and paste your list of Clutch profile URLs or slugs into "Clutch.co agency profile URLs or slugs" — one per line.
  2. Leave "Try it first" on for your first run — it caps the run at 5 agencies so you can check the output shape before spending on the full list.
  3. Optionally narrow "Which columns do you want?" to just the fields you need, or set "Only keep rows containing" / "Skip rows containing" to filter by keyword (e.g. a service name or city).
  4. Turn "Try it first" off and press Start to run the full list.

Input

{
"profiles": [
"thrive-internet-marketing-agency"
]
}

One agency per line — a full clutch.co profile URL, or just the slug from it (the part after /profile/). Accepted formats: https://clutch.co/profile/thrive-internet-marketing-agency, thrive-internet-marketing-agency.

Sample output

queryfoundstatusnameurlratingreviewCountminProjectSizehourlyRateemployeesfoundedlocationservicesclutchUrlscrapedAt
thrive-internet-marketing-agencytrueOK<min. project size><clutch.co profile url>1970-01-01T00:00:00.000Z

A slug that doesn't resolve to a real profile gets a row with found: false and a status/ message explaining why, and is never charged.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~clutch-agency-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"profiles":["thrive-internet-marketing-agency"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~clutch-agency-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"profiles":["thrive-internet-marketing-agency"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~clutch-agency-lookup/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"profiles":["{{agency}}"]}, mapping the row's agency into the profiles array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "Clutch Agency Lookup: Ratings API from $3/1k" — the agent will find and run this actor.

Tips

  • Paste the bare slug (the part of the URL after /profile/) if you already have it — it saves nothing on price, but it's one less thing to copy correctly.
  • If a well-known agency comes back NOT_FOUND, double-check the slug against the agency's actual Clutch URL — Clutch slugs don't always match a company's common name (e.g. an agency doing business as "Foo Marketing" might be listed under a legal-entity-derived slug).
  • Run "Try it first" on a handful of agencies you already know the numbers for, to sanity-check the output against what you can see on the profile page yourself.
  • services reflects Clutch's own service-line percentages for that agency — useful for a quick "is this primarily an SEO shop or a web-design shop" read without opening the page.

vs. alternatives

What it costsWhat you getTrade-off
This actor (clutch-agency-lookup)$0.003 per found row (FREE tier, less on paid tiers), plus a $0.00005 actor start, nothing for a missOne row per agency — rating, reviews, minimum project size, hourly rate, employees, founded year, location, and service-line mix, read live from the agency's own Clutch profileOnly what the agency's own profile page shows; no historical rating trend and no full review text
memo23/apify-clutch-cheerioNot publicly priced per row (n/d)The closest existing Clutch scraper on Apify Store, 191 users, 4.60 ratingEstablished incumbent — this actor is the same category of extraction, priced per row instead
Doing it yourselfYour time + working around Clutch's Cloudflare gate on every requestThe same dataRate limits, a Cloudflare wall on a bare fetch, and re-testing selectors as Clutch's markup shifts are the maintenance burden this actor absorbs

Prices for third-party tools are their published list prices as of September 2026 and are not tracked here — check the vendor before relying on the comparison.

FAQ

Why is a row empty, or why does found say false? Either the slug doesn't match a real Clutch profile (status: NOT_FOUND) or the request was blocked (status: BLOCKED, usually a Cloudflare challenge). Check the message column for the specific reason. Neither is billed.

Am I charged for a miss? No. Actor.charge() only fires when a real agency profile is parsed. A bad slug or a blocked request produces a row (unless you turn on "Hide rows with no result") and costs nothing.

Is this a live check or a stored database? Live. Every run fetches the agency's current Clutch profile — there's no cached snapshot behind it. A rating or review count that changed since your last run will show the new value.

Do I need to configure proxies? No. Clutch fronts its profile pages with Cloudflare, so this actor ships with the UNBLOCKER proxy group as its default — there's nothing to set up unless you want to override it.

Can an AI agent call this directly? Yes. It's registered on the Apify MCP server — an agent in Claude, Cursor, or another MCP client can find and run it by name ("Clutch Agency Lookup"), or you can call the REST endpoint shown above from any script or workflow tool.