The SEO Guide for Marketplaces and eCommerce Sites


Marketplaces and eCommerce sites that have lists of items / products face unique SEO challenges. For the three years we’ve been running Binpress, organic search has been our number one source of traffic, and we had to learn some lessons the hard way.

Before we go over a few of the common SEO challenges marketplaces have, here are some definitions of terms I use in the article, for clarity:

Marketplace — A site listing products / services / offerings provided by users of the site rather than the site administrators. Examples of marketplaces include eBay, Airbnb, oDesk, CreativeMarket, and so forth. In this article, I will focus on marketplaces with long-lived listings instead of listings that expire quickly (such as Craigslist), though some of the advice below can be applied to both.

Products — For conciseness, I’m using “products” to refer to the items listed on the marketplace, whether those are actual products, services, offerings, or anything else.

Listing Pages and Product Pages are not Content Oriented

Google’s official line (I’ll concentrate on Google, as they are the dominant engine) is that you should focus on creating great content. If you create great content, people will link to it, Google will notice it, and traffic will flow from the mountain tops.

While it might be as simple as that for straight up-content pages (such as this blog, for instance), listing pages and eCommerce product pages are a different species.

Most people don’t normally share product pages because of “great content.” Occasionally, some especially unique or outstanding product pages get shared or linked to, but, typically, people prefer to link to a great review of a product rather than the product itself (if at all). Simply put, most products do not make for very shareable content. No matter how brilliant the copy you write for a product, it usually doesn’t make for a very interesting or noteworthy read.

This is especially true for user-generated content on marketplace sites. Even if you are the best copywriter in the world, you can’t write all of the content for all of the products offered on your marketplace. Further, even if you can scale the actual writing effort by hiring a team of copywriters, in a lot of cases, only the person offering the product knows it well enough to describe it from scratch, and the most you can do is try to improve that description.

Similarly, listing pages have an even lower chance of being shared or linked to. Why would anyone link to or tweet about a list of products?

Considering this, there are several things we can do to achieve better results with product pages.

Maintain a strong inner-linking structure

The homepage (typically the page with the highest page authority on a site) should link to listing pages and some of the product pages. The listing pages, in turn, should link to all of the product pages. Seems obvious, but I’ve seen some listing pages using POST form as the filtering mechanism, leading to no direct links to product pages from the listing.

Always prefer to use links. If you do use a form, make sure it is a GET form (that creates indexable URLs). But again, use links, if possible, because they are the most accessible format for search engines to find your content. In addition, be sure to cross link between related products. Also, link to product pages from other pages, such as your blog posts or special pages you have on the site that might be more shareable organically.

Leverage your community to build links to product pages

Marketplaces are unique compared to regular eCommerce / listing sites in that they have active users on both sides of the transactions. While consumers (searchers / buyers) on the marketplace might share products if they are especially pleased, that is less likely, as mentioned above. On the other hand, the “sellers” (or “publishers,” as we like to call them), have a greater motivation to do so. And, you can help make it happen by educating them on how to promote their products / services.

We did that by constantly talking to our publishers and learning what worked for them and what didn’t. We eventually summarized the things that did work into a guide which we provide as reference for publishers when they add new list items.

Build Links Manually

In the beginning, it can be hard to get links organically when not many people are visiting your product pages in the first place. Commonly, the way to get things started is to go out and actively ask people to link to you. This is the part of SEO called “Link Building,” and it’s perfectly legitimate as long as you don’t try to acquire links in a way that couldn’t have happened organically, which Google calls “Link Schemes.”

There are plenty of approaches to link building, which is a very expansive topic on its own. For us, approaches that have worked well so far include:

  • Look for libraries that have projects similar to ours listed, and ask the authors to mention the relevant project from Binpress as well (to make the list more comprehensive).
  • Look for articles that mention our competitors but don’t mention us, and ask them to mention us as well.
  • Look for mentions of our brand that do not link to us, and ask them to add a link to that mention.

For a comprehensive resource, you should check the Big-Ass List of Link Building Resources.

Create compelling content around your products

Even if the products themselves don’t have very interesting content, you can create related / supporting content such as how-to’s and tutorials that add value and will appeal to the same audience that might be interested in your products.

Creating good and relevant content requires more investment and resources than technical solutions, but can be very effective when done properly. Airbnb, for example, has amazing landing pages for neighborhoods in areas where they have a good number of listings.

Listing Pages — Click Distance and Duplicate Content

Listings of products / services / offers / etc. are the staple of a marketplace site. Those pages generally have pagination (to keep the number of items on a page manageable) and navigation (to filter the listed items into specific categories). As the number of items grows, two problems start to emerge:

Click Distance

As the number of items grows, eventually, a product listing will not fit on one page. As the number of pages grows, your pagination itself likely will not show all of the pages at once, either.

Flickr pagination before they transitioned into infinite scrolling. Notice that pages deep within the site, like page 50 for example, won’t be found by a search engine until a large amount of crawling is done.

As I mentioned before, the inner linking structure is very important for search engines to be able to find your listed products, especially those that do not receive many (or any) external links.

