⟶ ALPHA ENGINEER Build In Public

I Shipped 11 Scrapers in a Week — How I Picked Each Niche (With the Data)

By Alpha Engineer · July 2026 · 9 min read

Last week I published eleven web scrapers to a marketplace that pays developers a revenue share. This is not a "how I made $X" story — as of writing they have earned nothing, and the platform's own case studies say the first two months usually do. What I can share is the part nobody writes down: the data I queried before building each one, the three technical patterns that made most of them a single-evening job, and the mistakes that cost me hours.

The one question that decides everything

Every marketplace has the same shape: a handful of red-ocean targets everyone builds for, and a long tail nobody has touched. Building the twentieth Amazon scraper is a reliable way to earn nothing. So before writing a line of code, I asked one question per candidate site: how many competing tools already exist, and how many users do they have?

The marketplace exposes a public search API, so this is a twenty-line script rather than an afternoon of clicking. I ran it across roughly fifty candidate targets. The output sorted itself into two piles.

Red ocean — do not enter

Every one of these has more demand than my targets. Every one also has incumbents with reviews, ranking and years of uptime. A newcomer with zero reviews does not win that fight.

Empty — but is anybody buying?

Empty is only good news if the demand exists somewhere else in the same category. That is the second filter.

The filter I actually used

Empty niche plus proven category demand elsewhere. Concretely: the Japanese restaurant directory had almost no competition, but a different Japanese restaurant site had three scrapers with 17, 26 and 44 users. That says buyers of Japanese restaurant data exist and are paying — they simply have not been offered this source. Same logic for the classifieds board: neighbouring resale marketplaces had 91 and 166 users, so the buyer persona (resale sourcing) was already proven.

Where the category showed no demand anywhere, I skipped the niche no matter how empty it looked.

Three technical patterns that did most of the work

1. The data is usually already JSON

Most modern sites server-render from a JSON payload embedded in the page. Framework-specific script tags carry the entire result set — descriptions, structured prices, geo coordinates — in a form that survives redesigns. On one site the search results alone carried 28 usable fields before I opened a single detail page. Parsing styled HTML should be the fallback, not the default.

2. Structured data blocks are the second-best source

Where there is no framework payload, detail pages very often carry a schema.org block for search engines: phone numbers, opening hours, postal addresses, posted dates. It is public, it is stable, and it exists specifically to be machine-read.

3. One site can be two sites

My favourite trap of the week: a classifieds site whose list pages are a decade-old server-rendered template while its detail pages are a modern framework app. The detail pages also contained a global variable belonging to the ad stack with almost the name I was looking for — it parsed cleanly and returned nothing useful. Two parsers, one site, and an hour lost to a decoy.

Four mistakes worth stealing

  1. "Not disclosed" is often the string "0". One site stores undisclosed salaries as "0", which is truthy in JavaScript. My first version happily published "0 - 0 per month" salary ranges. Coerce to a number and require it to be positive.
  2. Politeness beats retries. Two targets rate-limited me on the fifth rapid request. A 1.5-second gap between pages plus exponential backoff turned a failing export into a boring one.
  3. Test the defaults, not your favourite input. The marketplace runs every listing daily with its default input and flags it broken after three failures. My own monitoring checked a custom two-item input, which would have missed a broken default completely.
  4. Never pass non-ASCII through a Windows command line. One listing went live with a mangled Chinese title because the string travelled as a shell argument. Put non-ASCII values inside the script file.

What is live

Eleven scrapers across Taiwanese and Japanese job boards, marketplaces, rental portals and classifieds. A few of them:

The honest scoreboard

Revenue so far: zero. Eleven listings, a daily health check that runs every one of them, and a wait. The platform's published case study — 98 tools over six months — describes almost no income in months one and two, with the catalogue effect arriving around month five. I am one week in. Anyone telling you their marketplace listings printed money in week one is selling a course.

What I can say already is that the selection method held: every build took a single evening because I checked the data source before committing, and none of the eleven landed in a niche where an incumbent with hundreds of users was waiting. Whether that converts into revenue is the next three months' question, and I will publish that number too.

Free: The Faceless YouTube Starter Checklist

The exact setup behind a camera-free AI channel — tool stack, the order to wire it in, and the silent failure points that cost me weeks. Free, no email gate.

Get the free checklist →