---
title: "A page's metadata"
method: POST
path: "/meta"
---

# A page's metadata

`POST /meta`

## Request

- Base URL: `https://urlpipe.dev`
- URL: `https://urlpipe.dev/meta`
- Auth: HTTP bearer

1 credit(s) per successful, uncached call. Documentation: https://urlpipe.dev/docs/meta

## Headers

- `Idempotency-Key` string

## Request body

- PageRequest
  - `url` string, uri, required: The page to fetch: a public http(s) URL.
  - `sync` boolean: Return the result in the response instead of a token.
  - `report_to` string, uri: Webhook URL the result is POSTed to (async requests).
  - `max_age` union: How fresh a cached result must be: seconds, or a duration like "3 days". Default 7 days, maximum 30; 0 bypasses the cache.
    - integer
    - string
  - `labels` object: Your own ids for this request, returned with the result and the webhook.
  - `residential` boolean: Fetch from a home broadband address. +25 credits per page visit.
  - `page_options` PageOptions
    - `wait_for_selector` string: Wait for this CSS selector, up to 10 seconds.
    - `scroll_to_bottom` boolean: Scroll down the page before reading it, for as long as scrolling loads more, up to 25 seconds.
    - `delay` integer: Milliseconds to wait after the page settles.
    - `block_ads` boolean
    - `block_cookie_banners` boolean
    - `block_popups` boolean: Remove newsletter, app-install and promotional popups laid over the page.
    - `remove_selectors` string[]

## Response `200`

With `sync: true`, the result. Without it, the request was accepted: a token to collect the result with.

- Metadata
  - `final_url` string, nullable, required: The address the page ended on, after its redirects.
  - `canonical_url` string, nullable, required: The page's canonical URL, absolute.
  - `title` string, nullable, required: The page's own title, without the site's name around it.
  - `description` string, nullable, required
  - `site_name` string, nullable, required
  - `type` 'article' | 'website' | 'profile' | 'book' | 'product' | 'video' | 'music' | 'place' | 'event' | 'recipe' | 'null', nullable, required: The kind of page, as the page declares it.
  - `language` string, nullable, required: ISO 639-1 code of the language the content is written in.
  - `locale` string, nullable, required: The most specific language tag the page declares for that language, BCP 47 (en-US).
  - `authors` object[], required
    - `name` string, required
    - `url` string, nullable, required
    - `profiles` string[], required
  - `published_at` string, nullable, required: ISO 8601: a date (2024-05-01) or a moment with its offset.
  - `modified_at` string, nullable, required: ISO 8601, as published_at.
  - `image` object, nullable, required
    - `url` string, required
    - `width` integer, nullable, required
    - `height` integer, nullable, required
    - `alt` string, nullable, required
    - `type` string, nullable, required
  - `video` object, nullable, required
    - `url` string, required
    - `type` string, nullable, required
    - `width` integer, nullable, required
    - `height` integer, nullable, required
  - `favicon_url` string, nullable, required
  - `icons` object[], required
    - `url` string, required
    - `rel` string, required
    - `sizes` string, nullable, required
    - `type` string, nullable, required
  - `logo_url` string, nullable, required
  - `feeds` object[], required
    - `url` string, required
    - `type` string, nullable, required
    - `title` string, nullable, required
  - `keywords` string[], required
  - `theme_color` string, nullable, required
  - `generator` string, nullable, required
  - `manifest_url` string, nullable, required
  - `robots` object, required
    - `index` boolean, required
    - `follow` boolean, required
  - `open_graph` object, required: The page's og: tags as declared.
    - `title` string, nullable, required
    - `description` string, nullable, required
    - `image` string, nullable, required
    - `url` string, nullable, required
    - `type` string, nullable, required
    - `site_name` string, nullable, required
    - `locale` string, nullable, required
  - `twitter` object, required: The page's twitter: tags as declared.
    - `card` string, nullable, required
    - `site` string, nullable, required
    - `creator` string, nullable, required
    - `title` string, nullable, required
    - `description` string, nullable, required
    - `image` string, nullable, required
  - `alternates` object[], required
    - `hreflang` string, required
    - `url` string, required
  - `oembed_url` string, nullable, required
  - `structured_data_types` string[], required

## Other responses

- `401`: Missing or invalid API key.
- `403`: The key is valid, but the email address on the account hasn't been confirmed yet.
- `422`: The URL or an option is invalid, or the page could not be fetched (the error says which). Spends nothing.
- `429`: Over the plan's parallel-request limit (`concurrency_limit`), sending too fast (`rate_limited`), or — Free plan only — out of credits (`quota_exceeded`). Spends nothing.
- `504`: A sync request took longer than 60 seconds; the work continues — collect it with GET /result/{token}.

---

[API](https://skmtc.dev/urlpipe/apis/urlpipe-api.md) · [All operations](https://skmtc.dev/urlpipe/apis/urlpipe-api/llms.txt) · [OpenAPI document](https://skmtc.dev/urlpipe/apis/urlpipe-api/revisions/7e3fa09412b9?raw)