One of the signals Google uses to determine the importance of pages on your site is how many “hops” are required to reach it from the homepage (often termed “click distance”). All other things being equal, a page that is 3 links deep from the homepage will rank higher than a page that is 10 links deep, for example.

Pagination, such as the one shown above, hurts this by putting deeper pages much farther from the homepage than initial pages. Aside from the last 2 pages in the pagination format shown above (taken from Flickr), the inner pages are quite far from the homepage, and hence the products they link to have a very high click distance as well.

We’ve noticed this in practice, as, over time, products that previously received good organic search traffic started to trail off, until they almost completely disappeared from search results. Eventually, we theorized that click distance might be the culprit, as it was the only parameter that changed. The theory was proven correct as those pages regained their SERP rankings after applying the solutions below:

1. rel=next,prev meta tags

You can signal to Google that paginated pages are indeed such and that they are part of a series by using the meta link tag with the attributes rel=”next” and rel=”prev.” This approach is detailed on the official Google webmaster blog, so go there for more details and another option (a show-all page, which might be relevant to your case, depending on the type and amount of content you have).

2. Show / render all pagination links on the page

This approach might seem to conflict somewhat with the advice Google provides about always preferring the best user experience, but, it does provide the shortest click distance and immediate availability of all pages in a listing.

This works especially well if you have a more modern pagination interaction, such as infinite scrolling, in which you can provide all the pagination links on the page and hide it with JavaScript. Search engines and text readers that do not have JavaScript enabled will see normal pagination links, while most users will get a more seamless pagination experience.

This is the approach we currently are using on our listing page. With JavaScript disabled, you will see the following pagination appearing above the “Load More Projects” button.

Not necessarily visually appealing, but it’s still functional. With JavaScript enabled, however, that pagination is hidden. Clicking on the “Load More Projects” button will start the process of loading additional projects as you scroll, until you click on the “Stop Loading” button (allowing you to reach the footer).

If you do implement an infinite scrolling-like interaction, make sure it still works without JavaScript enabled! Flickr is using such an interaction now, and with JavaScript disabled, you have no option to get to inner pages. (In fact, images beneath the fold don’t even load without JavaScript, with is quite sad.)

Duplicate Content and Indexed Pages

It’s possible that some combination of filters on your listing page will show the same results, the most common case being filter combinations which yield zero results. Since the URL is different (assuming you are using links for filtering, as discussed in the inner-linking section above), Google will consider those pages as duplicate content.

When this happens, Google might have a hard time deciding which version of the content (which URL) to serve on its search results page. Then, incoming link juice will be split between the versions, as people might link to either of the versions.

To avoid that, and consolidate page rank for a category, you should employ the rel=canonical meta tag, which indicates which one is the canonical version of the page (and URL).

A side effect of filter combinations creating many different URLs is that Google actually will index all of those variations. Before we added canonization, our index swelled up to over 330k pages, even though we don’t have that many meaningful pages. After canonizing to the main filter combinations, our index size decreased over time until reaching a stable state around 8.3k pages indexed.

Why is this important? Surely, Google has the resources to index 330k pages just as easily as 8.3k. The problem is that, depending on how much importance Google places on your site and how often it thinks your content changes, having this many pages indexed will result in a much slower index update. If you’d like content changes and SEO optimizations to propagate to the Google index faster, it would help to present Google with fewer pages to index.

Our crawl stats in the Webmaster Tools show the crawl rate has been fairly constant over time, at about 4k pages per day. That means that now Google can completely re-index our entire site in 2 days, while previously it took almost 3 months. This is a simplification, since some pages are crawled more often than others because of various factors, but it stands to reason that indexed pages are given priority.

You can further signal Google about the importance of pages on your site by using a sitemap. By indicating priority and update rate, you can help Google make more informed choices on how often to crawl your content. A sitemap also is helpful for sites with dynamic content, such as marketplaces where listings are user-generated. New listings are immediately reflected in the sitemap, increasing the likelihood they will be added to the search index sooner rather than later.

Optimizing Appearance on Search Engine Results Pages (SERPs)

Getting your products ranked on search results is only the first step. Then, you need to get people to click. There are a couple of factors that can have a big influence on whether a user will skim over your product or click on it in the search results.

Title and description

Google uses the meta title and description tags on your pages to generate their search results. Optimizing them for clarity and relevancy makes a big difference in click-through rates on SERPs.

Titles should be concise and informative and explain what the page is about in 4-5 words. We got an idea from Stack Overflow and added a few product keywords in the title that might match relevant searches to the product.

Since marketplaces have their own listings, it makes sense to have a dedicated field for a short-form description that can fit both the internal listing and appear on the SERPs. This gives you the opportunity to optimize for click-through rates on both.


Microformats and rich snippets are special markups that provide additional semantic information. Depending on the type of content you have in your listings, you can choose from a variety of microdata formats to send additional information to search engines that help optimize the appearance of results from your site in the search results pages (SERPs for short).

