PROGRAMMATIC SEO CASE STUDY

Programmatic SEO Case Study: 0 to 34K Monthly Organic Traffic on a Brand-New Domain

5,210
Pages indexed by Google (GSC)
2.11M
Impressions in 7 weeks (GSC)
34K
Monthly organic traffic (Ahrefs est., Oct 2026)

Client: Linkscope · Service: Programmatic SEO · Stack: React SSR (Vike) · Indexed from: May 2026 · Data checked: 5 October 2026

The Challenge: A Brand-New Site With Zero Authority

Linkscope is a white-label link building marketplace. Its inventory spans thousands of publisher websites, each with its own authority, traffic, pricing and delivery terms. The catch: it was a brand-new domain. No backlink history, no brand searches, no organic footprint to build on.

The demand was already there. People search "guest post on [site]" or "buy a backlink on [site]" before they buy, and thousands of those searches happen every month across the catalog. Linkscope had no pages capturing any of it.

With thousands of sites to cover, the usual playbook didn't fit. Writing a unique page for each by hand would take a content team months. Paid ads could buy clicks, but the spend wouldn't compound and would stop the moment the budget did. Doing nothing meant leaving high-intent searches on the table every month.

The brief: capture existing, high-intent search demand across thousands of sites, fast, and at a cost that makes sense for a site starting from zero.

The Strategy: Programmatic SEO, Done Right

Programmatic SEO means generating pages at scale from a structured data source instead of writing them one at a time. Done badly, it produces thousands of thin, near-identical pages that Google crawls, ignores and drops. Done right, every page earns its place.

The rule going in: Google indexes pages that deserve to be indexed. So the goal wasn't volume for its own sake. It was one genuinely useful page per publisher, each answering a question a buyer is already asking.

Each page profiles one real website in the inventory: its Domain Rating, Domain Authority, monthly traffic, dofollow and permanent status, delivery time, price, accepted content types, and a clear path to buy. That distinct, useful data on every page is what separates this from doorway-page spam, and it's why the pages indexed.

Want Programmatic Pages That Actually Index?

Our programmatic SEO service builds useful pages at scale, not doorway junk.

See the Service

The Build: ~8,000 Pages, One Per Site

Live Linkscope site page showing per-site data: Domain Rating, DA, traffic, delivery time, price and buy button

Two templates, one for site pages and one for niche pages, populated from a structured dataset, produced roughly 8,000 pages. From there the focus shifted to the part most programmatic projects underestimate: getting the pages crawled and indexed. The next four sections show how.

~8,000
Pages published
1 / site
Unique page per publisher
3
Schema types per page
40
Niche hub pages

How It's Built: Server-Rendered From the First Request

A lot of programmatic builds stall at indexing for a reason that has nothing to do with content. The site is a JavaScript app, the server sends an empty shell, and Googlebot has to queue every URL for rendering before it sees a single word. At 8,000 URLs, that queue becomes the project.

Linkscope's directory is a React app, but Googlebot never gets a shell. Every page is rendered on the server first.

Layer What we used
Framework React with Vike, built on Vite.
Rendering Server-side rendering. The HTML response already contains the publisher's metrics, prices, accepted content types, FAQ and JSON-LD. React then hydrates the page for filters and checkout.
Navigation Client-side routing after the first load, so buyers move between niche and site pages quickly. Any URL Googlebot requests directly still returns full HTML.
Templates One route template for site pages (/websites/[slug]/) and one for niche pages (/niches/[niche]/).
Data A headless data layer feeds both templates. Prices, metrics and niche rules live in the data, not in page code, so one change to a publisher record updates its page, its niche listing and its schema at the same time.

You can check this yourself: open view-source on any Linkscope site page and search for application/ld+json.

The Schema: Why These Aren't Doorway Pages

A doorway page exists to catch a search and pass the visitor somewhere else. Each Linkscope site page describes one thing a buyer can purchase, and its structured data says so in a form Google can read. Every site page carries three schema types, generated from the same publisher record as the visible content:

Type What it carries
Product The listing as a purchasable product: an Offer with the USD price, plus additionalProperty values for Ahrefs DR, Moz DA and turnaround time.
FAQPage The page's buyer questions (metrics, pricing, accepted content, delivery, link type), each answered from the publisher record.
BreadcrumbList Niches hub, then the publisher's niche, then the site page. Built from the niche field in the data.

The Product block from the portotheme.com page, trimmed:

