Link preview (title, description, image, favicon)
Everything a link preview needs for any URL: title (Open Graph or Twitter first, then the page title), description, site name, type, locale and language, canonical URL, author, published and modified dates, keywords, the preview image with width, height and alt text, all Open Graph images, video and audio, Twitter card fields, favicon and every icon the page declares, theme color, RSS/Atom feeds, oEmbed and web-manifest links, and all og:/article:/product: tags. Also the HTTP status, final URL and the redirect chain. A URL that is an image, video, audio file or PDF is described by its content type.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
urlrequired | string | Public http(s) URL of the page (a bare domain works too). Example: https://github.com/nodejs/node |
country | string | Two-letter country to view the page from (default US). |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/web/v1/preview?url=https%3A%2F%2Fgithub.com%2Fnodejs%2Fnode" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/web/v1/preview",
params={"url": "https://github.com/nodejs/node"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/web/v1/preview");
url.searchParams.set("url", "https://github.com/nodejs/node");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).