GoodFirms Agencies & B2B Company Leads Scraper avatar

GoodFirms Agencies & B2B Company Leads Scraper

Pricing

from $17.00 / 1,000 results

Go to Apify Store
GoodFirms Agencies & B2B Company Leads Scraper

GoodFirms Agencies & B2B Company Leads Scraper

Scrape B2B agency and company leads from GoodFirms directories: company name, services focus, city and country, hourly rate, team size, founded year, rating, review count, website and profile URL. Filter by service category and location. Export to JSON, CSV or Excel.

Pricing

from $17.00 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

GoodFirms Agencies & B2B Company Leads Scraper

GoodFirms Agencies & B2B Company Leads Scraper

Here is one real result, with every field the actor returns:

{
"companyName": "Utility",
"serviceCategory": "Mobile App Development",
"location": "NYC, United States",
"city": "NYC",
"country": "United States",
"hourlyRate": "$150 - $199/hr",
"teamSize": "50 - 249",
"foundedYear": 2013,
"rating": 5,
"reviewCount": 18,
"website": "https://utility.agency",
"logoUrl": "https://assets.goodfirms.co/services/medium/utility.png?v=1786450569",
"description": "Utility is a trusted mobile app development company in the USA delivering high-quality custom iOS and Android applications. With years of industry experience, the team follows research-driven strategies and strong technical expertise to ensure efficient project execution.",
"highlights": "Award-winning digital products built with strategy | End-to-end mobile app and AI development team | From startup ideas to enterprise-ready products",
"topReview": "Connecting employers with top talent and job seekers with verified jobs in Australia.",
"topReviewRole": "Sen. Frontend Developer",
"sponsored": false,
"profileUrl": "https://www.goodfirms.co/company/utility",
"entityId": "10139",
"searchQuery": "Mobile App Development",
"searchLocation": null,
"aiProfileSummary": "Utility is a leading mobile app development company based in the USA, specializing in custom iOS and Android applications. With a focus on research-driven strategies and technical expertise, they cater to both startups and enterprises, delivering award-winning digital products.",
"aiLeadScore": 85,
"aiLeadTier": "hot",
"aiCategory": "Mobile App Development",
"aiTags": ["iOS Development", "Android Development", "Custom Applications", "Digital Products", "AI Development", "End-to-End Services", "Startup Solutions", "Enterprise Applications"],
"source": "GoodFirms",
"observedAt": "2026-08-14T07:57:33.324Z",
"error": null
}

The most complete GoodFirms agencies scraper available. It returns every firmographic field the B2B directory exposes for an agency, including hourly rate, team size, founded year, rating, review count, website and top review, plus optional AI add-ons that summarize, score and categorize each lead and an email enrichment add-on, and gives you service-category and country filters to target exactly the agencies you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the GoodFirms B2B directory by service category, optionally filtered by country, paginates through the ranked agency listings, and writes one normalized company lead per record to the run's dataset. Each record carries the company name, service category, location, hourly rate, team size, founded year, rating, review count, website, a top review and profile URL. An email enrichment add-on tries to find a public email for listings without one, and optional paid AI add-ons write a profile summary, score the agency as an outreach/partnership lead and categorize it.

Data covers agencies listed on GoodFirms worldwide. Fields the listing does not publish are returned as null; the actor never invents a value.

Quickstart

Open the actor, paste this into the input, and press Run. It returns 2 mobile app development agencies with the AI add-ons enabled.

{
"searchQueries": ["Mobile App Development"],
"maxAgencies": 2,
"withAiProfileSummary": true,
"withAiLeadScore": true,
"withAiCategorize": true
}

Pass several service categories in searchQueries, and optionally filter by country with locations.

Input reference

FieldTypeRequiredDefaultDescription
searchQueriesstring[]no["mobile app development"]One or more agency service categories to scrape. Use plain names like mobile app development, web development, seo.
locationsstring[]no["United States"]Optional list of countries to filter agencies by, using a country name (for example United States, United Kingdom).
maxAgenciesintegerno10Maximum number of agencies to collect across the whole run.
enrichContactsbooleannofalsePaid add-on. For each result without an email, attempt to find a public email. Off by default.
enrichContactsMaxintegerno50Cap how many results the enrichment add-on tries, to control add-on cost.
withAiProfileSummarybooleannofalsePaid add-on. Adds an AI-written agency profile per listing. Charged per agency processed.
withAiLeadScorebooleannofalsePaid add-on. Scores each agency 0-100 as an outreach/partnership lead with a hot/warm/cold tier. Charged per agency processed.
withAiCategorizebooleannofalsePaid add-on. Adds a normalized service category and keyword tags. Charged per agency processed.

