Skip to main content

Keyword extraction API

The keywords of any URL, ranked

The terms someone would tag the page with or search for to find it — not the most frequent words — for tagging, clustering and SEO research at scale.

By · Last updated: October 2026

TL;DR

POST a URL to /keywords and get a JSON array of 5–15 keywords and key phrases, most relevant first: the page's subject, then its distinct topics, in the page's own words and language. The page is rendered in a real browser and its main content is read, without navigation, cookie notices or the site's name. 15 credits per page.

Free plan, no credit card. 1,000 credits a month.

Try it now — no signup

Free · no signup · 2 runs every 10 minutes

…or try one of these

Your result will appear here.

Enter a URL above, or pick one of the example pages.

The request

One POST, one bearer token

POST /keywords
curl -X POST https://urlpipe.dev/keywords \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/blog/branch-prediction", "sync": true}'
Response
[
  "branch prediction",
  "pipeline stalls",
  "branch target buffer",
  "speculative execution",
  "loop unrolling"
]

The keywords

What comes back

  • The subject first. The first keyword is what the whole page is about, in the most specific term that still covers all of it. The rest follow by relevance.
  • As many as the page has topics. Between 5 and 15: a short page, or a page about one thing, has 5 to 8. The list is not padded to 15.
  • Terms, not sentences. One to three words each, taken from the page's own text, each about something different from the others.
  • In the page's language. A Spanish page gets Spanish keywords.
  • Without the noise. No author names, cookie notices, prices, dates or identifiers, and not the site's own name unless the page is about the site.

A page that is a list — a front page, a feed, an index — gets the keywords of the list as a whole: the section it belongs to, the kind of items it lists and the themes they share, not one keyword per story.

How it works

Not a word count

Frequency-based extractors return the words a page repeats. /keywords renders the page in a real browser, reduces it to its readable content — the article or the product, without navigation and sidebars — and has a language model rank the terms that best represent it. A page about running shoes returns running shoes, not the and shoe. A link to a PDF or text file is read from its text (documents & files).

The guide to getting keywords from a URL walks through it with code, and the /keywords reference has the parameters.

Use cases

What people build with it

  • Competitor and SEO research. The topics a competitor's pages are written around, page by page, to seed a brief or find gaps.
  • Auto-tagging. Tags for articles, bookmarks and knowledge-base entries as they are added.
  • Clustering URLs. Group a list of pages by what each is about, with labels to keep each batch apart.
  • Related content and search. Keywords as index terms for internal search or "more like this" links.
Tag a page
const res = await fetch("https://urlpipe.dev/keywords", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ url: "https://example.com/blog/post", sync: true }),
})

const tags = await res.json() // ["branch prediction", "pipeline stalls", …]

Pricing

What it costs

Keywords cost 15 credits per page: a language model reads it. A page you already asked about is answered for free while the stored result is fresher than max_age, and a failed request costs nothing. For many URLs, drop sync and collect results at your webhook. /scrape returns the keywords together with the Markdown or the summary from one visit.

Limits

What it does not do

  • No search volumes or rankings. It tells you what a page is about, not how often anyone searches for it.
  • No scores. The keywords come back in order of relevance, without a number on each.
  • One page per request. For a whole site, send each page you care about.
  • Up to 10 MB of HTML, and public pages only.

Pricing

What it costs

CallCreditsFree (calls/mo)Starter (calls/mo)Pro (calls/mo)Scale (calls/mo)
/keywords15 credits661,3333,66611,666

Cache hits and failed requests cost nothing. Paid plans are never cut off: past the allowance, extra credits are $1.50 per 1,000 credits. See every plan.

FAQ

Frequently asked questions

Between 5 and 15, as many as the page has distinct topics, most relevant first. A short page gets 5 to 8.

Make your first request in five minutes.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.