Types of content include (see the bottom of this help page for more information):

  • Reviews
  • People
  • Products
  • Businesses and organizations
  • Recipes
  • Events
  • Video

Content tagged with microformat markups might appear different in SERPs. For example, reviews might show the review rating below the search result, or the avatar of the reviewer (or both); products might show pricing and rating as well; videos might show a video thumbnail; and so forth.

The modified appearance in the search results can help attract attention and increase engagement.

Meaningful and Structured URLs

Investing in how your URLs look and not just how they work can yield benefits both for SEO and user experience. From a technical standpoint, the easiest way to link to products in your listing would be to just point to their unique identifier, often an incrementing integer. This results in URLs that look something like this:


While easy to program against, those are not very meaningful for site visitors, and you also are missing an opportunity to convey more information to search engines. Rand Fishkin of Moz has a very good (if somewhat old) post on the topic, which I suggest you read.

For marketplaces and eCommerce sites, I suggest including the title of the product in the URL, while replacing query parameters with a folder-like structure. Blogging platforms such as WordPress have been doing that for a long time, replacing the post ID with a better-looking URL that includes the post date and title separated by slashes (i.e., a folder-like structure).

Instead of omitting the listing ID completely and adding another layer of unique identifiers for products (such as what WordPress does with blog posts), we can go with a hybrid approach, such as the one used in Stack Overflow for questions. Both the unique identifier (typically an integer) and a more descriptive string compose the URL.

The latter is the approach we went with for our product pages, creating URLs such as:

This is for a product called VideoStream SDK for iOS with a unique identifier of 1322. Sub pages of the product page, such as comments, reviews, support, etc., have URLs based on the same structure with an additional inner folder, such as /comments, /reviews, /support, respectively. With modern MVC routing, creating this URL structure is pretty easy. (We’re using the Zend Framework router to create this URL scheme.)

Google and Binpress listing results side-by-side

A word of caution – In the approach shown above, the string part of our URLs does not affect what product is shown. (Only the numeric identifier controls that.) Initially, we didn’t pay any attention to it, but multiple URLs mapping to the same product creates the duplicate content problem for search engines, discussed earlier in the section about listing pages.

In this case, however, a better solution than using the canonical tag would be to issue a 301 redirect (moved permanently) to the canonical URL version. This forces the browser to always have the most current version of the URL in the address line, regardless of how the link that got the visitor there looked.

This is different from the case discussed for the listing above, where different combinations of filters yielded the same results, a situation that could change over time as more products are added to the listing.

Structured URLs for the listing

The URLs of the listing pages can be “cleaned-up” as well, by replacing query parameters with a more readable folder structure. Our current listing URL structure looks like this:

with the parts prefixed “:” being dynamic, and map to variables with the same names. This basically replaces a URL that looks like this:

with this much more readable and compact version:

while also conveying the hierarchy of the URL parts to search engines, by the order of their appearance in the URL (since they mimic a folder structure).

AJAX and Search Engines

AJAX is a pretty common method of enhancing the user experience by changing only parts of the page or sending information to the server, without refreshing the page. However, using AJAX to show content could prevent it from appearing in search results if there is no other way to get to that content, since search engines crawl the pages statically and do not trigger user interaction other than links.

There are several ways to address this, such as by using content fragments, which is supported by Google. We handle it with progressive enhancement instead, which we think is more straightforward than creating special versions using query parameters. Create the content first without AJAX with a complete linking structure which covers all of it. Then, add AJAX on top to speed up load times and improve user experience where it makes sense.

This is the approach we have in the product pages. Clicking on the tabs changes the content under the tab only (and not the sidebar and header). But those tabs are real links at the same time, linking to a full version of the content if opened separately in a different tab, for example (or by a search engine).

In a similar fashion, our listing pages have real links in the pagination and filter navigation, while applying the filters asynchronously and providing infinite scrolling if JavaScript is enabled.

The Tip Of the Iceberg

Despite what Google would have us believe, getting favorable ranking for content, especially against strong competition, is not just about “creating great content.” There are many factors to consider and a lot of work to do to rank favorably in search results.

This is doubly true for marketplaces and eCommerce sites, which have a lot of “content” that often is not very interesting or shareable, and of varying quality, being that it is user-generated.

This, while spreading the domain authority over many pages, as opposed to SaaS sites, for example, which usually have a small number of content pages to optimize for, or news sites, which generally optimize for the latest content only (though they do share some of the problems mentioned in this article).

This is a very broad area, and I’ve tried to focus on the parts that are unique to sites similar to ours – marketplaces and listings of products. I hope it will prove useful to you, and if you have tips of your own, please leave them in the comments!

About the Author: Eran Galperin is the technical co-founder at Binpress, a marketplace for commercial open-source projects, providing a platform for building profitable businesses by creating and working on open-source code. You can find his writing about the business of open-source on the Binpress blog.

Some of the links in the post above are “affiliate links.” This means if you click on the link and purchase the item, we will receive an affiliate commission. Regardless, we only recommend products or services we believe will add value to our readers.

Leave a Reply

Your email address will not be published. Required fields are marked *

CommentLuv badge