{"openapi":"3.1.0","info":{"title":"API.SH: Any website","version":"1.0.0","description":"The Any website API from API.SH: public Any website data as clean JSON. Every endpoint is a GET with query parameters and your key in the x-api-key header. Calls that run cost the credits shown (x-credits): successes, and lookups that found nothing (404). Refused calls and errors on our side are free. Docs: https://api.sh/docs · Every platform: https://api.sh/openapi.json","contact":{"name":"API.SH support","email":"support@api.sh","url":"https://api.sh/contact"},"termsOfService":"https://api.sh/legal/terms"},"servers":[{"url":"https://api.api.sh"}],"security":[{"apiKey":[]}],"tags":[{"name":"Account","description":"Your balance, usage, logs and past responses. Free."},{"name":"Any website","description":"25 endpoints (web data)","x-slug":"web","x-domains":[]}],"paths":{"/v1/account":{"get":{"operationId":"getAccount","tags":["Account"],"summary":"Balance, plan, spend and spend limits","description":"Credits by bucket (free monthly, plan, pay-as-you-go), the plan, credits spent today and this month (UTC), your spend limits and the key used. Free: costs no credits.","responses":{"200":{"description":"Account","content":{"application/json":{"example":{"success":true,"account":{"id":"8f0c…","status":"active","unlimited":false},"credits":{"total":41250,"free":100,"plan":0,"payg":41150,"free_resets_at":"2026-11-01T00:00:00Z"},"plan":null,"spend":{"today":120,"this_month":3400,"daily_limit":5000,"monthly_limit":null,"period":"UTC"},"key":{"id":"…","name":"production","prefix":"ash_li","created_at":"2026-10-01T00:00:00Z"}}}}},"401":{"description":"Missing, invalid, revoked or expired API key. Not charged. See https://api.sh/docs/errors#401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/account/usage":{"get":{"operationId":"getAccountUsage","tags":["Account"],"summary":"Usage per day and per endpoint","description":"Calls, errors and credits per UTC day, and the top endpoints by credits. Free. Add output=csv for the daily rows as CSV.","parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":90,"default":30}},{"$ref":"#/components/parameters/output"}],"responses":{"200":{"description":"Usage","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"schema":{"type":"string"}}}},"401":{"description":"Missing, invalid, revoked or expired API key. Not charged. See https://api.sh/docs/errors#401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/account/logs":{"get":{"operationId":"listAccountLogs","tags":["Account"],"summary":"Your calls of the last 30 days","description":"Newest first. Filter by status, route prefix, key or time; page with `before` (the `next` value). Add output=csv|ndjson to download (up to 5,000 rows per request; the next cursor is in the x-next-cursor header). Free.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":50}},{"name":"status","in":"query","required":false,"description":"ok, error, or an HTTP status like 502.","schema":{"type":"string"}},{"name":"route","in":"query","required":false,"description":"Route prefix, e.g. /tiktok/v1","schema":{"type":"string"}},{"name":"key","in":"query","required":false,"description":"Only calls made with this key id.","schema":{"type":"string","format":"uuid"}},{"name":"since","in":"query","required":false,"description":"ISO time.","schema":{"type":"string","format":"date-time"}},{"name":"before","in":"query","required":false,"description":"Cursor from `next`.","schema":{"type":"string"}},{"$ref":"#/components/parameters/output"}],"responses":{"200":{"description":"Calls","content":{"application/json":{"schema":{"type":"object"}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"401":{"description":"Missing, invalid, revoked or expired API key. Not charged. See https://api.sh/docs/errors#401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/results/{request_id}":{"get":{"operationId":"getResult","tags":["Account"],"summary":"Fetch a past response again, free","description":"The exact response a call returned, for 30 days after the call, at no cost. Use the call's x-request-id. Supports output=csv|ndjson.","parameters":[{"name":"request_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The stored response (headers: x-refetch: 1, x-original-time, x-original-route).","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Not found, or not public. A lookup that ran costs the endpoint's price (credits_used says); an unknown route is free.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Older than 30 days.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/web/v1/changes":{"get":{"operationId":"webChanges","summary":"Web page change detection (monitor)","description":"Monitors a page for changes: each call returns the page's text as `snapshot` (lines), a SHA-256 `hash` of it and a `snapshot_id`. Pass an earlier call's `snapshot_id` as `since` to get `changed` and a `diff` (lines added and removed, with counts), or an earlier `hash` to get `changed` only. `mode=content` (default) compares the main content (navigation, footers and ads dropped), `text` the whole visible text, `html` the markup without scripts and styles. `ignore` is a regular expression for lines to leave out (timestamps, counters). A snapshot can be compared as long as your plan keeps responses. Never served from cache.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-changes","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Public http(s) URL of the page (a bare domain works too).","schema":{"type":"string"},"example":"https://example.com"},{"name":"since","in":"query","required":false,"description":"The `snapshot_id` (for a diff) or `hash` of an earlier call.","schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"description":"What to compare.","schema":{"type":"string","enum":["content","text","html"],"default":"content"}},{"name":"ignore","in":"query","required":false,"description":"Regular expression; matching lines are ignored.","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://example.com/","final_url":"https://example.com/","status":200,"mode":"content","title":"Example Domain","checked_at":"2026-11-04T05:38:54.767Z","snapshot_id":"03ec3fc8-08c0-4a17-bd53-27315c0419cd","hash":"849e1a8b0e7c7e04acc92445880907d12244f6a8033cdd345736fa01d6e80821","lines":8,"characters":967,"changed":null,"snapshot":["Example Domain","This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and moni…","… 6 more"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/contacts":{"get":{"operationId":"webContacts","summary":"Contact details from a website","description":"The emails, phone numbers and social profiles a website publishes, read from its home page and its likely contact, about, legal-notice (impressum) and team pages (6 pages at most). `emails` are de-duplicated, including addresses written as `name [at] domain [dot] com` and protected addresses, with `own_domain` true for the site's own domain. `phones` come from click-to-call links and the site's structured data, `phones_uncertain` from numbers written in the page text; each has `e164` (international form) when the country is known (`phone_country`: the `country` parameter, else the site's country domain, language or its own click-to-call numbers). `social_profiles` covers LinkedIn, X, Facebook, Instagram, YouTube, TikTok, Pinterest, GitHub, Telegram, WhatsApp, Threads and Snapchat (`socials` groups their URLs by platform). Every item lists in `sources` the pages it was found on; `pages_checked` lists the pages read. Every response includes `credits_used`: the credits this call cost.\n\nPrice: 2 credits per successful call. Docs: https://api.sh/docs/web-contacts","tags":["Any website"],"x-credits":2,"parameters":[{"name":"url","in":"query","required":true,"description":"Website URL or bare domain (e.g. example.com).","schema":{"type":"string"},"example":"heise.de"},{"name":"country","in":"query","required":false,"description":"Two-letter country to read the site from; also the country for phone numbers written without a country code.","schema":{"type":"string"},"example":"DE"},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://heise.de/","final_url":"https://www.heise.de/","domain":"heise.de","phone_country":"DE","emails":[{"email":"name@example.com","domain":"heise.de","own_domain":true,"sources":["https://www.heise.de/kontakt/","https://www.heise.de/impressum.html"]},{"email":"name@example.com","domain":"heise.de","own_domain":true,"sources":["https://www.heise.de/"]},"… 7 more"],"phones":[],"phones_uncertain":[{"phone":"+1 555 010 0000","e164":"+1 555 010 0000","sources":["https://www.heise.de/impressum.html"]}],"social_profiles":[{"platform":"instagram","url":"https://www.instagram.com/heiseonline","username":"heiseonline","sources":["https://www.heise.de/"]},{"platform":"facebook","url":"https://www.facebook.com/heiseonline","username":"heiseonline","sources":["https://www.heise.de/"]},"… 2 more"],"socials":{"instagram":["https://www.instagram.com/heiseonline"],"facebook":["https://www.facebook.com/heiseonline"],"whatsapp":["https://whatsapp.com/channel/0029VaD7BPYGOj9jrhBhjX1U"],"linkedin":["https://www.linkedin.com/company/heiseonline"]},"counts":{"emails":9,"phones":0,"phones_uncertain":1,"social_profiles":4},"pages_checked":[{"url":"https://www.heise.de/","status":200,"error":null},{"url":"https://www.heise.de/kontakt/","status":200,"error":null},"… 1 more"],"cached":false,"credits_used":2}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/crawl":{"get":{"operationId":"webCrawl","summary":"Crawl a website to markdown","description":"Reads a website breadth-first from `url`, following its own links and the URLs in its sitemap, and returns every page as clean markdown (or text / HTML). By default the crawl stays under the start URL's folder (`scope=site` for the whole site); `include` / `exclude` narrow it further. Pages the site's robots.txt disallows are not read. Each item of `pages` has url, final_url, depth, `found_in` (start, link or sitemap), HTTP status, title, description, language, author, published date, the content under the key named by `format`, word_count, `links_count` and `internal_links_count`; a page that could not be read has `error`. `totals` gives the counts (pages read and failed, URLs discovered, queued and skipped by reason) and `skipped` lists up to 100 skipped URLs with the reason (robots, filtered, not_html, out_of_scope, depth). One call reads up to 50 pages within about 75 seconds; when time runs out first, `truncated` is true and `next_urls` holds the URLs still queued (crawl them with further calls). Content is capped at 100,000 characters per page. Every response includes `credits_used`: the credits this call cost. Cost: 1 credit per 2 pages of `max_pages` (default 10 = 5 credits).\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-crawl","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Start URL (a bare domain works too).","schema":{"type":"string"},"example":"https://docs.python.org/3/tutorial/"},{"name":"max_pages","in":"query","required":false,"description":"Pages to read at most (1-50).","schema":{"type":"integer","default":"10"},"example":"5"},{"name":"max_depth","in":"query","required":false,"description":"Link depth from the start URL (0 = the start page only; sitemap URLs count as depth 1).","schema":{"type":"integer","default":"20"}},{"name":"include","in":"query","required":false,"description":"Only read pages whose path matches: comma-separated globs (`*` = any characters except `/`, `**` = anything), or one regular expression between slashes.","schema":{"type":"string"}},{"name":"exclude","in":"query","required":false,"description":"Skip pages whose path matches (same syntax as `include`).","schema":{"type":"string"}},{"name":"scope","in":"query","required":false,"description":"`path`: only pages under the start URL's folder; `site`: the whole site.","schema":{"type":"string","enum":["path","site"],"default":"path"}},{"name":"use_sitemap","in":"query","required":false,"description":"Also queue the URLs listed in the site's sitemap.","schema":{"type":"boolean","default":"true"}},{"name":"format","in":"query","required":false,"description":"Format of each page's content (the content key has the same name).","schema":{"type":"string","enum":["markdown","text","html"],"default":"markdown"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to read the site from.","schema":{"type":"string","default":"US"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://docs.python.org/3/tutorial/","crawl_parameters":{"max_pages":10,"max_depth":20,"include":null,"exclude":null,"scope":"path","use_sitemap":true,"format":"markdown","country":"US"},"count":10,"totals":{"pages_ok":10,"pages_failed":0,"urls_discovered":67,"urls_queued":8,"skipped":49,"skipped_by_reason":{"external":0,"robots":0,"filtered":0,"not_html":0,"depth":0,"out_of_scope":49},"sitemap_urls":7,"duration_ms":6480},"robots_txt":true,"sitemaps":["https://docs.python.org/sitemap.xml"],"truncated":false,"next_urls":["https://docs.python.org/3/tutorial/stdlib.html","https://docs.python.org/3/tutorial/stdlib2.html","… 6 more"],"pages":[{"url":"https://docs.python.org/3/tutorial/","final_url":"https://docs.python.org/3/tutorial/","depth":0,"found_in":"start","status":200,"title":"The Python Tutorial","description":"Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach t…","language":"en","author":null,"published_at":null,"format":"markdown","markdown":"# The Python Tutorial[¶](https://docs.python.org/3/tutorial/#the-python-tutorial)\n\nTip\n\nThis tutorial is designed for  _programmers_  that a…","word_count":891,"truncated":false,"links_count":36,"internal_links_count":32,"load_ms":1176,"error":null},{"url":"https://docs.python.org/3/tutorial/interpreter.html","final_url":"https://docs.python.org/3/tutorial/interpreter.html","depth":1,"found_in":"link","status":200,"title":"2. Using the Python Interpreter","description":"Invoking the Interpreter: The Python interpreter is usually installed as/usr/local/bin/python3.15 on those machines where it is available; p…","language":"en","author":null,"published_at":null,"format":"markdown","markdown":"# 2. Using the Python Interpreter[¶](https://docs.python.org/3/tutorial/interpreter.html#using-the-python-interpreter)\n\n## 2.1. Invoking the…","word_count":929,"truncated":false,"links_count":23,"internal_links_count":19,"load_ms":1375,"error":null},"… 8 more"],"skipped":[{"url":"https://docs.python.org/3/whatsnew/changelog.html","reason":"out_of_scope"},{"url":"https://docs.python.org/3/bugs.html","reason":"out_of_scope"},"… 47 more"],"cached":false,"credits_used":5}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/dns":{"get":{"operationId":"webDns","summary":"DNS records lookup","description":"Live DNS records of a domain: A, AAAA, CNAME, MX, NS, TXT, SOA, CAA and HTTPS by default (`type=all`), or any of A, AAAA, CNAME, MX, NS, TXT, SOA, CAA, SRV, PTR, DS, DNSKEY, RRSIG, TLSA, SVCB, HTTPS, NAPTR, SSHFP, SPF (comma-separated for several). `records` groups the answers by type with parsed fields (MX priority and exchange, SOA serial and timers, CAA tag and CA, SRV priority/weight/port/target, DS key tag and digest); `answers` lists them all with TTLs; `status` is NOERROR, NXDOMAIN or SERVFAIL; `dnssec_validated` tells whether the answers were DNSSEC-validated. With `type=all` it also returns `email` (MX hosts, SPF record, DMARC record and policy) and the domain-verification TXT records it found. Pass an IP address for its reverse (PTR) name. Use `_dmarc.example.com`, `_sip._tcp.example.com` and similar names directly.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-dns","tags":["Any website"],"x-credits":1,"parameters":[{"name":"domain","in":"query","required":true,"description":"Domain name, service name (_dmarc.example.com) or IP address (reverse lookup).","schema":{"type":"string"},"example":"github.com"},{"name":"type","in":"query","required":false,"description":"Record type, several comma-separated, or all.","schema":{"type":"string","default":"all"},"example":"all"},{"name":"dnssec","in":"query","required":false,"description":"Ask for DNSSEC records (RRSIG) with the answers.","schema":{"type":"boolean","default":"false"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"domain":"github.com","query_name":"github.com","types":["A","AAAA","… 7 more"],"status":"NOERROR","dnssec_validated":false,"records":{"A":[{"type":"A","name":"github.com","ttl":60,"value":"140.82.121.4"}],"AAAA":[],"CNAME":[],"MX":[{"type":"MX","name":"github.com","ttl":300,"value":"github-com.mail.protection.outlook.com","priority":0,"exchange":"github-com.mail.protection.outlook.com"}],"NS":[{"type":"NS","name":"github.com","ttl":12,"value":"dns2.p08.nsone.net"},{"type":"NS","name":"github.com","ttl":12,"value":"dns4.p08.nsone.net"},"… 6 more"],"TXT":[{"type":"TXT","name":"github.com","ttl":300,"value":"loom-site-verification=f3787154f1154b7880e720a511ea664d"},{"type":"TXT","name":"github.com","ttl":300,"value":"serval-domain-verification-ydryhj=qbkiEakpwEpTvHh5fIiCqtaue"},"… 22 more"],"SOA":[{"type":"SOA","name":"github.com","ttl":900,"value":"ns-1707.awsdns-21.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400","mname":"ns-1707.awsdns-21.co.uk","rname":"awsdns-hostmaster.amazon.com","serial":1,"refresh":7200,"retry":900,"expire":1209600,"minimum":86400}],"CAA":[{"type":"CAA","name":"github.com","ttl":3600,"value":"0 issue \"letsencrypt.org\"","flags":0,"tag":"issue","ca":"letsencrypt.org"},{"type":"CAA","name":"github.com","ttl":3600,"value":"0 issue \"globalsign.com\"","flags":0,"tag":"issue","ca":"globalsign.com"},"… 5 more"],"HTTPS":[]},"answers":[{"type":"A","name":"github.com","ttl":60,"value":"140.82.121.4"},{"type":"MX","name":"github.com","ttl":300,"value":"github-com.mail.protection.outlook.com","priority":0,"exchange":"github-com.mail.protection.outlook.com"},"… 40 more"],"count":42,"email":{"mx":["github-com.mail.protection.outlook.com"],"spf":"v=spf1 ip4:192.30.252.0/22 include:spf.protection.outlook.com include:_netblocks.google.com include:_netblocks2.google.com include:mail.zend…","dmarc":"v=DMARC1; p=quarantine; sp=reject; pct=100; rua=mailto:name@example.com; ruf=mailto:name@example.com; fo=1","dmarc_policy":"quarantine"},"verifications":["loom-site-verification","openai-domain-verification","… 15 more"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/extract":{"get":{"operationId":"webExtract","summary":"Structured data from any web page","description":"Turns any public web page into structured JSON (`redirected` is true when the url led to a different page, e.g. a retired product sent to the home page or its category: the data then describes that page). With `type=auto` the page type is detected (product, product list, article, job posting, real-estate or vehicle listing, review list, event, organization, recipe; `webpage` when none applies) and `data` holds normalized fields for that type: for a product name, brand, sku/gtin/mpn, price, currency, availability, original_price, rating, review_count, images, description, seller, variants, breadcrumbs and specs; for an article headline, authors, published_at, modified_at, publisher, image and body_text; for a job title, company, location, remote, salary range and period, employment_type, posted_at, valid_through, description and apply_url; for a listing title, price, address, location and attributes; for an event start/end, venue, address and offers; for an organization name, url, logo, same_as, address and the phone/email it publishes in its structured data. `sources` lists the page signals used (json-ld, microdata, rdfa, opengraph, app_state, shopify, woocommerce, greenhouse, page_text) and `raw` carries every JSON-LD block, the OpenGraph/Twitter meta and the page's embedded app data. Pages that need a login are not supported. Every response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-extract","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Public http(s) URL of the page.","schema":{"type":"string"},"example":"https://www.allbirds.com/products/mens-tree-runners"},{"name":"type","in":"query","required":false,"description":"Page type to extract; `auto` detects it.","schema":{"type":"string","enum":["auto","product","product_list","article","job","listing","review_list","event","organization","recipe"],"default":"auto"},"example":"auto"},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (prices, language and availability can differ by country).","schema":{"type":"string","default":"US"},"example":"US"},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://www.allbirds.com/products/mens-tree-runners","final_url":"https://www.allbirds.com/products/mens-tree-runners","redirected":false,"type_detected":"product","title":"Men's Tree Runner - Jet Black (White Sole)","language":"en-US","canonical":"https://www.allbirds.com/products/mens-tree-runners","data":{"name":"Men's Tree Runner","brand":"Allbirds","sku":"MENS_TREE_RUNNERS","gtin":"843416184854","mpn":null,"price":100,"currency":"USD","price_low":100,"price_high":100,"original_price":null,"availability":"InStock","condition":"NewCondition","price_valid_until":null,"rating":null,"best_rating":null,"review_count":null,"images":["https://www.allbirds.com/cdn/shop/files/TR3MJBW080_SHOE_LEFT_GLOBAL_MENS_TREE_RUNNER_JET_BLACK_WHITE.png?v=1751165486&width=100","https://www.allbirds.com/cdn/shop/files/TR3MJBW080_SHOE_LEFT_GLOBAL_MENS_TREE_RUNNER_JET_BLACK_WHITE.png?v=1751165486&width=300","… 2 more"],"description":"The Allbirds Tree Runner is a breathable and lightweight sneaker made with responsibly sourced eucalyptus tree fiber that feels silky smooth…","url":"https://www.allbirds.com/products/mens-tree-runners","seller":null,"category":"Shoes","color":null,"size":null,"material":null,"variants":[{"name":null,"sku":null,"gtin":null,"price":null,"currency":null,"original_price":null,"availability":null,"url":"https://www.allbirds.com/products/mens-tree-runners-navy-night?size=8","image":null,"color":null,"size":null,"material":null,"pattern":null},{"name":null,"sku":null,"gtin":null,"price":null,"currency":null,"original_price":null,"availability":null,"url":"https://www.allbirds.com/products/mens-tree-runners-navy-night?size=9","image":null,"color":null,"size":null,"material":null,"pattern":null},"… 40 more"],"breadcrumbs":[],"specs":null,"reviews":[],"tags":["allbirds::carbon-score => 4.52","allbirds::cfId => color-mens-tree-runners-jet-black-white","… 17 more"],"options":[{"name":"Size","values":["8","9","… 5 more"]}]},"sources":["json-ld","shopify"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/feed":{"get":{"operationId":"webFeed","summary":"RSS / Atom feed reader and discovery","description":"Reads an RSS (0.9x, 1.0, 2.0), Atom or JSON Feed. Give the feed URL, or any page or site: the feeds it links to are found (and common feed paths tried) and the first one is read; `discovered` lists every feed found. Returns the feed's title, description, link, language, image, last update and generator, and its items with id, title, link, published and updated dates, author, a plain-text summary (up to 1,000 characters; full article texts are not returned), categories, image, comments link and enclosures (podcast audio, media).\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-feed","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Feed URL, or a page or site to find the feed on.","schema":{"type":"string"},"example":"https://www.theverge.com"},{"name":"limit","in":"query","required":false,"description":"Items at most (default 50, max 500).","schema":{"type":"integer","default":"50"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://www.theverge.com/","feed_url":"https://www.theverge.com/rss/index.xml","format":"atom","discovered":[{"url":"https://www.theverge.com/rss/index.xml","title":"The Verge","type":"application/rss+xml"}],"feed":{"title":"The Verge","description":"The Verge is about technology and how it makes us feel. Founded in 2011, we offer our audience everything from breaking news to reviews to a…","link":"https://www.theverge.com/","language":null,"image":"https://platform.theverge.com/wp-content/uploads/sites/2/2025/01/verge-rss-large_80b47e.png?w=150&h=150&crop=1","updated_at":"2026-11-04T01:17:17.000Z","generator":null},"count":10,"items":[{"id":"https://www.theverge.com/?p=1026148","title":"AMD rides data center riches to ‘largest and most profitable’ quarter in history","url":"https://www.theverge.com/tech/1026148/amd-earnings-q3-2026-data-center-pc","published_at":"2026-11-04T01:15:34.000Z","updated_at":"2026-11-04T01:17:17.000Z","author":"Stevie Bonifield","summary":"AMD CEO Lisa Su said in the company's quarterly earnings call on Tuesday that Q3 2026 was \"was the largest and most profitable in our histor…","categories":["AMD","Business","… 2 more"],"image":null,"comments_url":null,"enclosures":[]},{"id":"https://www.theverge.com/?post_type=vm_stream&p=1026112","title":"All the news about The Legend of Zelda: Ocarina of Time remake","url":"https://www.theverge.com/games/1026112/the-legend-of-zelda-ocarina-of-time-remake-nintendo-switch-2-news","published_at":"2026-11-04T01:02:53.000Z","updated_at":"2026-11-04T01:05:31.000Z","author":"Verge Staff","summary":"Ahead of the release of Rockstar Games’ Grand Theft Auto VI, Nintendo is launching its own fall juggernaut: a Switch 2 remake of The Legend …","categories":["Entertainment","Gaming","… 2 more"],"image":null,"comments_url":null,"enclosures":[]},"… 8 more"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/headers":{"get":{"operationId":"webHeaders","summary":"HTTP headers and redirect chain","description":"Fetches a URL and returns every redirect hop (URL, status, response headers, cookies set, Location, time), the final status and headers, and a summary: server, content type and length, caching headers, compression, X-Robots-Tag, cookies with their attributes (domain, path, expiry, Secure, HttpOnly, SameSite) and a security-header check (HSTS with max-age and preload, CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy, cross-origin policies) with a score.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-headers","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"The page to check (with or without https://).","schema":{"type":"string"},"example":"https://github.com"},{"name":"max_redirects","in":"query","required":false,"description":"Most redirects to follow (0-15, default 10).","schema":{"type":"integer"}},{"name":"user_agent","in":"query","required":false,"schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to request from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://github.com/","final_url":"https://github.com/","final_status":200,"redirect_count":0,"total_ms":1458,"https":true,"server":"github.com","content_type":"text/html; charset=utf-8","content_length":null,"cache_control":"max-age=0, private, must-revalidate","last_modified":null,"etag":"W/\"39fc1bc54c4f05248ac4d208908d14f4\"","compression":"gzip","x_robots_tag":null,"headers":{"accept-ranges":"bytes","cache-control":"max-age=0, private, must-revalidate","content-encoding":"gzip","content-language":"en-US","content-security-policy":"default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/asse…","content-type":"text/html; charset=utf-8","date":"Wed, 04 Nov 2026 06:08:20 GMT","etag":"W/\"39fc1bc54c4f05248ac4d208908d14f4\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"github.com","set-cookie":"logged_in=no; expires=Thu, 04 Nov 2027 05:08:25 GMT; domain=.github.com; path=/; HttpOnly; secure; SameSite=Lax","strict-transport-security":"max-age=31536000; includeSubdomains; preload","vary":"X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, X-GitHub-Client-Version, Accept-Language, Sec-Fetch-Site,Accept-Encodi…","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-edge-region":"iad","x-github-request-id":"CB1A:13AD30:1914C53:209B28B:6AEACBD9","x-xss-protection":"0"},"cookies":[{"name":"_gh_sess","value_length":354,"domain":null,"path":"/","expires":null,"max_age":null,"secure":true,"http_only":true,"same_site":"Lax"},{"name":"_octo","value_length":27,"domain":".github.com","path":"/","expires":"Thu, 04 Nov 2027 05:08:25 GMT","max_age":null,"secure":true,"http_only":false,"same_site":"Lax"},"… 1 more"],"hops":[{"url":"https://github.com/","status":200,"headers":{"accept-ranges":"bytes","cache-control":"max-age=0, private, must-revalidate","content-encoding":"gzip","content-language":"en-US","content-security-policy":"default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/asse…","content-type":"text/html; charset=utf-8","date":"Wed, 04 Nov 2026 06:08:20 GMT","etag":"W/\"39fc1bc54c4f05248ac4d208908d14f4\"","referrer-policy":"origin-when-cross-origin, strict-origin-when-cross-origin","server":"github.com","set-cookie":"logged_in=no; expires=Thu, 04 Nov 2027 05:08:25 GMT; domain=.github.com; path=/; HttpOnly; secure; SameSite=Lax","strict-transport-security":"max-age=31536000; includeSubdomains; preload","vary":"X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, X-GitHub-Client-Version, Accept-Language, Sec-Fetch-Site,Accept-Encodi…","x-content-type-options":"nosniff","x-frame-options":"deny","x-github-edge-region":"iad","x-github-request-id":"CB1A:13AD30:1914C53:209B28B:6AEACBD9","x-xss-protection":"0"},"cookies":[{"name":"_gh_sess","value_length":354,"domain":null,"path":"/","expires":null,"max_age":null,"secure":true,"http_only":true,"same_site":"Lax"},{"name":"_octo","value_length":27,"domain":".github.com","path":"/","expires":"Thu, 04 Nov 2027 05:08:25 GMT","max_age":null,"secure":true,"http_only":false,"same_site":"Lax"},"… 1 more"],"location":null,"ms":1458}],"security":{"headers":[{"header":"HSTS","present":true,"value":"max-age=31536000; includeSubdomains; preload"},{"header":"Content-Security-Policy","present":true,"value":"default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/asse…"},"… 7 more"],"score":5,"max_score":9,"hsts_max_age":31536000,"hsts_preload":true},"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/images":{"get":{"operationId":"webImages","summary":"All images on a web page","description":"Every image on a page: `<img>` tags (including lazy-load attributes such as data-src and data-srcset), `<picture>` sources, inline CSS backgrounds, linked image files, Open Graph images and icons. Each has the absolute URL, where it was found (`source`), alt text, title, declared width and height, loading mode, format and the srcset candidates. Filter by `min_width`; pages with `page` / `next_page` (null on the last page).\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-images","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Public http(s) URL of the page (a bare domain works too).","schema":{"type":"string"},"example":"https://en.wikipedia.org/wiki/Eiffel_Tower"},{"name":"min_width","in":"query","required":false,"description":"Only images declared at least this wide (images without a declared width are kept).","schema":{"type":"integer","default":"0"}},{"name":"include_icons","in":"query","required":false,"description":"Include favicons and touch icons. Default true.","schema":{"type":"boolean","default":"true"}},{"name":"srcset","in":"query","required":false,"description":"Include the srcset candidates of each image. Default true.","schema":{"type":"boolean","default":"true"}},{"name":"limit","in":"query","required":false,"description":"Images per page (default 500, max 2000).","schema":{"type":"integer","default":"500"}},{"name":"page","in":"query","required":false,"description":"Page number (default 1).","schema":{"type":"integer","default":"1"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://en.wikipedia.org/wiki/Eiffel_Tower","final_url":"https://en.wikipedia.org/wiki/Eiffel_Tower","total":98,"page":1,"limit":500,"count":98,"next_page":null,"images":[{"url":"https://en.wikipedia.org/static/images/icons/enwiki-25.svg","source":"img","alt":"","title":null,"width":50,"height":50,"loading":null,"srcset":[],"format":"svg"},{"url":"https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-en-25.svg","source":"img","alt":"Wikipedia","title":null,"width":null,"height":null,"loading":null,"srcset":[],"format":"svg"},"… 96 more"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/links":{"get":{"operationId":"webLinks","summary":"All links on a page (with broken-link check)","description":"Every link on a page: absolute URL, anchor text (or image alt / aria-label), internal or external, scheme (https, mailto, tel ...), rel, nofollow (nofollow, ugc or sponsored), target and how often it occurs. `type` keeps internal or external links only. `check=true` also requests each http(s) link (up to `check_limit`) and adds its HTTP status, final URL after redirects, response time and `broken` (4xx/5xx; null when the site rate-limited or could not be reached); `checked` and `broken` count them.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-links","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Public http(s) URL of the page (a bare domain works too).","schema":{"type":"string"},"example":"https://news.ycombinator.com/"},{"name":"type","in":"query","required":false,"description":"Which links to return.","schema":{"type":"string","enum":["all","internal","external"],"default":"all"}},{"name":"check","in":"query","required":false,"description":"Check each link's HTTP status.","schema":{"type":"boolean","default":"false"}},{"name":"check_limit","in":"query","required":false,"description":"Links checked at most (default 50, max 200).","schema":{"type":"integer","default":"50"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://news.ycombinator.com/","final_url":"https://news.ycombinator.com/","type":"all","total":192,"internal":158,"external":34,"checked":0,"broken":0,"links":[{"url":"https://news.ycombinator.com/","text":"[image]","internal":true,"scheme":"https","rel":null,"nofollow":false,"target":null,"occurrences":1},{"url":"https://news.ycombinator.com/news","text":"Hacker News","internal":true,"scheme":"https","rel":null,"nofollow":false,"target":null,"occurrences":1},"… 190 more"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/logo":{"get":{"operationId":"webLogo","summary":"Website logo and icons","description":"The logo of a website and every icon it publishes: `logo` is the best pick (the schema.org Organization logo, then the logo image in the site header, a touch icon or manifest icon of 120 px or more, then the Open Graph image) with `logo_source`; `favicon` (small icon, falling back to /favicon.ico), `icon` (the largest square icon), `schema_logo`, `header_logo`, `og_image`, theme color, the web-manifest link, and `icons` with each icon's URL, source (icon, apple-touch-icon, mask-icon, manifest, ms-tile), declared sizes and type. `candidates` lists every logo candidate in order.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-logo","tags":["Any website"],"x-credits":1,"parameters":[{"name":"domain","in":"query","required":true,"description":"Domain name or home page (the home page is read).","schema":{"type":"string"},"example":"stripe.com"},{"name":"url","in":"query","required":false,"description":"A specific page to read instead of the home page.","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"domain":"stripe.com","url":"https://stripe.com/","final_url":"https://stripe.com/","name":"Stripe | Financial Infrastructure to Grow Your Revenue","logo":"https://images.stripeassets.com/fzn2n1nzq965/1hgcBNd12BfT9VLgbId7By/01d91920114b124fb4cf6d448f9f06eb/favicon.svg","logo_source":"schema.org","favicon":"https://images.stripeassets.com/fzn2n1nzq965/1hgcBNd12BfT9VLgbId7By/01d91920114b124fb4cf6d448f9f06eb/favicon.svg","icon":"https://images.stripeassets.com/fzn2n1nzq965/1hgcBNd12BfT9VLgbId7By/01d91920114b124fb4cf6d448f9f06eb/favicon.svg","schema_logo":"https://images.stripeassets.com/fzn2n1nzq965/1hgcBNd12BfT9VLgbId7By/01d91920114b124fb4cf6d448f9f06eb/favicon.svg","header_logo":"https://images.stripeassets.com/fzn2n1nzq965/24BNV3GGtvCprFLrYovyaa/b2eac20a1d5ec75e4bff3888b998d163/enterprise-accordion-hertz.png?w=296&q=…","og_image":"https://b.stripecdn.com/mkt-ssr-statics/assets/_next/static/media/stripe.37119086.jpg","theme_color":null,"manifest":null,"icons":[{"url":"https://images.stripeassets.com/fzn2n1nzq965/1hgcBNd12BfT9VLgbId7By/01d91920114b124fb4cf6d448f9f06eb/favicon.svg","source":"icon","rel":"icon","sizes":null,"type":"image/svg+xml","width":null,"height":null},{"url":"https://images.stripeassets.com/fzn2n1nzq965/4vVgZi0ZMoEzOhkcv7EVwK/8cce6fdcf2733b2ec8e99548908847ed/favicon.png?w=96&h=96","source":"icon","rel":"icon","sizes":"96x96","type":"image/png","width":96,"height":96},"… 2 more"],"candidates":[{"url":"https://images.stripeassets.com/fzn2n1nzq965/1hgcBNd12BfT9VLgbId7By/01d91920114b124fb4cf6d448f9f06eb/favicon.svg","source":"schema.org"},{"url":"https://images.stripeassets.com/fzn2n1nzq965/24BNV3GGtvCprFLrYovyaa/b2eac20a1d5ec75e4bff3888b998d163/enterprise-accordion-hertz.png?w=296&q=…","source":"header-image"},"… 2 more"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/page":{"get":{"operationId":"webPage","summary":"Any URL to clean markdown","description":"The main content of any public web page as clean markdown, plain text or HTML, without navigation, headers, footers, cookie banners, share bars and scripts. Also returns the title, description, language, canonical URL, site name, author, published date, the headings outline of the content, and the page's links (absolute, deduplicated, up to 300, with their text and whether they stay on the same site) and images (up to 100, with alt text); `links_total` and `images_total` give the full counts. Content is capped at 200,000 characters (`truncated` tells when it was cut). Plain-text URLs (JSON, CSV, text) are returned as they are. Every response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-page","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Public http(s) URL of the page.","schema":{"type":"string"},"example":"https://en.wikipedia.org/wiki/Web_scraping"},{"name":"format","in":"query","required":false,"description":"Format of `content`.","schema":{"type":"string","enum":["markdown","text","html"],"default":"markdown"},"example":"markdown"},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from.","schema":{"type":"string","default":"US"},"example":"US"},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://en.wikipedia.org/wiki/Web_scraping","final_url":"https://en.wikipedia.org/wiki/Web_scraping","content_type":"text/html","title":"Web scraping - Wikipedia","description":"Web scraping, web harvesting, or web data extraction is data scraping used for extracting data from websites. Web scraping software may dire…","language":"en","canonical":"https://en.wikipedia.org/wiki/Web_scraping","site_name":null,"author":null,"published_at":null,"image":null,"headings":[{"level":1,"text":"Web scraping"},{"level":2,"text":"History"},"… 17 more"],"links":[{"url":"https://en.wikipedia.org/wiki/Web_scraping","text":"Jump to content","internal":true},{"url":"https://en.wikipedia.org/wiki/Main_Page","text":"Main page","internal":true},"… 298 more"],"links_total":335,"images":[{"url":"https://en.wikipedia.org/static/images/icons/enwiki-25.svg","alt":null},{"url":"https://en.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-en-25.svg","alt":"Wikipedia"},"… 7 more"],"images_total":9,"format":"markdown","content":"# Web scraping\n\nFrom Wikipedia, the free encyclopedia\n\nFor broader coverage of this topic, see [Data scraping](https://en.wikipedia.org/wiki…","word_count":4257,"truncated":false,"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/pdf":{"get":{"operationId":"webPdf","summary":"PDF to text","description":"The text of a public PDF file, page by page, with its metadata: title, author, subject, keywords, creator and producer, creation and modification dates, PDF version, page count and size. `text` joins the pages; `pages` has each page's text. Read up to 50 pages by default (`max_pages` up to 200) or pick pages with `pages=1-5,8`; `next_pages` names the next range when more remain. Files up to 4 MB. Scanned PDFs without a text layer come back with empty page text and `has_text: false`; password-protected files answer 400.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 4 credits per successful call. Docs: https://api.sh/docs/web-pdf","tags":["Any website"],"x-credits":4,"parameters":[{"name":"url","in":"query","required":true,"description":"Public link to the PDF file (with or without https://).","schema":{"type":"string"},"example":"https://www.irs.gov/pub/irs-pdf/fw9.pdf"},{"name":"pages","in":"query","required":false,"description":"Pages to read, e.g. `1-5`, `3`, `1-3,10,20-` (default the first `max_pages`).","schema":{"type":"string"}},{"name":"max_pages","in":"query","required":false,"description":"Most pages to read (default 50, up to 200).","schema":{"type":"integer"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to download the file from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/preview":{"get":{"operationId":"webPreview","summary":"Link preview (title, description, image, favicon)","description":"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.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-preview","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Public http(s) URL of the page (a bare domain works too).","schema":{"type":"string"},"example":"https://github.com/nodejs/node"},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://github.com/nodejs/node","final_url":"https://github.com/nodejs/node","status":200,"redirects":[],"content_type":"text/html","title":"GitHub - nodejs/node: Node.js JavaScript runtime ✨🐢🚀✨","page_title":"GitHub - nodejs/node: Node.js JavaScript runtime ✨🐢🚀✨ · GitHub","description":"Node.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on GitHub.","site_name":"GitHub","type":"object","locale":null,"language":"en","canonical":null,"author":null,"published_at":null,"modified_at":null,"keywords":[],"image":{"url":"https://opengraph.githubassets.com/98a687383e53571d44101a772ac1f162bc0b21fecfa47d8660f5cc35c3d0c60f/nodejs/node","width":1200,"height":600,"alt":"Node.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on GitHub.","type":null},"images":["https://opengraph.githubassets.com/98a687383e53571d44101a772ac1f162bc0b21fecfa47d8660f5cc35c3d0c60f/nodejs/node"],"video":null,"audio":null,"twitter":{"card":"summary_large_image","site":"@github","creator":null,"title":"GitHub - nodejs/node: Node.js JavaScript runtime ✨🐢🚀✨","description":"Node.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on GitHub.","image":"https://opengraph.githubassets.com/98a687383e53571d44101a772ac1f162bc0b21fecfa47d8660f5cc35c3d0c60f/nodejs/node"},"favicon":"https://github.githubassets.com/favicons/favicon.svg","icons":[{"url":"https://github.com/fluidicon.png","source":"icon","rel":"fluid-icon","sizes":null,"type":"image/png","width":null,"height":null},{"url":"https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg","source":"mask-icon","rel":"mask-icon","sizes":null,"type":"image/svg+xml","width":null,"height":null},"… 2 more"],"theme_color":"#1e2327","feeds":[],"oembed":null,"manifest":"https://github.com/manifest.json","og":{"og:image":"https://opengraph.githubassets.com/98a687383e53571d44101a772ac1f162bc0b21fecfa47d8660f5cc35c3d0c60f/nodejs/node","og:image:alt":"Node.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on GitHub.","og:image:width":"1200","og:image:height":"600","og:site_name":"GitHub","og:type":"object","og:title":"GitHub - nodejs/node: Node.js JavaScript runtime ✨🐢🚀✨","og:url":"https://github.com/nodejs/node","og:description":"Node.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on GitHub."},"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/product":{"get":{"operationId":"webProduct","summary":"Product data from any shop page","description":"The product on any online-shop product page, from its structured data (schema.org Product in JSON-LD, microdata or RDFa), Open Graph product tags and the page's embedded app state, plus the shop's own product data on Shopify and WooCommerce stores: name, brand, SKU, GTIN/EAN/UPC, MPN, price, currency, price range, original price, availability, condition, rating and review count, reviews, images, description, category, seller, shipping, variants with their options, prices and stock, and `raw` with everything structured the page published. Answers 404 when the page has no product.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-product","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Public URL of a product page.","schema":{"type":"string"},"example":"https://www.allbirds.com/products/mens-tree-runners"},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://www.allbirds.com/products/mens-tree-runners","final_url":"https://www.allbirds.com/products/mens-tree-runners","redirected":false,"title":"Men's Tree Runner - Jet Black (White Sole)","language":"en-US","canonical":"https://www.allbirds.com/products/mens-tree-runners","product":{"name":"Men's Tree Runner","brand":"Allbirds","sku":"MENS_TREE_RUNNERS","gtin":"843416184854","mpn":null,"price":100,"currency":"USD","price_low":100,"price_high":100,"original_price":null,"availability":"InStock","condition":"NewCondition","price_valid_until":null,"rating":null,"best_rating":null,"review_count":null,"images":["https://www.allbirds.com/cdn/shop/files/TR3MJBW080_SHOE_LEFT_GLOBAL_MENS_TREE_RUNNER_JET_BLACK_WHITE.png?v=1751165486&width=100","https://www.allbirds.com/cdn/shop/files/TR3MJBW080_SHOE_LEFT_GLOBAL_MENS_TREE_RUNNER_JET_BLACK_WHITE.png?v=1751165486&width=300","… 2 more"],"description":"The Allbirds Tree Runner is a breathable and lightweight sneaker made with responsibly sourced eucalyptus tree fiber that feels silky smooth…","url":"https://www.allbirds.com/products/mens-tree-runners","seller":null,"category":"Shoes","color":null,"size":null,"material":null,"variants":[{"name":null,"sku":null,"gtin":null,"price":null,"currency":null,"original_price":null,"availability":null,"url":"https://www.allbirds.com/products/mens-tree-runners-navy-night?size=8","image":null,"color":null,"size":null,"material":null,"pattern":null},{"name":null,"sku":null,"gtin":null,"price":null,"currency":null,"original_price":null,"availability":null,"url":"https://www.allbirds.com/products/mens-tree-runners-navy-night?size=9","image":null,"color":null,"size":null,"material":null,"pattern":null},"… 40 more"],"breadcrumbs":[],"specs":null,"reviews":[],"tags":["allbirds::carbon-score => 4.52","allbirds::cfId => color-mens-tree-runners-jet-black-white","… 17 more"],"options":[{"name":"Size","values":["8","9","… 5 more"]}]},"sources":["json-ld","shopify"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/robots":{"get":{"operationId":"webRobots","summary":"robots.txt parsed","description":"A site's robots.txt parsed: every user-agent group with its Allow / Disallow rules, crawl delay and other directives, the sitemaps it lists, whether everything is disallowed, whether common AI crawlers (GPTBot, ClaudeBot, Google-Extended, PerplexityBot, CCBot...) may crawl the site, and with `path` (and optionally `user_agent`) whether that path is allowed, using the longest-match rule. `text=true` adds the raw file.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-robots","tags":["Any website"],"x-credits":1,"parameters":[{"name":"domain","in":"query","required":true,"description":"The site (domain or any URL on it).","schema":{"type":"string"},"example":"github.com"},{"name":"path","in":"query","required":false,"description":"A path to check (e.g. /search); a URL with a path in `domain` is checked too.","schema":{"type":"string"}},{"name":"user_agent","in":"query","required":false,"description":"The crawler to check for (default *).","schema":{"type":"string"}},{"name":"text","in":"query","required":false,"description":"Include the raw robots.txt (true/false).","schema":{"type":"string","enum":["true","false"]}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"domain":"github.com","url":"https://github.com/robots.txt","final_url":"https://github.com/robots.txt","status":200,"found":true,"size_bytes":14540,"lines":526,"user_agents":["GPTBot","OAI-SearchBot","… 11 more"],"group_count":6,"groups":[{"user_agents":["GPTBot","OAI-SearchBot","… 3 more"],"rules":[{"type":"allow","path":"/*?tab=achievements&achievement=*"},{"type":"allow","path":"/marketplace/*?tab=readme$"},"… 163 more"],"crawl_delay":1,"other":[]},{"user_agents":["Bytespider"],"rules":[{"type":"disallow","path":"/"}],"crawl_delay":null,"other":[]},"… 4 more"],"sitemaps":["https://github.com/sitemap_marketing.xml"],"other_directives":[],"everything_disallowed":false,"ai_crawlers":[{"bot":"GPTBot","named":true,"allowed_root":true},{"bot":"ChatGPT-User","named":false,"allowed_root":true},"… 11 more"],"check":null,"text":null,"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/screenshot":{"get":{"operationId":"webScreenshot","summary":"Screenshot of a web page","description":"`full_page=true` captures the whole scrollable page instead of the viewport. Every response includes `credits_used`: the credits this call cost. Cost: 2 credits; setting `country` adds 5 (the page then loads through that country).\n\nPrice: 2 credits per successful call. Docs: https://api.sh/docs/web-screenshot","tags":["Any website"],"x-credits":2,"parameters":[{"name":"url","in":"query","required":true,"description":"Public http(s) URL of the page (a bare domain works too).","schema":{"type":"string"},"example":"https://example.com"},{"name":"full_page","in":"query","required":false,"description":"Capture the whole page, not only the visible part.","schema":{"type":"boolean","default":"false"}},{"name":"width","in":"query","required":false,"description":"Viewport width in pixels.","schema":{"type":"integer","default":"1280"}},{"name":"height","in":"query","required":false,"description":"Viewport height in pixels.","schema":{"type":"integer","default":"800"}},{"name":"format","in":"query","required":false,"description":"Image format.","schema":{"type":"string","enum":["png","jpeg"],"default":"png"}},{"name":"quality","in":"query","required":false,"description":"JPEG quality.","schema":{"type":"integer","default":"80"}},{"name":"delay","in":"query","required":false,"description":"Extra milliseconds to wait after the page loaded.","schema":{"type":"integer","default":"0"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from.","schema":{"type":"string","default":"US"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://example.com/","final_url":"https://example.com/","status":200,"title":"Example Domain","format":"png","mime_type":"image/png","full_page":false,"viewport":{"width":1280,"height":800},"width":1280,"height":800,"bytes":72317,"image_base64":"iVBORw0KGgoAAAANSUhEUgAABQAAAAMgCAIAAADz+lisAAAQAElEQVR4nOzdedxV4/7/8RWJUBShFJkqGYs0GBMylnmWeZ7n+XAc5xzHlOkc8xCikCmKSpMGQhPRgDTPSXNJfq+zr993…","load_ms":4410,"cached":false,"credits_used":2}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/search":{"get":{"operationId":"webSearch","summary":"Web search with page content for AI","description":"Searches the web for `q` and returns the top result pages read in full as clean markdown (or text / HTML), ready for an AI model or a RAG pipeline. Each item of `results` has the search position, title, url and description from the results page, then `status` (`ok` or `failed`), the page's own title, description, language, author and published date, the content under the key named by `format` (`markdown`, `text` or `html`), `word_count` and `truncated` (content is capped at 100,000 characters per page). A page that could not be read is listed with `status: failed` and `error`; the call succeeds when at least one page was read (`pages_fetched`, `pages_failed`). `more_results` lists the other search hits without content. When `q` is itself a URL, that page alone is read. `engine` says which search engine answered (`auto` uses Google first, then Bing, then DuckDuckGo). `include_domains` and `exclude_domains` limit the results to or away from some sites. Every response includes `credits_used`: the credits this call cost. Cost: 9 credits for the search plus 1 per page read (`max_results`; default 3 = 12 credits).\n\nPrice: 8 credits per successful call. Docs: https://api.sh/docs/web-search","tags":["Any website"],"x-credits":8,"parameters":[{"name":"q","in":"query","required":true,"description":"Search query, or a URL to read directly.","schema":{"type":"string"},"example":"what is retrieval augmented generation"},{"name":"max_results","in":"query","required":false,"description":"Result pages to read (1-10).","schema":{"type":"integer","default":"3"},"example":"3"},{"name":"country","in":"query","required":false,"description":"Two-letter country to search and read the pages from.","schema":{"type":"string","default":"US"},"example":"US"},{"name":"language","in":"query","required":false,"description":"Interface language of the search (e.g. en, de, pt-BR).","schema":{"type":"string","default":"en"},"example":"en"},{"name":"format","in":"query","required":false,"description":"Format of each page's content (the content key has the same name).","schema":{"type":"string","enum":["markdown","text","html"],"default":"markdown"},"example":"markdown"},{"name":"time","in":"query","required":false,"description":"Only results from the past hour, day, week, month or year.","schema":{"type":"string","enum":["hour","day","week","month","year"]}},{"name":"engine","in":"query","required":false,"description":"Search engine to use; `auto` falls back to the next engine when one returns nothing.","schema":{"type":"string","enum":["auto","google","bing","duckduckgo"],"default":"auto"}},{"name":"include_domains","in":"query","required":false,"description":"Only results from these domains (and their subdomains), comma separated, up to 10, e.g. nasa.gov,noaa.gov.","schema":{"type":"string"}},{"name":"exclude_domains","in":"query","required":false,"description":"No results from these domains (and their subdomains), comma separated, up to 10.","schema":{"type":"string"}},{"name":"safe","in":"query","required":false,"description":"Safe search: `strict` filters explicit results, `off` turns the filter off (default: the engine's own setting).","schema":{"type":"string","enum":["strict","moderate","off"]}},{"name":"page","in":"query","required":false,"description":"Which page of search results to read (10 hits a page, up to 10; DuckDuckGo up to 5), to go beyond the top results. Pass `next_page` back as `page`; null on the last page.","schema":{"type":"integer"}},{"name":"date_from","in":"query","required":false,"description":"Only results dated on or after this day (YYYY-MM-DD). Uses Google; not with `time`.","schema":{"type":"string"}},{"name":"date_to","in":"query","required":false,"description":"Only results dated on or before this day (YYYY-MM-DD).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"query":"history of the Eiffel Tower","search_parameters":{"q":"history of the Eiffel Tower","max_results":3,"country":"US","language":"en","format":"markdown","time":null,"engine":"auto"},"engine":"google","count":3,"pages_fetched":3,"pages_failed":0,"results":[{"position":1,"title":"Eiffel Tower","url":"https://en.wikipedia.org/wiki/Eiffel_Tower","description":"It is named after the engineer Gustave Eiffel, whose company designed and built the tower from 1887 to 1889. Eiffel Tower. Tour Eiffel (Fren…","date":null,"status":"ok","http_status":200,"final_url":"https://en.wikipedia.org/wiki/Eiffel_Tower","page_title":"Eiffel Tower - Wikipedia","page_description":"The Eiffel Tower (/ˈaɪfəl/ ⓘ EYE-fəl; French: Tour Eiffel [tuʁ ɛfɛl] ⓘ) is a lattice tower on the Champ de Mars in Paris, France. It is name…","language":"en","author":null,"published_at":null,"format":"markdown","markdown":"# Eiffel Tower\n\n[Coordinates](https://en.wikipedia.org/wiki/Geographic_coordinate_system): [48°51′29.6″N 2°17′40.2″E / 48.858222°N 2.294500°…","word_count":8910,"truncated":true,"load_ms":3913,"error":null},{"position":2,"title":"Eiffel Tower opens in Paris | March 31, 1889","url":"https://www.history.com/this-day-in-history/march-31/eiffel-tower-opens","description":"On March 31, 1889, the Eiffel Tower is dedicated in Paris in a ceremony presided over by Gustave Eiffel, the tower's designer, and attended …","date":null,"status":"ok","http_status":200,"final_url":"https://www.history.com/this-day-in-history/march-31/eiffel-tower-opens","page_title":"Eiffel Tower opens in Paris | March 31, 1889 | HISTORY","page_description":"The Eiffel Tower is dedicated in Paris in a ceremony presided over by Gustave Eiffel, the tower’s designer, and atten...","language":"en","author":"HISTORY.com Editors","published_at":"2009-11-24T18:03:27.000Z","format":"markdown","markdown":"![](https://res.cloudinary.com/aenetworks/image/upload/c_fill,w_3840,h_787,g_auto/dpr_auto/f_auto/q_auto:eco/v1/History_This_Day_In_History_…","word_count":1384,"truncated":false,"load_ms":1612,"error":null},"… 1 more"],"more_results":[{"position":4,"title":"The Entire History of the Eiffel Tower in 18 minutes YouTube · Thomas Relives History 1 week ago","url":"https://www.youtube.com/watch?v=zVqOvp7R3o0","description":null},{"position":5,"title":"Gustave Eiffel, The Eiffel Tower YouTube · Smarthistory Jan 8, 2026","url":"https://www.youtube.com/watch?v=vurh8_SO6_c","description":null}],"cached":false,"credits_used":11}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/seo":{"get":{"operationId":"webSeo","summary":"On-page SEO audit","description":"An on-page SEO audit of any URL: a 0-100 `score` and `issues` (error / warning / notice with a code and message: missing or long title and description, missing or multiple H1, canonical problems, noindex, robots.txt blocking, missing viewport or lang, images without alt, not HTTPS, redirect chains, thin content, missing Open Graph or structured data, robots.txt without sitemap, links without text). Also the title and description with lengths, keywords, canonical(s), robots meta and X-Robots-Tag with `indexable` / `follow`, language, charset, viewport, hreflang alternates, AMP URL, rel prev/next, heading counts and the headings outline, word count, image stats (missing alt, empty alt, missing dimensions), link stats (internal, external, nofollow, without text), structured-data types, Open Graph and Twitter tags, favicon, robots.txt (found, sitemaps, whether it allows this page), HTTP status, redirect chain, response time, HTML size, server, compression and cache headers.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-seo","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Public http(s) URL of the page (a bare domain works too).","schema":{"type":"string"},"example":"https://www.bbc.com/news"},{"name":"robots","in":"query","required":false,"description":"Also read the site's robots.txt (default true).","schema":{"type":"boolean","default":"true"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://www.bbc.com/news","final_url":"https://www.bbc.com/news","status":200,"redirects":[],"https":true,"response_ms":1566,"html_bytes":487277,"score":68,"issues":[{"severity":"warning","code":"title_long","message":"The title is long (93 characters; search results show about 60)."},{"severity":"warning","code":"title_multiple","message":"The page has 4 <title> tags."},"… 4 more"],"title":"BBC News - Breaking news, video and the latest top stories from the U.S. and around the world","title_length":93,"description":"Visit BBC News for the latest news, breaking news, video, audio and analysis. BBC News provides trusted World, U.S. and U.K. news as well as…","description_length":249,"keywords":null,"canonical":"https://www.bbc.com/news","canonicals":["https://www.bbc.com/news","https://www.bbc.com/news"],"robots_meta":"NOODP, NOYDIR","x_robots_tag":"bingbot: noarchive","indexable":true,"follow":true,"language":"en-GB","charset":"utf-8","viewport":"width=device-width, initial-scale=1","hreflang":[{"lang":"en","url":"https://www.bbc.com/news"},{"lang":"en-gb","url":"https://www.bbc.co.uk/news"}],"amp_url":null,"pagination":{"prev":null,"next":null},"headings_count":{"h1":1,"h2":51,"h3":15,"h4":1,"h5":0,"h6":0},"h1":["News"],"headings":[{"level":1,"text":"News"},{"level":3,"text":"Live . updates"},"… 66 more"],"word_count":1242,"images":{"total":77,"missing_alt":38,"empty_alt":0,"missing_dimensions":77,"missing_alt_examples":["https://static.files.bbci.co.uk/bbcdotcom/web/20261027-121803-88dfe2b2c8-web-3.26.0-4/grey-placeholder.png","https://static.files.bbci.co.uk/bbcdotcom/web/20261027-121803-88dfe2b2c8-web-3.26.0-4/grey-placeholder.png","… 18 more"]},"links":{"total":187,"internal":180,"external":7,"nofollow":0,"without_text":5},"structured_data":{"types":["WebPage","NewsMediaOrganization"],"jsonld_blocks":1,"microdata_items":0},"open_graph":{"og:title":"BBC News - Breaking news, video and the latest top stories from the U.S. and around the world","og:type":"website","og:url":"https://www.bbc.com/news","og:description":"Visit BBC News for the latest news, breaking news, video, audio and analysis. BBC News provides trusted World, U.S. and U.K. news as well as…"},"twitter_card":{"twitter:title":"BBC News - Breaking news, video and the latest top stories from the U.S. and around the world","twitter:description":"Visit BBC News for the latest news, breaking news, video, audio and analysis. BBC News provides trusted World, U.S. and U.K. news as well as…"},"favicon":"https://static.files.bbci.co.uk/bbcdotcom/web/20261027-121803-88dfe2b2c8-web-3.26.0-4/favicon-32x32.png","robots_txt":{"found":true,"url":"https://www.bbc.com/robots.txt","sitemaps":["https://www.bbc.com/afrique/sitemap.xml","https://www.bbc.com/arabic/sitemap.xml","… 37 more"],"allows_page":true},"server":"BBC-GTM","content_encoding":"gzip","cache_control":"private, stale-if-error=90, stale-while-revalidate=30, max-age=0, must-revalidate","cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/sitemap":{"get":{"operationId":"webSitemap","summary":"Sitemap URLs of a website","description":"Every URL a site lists in its XML sitemaps: the sitemaps are found from robots.txt (or /sitemap.xml and /sitemap_index.xml), sitemap indexes are followed, gzip sitemaps and plain-text sitemaps are read. The first page also lists `sitemaps` (with lastmod for sitemaps named in an index). Each URL has lastmod, changefreq, priority, image and video counts, hreflang alternates (`alternates=true`; their count otherwise), the news title for news sitemaps and the sitemap it came from. Pass `sitemap` to read one sitemap only. Pass `next_cursor` back as `cursor`; null on the last page. Each call answers within about 45 s: for slow sites a page can hold fewer than `limit` URLs (`time_limited: true`); continue with `next_cursor`.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-sitemap","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Site (home page or domain), or a sitemap URL.","schema":{"type":"string"},"example":"https://www.bbc.com"},{"name":"sitemap","in":"query","required":false,"description":"Read only this sitemap (or sitemap index).","schema":{"type":"string"}},{"name":"alternates","in":"query","required":false,"description":"List each URL's hreflang alternates (language, URL); without it `alternates` is their count.","schema":{"type":"boolean","default":"false"}},{"name":"limit","in":"query","required":false,"description":"URLs per page (default 1000, max 10000).","schema":{"type":"integer","default":"1000"}},{"name":"cursor","in":"query","required":false,"description":"Pass `next_cursor` from the previous response; null on the last page.","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"https://www.bbc.com/","robots_txt":true,"sitemaps":[{"url":"https://www.bbc.com/afrique/sitemap.xml","lastmod":null,"kind":"urlset"},{"url":"https://www.bbc.com/arabic/sitemap.xml","lastmod":null,"kind":"urlset"},"… 23 more"],"sitemaps_count":25,"count":1000,"urls":[{"url":"http://www.bbc.co.uk/afrique/institutionelles/2014/09/140924_test.shtml","lastmod":"2014-09-24T14:32:16+00:00","changefreq":null,"priority":null,"images":0,"videos":0,"alternates":0,"news_title":null,"sitemap":"https://www.bbc.com/afrique/sitemap.xml"},{"url":"http://www.bbc.co.uk/afrique/nos_emissions/2014/09/140924_india_arrives_on_mars.shtml","lastmod":"2014-09-24T13:58:11+00:00","changefreq":null,"priority":null,"images":0,"videos":0,"alternates":0,"news_title":null,"sitemap":"https://www.bbc.com/afrique/sitemap.xml"},"… 998 more"],"remaining_sitemaps":20,"next_cursor":"eyJxIjpbImh0dHBzOi8vd3d3LmJiYy5jb20vYmJjeC92aWRlb19kb2N1bWVudGFyaWVzX3NpdGVtYXAueG1sIiwiaHR0cHM6Ly93d3cuYmJjLmNvbS9iZW5nYWxpL3NpdGVtYXAueG1s…","cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/ssl":{"get":{"operationId":"webSsl","summary":"SSL/TLS certificate check","description":"Also the negotiated TLS version, cipher suite, key exchange group, ALPN protocol, HTTP version and status, and the HSTS header.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-ssl","tags":["Any website"],"x-credits":1,"parameters":[{"name":"domain","in":"query","required":true,"description":"Host name (a URL works too).","schema":{"type":"string"},"example":"github.com"},{"name":"port","in":"query","required":false,"description":"TLS port: 443 (default), 8443, 465, 993, 995, 636, 990, 5986, 2083, 2087 or 8883.","schema":{"type":"integer","default":"443"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"host":"github.com","port":443,"valid":true,"validation_error":null,"validation_code":null,"hostname_match":true,"expired":false,"days_left":84,"subject":"CN=github.com","common_name":"github.com","organization":null,"issuer":"C=GB, O=Sectigo Limited, CN=Sectigo Public Server Authentication CA DV E36","issuer_common_name":"Sectigo Public Server Authentication CA DV E36","issuer_organization":"Sectigo Limited","names":["github.com","www.github.com"],"ip_addresses":[],"not_before":"2026-10-30T00:00:00.000Z","not_after":"2027-01-27T23:59:59.000Z","serial_number":"3e1d6026b4b0aea279dca2efbbced82b","version":3,"signature_algorithm":"ecdsa-with-SHA256","key_algorithm":"EC","key_size":256,"key_curve":"P-256","is_ca":false,"self_signed":false,"validation_level":"DV","sha256_fingerprint":"7D:C4:D8:5C:F1:E3:10:97:12:25:BC:9A:92:57:67:90:43:A2:43:D7:0A:3C:C2:A9:1C:C5:D3:89:89:2C:27:76","sha1_fingerprint":"E6:52:C8:BD:1C:AF:D0:4A:44:23:9F:A8:DA:B0:C5:9D:EA:CB:79:EE","chain":[{"subject":"C=GB, O=Sectigo Limited, CN=Sectigo Public Server Authentication CA DV E36","common_name":"Sectigo Public Server Authentication CA DV E36","organization":"Sectigo Limited","issuer":"C=GB, O=Sectigo Limited, CN=Sectigo Public Server Authentication Root E46","issuer_common_name":"Sectigo Public Server Authentication Root E46","issuer_organization":"Sectigo Limited","names":[],"ip_addresses":[],"not_before":"2021-03-22T00:00:00.000Z","not_after":"2036-03-21T23:59:59.000Z","days_left":3425,"expired":false,"serial_number":"36e059ed888dd57aedd570b6727f9bda","version":3,"signature_algorithm":"ecdsa-with-SHA384","key_algorithm":"EC","key_size":256,"key_curve":"P-256","is_ca":true,"self_signed":false,"validation_level":"DV","sha256_fingerprint":"87:3F:0B:A8:0E:3A:C2:22:65:6D:FD:04:15:8C:C1:5C:29:27:D4:2D:5D:05:F0:1D:EE:4A:47:EB:43:A9:16:DF","sha1_fingerprint":"56:63:48:E6:56:E1:FA:6C:4E:2E:E6:72:59:16:E8:F4:E3:73:8A:07"},{"subject":"C=GB, O=Sectigo Limited, CN=Sectigo Public Server Authentication Root E46","common_name":"Sectigo Public Server Authentication Root E46","organization":"Sectigo Limited","issuer":"C=US, ST=New Jersey, L=Jersey City, O=The USERTRUST Network, CN=USERTrust ECC Certification Authority","issuer_common_name":"USERTrust ECC Certification Authority","issuer_organization":"The USERTRUST Network","names":[],"ip_addresses":[],"not_before":"2021-03-22T00:00:00.000Z","not_after":"2038-01-18T23:59:59.000Z","days_left":4093,"expired":false,"serial_number":"1a9eafec6de8e19b5c193141b68d90dd","version":3,"signature_algorithm":"ecdsa-with-SHA384","key_algorithm":"EC","key_size":384,"key_curve":"P-384","is_ca":true,"self_signed":false,"validation_level":null,"sha256_fingerprint":"EA:6B:89:ED:69:07:A2:09:FF:91:88:67:6F:B1:64:E7:AC:ED:89:4B:89:96:DF:BE:5C:E5:BB:CC:22:DE:4D:DD","sha1_fingerprint":"3F:96:99:89:F5:31:0E:9C:05:0D:FF:D7:AB:C1:55:30:E3:C1:3A:A0"}],"chain_length":3,"tls_version":"TLS 1.3","cipher_suite":"TLS_AES_128_GCM_SHA256","key_exchange":"x25519","alpn":"h2","http_version":"2","http_status":200,"hsts":"max-age=31536000; includeSubdomains; preload","checked_at":"2026-11-04T06:15:51.439Z","cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/subdomains":{"get":{"operationId":"webSubdomains","summary":"Subdomains from certificate transparency","description":"Subdomains of a domain found in public certificate-transparency logs (every publicly trusted TLS certificate is logged): each name with whether it is a wildcard, when it was first and last seen in a certificate, when its newest certificate expires, how many certificates name it and their issuers. `total` counts all names found; `certificates` the certificates read. Only names with a currently valid certificate by default; `include_expired=true` adds names whose certificates have all expired (older infrastructure). Domains with very many certificates can take up to a minute. When the main log search is down, the answer comes from current certificates only and says so with `current_certificates_only: true` (and `complete: false` if it stopped early). Pages with `page` / `next_page` (null on the last page).\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-subdomains","tags":["Any website"],"x-credits":1,"parameters":[{"name":"domain","in":"query","required":true,"description":"Domain name.","schema":{"type":"string"},"example":"stripe.com"},{"name":"include_expired","in":"query","required":false,"description":"Also include names seen only in expired certificates.","schema":{"type":"boolean","default":"false"}},{"name":"wildcards","in":"query","required":false,"description":"Include wildcard names (*.example.com). Default true.","schema":{"type":"boolean","default":"true"}},{"name":"limit","in":"query","required":false,"description":"Names per page (default 1000, max 5000).","schema":{"type":"integer","default":"1000"}},{"name":"page","in":"query","required":false,"description":"Page number (default 1).","schema":{"type":"integer","default":"1"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"domain":"stripe.com","include_expired":false,"total":146,"certificates":256,"page":1,"limit":1000,"count":146,"next_page":null,"subdomains":[{"name":"*.bom.corp.stripe.com","wildcard":true,"first_seen":"2026-08-05T00:00:00.000Z","last_seen":"2026-09-14T00:00:00.000Z","cert_expires_at":"2026-12-17T23:59:59.000Z","certificates":3,"issuers":["DigiCert, Inc."]},{"name":"*.cdg.corp.stripe.com","wildcard":true,"first_seen":"2026-08-05T00:00:00.000Z","last_seen":"2026-08-27T00:00:00.000Z","cert_expires_at":"2026-12-10T23:59:59.000Z","certificates":3,"issuers":["DigiCert, Inc."]},"… 144 more"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/technologies":{"get":{"operationId":"webTechnologies","summary":"Website technology stack (tech detection)","description":"The technologies a website runs, detected from its response headers, cookies, meta tags, HTML, script URLs, inline scripts, styles and page elements with an open fingerprint set of thousands of technologies: CMS, e-commerce platform, JavaScript frameworks and libraries, UI frameworks, analytics, tag managers, advertising, marketing automation, live chat, payment processors, CDN, hosting/PaaS, web servers, programming language, databases, security, cookie-consent tools and more. Each item has name, version (where the page shows it), confidence (0-100), categories, website, description, icon, CPE and what it was detected by (implied technologies, such as PHP under WordPress, say `implied`). Also `by_category`, the `server` and `x-powered-by` headers.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-technologies","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"Public http(s) URL of the page (a bare domain works too).","schema":{"type":"string"},"example":"https://wordpress.org/news/"},{"name":"min_confidence","in":"query","required":false,"description":"Only technologies at or above this confidence (0-100).","schema":{"type":"integer","default":"0"}},{"name":"descriptions","in":"query","required":false,"description":"Include each technology's description. Default true.","schema":{"type":"boolean","default":"true"}},{"name":"country","in":"query","required":false,"description":"Two-letter country to view the page from (default US).","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/wayback/closest":{"get":{"operationId":"webWaybackClosest","summary":"Wayback Machine closest snapshot","description":"The Wayback Machine capture of a URL closest to a date (default: the newest): timestamp, date, HTTP status, snapshot link and raw-content link.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-wayback-closest","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"The URL.","schema":{"type":"string"},"example":"example.com"},{"name":"timestamp","in":"query","required":false,"description":"Target date: YYYY, YYYYMM, YYYYMMDD or YYYYMMDDhhmmss (dashes allowed).","schema":{"type":"string"},"example":"2015-06-01"},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"example.com","requested":null,"available":true,"status":200,"timestamp":"20261104020555","date":"2026-11-04T02:05:55Z","snapshot_url":"https://web.archive.org/web/20261104020555/https://example.com/","raw_url":"https://web.archive.org/web/20261104020555id_/https://example.com/","cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/wayback/snapshots":{"get":{"operationId":"webWaybackSnapshots","summary":"Wayback Machine snapshots","description":"Every Wayback Machine capture of a URL (or of all URLs under a prefix, host or domain): timestamp, date, captured URL, snapshot link, raw-content link, MIME type, HTTP status, content digest and size. Filter by date range, status and MIME type; keep one capture per hour/day/month/year or per distinct content; oldest or newest first. Pass `next_cursor` back as `cursor`; null on the last page.\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-wayback-snapshots","tags":["Any website"],"x-credits":1,"parameters":[{"name":"url","in":"query","required":true,"description":"The URL (or prefix/host/domain with `match`).","schema":{"type":"string"},"example":"example.com"},{"name":"from","in":"query","required":false,"description":"From date: YYYY, YYYYMM, YYYYMMDD or YYYYMMDDhhmmss (dashes allowed).","schema":{"type":"string"}},{"name":"to","in":"query","required":false,"description":"To date, same formats.","schema":{"type":"string"}},{"name":"match","in":"query","required":false,"description":"exact (default), prefix (every URL starting with it), host, or domain (with subdomains).","schema":{"type":"string","enum":["exact","prefix","host","domain"]}},{"name":"status","in":"query","required":false,"description":"HTTP status filter: 200, 3xx, or !404 to exclude.","schema":{"type":"string"}},{"name":"mime","in":"query","required":false,"description":"MIME type filter, e.g. text/html, application/pdf, image/*.","schema":{"type":"string"}},{"name":"collapse","in":"query","required":false,"description":"Keep one capture per period, per distinct content, or per URL.","schema":{"type":"string","enum":["hour","day","month","year","content","url"]}},{"name":"order","in":"query","required":false,"description":"Order (default oldest first).","schema":{"type":"string","enum":["oldest","newest"]}},{"name":"limit","in":"query","required":false,"description":"Results per page (default 100, max 1000).","schema":{"type":"integer"}},{"name":"cursor","in":"query","required":false,"description":"Pass `next_cursor` from the previous response; null on the last page.","schema":{"type":"string"}},{"$ref":"#/components/parameters/raw"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"url":"example.com","applied_filters":{},"limit":100,"count":100,"next_cursor":"eJxLzs_VSa1IzC3ISdXUVzAyMDAxMDMyMzQ0MDI1AgB_dgeP","snapshots":[{"id":"20020120142510/http://example.com:80/","timestamp":"20020120142510","date":"2002-01-20T14:25:10Z","url":"http://example.com:80/","snapshot_url":"https://web.archive.org/web/20020120142510/http://example.com:80/","raw_url":"https://web.archive.org/web/20020120142510id_/http://example.com:80/","mime":"text/html","status":200,"digest":"HT2DYGA5UKZCPBSFVCV3JOBXGW2G5UUA","length":1792,"urlkey":"com,example)/"},{"id":"20020328012821/http://www.example.com:80/","timestamp":"20020328012821","date":"2002-03-28T01:28:21Z","url":"http://www.example.com:80/","snapshot_url":"https://web.archive.org/web/20020328012821/http://www.example.com:80/","raw_url":"https://web.archive.org/web/20020328012821id_/http://www.example.com:80/","mime":"text/html","status":200,"digest":"UY3I2DT2AMWAY6DECFCFYMT5ZOTFHUCH","length":481,"urlkey":"com,example)/"},"… 98 more"],"cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}},"/web/v1/whois":{"get":{"operationId":"webWhois","summary":"Domain WHOIS / registration data","description":"Registration data of a domain from its registry, the way WHOIS shows it: registered, updated and expiry dates, age and days until expiry, status codes, registrar (name, IANA id, website, abuse email and phone), name servers, DNSSEC (signed, DS records), the registry's WHOIS server and every event. For gTLDs and most ccTLDs the registry's structured data is used, merged with the registrar's own record; for registries without it (.io, .de, .jp, .co and others) their WHOIS server is read and parsed. A subdomain is resolved to its registered name (www.example.co.uk -> example.co.uk). Unregistered names answer `registered: false`. Contacts keep only organization, state and country (names, emails, phones and addresses of people are never returned). `raw=true` adds the registry's record (or the WHOIS text without personal contact lines).\n\nEvery response includes `credits_used`: the credits this call cost.\n\nPrice: 1 credit per successful call. Docs: https://api.sh/docs/web-whois","tags":["Any website"],"x-credits":1,"parameters":[{"name":"domain","in":"query","required":true,"description":"Domain name (a URL or subdomain works too).","schema":{"type":"string"},"example":"github.com"},{"name":"raw","in":"query","required":false,"description":"Also return the registry's full record (`raw`) or WHOIS text (`raw_text`).","schema":{"type":"boolean","default":"false"},"example":"false"},{"name":"registrar_lookup","in":"query","required":false,"description":"Also read the registrar's own record (thin registries such as .com/.net). Default true.","schema":{"type":"boolean","default":"true"}},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/fresh"},{"$ref":"#/components/parameters/output"},{"$ref":"#/components/parameters/records"}],"responses":{"200":{"description":"The data as JSON (or CSV / NDJSON with `output`).","headers":{"x-request-id":{"$ref":"#/components/headers/x-request-id"},"x-credits-used":{"$ref":"#/components/headers/x-credits-used"},"x-credits-remaining":{"$ref":"#/components/headers/x-credits-remaining"}},"content":{"application/json":{"schema":{"type":"object","additionalProperties":true},"example":{"query":"github.com","domain":"github.com","domain_unicode":null,"handle":"1264983250_DOMAIN_COM-VRSN","status":["client delete prohibited","client transfer prohibited","… 1 more"],"registered_at":"2007-10-09T18:20:50.000Z","updated_at":"2026-09-07T09:22:52.000Z","expires_at":"2028-10-09T18:20:50.000Z","transferred_at":null,"database_updated_at":"2026-11-04T06:16:19.000Z","registrar":{"name":"MarkMonitor Inc.","iana_id":"292","url":"http://www.markmonitor.com","abuse_email":"name@example.com","abuse_phone":"+1 555 010 0000","handle":"292"},"registrant":{"organization":null,"state":"CA","country":"US","redacted":true},"admin":null,"tech":{"organization":null,"state":null,"country":null,"redacted":true},"nameservers":["dns1.p08.nsone.net","dns2.p08.nsone.net","… 6 more"],"dnssec":{"signed":false,"ds":[]},"whois_server":null,"events":[{"action":"registration","date":"2007-10-09T18:20:50.000Z","actor":null},{"action":"expiration","date":"2028-10-09T18:20:50.000Z","actor":null},"… 2 more"],"registrar_expires_at":"2028-10-09T00:00:00.000Z","source":"rdap","server":"https://rdap.verisign.com/com/v1/","registered":true,"age_days":6965,"days_until_expiry":705,"registrar_rdap":"https://rdap.markmonitor.com/rdap/domain/GITHUB.COM","cached":false,"credits_used":1}},"text/csv":{"schema":{"type":"string"}},"application/x-ndjson":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/E400"},"401":{"$ref":"#/components/responses/E401"},"402":{"$ref":"#/components/responses/E402"},"404":{"$ref":"#/components/responses/E404"},"502":{"$ref":"#/components/responses/E502"},"503":{"$ref":"#/components/responses/E503"}}}}},"components":{"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Create keys at https://app.api.sh/keys. Authorization: Bearer <key> also works."}},"parameters":{"raw":{"name":"raw","in":"query","required":false,"description":"0 leaves out the bulky `raw` source blocks (often 10-30x smaller).","schema":{"type":"string","enum":["0","1"]}},"fields":{"name":"fields","in":"query","required":false,"description":"Comma-separated fields to return, e.g. `posts.id,posts.title`. Call metadata is always included.","schema":{"type":"string"}},"fresh":{"name":"fresh","in":"query","required":false,"description":"1 skips the 24-hour cache and fetches live.","schema":{"type":"string","enum":["1"]}},"output":{"name":"output","in":"query","required":false,"description":"csv or ndjson returns the response's records (its main list, or the object as one row) as CSV or NDJSON instead of JSON.","schema":{"type":"string","enum":["json","csv","ndjson"]}},"records":{"name":"records","in":"query","required":false,"description":"With output=csv|ndjson: the top-level list to turn into rows (e.g. `reviews`), or `.` for the whole object as one row.","schema":{"type":"string"}}},"schemas":{"Error":{"type":"object","properties":{"success":{"type":"boolean","const":false},"error":{"type":"string"}},"required":["success","error"]}},"responses":{"E400":{"description":"A parameter is missing or invalid. Not charged (unless the call ran and the source rejected the value; credits_used says).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E401":{"description":"Missing, invalid, revoked or expired API key. Not charged. See https://api.sh/docs/errors#401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E402":{"description":"Not enough credits, a spend limit you set was reached (`spend_limit`), or the key's monthly credit cap was reached (`key_cap`). Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E404":{"description":"Not found, or not public. A lookup that ran costs the endpoint's price (credits_used says); an unknown route is free.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E502":{"description":"The source site failed this time; retry. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"E503":{"description":"Endpoint paused or temporarily unavailable; may include retry-after. Not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"headers":{"x-request-id":{"description":"The call's id (logs, re-fetch with /v1/results/{id}).","schema":{"type":"string","format":"uuid"}},"x-credits-used":{"description":"Credits charged for this call.","schema":{"type":"integer"}},"x-credits-remaining":{"description":"Balance after the call.","schema":{"type":"integer"}}}},"externalDocs":{"url":"https://api.sh/docs"}}