AI and enrichment add-ons are disabled for free (non-paying) Apify users.

Output reference

One dataset item per agency. Types: string, integer, boolean, string[], or null when the source value is absent.

FieldTypeDescription
companyNamestringAgency name.
serviceCategorystringService category the agency was found under.
locationstringFull location string as published.
citystringCity parsed from the location, or null.
countrystringCountry parsed from the location, or null.
hourlyRatestringPublished hourly-rate band, for example $150 - $199/hr, or null.
teamSizestringTeam size band, for example 50 - 249, or null.
foundedYearintegerYear founded, or null.
ratingnumberAverage rating (0-5), or null.
reviewCountintegerNumber of reviews.
websitestringAgency website URL, or null.
logoUrlstringLogo image URL, or null.
descriptionstringAgency description text, or null.
highlightsstringHighlighted selling points, or null.
topReviewstringText of the top review, or null.
topReviewRolestringRole of the top reviewer, or null.
sponsoredbooleanWhether the listing is a sponsored placement.
profileUrlstringCanonical GoodFirms profile URL.
entityIdstringGoodFirms internal company ID.
searchQuerystringThe service category that produced this record.
searchLocationstringThe country filter that produced this record, or null.
aiProfileSummarystringAI add-on. Short agency profile (only when withAiProfileSummary).
aiLeadScoreintegerAI add-on. 0-100 lead score (only when withAiLeadScore).
aiLeadTierstringAI add-on. hot, warm or cold.
aiCategorystringAI add-on. Normalized service category (only when withAiCategorize).
aiTagsstring[]AI add-on. Keyword tags.
sourcestringAlways GoodFirms.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Example output record

Real record from a live run (input {"searchQueries": ["Mobile App Development"], "maxAgencies": 2, "withAiLeadScore": true, "withAiCategorize": true}):

{
"companyName": "Utility",
"serviceCategory": "Mobile App Development",
"location": "NYC, United States",
"city": "NYC",
"country": "United States",
"hourlyRate": "$150 - $199/hr",
"teamSize": "50 - 249",
"foundedYear": 2013,
"rating": 5,
"reviewCount": 18,
"website": "https://utility.agency",
"highlights": "Award-winning digital products built with strategy | End-to-end mobile app and AI development team",
"sponsored": false,
"profileUrl": "https://www.goodfirms.co/company/utility",
"entityId": "10139",
"searchQuery": "Mobile App Development",
"aiLeadScore": 85,
"aiLeadTier": "hot",
"aiCategory": "Mobile App Development",
"aiTags": ["iOS Development", "Android Development", "Custom Applications", "Enterprise Applications"],
"source": "GoodFirms",
"observedAt": "2026-08-14T07:57:33.324Z",
"error": null
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~goodfirms-agencies-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["Web Development"],"locations":["United States"],"maxAgencies":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~goodfirms-agencies-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchQueries":["SEO"],"maxAgencies":100,"enrichContacts":true}'

Apify CLI:

apify call scrapers_lat/goodfirms-agencies-scraper \
--input '{"searchQueries":["Mobile App Development"],"maxAgencies":50}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per agency returned (result event). See the pricing tab for the current per-result price.
  • Optional add-ons. Email enrichment and each AI add-on (ai_profile_summary, ai_lead_score, ai_categorize) are billed only when they produce usable output for an agency.
  • No charge on failure. If a run errors, the actor writes a single item with a populated error field and does not charge for it. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results and add-ons.
  • Free Apify plans are capped at 10 agencies per run and cannot use the AI or enrichment add-ons. Upgrade for higher maxAgencies and add-ons.

FAQ and troubleshooting

A run returned 0 records. Why? The service category or country matched nothing. Check the category spelling. Zero-result runs are not charged.

How do I get email addresses? Turn on enrichContacts. For agencies without a published email, the add-on tries to find a public one.

Can I search several categories at once? Yes. Pass multiple items in searchQueries; each runs its own search up to maxAgencies.

Why are some fields null? GoodFirms does not publish every field for every agency. Missing values are returned as null, never invented.

What do the AI add-ons add? withAiProfileSummary adds a short profile, withAiLeadScore adds a 0-100 lead score and tier, and withAiCategorize adds a normalized category and tags. All require a paid Apify plan and are billed only when they produce output.

Is this an official GoodFirms tool? No. This actor is independent and has no affiliation with GoodFirms. It reads only data that is publicly available on the directory. Use it in accordance with the site's terms of service.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with GoodFirms. Accesses only publicly available directory data. Use in accordance with the site's terms of service.