ParseForge Scrapers

GoodFirms Companies Directory Scraper

parseforge/goodfirms-companies-scraper

Lead generation

Scrapes GoodFirms company profiles from any category slug. Returns each company as a flat row with rating, reviews, location, and service details. Filter by country and minimum rating.

Run this scraper See the API call
Total users
1
Monthly active
0
Total runs
87
Bookmarked
0
Rating
Not rated yet
Last modified
9 days ago

Overview

ParseForge

GoodFirms Companies Directory Scraper

Scrape GoodFirms company profiles from any category, filtered by country and rating, up to a million per run. Every company comes with its name, rating, reviews, hourly rate, location, and service details. Export to CSV, JSON, Excel, or XML.

GoodFirms is a B2B directory of IT service providers, but manually copying company lists for lead generation or market research is slow and repetitive. This Actor reads the public category listings directly, applies your country and minimum rating filters, and returns each matching company in a consistent flat schema. No API key or browser automation needed.

Who uses it What they scrape GoodFirms for
B2B sales teams Build targeted lead lists of IT agencies filtered by country and minimum rating.
Market researchers Analyze the competitive landscape of service providers in a specific category.
Recruitment agencies Identify top-rated companies in a niche to source potential clients or partners.
Business analysts Track the distribution of ratings and hourly rates across different service categories.

What it does

This Actor collects GoodFirms company profiles by category slug and returns each one as a flat row with its rating, reviews, location, and service details.

  • ๐Ÿข Category-driven scraping: Provide a category slug like "mobile-app-development" and the Actor discovers all listed companies.
  • ๐ŸŒ Country filter: Narrow results to companies in a specific country, so you only get relevant local providers.
  • โญ Minimum rating threshold: Set a floor rating from 0 to 5 and only collect companies that meet your quality bar.
  • ๐Ÿ“Š Structured output: Each company is returned as a flat row, ready for analysis in spreadsheets or databases.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with GoodFirms data

๐ŸŽฏ Generate a lead list of top mobile app developers.

A sales manager scrapes the "mobile-app-development" category, sets minRating to 4.5 and country to "United States", and exports a CSV of highly-rated prospects for outreach.

๐Ÿ“ˆ Compare hourly rates across categories.

A business analyst runs the Actor on multiple category slugs, collects the hourly rate field, and builds a pricing benchmark report for procurement.

๐ŸŒ Map the geographic distribution of a service niche.

A market researcher scrapes the "ai-development" category without a country filter, then groups the results by location to identify regional hubs.

โญ Monitor new entrants with high ratings.

An investor sets a high minRating and runs the Actor weekly on a category, tracking which new companies appear with strong initial reviews.

Why choose this scraper

What you get
No API registration Reads the public directory pages directly, no OAuth or API key required.
Flexible filtering Combine category, country, and rating filters to target exactly the companies you need.
Scalable collection Collect up to a million companies per run, limited only by what the category contains.
Fixed output schema Every run returns the same fields, making it easy to merge datasets over time.

How it compares

This Actor focuses on fast, filterable company directory extraction by category, while other GoodFirms scrapers may include reviews or enriched profiles.

Feature ParseForge GoodFirms Scraper - Agency Reviews GoodFirms Company Scraper - Low-cost Goodfirms Scraper
Category-based scraping Yes, by category slug Not listed Not listed Yes
Country filter Yes Not listed Not listed Not listed
Minimum rating filter Yes Not listed Not listed Not listed
Hourly rate extraction Yes Not listed Yes Yes
Multi-office address extraction Not listed Not listed Not listed Yes
Review text extraction Not listed Yes Yes Yes

Configure the run

Drive the Actor with a GoodFirms category slug, and optionally filter by country and minimum rating so only matching companies reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
 "category": "mobile-app-development",
 "maxItems": 10
}

A larger pull:

{
 "category": "mobile-app-development",
 "maxItems": 200
}

Pricing

Pay-per-result: $0.0085 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $0.85
1,000 results $8.50
10,000 results $85.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the GoodFirms Companies Directory Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to GoodFirms through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/goodfirms-companies-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check that your category slug is correct by visiting the GoodFirms category page in a browser. Also verify that your country filter and minRating are not too restrictive for that category.

The Actor returns fewer companies than maxItems.

This is normal if the category has fewer companies than your maxItems value, or if your country and rating filters reduce the pool. Try removing the optional filters to see the full list.

I get an error about an invalid category slug.

Ensure the slug matches exactly what appears in the GoodFirms URL. It is case-sensitive and should not include slashes or the full URL, only the slug part.

The run is slow for large categories.

The Actor respects GoodFirms' servers by pacing requests. For very large categories, increase the run timeout in your Apify settings rather than trying to speed up the Actor itself.

Some company fields are empty in the output.

GoodFirms profiles do not always have every field populated. If a company has not listed its hourly rate or employee count, those fields will be empty in your dataset.

FAQ

Question Answer
What is a GoodFirms category slug? It is the last part of the URL when you browse a category on GoodFirms, for example "mobile-app-development" in the URL goodfirms.co/directory/category/mobile-app-development. You provide this slug in the input.
Can I scrape multiple categories in one run? The Actor processes one category slug per run. To scrape multiple categories, run the Actor multiple times with different slugs, or use an Apify workflow to chain the runs.
Does this Actor scrape company reviews? This Actor focuses on the company directory listing and profile data. It does not scrape individual review texts. For reviews, consider a dedicated GoodFirms reviews scraper.
How do I filter by country? Enter the country name in the optional "Country" input field. The Actor will only return companies whose listed location matches that country.
What happens if I set maxItems higher than the available companies? The Actor will collect all companies that match your filters and stop when the category listing is exhausted. It will not fail or return empty rows.
Is the rating filter applied before or after collection? The minimum rating filter is applied as the Actor reads each company, so only companies that meet the threshold are written to your dataset.
Can I get the company website and contact details? Yes, the Actor returns the profile data that is publicly visible on the GoodFirms listing, which typically includes the company website and contact information.
Do I need a GoodFirms account to use this Actor? No, the Actor reads the publicly accessible directory pages. No login, API key, or account is required.
What output formats are supported? You can export your results to CSV, JSON, Excel, or XML from the Apify dataset tab.
How often is the GoodFirms data updated? The Actor reads the live GoodFirms website each time it runs, so you always get the current data as it appears on the directory.

Related actors

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by GoodFirms. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
category string GoodFirms category slug (e.g. "mobile-app-development"). mobile-app-development
maxItems integer How many companies to collect per run. 10
country string Optional country filter. not set
minRating number Optional minimum rating (0 to 5). not set

Pricing

from $7.50 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.0075 to $0.0085

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~goodfirms-companies-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run GoodFirms Companies Directory Scraper on Apify All scrapers