How to fill a directory with data: scraping tools guide

How to Fill a Directory With Data (Without Typing It In)

An empty directory is not a directory. Nobody visits one, nobody pays to be listed on one, and Google has nothing to index.

So before you pick a theme or a platform, you need an answer to a less exciting question: where are the first few hundred listings coming from?

For most directories the answer is a scraper. This guide covers which one to use for which kind of source, what it costs to get started, and the clean-up step that decides whether Google keeps your pages or quietly drops them.

First, work out where your data already lives

The tool depends entirely on the source. There are four common ones.

1. Google Maps. Any local directory: dentists, coffee shops, dog groomers, wedding venues. Maps already has the name, address, phone, category, hours and rating for nearly every business you want.

2. A single list page. A trade association's member page, a conference's exhibitor list, a "top 100" article. The data is all on one or a few pages, laid out in a repeating pattern.

3. A site that fights back. Large platforms with logins, rate limits or bot detection. Normal scrapers get blocked after a few pages.

4. Many different websites. You have a list of company URLs and need something from each one: a description, a pricing page, a contact email.

Name your source before you choose a tool. Most frustration with scraping comes from using a tool built for one of these on another.

Which tool for which source

Google Maps

This is the most common case, and it has the most options.

  • Outscraper is built around Google Maps. You enter categories and locations, it returns a spreadsheet, and it can visit each business's website to find an email address. It is pay as you go, so a few hundred listings costs very little.
  • Bright Data has a pre-built Google Maps scraper and a free tier of 5,000 records a month. It only bills for records it actually delivers, so a failed run costs nothing. Each record includes Google's place_id, which matters for de-duplication (more on that below).
  • Apify is a marketplace of ready-made scrapers, with several Google Maps options. It's more flexible and more technical: you'll compare scrapers and their settings rather than fill in one form.

If Maps is your only source, start with Outscraper or Bright Data's free tier.

A single list page

  • Instant Data Scraper is a free Chrome extension. Open the page, click the extension, and it guesses the repeating pattern and exports a CSV. For a one-off grab of a member list, this is usually all you need.
  • Octoparse is a visual desktop scraper for when the list spans many pages, needs scrolling or clicking "next", or you want to run it again next month.
  • Browse AI lets you train a "robot" by clicking through the page once, then runs it on a schedule. Use it when the source changes and you want to know when it does, like a job board or an events list.

A site that blocks scrapers

  • ScraperAPI handles proxies, rotating IP addresses and CAPTCHAs, and hands you the raw page. You (or a developer) still write the part that pulls out the fields.
  • Bright Data covers some of the hardest targets (LinkedIn, Crunchbase, Instagram) with scrapers it maintains itself, and returns structured fields rather than HTML.
  • PhantomBuster focuses on social platforms like LinkedIn and Instagram. It's suited to directories of people or creators rather than local businesses.

Read the source's terms before scraping behind a login. Public business facts are one thing. Data you agreed not to copy when you created an account is another.

Many different websites

  • Firecrawl turns any web page into clean text or structured data, which suits feeding pages to an AI to write summaries or extract fields.
  • Scrapy is the free, open-source Python framework under a lot of custom scrapers. It has no limits and no pricing page, but it needs someone who writes code.
  • SerpApi returns Google search and Maps results as structured data, useful when you want to find the websites in the first place.

What it costs to get your first 500 listings

Less than people expect.

A local directory seeded from Google Maps fits inside Bright Data's free 5,000 records a month, or costs a few dollars on Outscraper's pay-as-you-go pricing. A list page scraped with Instant Data Scraper is free. Prices change, so check each tool's current pricing before you commit, but money is rarely the obstacle at this stage.

The real cost is your time cleaning the data, which is the next section.

The step that decides whether Google indexes your listings

Scraped data is raw material, not content. Publish it as-is and you get the most common directory failure there is. Search Console fills up with "Crawled, currently not indexed": Google visited the pages, decided they weren't worth keeping, and left.

That happens because a scraped listing usually says exactly what Google Maps or the business's own site already says. Google already has the original. Your copy adds nothing.

Here is the clean-up that changes that.

1. Remove duplicates using a stable ID, not the name. The same business often appears twice under two categories, or as "Joe's Plumbing" and "Joes Plumbing LLC". On Google Maps data, match on place_id. Elsewhere, match on the website domain.

2. Fix the formatting. Convert names from ALL CAPS, make phone numbers consistent, add https:// to bare domains and strip tracking parameters from URLs. Messy data makes the whole site look like spam.

3. Drop the listings you wouldn't recommend. A directory is a recommendation. Filter out closed businesses, listings with no website, and anything under a rating you'd stand behind. Three hundred good listings beat a thousand padded ones.

4. Write something the source doesn't say. For every listing, add at least one thing a visitor can't get from Google: who it suits, who it doesn't, a price range, what makes it different. That one line turns a copied record into a page worth indexing. If you have hundreds of listings, an AI can draft these from the business's website, but read them before you publish.

5. Don't copy creative content. Facts like names, addresses and hours are fine to aggregate. Descriptions, reviews and photos belong to someone else. Write your own descriptions and use the business's own images only when they give you permission, for example when they claim their listing.

6. Publish in batches. Five hundred pages appearing overnight looks like a content farm. Fifty a week, each one cleaned, looks like a site that's growing.

Keeping the data fresh

Businesses close, move and change their hours. A directory that's accurate at launch is wrong within a year.

The simplest way to keep it current is to re-run the same scraper every few months against the IDs you stored. Compare the new results with the old ones. A changed address or phone number means update the listing. A business that's gone from the results is probably closed and should come off your site.

To automate that, a workflow tool like n8n can run the scraper on a schedule, compare the results and flag the listings that changed.

A sensible first week

  1. Day 1: Write down your source and the fields your listing page needs. Don't scrape anything you won't display.
  2. Day 2: Run a 50-record test with the matching tool. Check every column.
  3. Day 3: Run the full scrape and remove duplicates.
  4. Days 4–5: Clean the data, filter out weak listings, and write the "who it's for" line for your first batch.
  5. Days 6–7: Publish the first 50 and watch Search Console over the following weeks.

Then repeat steps 4 and 5 weekly until you've worked through the list.

Compare the tools

Every scraper mentioned here has its own review in the scraping tools category, covering pricing, limits and who each one suits. If you haven't chosen a platform for the directory itself yet, start with the two questions that decide which directory tool you need.

If you'd rather have the whole thing built for you, data included, get in touch.

Enjoyed this article?

Share it with your network