Case study · Property marketplace
A marketplace search engines can actually read
A property marketplace built in React had tens of thousands of listings and only a fraction of them in Google's index. This is how we made every listing and location page readable, and kept millions of filter combinations out of the way.
Project overview
Technical SEO for a JavaScript marketplace.
- Industry
- Property marketplace
- Client
- Confidential
- Solution
- JavaScript SEO
- Platform
- React, moved to Next.js
- Timeline
- 12–18 weeks
- Team
- 4 people
- Pages
- Listings, locations and filters
- Change rate
- Listings added and removed daily
- Integration
- Listings API and sitemaps
Expected business outcomes
What the client set out to achieve
Indexation comes first: a page that is not indexed cannot rank.
-
90%+
Of live listings indexed
Listings are rendered on the server and submitted through sitemaps that update daily.
Target; measured in Search Console against the live inventory
-
40–80%
More organic visits to listing and location pages
Location pages now rank for the searches buyers and renters make.
Target range over six to nine months
-
Days → hours
For a new listing to appear in search
Sitemaps and internal links surface new listings the day they are published.
Measured on a weekly sample of new listings
Business challenges
Where the client started
The site worked well for visitors and badly for crawlers.
Rendering
Pages were built in the browser, so crawlers often saw an empty shell.
Filters
Every filter combination created a new URL, millions in total.
Expired listings
Sold and let properties returned errors and lost their links.
Locations
No real pages for the towns and areas people search for.
Paid dependency
Most traffic was bought, because organic barely existed.
Proposed solution
What the technical work covered
Rendering, then control of what gets indexed, then the pages worth ranking.
-
Server-side rendering
Listing and location pages rendered on the server with Next.js.
-
Filter rules
A short list of useful filter pages indexed; the rest kept out with clear rules.
-
Location pages
Pages for each town and area, with live listings and local content.
-
Expired listings
Sold properties kept as pages that point to similar live listings.
-
Structured data
Listing markup for price, location and availability.
-
Daily sitemaps
Sitemaps generated from the listings API every day.
Project requirements
What the client asked us for
The request was to reduce the cost of paid traffic. The route was indexation: the marketplace had the content to rank, but search engines could not read most of it.
We treated filter pages as a product decision, not a technical one. The business chose which combinations deserved a page, and everything else stayed out of the index.
What the project had to deliver
- 01Every live listing indexable
- 02Location pages that rank
- 03Filter pages under control
- 04New listings found quickly
Key challenges & considerations
What made it harder, and what we did
-
A single-page React application
What we did
Listing and location templates were moved to server-side rendering with Next.js, one template at a time.
-
Millions of possible filter URLs
What we did
Filter combinations were classified with the business, and only the useful ones were allowed into the index.
-
Listings that expire every day
What we did
Expired listings were kept as pages pointing to similar live listings, and removed from sitemaps.
-
Releases that could not interrupt the live marketplace
What we did
Each template was released behind a flag and checked in Search Console before the next.
What we watched for
- Check what crawlers see, not what browsers show
- Decide filter pages as a business question
- Never return an error for a sold listing
- Track indexed pages against live inventory
Development process
Render, control, then build pages worth ranking
The order mattered: there was no point writing location content for pages nobody could crawl.
-
Crawl and log analysis
What search engines actually requested and saw.
-
Rendering
Server-side rendering rolled out template by template.
-
Indexation rules
Filter combinations classified and controlled.
-
Location pages
Templates built and populated for each area.
-
Sitemaps and structured data
Generated from the live inventory.
-
Monitoring
Indexed pages tracked against live listings every week.
Technology stack
Next.js, with the index under control
The front end stayed in React, rendered on the server where it matters.
Front end
- React
- Next.js
- Server-side rendering
Search
- Google Search Console
- Screaming Frog
- Server log analysis
Data
- Listings API
- Dynamic sitemaps
- Structured data
Analytics
- Google Analytics 4
- Looker Studio
- Index coverage tracking
Quality assurance & deployment
Checked before it went live, measured after
Marketing work is only as good as its measurement. Tracking was verified before anything launched, technical changes were tested on staging, and every result was reconciled with the client's own sales or booking data.
- Conversion tracking tested end to end before launch
- Technical changes checked on staging with a full crawl
- Redirects, links and structured data validated
- Copy and claims reviewed by the client's experts
- Reported figures reconciled with the client's own system
Deployment
- 01Sitemaps and structured dataGenerated from the live inventory.
- 02MonitoringIndexed pages tracked against live listings every week.
- 03Staged releasesChanges went live in small batches, each one watched in the first days.
- 04Reporting and handoverA monthly review against the agreed targets, and documentation the client's team can work from.
Final deliverables
Listings that are found without being advertised
Live listings and location pages are now rendered for crawlers and visitors alike, and new listings reach the index the day they are published.
The client's developers have clear rules for new filters and templates, so the index stays clean as the marketplace grows.
- Server-rendered listings and locations
- A controlled set of filter pages
- Expired listings handled gracefully
- Sitemaps updated daily
Handed over to the client
- 01Audit and roadmapFindings ranked by their effect
- 02Implemented changesIn the client's own site, accounts and tools
- 03Tracking and dashboardResults in the client's own figures
- 04Content and campaign assetsTemplates, pages and creative
- 05Documentation and trainingSo the client's team can carry on
Success metrics
How success is measured
| Measure | Outcome | How it is measured |
|---|---|---|
| Of live listings indexed | 90%+ | Target; measured in Search Console against the live inventory |
| More organic visits to listing and location pages | 40–80% | Target range over six to nine months |
| For a new listing to appear in search | Days → hours | Measured on a weekly sample of new listings |
Verified reviews
What clients say about working with us
Verified reviews from our clients, published on Clutch.
-
Web Development
Custom Web Development for a Software Solutions Company
We can rely on them to handle almost any task with confidence, as they consistently deliver good results.
Verified review on Clutch (Casper Hougaard Jensen, opens in a new tab)
Casper Hougaard Jensen
CEO & Co-Founder, Iterator IT Jul 2021 – Sep 2022
-
Web Development
Web & Mobile App Development for a Software Development Company
They efficiently organized tasks and deliverables while promptly addressing questions.
Verified review on Clutch (Damien Retzinger, opens in a new tab)
Damien Retzinger
Founder, Graycore Jun 2021 – Feb 2023
-
Web Development
Website Development for a Software Engineering Company
They have a broad understanding of different technologies.
Eugene Bosikov CEO, Ezibeline LLC Mar 2022 – Ongoing Verified review on Clutch (Eugene Bosikov, opens in a new tab)
Free discovery call
Have an idea? Let's turn it into AI-powered software.
Book a free discovery call with our experts. Share your idea and we will help you shape the scope, timeline and budget, under NDA.
- Free consultation
- NDA before we talk
- Transparent estimate




