Skip to main content
/map answers “what pages does this site have?” without downloading them. It merges two sources:
  • Sitemaps, found through robots.txt first, then at the usual locations (/sitemap.xml, /sitemap_index.xml). Sitemap indexes are followed one level deep. One sitemap can describe a whole site, cheaply.
  • On-page links, every link on the URL you pass. This is the fallback for sites without a sitemap, and the only source that shows what’s actually linked today.
A URL found in both appears once. It’s marked as coming from the sitemap, because sitemaps carry lastmod, but it keeps the link’s label from the page (its title or aria-label, otherwise its text) as a title. The first 10 links also get their own page’s <title> and meta description, read within a short time budget. A page that doesn’t answer in time keeps its link label and a null description. Use /map to plan a crawl, to find one page without guessing its path, or to see what a site published recently.

Example requests

Example response

Reading the response

A map that finds no link to the site’s own pages, on the page or in any sitemap, fails with NO_LINKS_FOUND (422) instead of returning an empty list. You aren’t charged for it. Without search, links come back most useful first: the homepage, then key pages (about, pricing, products, docs, blog, careers, contact) and the pages the site’s navigation links to, then the rest, shallowest first. These move to the end:
  • copies of a page in another language or region (/de/pricing when you mapped the English site), which keep only their best-placed version in the ranking
  • error pages (/404, /404.html)
  • handles and short links (/@name, /sf6)
  • app sign-ins on other subdomains (app., login.)
Nothing is dropped. limit decides how much of the list you get. With search, results are filtered as well as ranked: links that match nothing are dropped. A match in the URL path outranks a match in the link text.

Choosing sources

robots.txt is always read for its Sitemap: entries. /map fetches at most one page of the site, so Disallow rules don’t affect it.

Scope

By default the result stays on the site you asked about, subdomains included, and URLs that differ only by query string collapse into one.
  • include_subdomains=false keeps the exact host. blog.stripe.com is left out when you map stripe.com.
  • ignore_query_params=false keeps ?page=2 and ?page=3 as separate entries.
Links to other sites are never returned.

Next

Crawl a site

Fetch the pages you found, in one job. 1 credit per page.

API reference

Every parameter, and a playground to try it.