This tutorial shows how to scrape GoodFirms service directory data into CSV with the GoodFirms Service Directory Scraper for UScraper. You will import the workflow, add service category URLs, set the export path, validate the rows, and handle verification or pagination issues.
Before you start
Prerequisites, scope, and GoodFirms policy checks
You need UScraper installed as a local desktop app, a few GoodFirms service directory URLs, and a folder where the CSV can be written. Start with one category from the GoodFirms service categories directory or a listing such as top web design companies, then expand after the first export checks out.
This guide is for supervised research exports from pages you can inspect in a browser. It is not a guide to bypass logins, CAPTCHA, verification prompts, paywalls, account areas, or private data. Before scaling, review the current GoodFirms Terms of Use, robots.txt, and Privacy Policy.
Technical access is not permission. Keep batches modest, collect only fields you need, document the purpose, and use approved routes when you need redistribution rights.
Workflow anatomy
What the GoodFirms service directory scraper does
The exported JSON workflow is the source of truth. It defines the input URLs, waits, consent-click helper, verification checks, row-building JavaScript, Structured Export columns, CSV path, and pagination loop. The flow is: Navigate -> wait -> accept simple prompts -> check verification -> build rows -> export -> click Next -> repeat.
CSV
10
Multi-URL
Next loop
Local QA
The template extracts visible listing-card data, not full profile-page detail. Use it for service discovery, vendor shortlists, market mapping, competitor scans, and first-pass B2B research.
| Export group | CSV columns | Why it matters |
|---|---|---|
| Company identity | company_name, profile_tagline, company_logo | Identify the provider and preserve its visible positioning. |
| Trust signals | rating, number_of_review | Filter companies by review depth before manual review. |
| Contact path | url_company | Open the provider website for verification or enrichment. |
| Firm metadata | firm_pricing, firm_employees, firm_founded, firm_location | Segment vendors by budget, scale, maturity, and geography. |
No CSV sample is bundled with this article. Use the export shape above plus the JSON workflow definition as the authoritative sample.
Runbook
How to scrape GoodFirms service directory pages to CSV
Import the template
Open GoodFirms Service Directory Scraper, download the JSON workflow, and import it into UScraper.
Add service category URLs
Replace or extend the sample Navigate URLs. Keep one clean GoodFirms category URL per input so append mode can combine categories without mixing source context.
Confirm waits and verification handling
Keep the page-load wait, retry path, and verification text checks for the first run. If a browser prompt appears, handle it before trusting the export.
Set the export path
In Structured Export, confirm goodfirms-scraper-service-directory.csv, headers enabled, append mode, and a project-specific local save folder.
Run one page, then scale
Export the first page, compare rows against the browser, then let the visible Next-page loop continue through the category when the CSV shape is correct.
After the first run, sort by company_name and url_company. Repeated rows usually mean the same provider appears in multiple categories or the run resumed after export.
Validation
Validate the GoodFirms CSV before using it
Treat validation as part of the workflow. Open the CSV beside the browser and check rows from the first, middle, and final page. Directory pages can change when cards, class names, lazy loading, or verification behavior changes.
| Symptom | Likely cause | Fix |
|---|---|---|
Empty company_name | The listing card did not render or verification interrupted the page | Handle the prompt, rerun one URL, and confirm rows appear in the browser. |
Missing url_company | The provider card did not expose an external website link | Treat it as optional or open the GoodFirms profile manually for review. |
| Blank rating or review count | GoodFirms changed the text pattern or locale | Inspect the live card and update the JavaScript extraction rule. |
| No rows on a valid category | Selector drift, blocked markup, or a category layout variant | Increase waits, test the category manually, and refresh row detection. |
| Pagination stops early | Next control text, disabled state, or class names changed | Inspect the visible Next button and update the pagination selector. |
Tool choice
GoodFirms scraper tools: local template, extension, script, or service
Searches for best GoodFirms scraper tools usually split into four paths: local templates, hosted no-code tools, browser extensions, and scripts. A generic data scraper extension or scraper extension can work for quick pulls, but GoodFirms pagination and dynamic cards often need a more explicit workflow. UScraper fits the analyst lane: a no-code or "nocoding data scraper" style flow where the operator can inspect blocks, set the export folder, and keep the CSV local.
Use hosted tools when the project needs scheduling, API-triggered runs, or outsourced delivery. Use a script when engineers need full control over rendering, retries, storage, monitoring, tests, and compliance gates.
FAQ
GoodFirms service directory scraper FAQ
GoodFirms service directory pages may be publicly visible, but automated collection can still be limited by GoodFirms terms, robots directives, copyright, privacy rules, contracts, and local law. Review the current policies, avoid access-control bypassing, keep runs modest, and get legal review before commercial reuse or redistribution.
Next step
Download the GoodFirms service directory scraper template
When you are ready to run the tutorial, download the JSON from GoodFirms Service Directory Scraper and keep this article open for QA. For adjacent workflows, browse all UScraper templates or return to the UScraper blog.

