SEO for a marketplace: two sides, category pages, and the listings
You win marketplace SEO with demand pages first, listings second. Build categories and locations that match how buyers search, then index only the listings that help. Moderate user content, control filters, and keep your index lean.
By Théophile Louvart, founder of Porteur · Updated 14 September 2026 · Markdown
What success looks like on a two sided marketplace
Serve buyers first. Categories and locations capture the demand. Listings convert on the tail only when each solves a search on its own.
Sellers care about exposure, but flooding the index with thin listings buries the pages that can rank. A smaller, higher quality index wins more often.
- Category and location pages: own the main queries buyers use.
- Listing pages: rank only when rich, unique, and maintained.
- Facets and filters: useful for users, controlled for crawlers.
- Moderation and dedupe: stop spam, repeats and boilerplate from wasting crawl.
Plan the information architecture: categories and locations
Start with buyer intent. Map the head terms by task and type, then by place where it fits. For services this is city or neighbourhood. For goods this is availability or delivery area.
List the demand terms
Pull queries from Search Console and on-site search. Add auto-suggest terms. Example: "/bikes/mountain-bikes" and "/bikes/mountain-bikes/london".
Set the page families
One URL pattern per family. Example: "/{category}", "/{category}/{subcat}", "/{category}/{city}". Keep it shallow. Use hyphens and readable slugs.
Set creation thresholds
Only create a category or location page when you have supply and a minimum of real content. Empty pages waste crawl and harm trust.
Lock the template
Decide which blocks every demand page must have: intro that names the query, listings module, filters, FAQs, images, internal links, and a clear CTA.
A fixed example: "/cleaners/london" with an H1 that says Cleaners in London, copy that names the areas covered, a live list of available cleaners, pricing guidance, reviews, and links to nearby areas.
Build demand pages that rank: what to put on category and location URLs
- Title and H1: use the exact demand term within about 60 characters. Example title: Mountain bikes in London | YourMarketplace.
- Intro paragraph: a short answer in plain words. No fluff. Name the places, specs or job to be done.
- Listings module: inventory that matches the query by default, not empty or irrelevant.
- Filters for users: common options surfaced, but do not create indexable pages for every option.
- Static content: price ranges, delivery times, areas served, service scope, what is included and what is not.
- Trust: review counts, ratings, refund terms, IDs where regulated.
- Internal links: nearby locations, sibling categories, and a link up to the parent hub.
- FAQ: questions that arise on this page only, short and factual.
Write for the buyer. Example before: a page with only a heading and an empty grid. After: a page with copy that names London boroughs, shows in-stock models, price bands, and delivery times.
Listing pages: content, noindex, and pruning
Listings are your long tail. They only earn clicks when each holds unique, specific content that answers a searcher without the category page. Set a clear bar and stick to it.
| Listing state | Index? | What the page must include |
|---|---|---|
| New with enough detail | index | Accurate title, several unique images (typically 3 to 5), detailed description, specs, location, price, availability, seller name, shipping or service area, FAQs |
| New but thin | noindex | Keep it live for users. Ask the seller for missing fields. Add guidance text that helps. Remove noindex only when it meets the bar. |
| Duplicate or near-duplicate | noindex or merge | Consolidate repeats. Canonical to the kept URL if both must exist for users. Show variants on one page. |
| Out of stock or expired | noindex, keep discoverable routes | Offer close alternatives on the page. Keep it in sitemaps only if it returns soon. Otherwise remove from sitemap and keep internal links to alternatives. |
| Spam or policy-violating | 410 or remove | Delete and block re-posts. Do not redirect spam to a good page. |
- Enforce minimum fields at listing creation. Make required: title, category, price, location, clear photos, and a description that passes length and duplication checks.
- Detect boilerplate. If most of the text matches another listing, fail moderation or force merge. Show variants as options, not separate URLs.
- Write helpful microcopy. On "/listings/bike-123", include assembly notes, compatible parts, delivery dates, and return rules. That is what wins the long tail.
- Expire responsibly. When a listing ends, keep the URL live with noindex and links to active substitutes. Do not blanket redirect to the category.
Structured data on listings: Product, Offer, ratings
Mark up each indexable listing with JSON-LD. Use Product, Offer and aggregateRating where you have them. Keep it truthful and in sync with the visible page. Test it before you ship changes.
- Product: name, description, image, brand or make, model or sku where known.
- Offer: price, priceCurrency, itemCondition, availability, url, seller where applicable.
- aggregateRating: ratingValue and reviewCount only when you show both on the page.
- BreadcrumbList: reflect the category trail the user sees.
- Organisation and WebSite data belong on templates, not per listing.
For services, still use Product and Offer if it functions like a productised service. If it is a pure lead page with no concrete price or availability, skip Offer until you can state them.
- Place JSON-LD in the HTML, not only in client-side scripts. Assistants and crawlers read the HTML.
- Keep microdata and JSON-LD consistent if both exist, or choose one and remove the other.
- Validate with the rich results test and fix errors right away.
Internal linking across the marketplace
- Homepage to top categories and top cities. Limit to what you can keep stocked.
- Category to subcategories and nearby areas. Use a list of links, not only cards hidden behind JS.
- Listings link up to their category trail and to relevant sibling listings, not random ones.
- Breadcrumbs across all levels. Keep names consistent across pages and schema.
- Editorial pages link into categories where they help, not as a token.
Example: "/bikes" links to "/bikes/mountain-bikes" and to "/bikes/road-bikes". "/bikes/mountain-bikes/london" links to "/bikes/mountain-bikes/cambridge" and its parent. "/listings/bike-123" links back to both and to two related in-stock models.
Keep the index lean: sitemaps, Search Console, and pruning
Index bloat kills marketplaces. Your sitemap should list only pages you want indexed today. Demand pages and indexable listings only. No filters, no expired items, no test URLs.
- Split sitemaps by type: categories and locations in one, listings in another. This makes errors easier to spot.
- Remove URLs from sitemaps the day they go noindex or expire for good.
- Use the Search Console Coverage and Performance reports to find pages shown but never clicked, thin pages, and duplicates.
- Set a monthly pruning cadence. Review low-impression listings. Improve the ones with potential. Noindex or delete the rest.
- Soft 404s waste crawl. If a page has almost no content or only says Sold out, fix it or noindex it. Do not serve a thin page with a 200 code.
Find bloat
Export all indexable URLs. Compare to sitemap and to URLs with impressions in 28 days. Anything indexable with zero impressions is a suspect.
Decide keep, fix, or cut
If a page could rank with a small edit, fix. If not, noindex. If it should never exist, 410.
Redirect only where helpful
Merge true duplicates and redirect to the best version. Do not redirect every dead listing to the top category.
Moderation, duplication, and content quality at scale
User content builds the marketplace and can sink it. Moderate for spam, duplicates, illegal items, and low effort listings. Do this at creation and in batch jobs.
- Block copy-paste farms. Compare titles and descriptions with fuzzy matching. Reject near-duplicates or force a merge into variants.
- Watermark and normalise images. Enforce minimum resolution. Auto-detect stock photos and ask for real pictures.
- Template prompts for sellers. Give fields and examples so their copy answers the buyer’s questions instead of filler.
- Flag low-engagement pages. Listings with zero views in 28 days and thin content should be improved or noindexed.
- Keep a changelog per listing. Show last updated with a date when you make material edits buyers care about.
Programmatic pages done right
You will generate many category and location pages. Programmatic SEO only works when each page has data and utility of its own. Avoid scaled content abuse. Tie every page to live inventory and facts you can show.
- Guardrails: only publish combinations with stock, reviews, and clear copy blocks. Queue the rest as drafts.
- De-dup at generation. If "/plumbers/london" and "/plumbers/greater-london" are the same, pick one. Point internal links to it and keep the other out of the index.
- Enrichment: pull price bands, delivery times, and top brands per page from your data warehouse nightly.
- Human passes: set a weekly review of new high-impact pages. Edit titles and intros by hand for the top pages.
AI answers and assistants: be the page that gets cited
Search-backed assistants cite clear, factual pages. Your category and location pages should read like concise answers. Stable names, lists, figures buyers can quote, and HTML that renders without scripts are the traits assistants pick up as of 2026.
- Allow Googlebot and Bingbot. Allow the answering crawlers you want to be visible to. Blocking them makes you invisible to assistants.
- Write an explainer for your model. A short block on each demand page that says what you include and exclude, with limits and prices where possible.
- Get on third-party lists. Directories and comparison pages rank and are cited. For example, a roundup of "best wedding photographers in Bristol" that includes your hub page.
Questions
No. Index only listings that meet your quality bar and help a searcher on their own. Keep thin or duplicate listings live for users but with a noindex tag. When a listing is improved and unique, remove noindex and keep it in the sitemap.
Create as many as you can support with supply and content. Set thresholds. If you cannot show real stock and helpful copy on "/cleaners/oxford", do not publish it yet. A smaller set of strong pages outperforms a large set of thin ones.
Keep the URL live with noindex and clear alternatives. Show similar in-stock items or nearby providers. If it will return soon, leave it in your internal linking. Do not blanket redirect to a category, and do not serve a dead end with a 200 status.
Use JSON-LD on indexable listings. Mark up Product with Offer details and aggregateRating when shown. Add breadcrumbs. Keep schema in sync with what users see. Test changes before deployment to avoid invalid markup across many pages.
Decide which facets deserve indexation and keep the rest as noindex, follow. Canonical filtered and sorted URLs to the clean category or location. Avoid blocking with robots.txt unless you must hide them. Monitor parameters in Search Console and your logs.
Watch impressions and clicks on category and location pages in Search Console, and their conversion into contacts, carts or bookings. Track the share of indexable listings that get impressions. Prune or improve those with no impressions over 28 days.
Check my site, free
Paste one category or location URL and get a free 30 second check on demand fit, index rules, and rival pages your buyers see.
- Free check, no card
- Read-only, your own accounts
- Readable by your agent
Read next
- GuideCategory page SEO: the page that ranks for the product type
- GuideFaceted navigation SEO: which filters to index and how to hide the rest
- GuideProgrammatic SEO for a small product: page families that earn
- GuideProduct page SEO: what a buyer and a crawler need on the page
- GuideJSON-LD: how to write it, where to put it, how to test it
- GlossaryNoindex
- GuideHow to get listed on G2 and Capterra, and get the first reviews
- GlossaryOff-page SEO