{
  "@type": "Product",
  "@id": "https://linkscope.io/websites/portotheme-com/#product",
  "name": "Guest Post Placement on portotheme.com",
  "description": "portotheme.com is a verified en-language Marketing publisher on Linkscope. Moz DA 70, Ahrefs DR 90, around 6K monthly visits. All backlinks placed are DoFollow and permanent, delivered within 2 working days with a verified live URL.",
  "image": "https://linkscope.io/niches/Guest%20Post%20on%20Site.webp",
  "category": "Marketing",
  "additionalProperty": [
    { "@type": "PropertyValue", "name": "Moz DA", "value": "70" },
    { "@type": "PropertyValue", "name": "Ahrefs DR", "value": "90" },
    { "@type": "PropertyValue", "name": "Monthly Traffic", "value": "6K" },
    { "@type": "PropertyValue", "name": "Turnaround Time", "value": "2 working days" },
    { "@type": "PropertyValue", "name": "Backlink Type", "value": "DoFollow" },
    { "@type": "PropertyValue", "name": "Link Validity", "value": "Permanent" },
    { "@type": "PropertyValue", "name": "Language", "value": "en" }
  ],
  "brand": { "@id": "https://linkscope.io/#organization" },
  "offers": [
    {
      "@type": "Offer",
      "name": "Guest Post",
      "description": "Permanent DoFollow guest post on this publisher",
      "price": "280.00",
      "priceCurrency": "USD",
      "availability": "https://schema.org/InStock",
      "seller": { "@id": "https://linkscope.io/#organization" }
    }
  ]
}
Schema Markup Validator Test on a Linkscope site page detecting Product snippet and Breadcrumb structured data with no errors

FAQPage won't show up as a rich result here. Since 2023 Google only shows FAQ rich results for a small set of government and health sites. We keep it in the markup because it gives search engines and AI answer engines a clean, structured answer to each buyer question.

Internal Linking: Three Levels, Built From Data

Niches hub Niche page Site page
/niches/ /niches/marketing/ /websites/portotheme-com/
Links to all 40 niches Lists 176 publishers, links to each Breadcrumb back to niche and hub

The hub links to every niche. Each niche page lists its publishers, links to every site page in it, and links across to related niches. Each site page links back up to its niche and the hub through the breadcrumb.

The breadcrumb is built from the publisher's niche field in the dataset, not parsed from the URL. Site URLs are flat (/websites/portotheme-com/), so a URL-based breadcrumb would skip the niche level and leave thousands of pages hanging off a generic list. Building it from data puts every site page directly under its niche, in the visible breadcrumb and in the BreadcrumbList schema alike.

How 5,210 Pages Got Indexed

"Submit a clean sitemap" is advice everyone gives. Here is what the setup actually looks like, and what Googlebot does with it.

One dedicated sitemap for the directory

All site pages sit in one sitemap, /websites/sitemap.xml, separate from the WordPress sitemaps that cover the blog and service pages. It now lists 9,636 URLs, well under Google's 50,000-per-file limit, so splitting it wasn't needed. Keeping it separate means Search Console reports the directory's indexing on its own, with no blog posts mixed in. Google reads it regularly; the last read was 4 October 2026.

What Googlebot does on the site now

Search Console keeps only 90 days of crawl data, so the launch window is no longer in the report. Over the most recent 90 days (7 July to 3 October 2026), Googlebot made 20.5K crawl requests across linkscope.io, around 230 a day, with an average response time of 358 ms.

  • 84% of requests returned 200 OK. The pages Google asks for are there and load fast.
  • 94% of crawls are refreshes, 6% are discovery. Google already knows the directory and keeps coming back to recheck it. The discovery share covers new publishers added since launch, as the catalog grew past 9,600 pages.
  • 50% of requests are HTML, 13% are JavaScript. Google fetches the scripts to render the page, but because every page is server-rendered, the content and schema are already in the HTML it gets on the first request.
  • 8% of requests hit a 404. On a catalog where publishers come and go, this is the number to watch: a removed listing should redirect to its niche page, not end in a dead link.
Google Search Console crawl stats for linkscope.io, 7 July to 3 October 2026
Indexing Is the Hard Part. We Handle It.

Server-rendered pages, schema that matches the content, and a link structure built from data. Our technical SEO service builds that architecture for your site.

Explore Our Technical SEO Service

The Results: 0 to 34K Monthly Organic Traffic

