GoodFirms Scraper — Agencies, Rates & Reviews avatar

GoodFirms Scraper — Agencies, Rates & Reviews

Pricing

from $4.00 / 1,000 companies

Go to Apify Store
GoodFirms Scraper — Agencies, Rates & Reviews

GoodFirms Scraper — Agencies, Rates & Reviews

Scrape GoodFirms.co agency and software company directories and profiles: services, hourly rate, team size, founding year, location, rating, reviews and website. Built for B2B lead lists.

Pricing

from $4.00 / 1,000 companies

Rating

0.0

(0)

Developer

Trevor Ortega

Trevor Ortega

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Share

GoodFirms Scraper

Scrape GoodFirms.co directory listings and company profiles: services, hourly rate, team size, founding year, location, rating, review count, focus areas and website. Ideal for B2B agency and software vendor lead lists.

Give it any GoodFirms.co directory page (for example https://www.goodfirms.co/directory/languages/top-software-development-companies, https://www.goodfirms.co/companies/web-development-agency, a country or industry directory, or a filtered URL copied from the site) or a company profile URL. The Actor walks the directory page by page (48 companies each) and saves one clean record per company. Optionally it opens every profile for the full breakdown (service focus with percentages, industry and client focus, key clients, portfolio, typical project cost, all offices, business phone and email, social links, verification) and nests the client reviews.

No login, no browser. Export as JSON, CSV or Excel, or pull the dataset through the API into Google Sheets, a CRM or an LLM pipeline. You pay only for the companies you get.

See also: Clutch Scraper - the same fields and pricing for Clutch.co, so you can merge both directories into one lead list.

What data does GoodFirms Scraper extract?

Every company record (directory pages, charged as result):

FieldDescription
name, slug, idCompany name, GoodFirms slug and numeric GoodFirms company id
profileUrlGoodFirms profile URL
websiteUrlThe company's own website as linked by GoodFirms (utm tags removed, never visited)
logoUrlLogo image
rating, reviewCountGoodFirms rating (1-5) and number of reviews
hourlyRate, hourlyRateMin, hourlyRateMaxPublished hourly rate band ("$25 - $49/hr") plus parsed numbers
employees, employeesMin, employeesMaxTeam size band ("50 - 249") plus parsed numbers
foundedYearFounding year
location{text, city, region, country, countryCode, street, postalCode} of the headquarters
phoneBusiness phone number GoodFirms publishes for the company
isVerified, verificationLevel, badgesGoodFirms verification (e.g. pro for "Pro Verified") and badges
summaryShort company description from the directory card
aiTools, whyChooseUsAI tools the company says it uses, and its "Why choose us" bullets
topReviewHighlighted review on the card: {text, reviewerName, reviewerRole, rating, date} (reviewerName comes from the card's public structured data)
isSponsored, listingTypesponsored / organic (profile when started from a profile URL)
rank, page, positionOnPagePosition in the directory
serviceLinesService focus [{name, percent}] (filled when the profile is opened; directory cards do not show it)
sourceUrl, scrapedAtWhere and when the record was scraped

With Open each company profile (charged as detail, one extra request per company):

FieldDescription
description, taglineFull company description (and tagline when it differs from the name)
serviceLines, industries, clientsService focus, industry focus and client focus (small / medium / large business), each [{name, percent}]
keyClients, clientsCountNamed key clients
portfolioCount, portfolioNumber of portfolio projects and [{title, industry, budget, timeline, imageUrl}]
projectIndustries, projectCosts, projectTimelinesDistributions of past projects by industry, budget and duration
mostCommonProjectSize, typicalProjectTimelineMost common project budget and duration
locationsEvery office: {isHeadquarters, street, city, region, country, countryCode, postalCode, phone}
email, emailsCompany mailbox(es) published on the profile (generic business addresses such as info@ / sales@ only)
socialLinks{linkedin, facebook, twitter, instagram, ...}
ratingBreakdown, reviewSummary, topMentionsQuality / schedule / communication / overall averages, GoodFirms' review summary, most mentioned themes
aiTools[{name, purpose}]
partnerPrograms, certificationse.g. "AWS Partner", "Great Place To Work"
verifiedAt, legalEntityVerification date and registered entity (name, type, incorporation, location, country)

With Include reviews each company additionally carries reviews (up to Max reviews per company):

FieldDescription
id, title, textReview id, headline and full review text
rating, ratingsOverall score and {quality, communication, schedule}
projectName, summaryProject name and project summary
liked, improveWhat the client liked and what could be improved
servicesServices delivered in the project
projectSize, projectCostMin, projectCostMax, projectStatusBudget band ("$10,001 to $50,000") and status ("Completed")
reviewerNameReviewer's display name as GoodFirms shows it (often first name + last name or initial; "Anonymous" when the reviewer chose that); null if missing
reviewerRole, reviewerCompany, reviewerIndustryWho hired the company (role, client company, industry)
isVerified, dateVerified flag and ISO date

GoodFirms has no reviewer profile pages, reviewer ids or reviewer LinkedIn links, so only the shown name is available. The executive-interview person and personal mailboxes are deliberately not collected.

How to use GoodFirms Scraper

  1. Paste one or more GoodFirms.co URLs into Start URLs: a service directory (https://www.goodfirms.co/companies/web-development-agency), a country directory (https://www.goodfirms.co/directory/country/top-software-development-companies/us), an industry directory (https://www.goodfirms.co/top-software-development-companies/healthcare), a filtered URL copied from your browser, or a company profile (https://www.goodfirms.co/company/empat).
  2. Set Max companies to cap the run and the cost.
  3. Turn on Open each company profile and/or Include reviews if you need the deep data.
  4. Click Start. Results appear in the Dataset tab; export from there or use the API.

Input example

{
"startUrls": [
{ "url": "https://www.goodfirms.co/directory/languages/top-software-development-companies" },
{ "url": "https://www.goodfirms.co/companies/web-development-agency?employees=50+-+249" }
],
"maxItems": 200,
"includeProfileDetails": true,
"includeReviews": true,
"maxReviewsPerCompany": 20
}

Output example

{
"type": "company",
"id": "105165",
"slug": "empat",
"name": "Empat",
"profileUrl": "https://www.goodfirms.co/company/empat",
"websiteUrl": "https://empat.tech/",
"rating": 5.0,
"reviewCount": 79,
"hourlyRate": "$25 - $49/hr",
"hourlyRateMin": 25,
"hourlyRateMax": 49,
"employees": "50 - 249",
"foundedYear": 2013,
"location": { "text": "Miami, United States", "city": "Miami", "region": "Florida", "country": "United States", "countryCode": "US", "street": "360 Northwest 27th Street", "postalCode": "33127" },
"phone": "+16282010783",
"email": "hello@empat.tech",
"serviceLines": [
{ "name": "Mobile App Development", "percent": 30 },
{ "name": "Web Development", "percent": 30 },
{ "name": "Software Development", "percent": 20 },
{ "name": "Artificial Intelligence", "percent": 20 }
],
"industries": [{ "name": "Healthcare", "percent": 30 }, { "name": "Social", "percent": 30 }],
"clients": [{ "name": "Small Business", "percent": 40 }, { "name": "Medium Business", "percent": 50 }, { "name": "Large Business", "percent": 10 }],
"keyClients": ["Porsche", "Panasonic", "Transparency International"],
"portfolioCount": 12,
"mostCommonProjectSize": "$50001 to $100000",
"isVerified": true,
"verificationLevel": "pro",
"badges": ["Pro Verified"],
"listingType": "organic",
"rank": 3,
"sourceUrl": "https://www.goodfirms.co/directory/languages/top-software-development-companies",
"scrapedAt": "2026-10-05T12:00:00Z",
"reviews": [
{
"id": "92867",
"title": "Strong technical execution with thoughtful UX",
"rating": 5.0,
"ratings": { "quality": 5.0, "communication": 5.0, "schedule": 5.0 },
"projectName": "Web Redesign, Development & E-Commerce Development for Mountain Resort",
"services": ["Web Development", "App Designing (UI/UX)", "E-commerce Development"],
"projectSize": "$10,001 to $50,000",
"projectCostMin": 10001,
"projectCostMax": 50000,
"projectStatus": "Completed",
"reviewerName": "Butsiak Romana",
"reviewerRole": "CMO",
"reviewerCompany": "Mountain Resort",
"reviewerIndustry": "Other Industries",
"isVerified": true,
"date": "2026-08-25"
}
]
}

How to scrape a GoodFirms category, country or filtered list

Any directory URL works: service categories (/companies/web-development-agency, /directory/marketing-services/top-digital-marketing-companies), language and platform directories (/directory/languages/top-software-development-companies), country directories (/directory/country/top-software-development-companies/us) and industry directories (/top-software-development-companies/healthcare). Apply the filters on goodfirms.co (team size, hourly rate, services, industry, client type) and paste the resulting URL; the Actor keeps the query string and follows the site's own pagination, so one run can export a full category. Set Max companies to stop early.

How to get a company's website, phone and email from GoodFirms

websiteUrl comes straight from the directory card (GoodFirms links the vendor site directly; only utm_* tags are removed) and phone is the business number GoodFirms publishes. With Open each company profile, you also get every office with its phone and the company mailbox from the profile. Only generic business mailboxes (info@, sales@, hello@ and similar) are kept; addresses that look like a person's own mailbox are dropped.

How to scrape GoodFirms reviews

Turn on Include reviews and set Max reviews per company. The profile page carries the first 15 reviews; each further 15 reviews cost one more page request. Reviews come nested inside the company record with sub-ratings, review text, project name and summary, what the client liked and what to improve, project cost and status, and the reviewer's display name, role, company and industry.

Does it work without login or proxies?

Yes. GoodFirms pages are public and server-rendered, so no login and no browser are needed. Apify Proxy is on by default for reliability on long runs; you can turn it off for small runs. Profile pages are large, and datacenter proxies sometimes time out on them and get retried, which slows the run. If you see 403 errors or want faster profile runs, switch the proxy to the RESIDENTIAL group (it costs more proxy traffic).

Pricing

Pay per company: a result event for every company saved ($0.004), plus a detail event ($0.014) for every company whose profile page was opened (nested reviews included, no separate review charge). So 1,000 companies from listings cost $4, and 1,000 full profiles with reviews cost $18. No start fee and no subscription; Apify's free plan is enough to try it.

Integrations and API

Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the API tab for ready-made snippets.

This Actor collects only data that GoodFirms.co shows publicly without a login (company profiles, rates, ratings, business contact details and published reviews). Reviews include the reviewer's display name as GoodFirms publishes it, which is personal data under GDPR and similar laws. The Actor does not collect the names of company executives or personal email addresses. You are responsible for how you use the data and for complying with GoodFirms' terms and applicable law, including GDPR/CCPA where relevant (for example, have a lawful basis before storing or contacting reviewers).

Support

Found a bug or need a field added? Open an issue in the Issues tab; it is usually answered within a day.