Search Console first picked up the directory in late April 2026. Indexing took off in mid-May: within days, thousands of site pages moved from "not indexed" to indexed, and by early June Search Console reported 5,210 indexed out of ~8,000 known pages.

5,210
Indexed by Google (GSC)
~65%
Index rate
2.11M
Impressions, 12 May to 30 June 2026 (GSC)
5,120
Clicks, same period (GSC)
Google Search Console page indexing report showing 5,210 Linkscope pages indexed and 2.8K not indexed

Impressions climbed from about 6K a day in mid-May to around 95K a day by the end of June. Clicks grew from roughly 70 a day to a high of around 180. The gap between the two is the honest part: average position over the period was 11.4, so most pages were showing on page two, and CTR sat at 0.2%. The pages were visible to Google long before buyers were clicking them.

Google Search Console performance report for Linkscope showing 5.12K clicks and 2.11M impressions from 12 May to 30 June 2026

Ahrefs tells the same story from the outside. Its estimate of monthly organic traffic sat at zero from October 2025 until May 2026, then climbed past 8,000 in June.

What Happened After June

Growth didn't stop at launch, but it wasn't a straight line either. Ahrefs' monthly estimate rose to around 19K in mid-August, fell back to about 7K in early September, then jumped to 34,337 on 3 October 2026. We don't yet know how much of that October jump will hold, and we'll update this page when we do.

Ahrefs organic traffic estimate for Linkscope rising from zero in May 2026 to 34K monthly visits in October 2026

The directory has kept growing too. It lists 9,636 site pages as of 5 October 2026.

Why It Worked

Three principles did the heavy lifting, and they transfer to any programmatic play.

Useful pages, not doorway junk

Real, distinct data on every page is the entire game. Google indexed these because they answer a real search, not because of volume. Swap the data for a keyword-spun template and the same 8,000 pages would have been crawled and dropped.

Indexing is the bottleneck, not publishing

Anyone can publish 8,000 pages. Getting them crawled and indexed is where projects stall, and the gap between ~8,000 published and 5,210 indexed is the work. Server-rendered HTML, schema generated from the same record as the page, one dedicated sitemap and a three-level link hierarchy moved that number more than anything else.

The intent already existed

We didn't manufacture demand or gamble on keywords. We found a question people already type before buying, "is this site worth a backlink?", and answered it thousands of times over.

The Honest Caveats

We report what the data actually shows, including the parts a polished case study usually rounds away:

Estimate vs. measured.

Ahrefs figures on this page are estimated monthly visits for the whole linkscope.io domain, not daily visits and not only the directory. The measured numbers come from Search Console: 5,210 indexed pages, 2.11M impressions and 5,120 clicks between 12 May and 30 June 2026.

Visible before clicked.

2.11M impressions turned into 5,120 clicks, a 0.2% CTR at an average position of 11.4. Indexing gets a page into the results; moving it from page two to page one is the next job.

Not everything indexed.

Roughly 35% of known pages (about 2,800) weren't indexed. Which ones, and what we changed, is in Where the Other 35% Went.

The curve isn't a straight line.

Traffic rose, dipped in early September, then jumped in October. Fresh programmatic pages stay volatile while Google keeps evaluating them, and the dips are part of the real story.

"Isn't this just doorway pages?"

Fair question. The answer is the per-page data and the schema that describes it: each page carries real, distinct information a buyer needs, marked up as a product they can buy. That's the line between programmatic SEO and spam.

Key Takeaways

1

Useful pages, not doorway junk.

Real, distinct data per page is what gets you indexed. Volume alone gets you dropped.

2

Indexing is the real bottleneck.

Publishing is easy. Server-rendered pages, schema that matches the visible content, and a link hierarchy built from data are what get pages crawled and indexed at scale.

3

Answer demand that already exists.

The strongest programmatic plays capture searches people already make, not keywords you hope they'll start making.

4

A brand-new domain can scale fast with the right architecture.

Zero authority isn't a hard ceiling. Thousands of useful, well-linked pages earned 2.1M impressions within seven weeks of indexing.

5

Report estimates as estimates, and report what came after.

Anchor public claims to dated Search Console numbers. Label Ahrefs as a monthly estimate. Show what happened after launch, not just the best day.

Got a Site With Untapped Search Demand?

We'll map the programmatic opportunity for your niche: the entities worth a page, the intent already being searched, and a realistic indexing plan. ROI-driven, and we show our work.

Get Your Free pSEO Opportunity Review