{"generated_at":1790206291.2686484,"engine_count":280,"categories":[{"id":"reviews","title":"Reputation & Reviews"},{"id":"jobs","title":"Jobs & Hiring"},{"id":"real-estate","title":"Real Estate"},{"id":"ecommerce","title":"E-commerce & Marketplaces"},{"id":"social","title":"Social Media"},{"id":"travel","title":"Travel & Lodging"},{"id":"search-seo","title":"Search & SEO"},{"id":"finance","title":"Finance & Data"},{"id":"media","title":"Media, Film & Knowledge"},{"id":"utilities","title":"Utilities & AI"},{"id":"developer-tools","title":"Developer Tools"},{"id":"government","title":"Government & Tenders"},{"id":"classifieds","title":"Classifieds & Second-hand"}],"unit":"credits","default_price":1,"rate_limits":{"ip":{"requests":30,"window_seconds":3},"key":{"requests":30,"window_seconds":3}},"engines":[{"name":"1688","category":{"id":"other","title":"Other"},"title":"1688.com API scraper - live wholesale search and full product detail for 1688.com, Alibaba's China-domestic B2B marketplace. Every result carries the correct unit price, minimum order quantity, the quantity price ladder, supplier company and city; product detail adds per-variant price, stock and kg weight. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/1688/v1","spec_available":true,"actions":[{"name":"product/detail","description":"Full detail for one 1688 offer, merged from the offer page and 1688's variant model in two calls. Returns the title, image gallery, the unit price in CNY, the price type (a shared quantity ladder vs per-variant pricing) and the full price ladder with the minimum quantity of each tier, the MOQ with its unit, total orderable stock, the mixed-batch terms sourcing buyers need, units sold, the full specification table (material, brand, model, ...), the supplier company with its member and login ids and storefront url, and EVERY sellable variant with its own price, stock (canBookCount, present on 100% of variants) and shipping weight in kg where the supplier published it (absent on many, returned as null - never inferred). Colour / size / spec axes are returned alongside the variants. A dead or invented offer id returns NOT_FOUND.","required_params":["offer_id"],"optional_params":["max_rotations"],"params":[{"name":"offer_id","type":"string","required":true,"description":"A 1688 offer id (the digits in `m.1688.com/offer/<id>.html`) or a full offer url. Every `search` row returns the id as `id`.","on_invalid":"reject","example":"864971848115","aliases":["id","offerId","product_id","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many datacentre exits to try before giving up (1688 runs a per-exit request budget on search; a fresh exit clears it). Raise it only if you see transient block errors.","on_invalid":"reject","default":4,"example":4,"minimum":1,"maximum":8}],"returns":"id, title, url, images[], price (number, CNY), price_display, currency, unit, price_type (rangePrice=a shared quantity ladder / skuPrice=priced per variant), price_tiers[]{min_qty, max_qty, price, price_display}, moq{quantity, unit}, stock, mix{supported, min_qty, min_amount}, sold_count, category{top_id, post_id}, attributes[]{name, value}, seller{member_id, user_id, login_id, name, url}, in_stock, variants{axes[]{name, values[]}, skus[]{sku_id, spec, price, discount_price, stock, sold_count, weight_kg}, count, price_range, price_type, ship_from_code}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"offer_id":"864971848115"}},{"name":"product/reviews","description":"Buyer reviews for one 1688 offer: the average star rating (out of 5), the positive-feedback percentage, the total review count, and a page of individual reviews with their text, the quantity bought, the variant, buyer photos and the date. 1688 masks buyer nicknames itself. Some offers have no reviews yet - that returns an empty list with a zero count, not an error.","required_params":["offer_id"],"optional_params":["max_rotations"],"params":[{"name":"offer_id","type":"string","required":true,"description":"A 1688 offer id (the digits in `m.1688.com/offer/<id>.html`) or a full offer url. Every `search` row returns the id as `id`.","on_invalid":"reject","example":"864971848115","aliases":["id","offerId","product_id","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many datacentre exits to try before giving up (1688 runs a per-exit request budget on search; a fresh exit clears it). Raise it only if you see transient block errors.","on_invalid":"reject","default":4,"example":4,"minimum":1,"maximum":8}],"returns":"rating (number, out of 5), rating_scale, good_percent (number), good_percent_display, review_count (number - a lower bound where 1688 prints '100+'), review_count_display, reviews[]{content, buyer, quantity, spec, images[], date, plus_user}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"offer_id":"864971848115"}}]},{"name":"a101","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"A101 API scraper — Turkish discount grocery chain (a101.com.tr): search A101 Kapıda groceries and A101 Ekstra products, list the Aldın Aldın and Haftanın Yıldızları campaigns, read a product — shelf price, struck price, campaign badges and dates, in-basket and multi-buy prices kept apart, unit price, barcodes, net weight, storage, origin, stock, description. Prices in TRY. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/a101/v1","spec_available":true,"actions":[{"name":"search","description":"Search A101's online shops by keyword: `kapida` (groceries and household at the delivery store's prices) or `ekstra` (electronics, home, fashion) — 60 products a page, Ekstra's sort orders. Each row: product id, title, brand, URL, image, shelf price, struck price and discount, campaign badges (Aldın Aldın, Haftanın Yıldızları …) with dates, and for Kapıda the conditional in-basket price, multi-buy price and unit price kept apart.","required_params":["query"],"optional_params":["channel","page","sort","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for, in Turkish ('peynir', 'yumurta', 'deterjan', 'televizyon', 'kulaklık'). Brand and product words work; typos are tolerated by A101's search.","on_invalid":"reject","example":"peynir","aliases":["q","keyword"]},{"name":"channel","type":"enum","required":false,"description":"Which A101 online shop to search. Groceries (cheese, milk, detergent) are only in `kapida`; TVs, phones, furniture and clothes are in `ekstra`.","on_invalid":"reject","allowed_values":[{"value":"kapida","label":"A101 Kapıda — groceries and household, delivery-store prices"},{"value":"ekstra","label":"A101 Ekstra — electronics, home, fashion, shipped products"}],"default":"kapida"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. A101 serves 60 products per page; `total_pages` says how many exist.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Result order — Ekstra's own sort options. Kapıda's search has no working sort, so on `kapida` only `relevance` is accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"A101's recommended order"},{"value":"price_asc","label":"Lowest price first (Ekstra only)"},{"value":"price_desc","label":"Highest price first (Ekstra only)"},{"value":"newest","label":"Newest listings first (Ekstra only)"},{"value":"discount","label":"Biggest discount first (Ekstra only)"},{"value":"best_selling","label":"Best sellers first (Ekstra only)"}],"default":"relevance"},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When A101 has nothing matching the query it fills the page with unrelated products. They are dropped by default (`fallback_results_dropped` counts them); set true to also get them in `fallback_results`.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id, channel, title, brand, url, image, price (number, TRY — the shelf price; Kapıda: the delivery store's price), price_before_discount (struck price, null when none), discount_percent, currency=TRY, in_stock, campaigns[{code, label, site_name, starts_on, ends_on}], category, category_id, category_path[]; Kapıda only: sold_at_store, store_code, campaign_conditions[] (the site's campaign text), basket_offer{price, regular_price, code, label, condition, ends_on} (a price that applies only inside a qualifying basket — NOT the shelf price), multi_buy{min_quantity, unit_price, regular_unit_price, code, label, ends_on}, unit_price{price, per, label} (the site's own unit price), sales_unit, base_unit, max_order_quantity; Ekstra only: barcode (GTIN, check digit validated), sales_channels[], max_order_quantity, country_of_origin}, count, total_results (null when unknown), total_pages, page, page_size (60), has_more, channel, store_code (kapida), keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[] (only with include_fallback_results), page_notice","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"peynir","channel":"kapida"}},{"name":"product/detail","description":"One A101 product by id or URL, from Kapıda or Ekstra: shelf price, struck price and discount, campaign badges with dates, in-basket and multi-buy prices, unit price, barcodes, net and gross weight, storage condition, country of origin, shelf life, stock count (Ekstra), instalment offers (Ekstra), images, breadcrumb, description and specifications.","required_params":[],"optional_params":["product_id","url","channel","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"The A101 product id — `product_id` of a search or campaigns row ('12002661' Kapıda, '26077738' Ekstra).","on_invalid":"reject","example":"12002661","aliases":["id","sku"]},{"name":"url","type":"string","required":false,"description":"Alternative to `product_id`: an a101.com.tr product URL (…_p-<id> or /kapida/product/<id>).","on_invalid":"reject","example":"https://www.a101.com.tr/kapida/sut-urunleri-kahvaltilik/peynes-suzme-tam-yagli-taze-beyaz-peynir-500-g_p-12002661","aliases":["product_url"]},{"name":"channel","type":"enum","required":false,"description":"Which A101 shop the product id belongs to. `auto` looks in both; a URL decides it by itself.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Find the product in either shop"},{"value":"kapida","label":"A101 Kapıda"},{"value":"ekstra","label":"A101 Ekstra"}],"default":"auto"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{position, product_id, channel, title, brand, url, image, price (number, TRY — the shelf price; Kapıda: the delivery store's price), price_before_discount (struck price, null when none), discount_percent, currency=TRY, in_stock, campaigns[{code, label, site_name, starts_on, ends_on}], category, category_id, category_path[]; Kapıda only: sold_at_store, store_code, campaign_conditions[] (the site's campaign text), basket_offer{price, regular_price, code, label, condition, ends_on} (a price that applies only inside a qualifying basket — NOT the shelf price), multi_buy{min_quantity, unit_price, regular_unit_price, code, label, ends_on}, unit_price{price, per, label} (the site's own unit price), sales_unit, base_unit, max_order_quantity; Ekstra only: barcode (GTIN, check digit validated), sales_channels[], max_order_quantity, country_of_origin, barcodes[] (Kapıda: every barcode A101 lists), net_weight_g, gross_weight_g, storage_condition, shelf_life_days, private_label, return_days, description, breadcrumb[{id, name, url}], images[], campaign_period{name, starts_on, ends_on}; Ekstra: base_id, stock_count, stock_level, collections[], badges[], installments[{card, max_interest_free_installments}], max_interest_free_installments, specifications[{name, value}], variants[{product_id, size, color, price, in_stock, url}], product_page (false when only the search index could be read), other_channel_offer{channel, product_id, price, price_before_discount, discount_percent, in_stock, url, store_code} (the same product in the other A101 shop, at that shop's own price — prices differ between Kapıda and Ekstra; null when it is sold in one shop)}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"12002661"}},{"name":"campaigns","description":"The products of an A101 campaign page — Aldın Aldın, Haftanın Yıldızları, Aldın Aldın X, Aylık Fırsat, 10 TL ve üzeri sepette and Çok Al Az Öde on Kapıda; Aldın Aldın and Aldın Aldın Ekstra on Ekstra — 60 per page, with the same row fields as search.","required_params":[],"optional_params":["campaign","channel","page","max_rotations"],"params":[{"name":"campaign","type":"enum","required":false,"description":"Which A101 campaign to list. Each campaign exists in the channel(s) named in brackets.","on_invalid":"reject","allowed_values":[{"value":"aldin_aldin","label":"Aldın Aldın (kapida, ekstra)"},{"value":"haftanin_yildizlari","label":"Haftanın Yıldızları (kapida)"},{"value":"aldin_aldin_x","label":"Aldın Aldın X (kapida)"},{"value":"aylik_firsat","label":"Aylık Fırsat Ürünleri (kapida)"},{"value":"sepette_10_tl","label":"10 TL ve Üzeri Alışverişte Sepette (kapida)"},{"value":"cok_al_az_ode","label":"Çok Al Az Öde multi-buy (kapida)"},{"value":"aldin_aldin_ekstra","label":"Aldın Aldın Ekstra (ekstra)"}],"default":"aldin_aldin"},{"name":"channel","type":"enum","required":false,"description":"Which A101 online shop to search. Groceries (cheese, milk, detergent) are only in `kapida`; TVs, phones, furniture and clothes are in `ekstra`.","on_invalid":"reject","allowed_values":[{"value":"kapida","label":"A101 Kapıda — groceries and household, delivery-store prices"},{"value":"ekstra","label":"A101 Ekstra — electronics, home, fashion, shipped products"}],"default":"kapida"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. A101 serves 60 products per page; `total_pages` says how many exist.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id, channel, title, brand, url, image, price (number, TRY — the shelf price; Kapıda: the delivery store's price), price_before_discount (struck price, null when none), discount_percent, currency=TRY, in_stock, campaigns[{code, label, site_name, starts_on, ends_on}], category, category_id, category_path[]; Kapıda only: sold_at_store, store_code, campaign_conditions[] (the site's campaign text), basket_offer{price, regular_price, code, label, condition, ends_on} (a price that applies only inside a qualifying basket — NOT the shelf price), multi_buy{min_quantity, unit_price, regular_unit_price, code, label, ends_on}, unit_price{price, per, label} (the site's own unit price), sales_unit, base_unit, max_order_quantity; Ekstra only: barcode (GTIN, check digit validated), sales_channels[], max_order_quantity, country_of_origin}, count, total_results, total_pages, page, page_size (60), has_more, channel, campaign, campaign_code, campaign_page, store_code (kapida)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"A101's own search autocomplete for a partial keyword in Kapıda or Ekstra: the top matching products with price and the category / brand suggestions the site shows.","required_params":["query"],"optional_params":["channel","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the user has typed so far (2+ characters).","on_invalid":"reject","example":"peyn","aliases":["q","keyword"]},{"name":"channel","type":"enum","required":false,"description":"Which A101 online shop to search. Groceries (cheese, milk, detergent) are only in `kapida`; TVs, phones, furniture and clothes are in `ekstra`.","on_invalid":"reject","allowed_values":[{"value":"kapida","label":"A101 Kapıda — groceries and household, delivery-store prices"},{"value":"ekstra","label":"A101 Ekstra — electronics, home, fashion, shipped products"}],"default":"kapida"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"products[]{position, product_id, channel, title, brand, url, image, price (number, TRY — the shelf price; Kapıda: the delivery store's price), price_before_discount (struck price, null when none), discount_percent, currency=TRY, in_stock, campaigns[{code, label, site_name, starts_on, ends_on}], category, category_id, category_path[]; Kapıda only: sold_at_store, store_code, campaign_conditions[] (the site's campaign text), basket_offer{price, regular_price, code, label, condition, ends_on} (a price that applies only inside a qualifying basket — NOT the shelf price), multi_buy{min_quantity, unit_price, regular_unit_price, code, label, ends_on}, unit_price{price, per, label} (the site's own unit price), sales_unit, base_unit, max_order_quantity; Ekstra only: barcode (GTIN, check digit validated), sales_channels[], max_order_quantity, country_of_origin}, categories[{name, count}], brands[{name, count}] (ekstra), total_results, channel, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"peynir"}}]},{"name":"academic","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Academic Papers API — search scholarly papers, authors, citations, institutions and journals across OpenAlex, arXiv and Crossref (abstracts, DOIs, open-access PDFs)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/academic/v1","spec_available":true,"actions":[{"name":"search","description":"search papers (source=openalex|arxiv|crossref|all; cursor pagination, year/OA/type filters, match=title, fulltext=; first-class author_id/venue_id/institution_id/concept_id/topic_id filters for papers BY an entity)","required_params":["query"],"optional_params":["source","per_page","cursor","filter","sort","from_year","to_year","open_access","type","match","category","include_abstract","fulltext","author_id","venue_id","institution_id","concept_id","topic_id"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query.","on_invalid":"reject","example":"covid","aliases":["q"]},{"name":"source","type":"enum","required":false,"description":"Which backend(s) to search. Unknown values are rejected.","on_invalid":"reject","allowed_values":[{"value":"openalex","label":"OpenAlex (default, CC0)"},{"value":"arxiv","label":"arXiv preprints"},{"value":"crossref","label":"Crossref DOI metadata"},{"value":"all","label":"Merge all three (DOI-deduped)"}],"default":"openalex","example":"openalex"},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-200, default 25); clamped.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":200,"aliases":["limit"]},{"name":"cursor","type":"string","required":false,"description":"OpenAlex cursor for deep pagination (use '*' for the first page, then meta.next_cursor).","on_invalid":"reject","example":"*"},{"name":"filter","type":"string","required":false,"description":"Advanced: raw OpenAlex (or Crossref) filter string, appended verbatim.","on_invalid":"reject","example":"is_oa:true"},{"name":"sort","type":"string","required":false,"description":"Sort key. OpenAlex accepts keys like cited_by_count:desc / publication_date:desc; arXiv accepts 'date'.","on_invalid":"reject","example":"cited_by_count:desc"},{"name":"from_year","type":"integer","required":false,"description":"Filter to papers published on or after this year.","on_invalid":"ignore","example":2019},{"name":"to_year","type":"integer","required":false,"description":"Filter to papers published on or before this year.","on_invalid":"ignore","example":2024},{"name":"open_access","type":"boolean","required":false,"description":"If true, restrict to open-access works (is_oa:true).","on_invalid":"ignore","default":false,"example":true},{"name":"type","type":"string","required":false,"description":"OpenAlex work type filter (e.g. article, book-chapter, dataset); passed through.","on_invalid":"reject","example":"article"},{"name":"match","type":"boolean","required":false,"description":"If true, closest-title match (title.search) instead of relevance search (OpenAlex source only).","on_invalid":"ignore","default":false,"example":false},{"name":"category","type":"string","required":false,"description":"arXiv subject category (source=arxiv); can stand in for `query`.","on_invalid":"reject","example":"cs.LG"},{"name":"include_abstract","type":"boolean","required":false,"description":"Include reconstructed abstracts in search results (default true).","on_invalid":"ignore","default":true,"example":true},{"name":"fulltext","type":"string","required":false,"description":"Full-text search within the paper body (OpenAlex fulltext.search).","on_invalid":"reject","example":"transformer architecture"},{"name":"start","type":"integer","required":false,"description":"arXiv offset pagination (0-10000); clamped.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":10000},{"name":"offset","type":"integer","required":false,"description":"Crossref offset pagination (0-10000); clamped.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":10000},{"name":"author_id","type":"string","required":false,"description":"Restrict to papers by this OpenAlex author id (filter=author.id:…). A convenience over the raw `filter` string.","on_invalid":"ignore","example":"A5023888391"},{"name":"venue_id","type":"string","required":false,"description":"Restrict to papers by this OpenAlex venue/source id (filter=primary_location.source.id:…). A convenience over the raw `filter` string.","on_invalid":"ignore","example":"S137773608"},{"name":"institution_id","type":"string","required":false,"description":"Restrict to papers by this OpenAlex institution id (filter=institutions.id:…). A convenience over the raw `filter` string.","on_invalid":"ignore","example":"I97018004"},{"name":"concept_id","type":"string","required":false,"description":"Restrict to papers by this OpenAlex concept id (filter=concepts.id:…). A convenience over the raw `filter` string.","on_invalid":"ignore","example":"C41008148"},{"name":"topic_id","type":"string","required":false,"description":"Restrict to papers by this OpenAlex topic id (filter=topics.id:…). A convenience over the raw `filter` string.","on_invalid":"ignore","example":"T10017"}],"returns":"results[] (title, doi, authors[], venue, year, cited_by_count, abstract, oa_pdf, sources_merged), count, next_cursor, source","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"covid"}},{"name":"paper_detail","description":"full paper (abstract/authors/affiliations/venue/year/DOI/OA-PDF/fields); id=OpenAlex|DOI|arXiv|PMID; cross-source abstract gap-fill","required_params":["id"],"optional_params":["enrich","raw","fill_abstract"],"params":[{"name":"id","type":"string","required":true,"description":"Paper id — OpenAlex id (W…), OR DOI (10.…), OR arXiv id, OR PMID.","on_invalid":"reject","example":"W3177828909","aliases":["doi","paper_id"]},{"name":"enrich","type":"boolean","required":false,"description":"Pull extra Crossref metadata (funders/license/references flag) for the paper.","on_invalid":"ignore","default":false,"example":true},{"name":"raw","type":"boolean","required":false,"description":"Attach the raw OpenAlex record under paper._raw_openalex.","on_invalid":"ignore","default":false,"example":false},{"name":"fill_abstract","type":"boolean","required":false,"description":"Gap-fill a missing OpenAlex abstract from arXiv/Crossref (default true).","on_invalid":"ignore","default":true,"example":true}],"returns":"paper{} — title, abstract, authors[]+affiliations, venue, year, doi, oa_pdf, fields, cited_by_count, sources_merged","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"W3177828909"}},{"name":"citations","description":"papers that cite this work (cursor-paginated)","required_params":["id"],"optional_params":["per_page","cursor"],"params":[{"name":"id","type":"string","required":true,"description":"Paper id — OpenAlex id (W…), OR DOI (10.…), OR arXiv id, OR PMID.","on_invalid":"reject","example":"W3177828909","aliases":["doi","paper_id"]},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-200, default 25); clamped.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":200,"aliases":["limit"]},{"name":"cursor","type":"string","required":false,"description":"OpenAlex cursor for deep pagination (use '*' for the first page, then meta.next_cursor).","on_invalid":"reject","example":"*"}],"returns":"results[] (citing papers: id, title, year, …), count, next_cursor, cited_paper_id","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"W3009885589"}},{"name":"references","description":"works this paper references (hydrated)","required_params":["id"],"optional_params":["limit"],"params":[{"name":"id","type":"string","required":true,"description":"Paper id — OpenAlex id (W…), OR DOI (10.…), OR arXiv id, OR PMID.","on_invalid":"reject","example":"W3177828909","aliases":["doi","paper_id"]},{"name":"limit","type":"integer","required":false,"description":"Max records (1-200, default 50); clamped.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":200}],"returns":"results[] (referenced papers, hydrated), count, referenced_works_count, paper_id, stop_reason","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"W3009885589"}},{"name":"related","description":"OpenAlex-curated related works for a paper (co-cited / topically-adjacent), hydrated","required_params":["id"],"optional_params":["limit"],"params":[{"name":"id","type":"string","required":true,"description":"Paper id — OpenAlex id (W…), OR DOI (10.…), OR arXiv id, OR PMID.","on_invalid":"reject","example":"W3177828909","aliases":["doi","paper_id"]},{"name":"limit","type":"integer","required":false,"description":"Max records (1-200, default 25); clamped.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":200}],"returns":"results[] (related papers, hydrated), count, related_works_count, paper_id, stop_reason","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"id":"W3177828909"}},{"name":"author","description":"author search (query) or profile (id): works_count, h-index, affiliations; include_works for top papers","required_params":[],"optional_params":["id","query","include_works","works_limit","per_page"],"params":[{"name":"id","type":"string","required":false,"description":"OpenAlex author id for a profile. Supply `id` OR a `query`/`name`.","on_invalid":"reject","example":"A5023888391"},{"name":"query","type":"string","required":false,"description":"Search text → ranked list. Supply this OR `id`.","on_invalid":"reject","example":"stanford","aliases":["name"]},{"name":"include_works","type":"boolean","required":false,"description":"Profile only: also return the author's top works (highest-cited first).","on_invalid":"ignore","default":false,"example":true},{"name":"works_limit","type":"integer","required":false,"description":"Max top works when include_works=true (1-200).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":200},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-200, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":200,"aliases":["limit"]}],"returns":"profile: author{name,works_count,h_index,affiliations,top_works[]}; OR search: results[] (name, h_index, works_count), count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"yoshua bengio"}},{"name":"institution","description":"institution search/profile: ROR, country, geo, works/citation counts, h-index; include_works for the org's papers","required_params":[],"optional_params":["id","query","per_page","include_works","works_limit"],"params":[{"name":"id","type":"string","required":false,"description":"OpenAlex institution id for a profile. Supply `id` OR a `query`/`name`.","on_invalid":"reject","example":"I97018004"},{"name":"query","type":"string","required":false,"description":"Search text → ranked list. Supply this OR `id`.","on_invalid":"reject","example":"stanford","aliases":["name"]},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-200, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":200,"aliases":["limit"]},{"name":"include_works","type":"boolean","required":false,"description":"Profile only: also return the institution's top works (highest-cited first).","on_invalid":"ignore","default":false,"example":true},{"name":"works_limit","type":"integer","required":false,"description":"Max top works when include_works=true (1-200).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":200}],"returns":"profile: institution{name,ror,country_code,geo,works_count,h_index,type,top_works[]?}; OR search: results[] (name, country_code, works_count), count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"stanford"}},{"name":"venue","description":"journal/venue search/profile: ISSN, publisher, OA/DOAJ, h-index, works/citation counts; include_works for the venue's papers","required_params":[],"optional_params":["id","query","per_page","include_works","works_limit"],"params":[{"name":"id","type":"string","required":false,"description":"OpenAlex venue/source id for a profile. Supply `id` OR a `query`/`name`.","on_invalid":"reject","example":"S137773608"},{"name":"query","type":"string","required":false,"description":"Search text → ranked list. Supply this OR `id`.","on_invalid":"reject","example":"stanford","aliases":["name"]},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-200, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":200,"aliases":["limit"]},{"name":"include_works","type":"boolean","required":false,"description":"Profile only: also return the venue's top works (highest-cited first).","on_invalid":"ignore","default":false,"example":true},{"name":"works_limit","type":"integer","required":false,"description":"Max top works when include_works=true (1-200).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":200}],"returns":"profile: venue{name,issn_l,publisher,is_oa,is_in_doaj,h_index,works_count,top_works[]?}; OR search: results[] (name, issn_l), count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nature"}},{"name":"concept","description":"concept search (query) or profile (id): level, works/citation counts, description; include_works for papers. NOTE: OpenAlex froze the Concepts dataset (ancestors/related now empty) — use `topic` for the live subject hierarchy","required_params":[],"optional_params":["id","query","per_page","include_works","works_limit"],"params":[{"name":"id","type":"string","required":false,"description":"OpenAlex concept id for a profile. Supply `id` OR a `query`/`name`.","on_invalid":"reject","example":"C41008148"},{"name":"query","type":"string","required":false,"description":"Search text → ranked list. Supply this OR `id`.","on_invalid":"reject","example":"stanford","aliases":["name"]},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-200, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":200,"aliases":["limit"]},{"name":"include_works","type":"boolean","required":false,"description":"Profile only: also return the concept's top works (highest-cited first).","on_invalid":"ignore","default":false,"example":true},{"name":"works_limit","type":"integer","required":false,"description":"Max top works when include_works=true (1-200).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":200}],"returns":"profile: concept{name,level,works_count,cited_by_count,description,wikidata,ancestors[],related_concepts[],top_works[]?}; OR search: results[] (name, level), count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"machine learning"}},{"name":"topic","description":"topic search (query) or profile (id): domain>field>subfield hierarchy, keywords, siblings, works/citation counts; include_works for papers (the live replacement for Concepts)","required_params":[],"optional_params":["id","query","per_page","include_works","works_limit"],"params":[{"name":"id","type":"string","required":false,"description":"OpenAlex topic id for a profile. Supply `id` OR a `query`/`name`.","on_invalid":"reject","example":"T10017"},{"name":"query","type":"string","required":false,"description":"Search text → ranked list. Supply this OR `id`.","on_invalid":"reject","example":"stanford","aliases":["name"]},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-200, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":200,"aliases":["limit"]},{"name":"include_works","type":"boolean","required":false,"description":"Profile only: also return the topic's top works (highest-cited first).","on_invalid":"ignore","default":false,"example":true},{"name":"works_limit","type":"integer","required":false,"description":"Max top works when include_works=true (1-200).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":200}],"returns":"profile: topic{name,description,works_count,cited_by_count,keywords[],domain,field,subfield,siblings[],top_works[]?}; OR search: results[] (name), count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"protein folding"}},{"name":"autocomplete","description":"fast typeahead suggestions (works/authors/sources/institutions)","required_params":["q"],"optional_params":["entity"],"params":[{"name":"q","type":"string","required":true,"description":"Typeahead prefix.","on_invalid":"reject","example":"deep learn","aliases":["query"]},{"name":"entity","type":"enum","required":false,"description":"Which entity type to autocomplete. An unknown value falls back to 'works'.","on_invalid":"ignore","allowed_values":[{"value":"works","label":"Works / papers (default)"},{"value":"authors","label":"Authors"},{"value":"sources","label":"Venues / journals"},{"value":"institutions","label":"Institutions"},{"value":"concepts","label":"Concepts"},{"value":"topics","label":"Topics"}],"default":"works","example":"works"}],"returns":"suggestions[] (title, id, hint), count, entity","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"deep learn"}},{"name":"batch","description":"hydrate up to 200 papers by id/DOI in one call (RAG/ETL)","required_params":["ids"],"optional_params":["include_abstract","limit"],"params":[{"name":"ids","type":"array","required":true,"description":"Up to 200 paper ids/DOIs to hydrate (list or comma-separated).","on_invalid":"reject","example":"W3177828909,10.1038/s41586-021-03819-2"},{"name":"include_abstract","type":"boolean","required":false,"description":"Include reconstructed abstracts in the hydrated rows (default false for batch).","on_invalid":"ignore","default":false,"example":true},{"name":"limit","type":"integer","required":false,"description":"Max records (1-200, default 100); clamped.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":200}],"returns":"results[] (hydrated papers), count, requested","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"agent-source","category":{"id":"utilities","title":"Utilities & AI"},"title":"Source Verification API — verify a claim, find the official source, and look up or compare pricing for the sources AI agents cite","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/agent-source/v1","spec_available":true,"actions":[{"name":"source_url","description":"Inspect a public URL for source-reliability: reachability, canonical + full redirect chain, title/publisher/published+updated dates, language, official-likelihood, and a stale/archived (wayback) signal.","required_params":["url"],"optional_params":["check_archive","official_for"],"params":[{"name":"url","type":"string","required":true,"description":"Public source URL to inspect (scheme optional — https:// is added). Private/loopback/metadata hosts are rejected.","on_invalid":"reject","example":"https://openai.com/api/pricing/","aliases":["link","u"]},{"name":"check_archive","type":"boolean","required":false,"description":"Query the Wayback Machine for the latest snapshot (stale/archived signal). Default true.","on_invalid":"ignore","default":true,"example":true},{"name":"official_for","type":"string","required":false,"description":"If set, also score whether the final URL is OFFICIAL for this curated provider (domain match).","on_invalid":"ignore","example":"openai","aliases":["provider"]}],"returns":"url, final_url, final_domain, accessible, status_code, redirect{chain,hops,redirected,loop}, blocked, metadata{title,site_name,published_at,updated_at,lang,author,canonical,json_ld_types}, official{provider,is_official,reason}, freshness{updated_at,archive{available,closest,snapshot_url,age_days},staleness}, render_mode","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://openai.com/api/pricing/","official_for":"openai"}},{"name":"official_source","description":"Resolve the OFFICIAL URL a curated provider publishes for a given need (pricing/docs/changelog/status/legal/model_card) + why it is official (domain match + domain age via whois). Curated whitelist only.","required_params":["entity"],"optional_params":["need_type","verify"],"params":[{"name":"entity","type":"string","required":true,"description":"Provider/entity name (free text accepted: 'OpenAI', 'claude', 'gemini', 'grok'). Resolved against the curated whitelist — see the `providers` action for the supported set.","on_invalid":"reject","example":"OpenAI","aliases":["provider","name","q"]},{"name":"need_type","type":"string","required":false,"description":"Which official resource you need. Default 'docs'. Use 'all' to return every known official URL for the entity.","on_invalid":"reject","allowed_values":[{"value":"pricing","label":"Official pricing page"},{"value":"docs","label":"Developer/API documentation"},{"value":"changelog","label":"Release notes / changelog"},{"value":"status","label":"Status / uptime page"},{"value":"legal","label":"Terms / legal / policies"},{"value":"model_card","label":"Model catalog / model card"}],"default":"docs","example":"docs","aliases":["need","type","kind"]},{"name":"verify","type":"boolean","required":false,"description":"Also live-check the official URL is reachable (adds a url-resolver inner-call + latency).","on_invalid":"ignore","default":false,"example":false}],"returns":"entity, provider, matched, official_url, need_type, official_domains, why_official{domain_match,domain_age_days,registrar}, all_sources{}, (verify) reachable/final_url, disclaimer","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"entity":"OpenAI","need_type":"pricing"}},{"name":"verify_claim","description":"Check whether one or more public source URLs support a factual claim — returns supported, contradicted, not_found, or unclear, along with the matching evidence snippet and a confidence level. Uses exact quote and number matching against the live page content. A source-evidence checker, not a general truth oracle.","required_params":["claim","url"],"optional_params":["urls"],"params":[{"name":"claim","type":"string","required":true,"description":"The factual claim to check against the source(s). Keep it specific (a number/quote verifies best).","on_invalid":"reject","example":"Claude Opus 4.5 input is $5 per million tokens","aliases":["statement","q"]},{"name":"url","type":"string","required":true,"description":"Public source URL to inspect (scheme optional — https:// is added). Private/loopback/metadata hosts are rejected.","on_invalid":"reject","example":"https://openai.com/api/pricing/","aliases":["link","u"]},{"name":"urls","type":"array","required":false,"description":"Up to 5 source URLs (array or comma-list). Combined with `url`; the best-supporting verdict wins.","on_invalid":"ignore","example":["https://docs.claude.com/en/docs/about-claude/pricing"]}],"returns":"claim, verdict, confidence, method, per_source[{url,final_url,accessible,verdict,confidence,evidence[{type,matched/snippet}],token_coverage}], best_source, note","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":{"claim":"Claude Opus 4.5 costs $5 per million input tokens","url":"https://docs.claude.com/en/docs/about-claude/pricing"}},{"name":"pricing_lookup","description":"Current developer/LLM pricing for a curated provider, parsed live from the provider's own pricing page/API. Each row: model, input/output per-1M-token USD, source_url, last_seen_at, unit, currency, normalization_notes.","required_params":["provider"],"optional_params":["model","limit"],"params":[{"name":"provider","type":"string","required":true,"description":"Curated provider key (or any alias). Structured pricing is available for: openai, anthropic, gemini, xai, openrouter. aws/gcp/azure return official_source but no structured pricing (compute-SKU pages — see normalization_notes).","on_invalid":"ignore","allowed_values":[{"value":"openai","label":"OpenAI"},{"value":"anthropic","label":"Anthropic"},{"value":"gemini","label":"Google Gemini"},{"value":"xai","label":"xAI"},{"value":"openrouter","label":"OpenRouter"},{"value":"aws","label":"AWS (Bedrock)"},{"value":"gcp","label":"Google Cloud (Vertex AI)"},{"value":"azure","label":"Azure (Azure OpenAI)"}],"example":"anthropic","aliases":["entity","name"]},{"name":"model","type":"string","required":false,"description":"Optional model-name filter (substring, case-insensitive), e.g. 'gpt-4o', 'opus', 'gemini-2.5-flash', 'grok-4'.","on_invalid":"ignore","example":"opus","aliases":["model_filter","filter"]},{"name":"limit","type":"integer","required":false,"description":"Max model rows to return.","on_invalid":"ignore","default":40,"example":40,"minimum":1,"maximum":60}],"returns":"provider, source_url, last_seen_at, unit, currency, pricing_available, models[{model,input_per_1m_usd,output_per_1m_usd,...}], count, normalization_notes, parse_surface","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"provider":"openrouter","model":"claude"}},{"name":"pricing_compare","description":"Compare current pricing across several curated providers (optionally filtered to a model substring) → normalized per-1M-token USD, cheapest-first, each traceable to its source_url + last_seen_at.","required_params":["providers"],"optional_params":["model"],"params":[{"name":"providers","type":"array","required":true,"description":"Up to 6 curated providers (array or comma-list) from: openai, anthropic, gemini, xai, openrouter.","on_invalid":"reject","example":["openai","anthropic","gemini"],"aliases":["provider","list"]},{"name":"model","type":"string","required":false,"description":"Optional model-name filter (substring, case-insensitive), e.g. 'gpt-4o', 'opus', 'gemini-2.5-flash', 'grok-4'.","on_invalid":"ignore","example":"opus","aliases":["model_filter","filter"]}],"returns":"providers_requested, model_filter, rows[{provider,model,input_per_1m_usd,output_per_1m_usd,source_url,last_seen_at}], cheapest_input, cheapest_output, errors[], unit, currency","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"providers","description":"List the curated provider whitelist + each provider's capabilities (which need_types and structured pricing are supported) and parse-surface metadata. The honest denominator for official_source / pricing.","required_params":[],"optional_params":["provider"],"params":[{"name":"provider","type":"string","required":false,"description":"Optional: return only this provider's detail.","on_invalid":"ignore","example":"openai","aliases":["entity","name"]}],"returns":"providers[{key,display,primary_domain,official_domains,need_types,pricing_supported,parse_surface,sources{}}], count, pricing_supported_providers, whitelist_policy","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"agoda","category":{"id":"travel","title":"Travel & Lodging"},"title":"Agoda API scraper — hotel data, guest reviews & destination lookup: search destinations, browse a city's popular hotels, pull a hotel's full record (name, star rating, address, coordinates, facilities, policies, nearby places, FAQ) and paginated guest reviews (score, pros/cons, reviewer country, room type, owner replies) from Agoda.com across Asia-Pacific and worldwide — no API key required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/agoda/v1","spec_available":true,"actions":[{"name":"destinations","description":"Resolve a free-text place ('Bangkok', 'Tokyo', 'Maldives', an airport or a landmark) into Agoda's destination ids. Returns matched cities, areas, airports, points of interest and hotels with their object_id, type and (for cities) the city_id + hotel count. Use this first to get the city_id the city_browse action needs.","required_params":["query"],"optional_params":["language"],"params":[{"name":"query","type":"string","required":true,"description":"Place to look up — a city, area, airport, landmark or hotel name.","on_invalid":"reject","example":"Bangkok","aliases":["q","text"]},{"name":"language","type":"string","required":false,"description":"Agoda locale for result names (e.g. en-us, th-th, ja-jp, zh-cn). Defaults to en-us.","on_invalid":"ignore","default":"en-us","example":"en-us"}],"returns":"suggestions[]{object_id, object_type_id, type, name, city_id, country_id, hotel_count, is_hotel}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Bangkok"}},{"name":"city_browse","description":"Browse a city's popular hotels and accommodation themes. Returns ~100 popular hotels (name + Agoda detail URL), property-type theme links (apartments, hostels, resorts…) and the city's travel guides. Pass a numeric city_id from the destinations action.","required_params":["city_id"],"optional_params":["language"],"params":[{"name":"city_id","type":"integer","required":true,"description":"Agoda city id (from the destinations action — e.g. 9395=Bangkok). Routes the listing geographically.","on_invalid":"reject","example":9395},{"name":"language","type":"string","required":false,"description":"Agoda locale (en-us, th-th, ja-jp…).","on_invalid":"ignore","default":"en-us","example":"en-us"}],"returns":"hotels[]{name, url} (~100) + theme_links[]{name, url} + travel_guides[]{name, url} + place_of_interest","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"city_id":9395}},{"name":"detail","description":"Full hotel record by hotel_id (or hotel URL): name, accommodation type, star rating, full address + city/country, coordinates, description, facilities (grouped), policies, important notes, nearby places of interest and the property FAQ.","required_params":[],"optional_params":["hotel_id","url","language"],"params":[{"name":"hotel_id","type":"integer","required":false,"description":"Agoda hotel id (the number in a hotel page's data-hotel-id, also the hotel_id in detail responses). Provide hotel_id OR url.","on_invalid":"ignore","example":294217},{"name":"url","type":"string","required":false,"description":"Full Agoda hotel page URL (the engine extracts the hotel id from it). Use this when you have the hotel link but not the numeric id.","on_invalid":"ignore","example":"https://www.agoda.com/the-okura-prestige-bangkok/hotel/bangkok-th.html"},{"name":"language","type":"string","required":false,"description":"Agoda locale (en-us, th-th, ja-jp…).","on_invalid":"ignore","default":"en-us","example":"en-us"}],"returns":"hotel{hotel_id, name, accommodation_type, star_rating, address{full, area, city, city_id, country, postal_code}, description, facilities[]{group, features[]}, policies, important_notes, nearby_places[]{name, distance, latitude, longitude}, faq[]{question, answer}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"hotel_id":294217}},{"name":"reviews","description":"Paginated guest reviews for one hotel (70 per page): star rating, title, separate positive/negative text, review date, reviewer country, traveler type, room type and length of stay, the owner's reply and helpful votes. The response also carries the hotel's overall score and total review count. Page with `page` until meta.has_more is false.","required_params":[],"optional_params":["hotel_id","url","page","sort_by","language"],"params":[{"name":"hotel_id","type":"integer","required":false,"description":"Agoda hotel id (the number in a hotel page's data-hotel-id, also the hotel_id in detail responses). Provide hotel_id OR url.","on_invalid":"ignore","example":294217},{"name":"url","type":"string","required":false,"description":"Full Agoda hotel page URL (the engine extracts the hotel id from it). Use this when you have the hotel link but not the numeric id.","on_invalid":"ignore","example":"https://www.agoda.com/the-okura-prestige-bangkok/hotel/bangkok-th.html"},{"name":"page","type":"integer","required":false,"description":"Review page (70 reviews each). Page until meta.has_more is false; meta.total_pages tells you how many.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"sort_by","type":"string","required":false,"description":"Review order: newest (default), rating_high, rating_low or most_helpful.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Most recent"},{"value":"rating_high","label":"Rating, high to low"},{"value":"rating_low","label":"Rating, low to high"},{"value":"most_helpful","label":"Most helpful"}],"default":"newest","example":"newest"},{"name":"language","type":"string","required":false,"description":"Agoda locale (en-us, th-th, ja-jp…).","on_invalid":"ignore","default":"en-us","example":"en-us"}],"returns":"reviews[]{review_id, rating, rating_text, title, text, positive_text, negative_text, date, reviewer_name, reviewer_country, traveler_type, room_type, length_of_stay, owner_reply, helpful_votes, photo_count} + summary{overall_score, score_text, total_reviews} + meta{page, total_pages, has_more, next_page}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"per_unit","credits":1,"per":70,"min":1},"example_params":{"hotel_id":294217}}]},{"name":"airbnb","category":{"id":"travel","title":"Travel & Lodging"},"title":"Airbnb API scraper — search stays, listing details, host profile, guest reviews, prices and availability calendar (airbnb.com data, no account required)","version":"1.2.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/airbnb/v1","spec_available":true,"actions":[{"name":"stays.search","description":"Search Airbnb stays by location and dates with full filters: price range, guests, place/property type, bedrooms/beds/baths, amenities, instant-book, Superhost, free cancellation and host language (≈26 cards/page, cursor-paginated).","required_params":["query"],"optional_params":["checkin","checkout","adults","children","infants","price_min","price_max","room_type","property_type","min_bedrooms","min_beds","min_bathrooms","amenities","host_languages","instant_book","superhost","free_cancellation","pets_allowed","cursor","currency","locale"],"params":[{"name":"query","type":"string","required":true,"description":"Where to search — city/region free text ('Istanbul, Turkey', 'Paris, France', 'Malibu, CA').","on_invalid":"reject","example":"Istanbul, Turkey"},{"name":"checkin","type":"string","required":false,"description":"Check-in date (YYYY-MM-DD).","on_invalid":"reject","example":"2026-10-14"},{"name":"checkout","type":"string","required":false,"description":"Check-out date (YYYY-MM-DD).","on_invalid":"reject","example":"2026-10-19"},{"name":"adults","type":"integer","required":false,"description":"Number of adult guests.","on_invalid":"reject","default":1,"minimum":1,"maximum":16},{"name":"children","type":"integer","required":false,"description":"Number of children (ages 2–12).","on_invalid":"ignore","minimum":0,"maximum":15},{"name":"infants","type":"integer","required":false,"description":"Number of infants (under 2).","on_invalid":"ignore","minimum":0,"maximum":5},{"name":"price_min","type":"integer","required":false,"description":"Minimum total price for the stay, in `currency`.","on_invalid":"ignore","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum total price for the stay, in `currency`.","on_invalid":"ignore","minimum":0},{"name":"room_type","type":"string","required":false,"description":"Place type. One or more (comma-separated) of: entire_home, private_room, shared_room, hotel_room.","on_invalid":"ignore","example":"entire_home"},{"name":"property_type","type":"string","required":false,"description":"Property type. One or more (comma-separated) of: house, apartment, guesthouse, hotel.","on_invalid":"ignore","example":"apartment"},{"name":"min_bedrooms","type":"integer","required":false,"description":"Minimum number of bedrooms (0 = studio, 1–8).","on_invalid":"ignore","minimum":0,"maximum":8},{"name":"min_beds","type":"integer","required":false,"description":"Minimum number of beds (1–8).","on_invalid":"ignore","minimum":0,"maximum":8},{"name":"min_bathrooms","type":"integer","required":false,"description":"Minimum number of bathrooms (1–8).","on_invalid":"ignore","minimum":0,"maximum":8},{"name":"amenities","type":"string","required":false,"description":"Required amenities, comma-separated. Known values: wifi, kitchen, washer, dryer, air_conditioning, heating, pool, hot_tub, free_parking, ev_charger, tv, self_check_in, pets_allowed, gym, breakfast, dedicated_workspace, elevator, smoke_alarm, fireplace, bbq_grill, waterfront, beachfront.","on_invalid":"ignore","example":"wifi,kitchen,pool"},{"name":"host_languages","type":"string","required":false,"description":"Filter by host language(s), comma-separated (e.g. English, French, German, Spanish, Italian, Japanese).","on_invalid":"ignore","example":"English"},{"name":"instant_book","type":"boolean","required":false,"description":"Only listings that can be booked instantly (no host approval).","on_invalid":"ignore"},{"name":"superhost","type":"boolean","required":false,"description":"Only Guest-favorite / Superhost listings.","on_invalid":"ignore"},{"name":"free_cancellation","type":"boolean","required":false,"description":"Only listings offering free cancellation.","on_invalid":"ignore"},{"name":"pets_allowed","type":"boolean","required":false,"description":"Only listings that allow pets.","on_invalid":"ignore"},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"currency","type":"string","required":false,"description":"Price currency (ISO code: EUR, USD, GBP, TRY…).","on_invalid":"ignore","default":"EUR","example":"USD"},{"name":"locale","type":"string","required":false,"description":"Response language (en, de, tr, es…).","on_invalid":"ignore","default":"en","example":"en"},{"name":"include_raw","type":"boolean","required":false,"description":"Advanced: include the full raw response payload per listing card.","on_invalid":"ignore","default":false}],"returns":"items[]{id, name, rating, rating_label, price, coordinate{lat, lng}, badges, subtitle} + unique_count + meta.pagination{has_more, next_cursor, cursor_count}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"Istanbul, Turkey","checkin":"2026-10-14","checkout":"2026-10-19","adults":2}},{"name":"stays.detail","description":"Full listing details: title, property/room type, guest capacity, the six category sub-ratings, host card, complete amenity list, photo URLs, sleeping arrangement, house rules, description and map location. Returns a clean `parsed` summary plus the raw PDP payload.","required_params":["listing_id"],"optional_params":["currency","locale"],"params":[{"name":"listing_id","type":"string","required":true,"description":"Airbnb listing ID — the number in the listing URL (airbnb.com/rooms/<listing_id>) or `id` from stays.search.","on_invalid":"reject","example":"1408102095235129361"},{"name":"currency","type":"string","required":false,"description":"Price currency (ISO code: EUR, USD, GBP, TRY…).","on_invalid":"ignore","default":"EUR","example":"USD"},{"name":"locale","type":"string","required":false,"description":"Response language (en, de, tr, es…).","on_invalid":"ignore","default":"en","example":"en"}],"returns":"parsed{listing_id, title, property_type, room_type, person_capacity, ratings{overall, review_count, accuracy, checkin, cleanliness, communication, location, value}, host{name, is_superhost, rating, review_count, years_hosting, highlights}, amenities[]{name, available}, photos[]{url, caption}, rooms[]{name, details}, house_rules[], description, location{city, lat, lng}} + raw (full PDP payload)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{"listing_id":"1408102095235129361"}},{"name":"host.profile","description":"Host profile for a listing: host name, Superhost/verified status, overall host rating, total reviews, years hosting, response rate and host highlights.","required_params":["listing_id"],"optional_params":[],"params":[{"name":"listing_id","type":"string","required":true,"description":"Airbnb listing ID — the number in the listing URL (airbnb.com/rooms/<listing_id>) or `id` from stays.search.","on_invalid":"reject","example":"1408102095235129361"},{"name":"locale","type":"string","required":false,"description":"Response language (en, de, tr, es…).","on_invalid":"ignore","default":"en","example":"en"}],"returns":"host{name, is_superhost, is_verified, rating, review_count, years_hosting, highlights[], details[], listing_id, listing_title}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"listing_id":"1408102095235129361"}},{"name":"stays.reviews","description":"Listing reviews, paginated via offset/limit.","required_params":["listing_id"],"optional_params":["offset","limit","locale"],"params":[{"name":"listing_id","type":"string","required":true,"description":"Airbnb listing ID — the number in the listing URL (airbnb.com/rooms/<listing_id>) or `id` from stays.search.","on_invalid":"reject","example":"1408102095235129361"},{"name":"limit","type":"integer","required":false,"description":"Reviews per call (1–50).","on_invalid":"reject","default":24,"minimum":1,"maximum":50},{"name":"offset","type":"integer","required":false,"description":"Skip this many reviews (offset paging; or use `cursor` = the next offset).","on_invalid":"ignore","default":0,"minimum":0},{"name":"cursor","type":"string","required":false,"description":"Next page: pass meta.pagination.next_cursor (= the next offset, handled automatically by 'Next').","on_invalid":"ignore"},{"name":"locale","type":"string","required":false,"description":"Response language (en, de, tr, es…).","on_invalid":"ignore","default":"en","example":"en"}],"returns":"reviews[]{id, comments, language, createdAt, localizedDate, reviewer, reviewee, responder, reviewHighlight} + count + meta.pagination{page, has_more, next_cursor}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"listing_id":"1408102095235129361"}},{"name":"stays.availability_calendar","description":"Availability calendar for a listing (up to 12 months ahead): per-day availability + min/max nights.","required_params":["listing_id"],"optional_params":[],"params":[{"name":"listing_id","type":"string","required":true,"description":"Airbnb listing ID — the number in the listing URL (airbnb.com/rooms/<listing_id>) or `id` from stays.search.","on_invalid":"reject","example":"1408102095235129361"},{"name":"month_count","type":"integer","required":false,"description":"How many months ahead (1–12).","on_invalid":"reject","default":12,"minimum":1,"maximum":12}],"returns":"months[]{month, days[{date, available, price}]} + day_count + blocked_vs_available + caps{requested_month_count, returned_month_count, calendar_cap_months}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"listing_id":"1408102095235129361","month_count":3}},{"name":"properties.search","description":"Alias of stays.search.","required_params":["query"],"optional_params":["checkin","checkout","adults","cursor","currency","locale"],"params":[{"name":"query","type":"string","required":true,"description":"Where to search — city/region free text ('Istanbul, Turkey', 'Paris, France', 'Malibu, CA').","on_invalid":"reject","example":"Istanbul, Turkey"},{"name":"checkin","type":"string","required":false,"description":"Check-in date (YYYY-MM-DD).","on_invalid":"reject","example":"2026-10-14"},{"name":"checkout","type":"string","required":false,"description":"Check-out date (YYYY-MM-DD).","on_invalid":"reject","example":"2026-10-19"},{"name":"adults","type":"integer","required":false,"description":"Number of adult guests.","on_invalid":"reject","default":1,"minimum":1,"maximum":16},{"name":"children","type":"integer","required":false,"description":"Number of children (ages 2–12).","on_invalid":"ignore","minimum":0,"maximum":15},{"name":"infants","type":"integer","required":false,"description":"Number of infants (under 2).","on_invalid":"ignore","minimum":0,"maximum":5},{"name":"price_min","type":"integer","required":false,"description":"Minimum total price for the stay, in `currency`.","on_invalid":"ignore","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum total price for the stay, in `currency`.","on_invalid":"ignore","minimum":0},{"name":"room_type","type":"string","required":false,"description":"Place type. One or more (comma-separated) of: entire_home, private_room, shared_room, hotel_room.","on_invalid":"ignore","example":"entire_home"},{"name":"property_type","type":"string","required":false,"description":"Property type. One or more (comma-separated) of: house, apartment, guesthouse, hotel.","on_invalid":"ignore","example":"apartment"},{"name":"min_bedrooms","type":"integer","required":false,"description":"Minimum number of bedrooms (0 = studio, 1–8).","on_invalid":"ignore","minimum":0,"maximum":8},{"name":"min_beds","type":"integer","required":false,"description":"Minimum number of beds (1–8).","on_invalid":"ignore","minimum":0,"maximum":8},{"name":"min_bathrooms","type":"integer","required":false,"description":"Minimum number of bathrooms (1–8).","on_invalid":"ignore","minimum":0,"maximum":8},{"name":"amenities","type":"string","required":false,"description":"Required amenities, comma-separated. Known values: wifi, kitchen, washer, dryer, air_conditioning, heating, pool, hot_tub, free_parking, ev_charger, tv, self_check_in, pets_allowed, gym, breakfast, dedicated_workspace, elevator, smoke_alarm, fireplace, bbq_grill, waterfront, beachfront.","on_invalid":"ignore","example":"wifi,kitchen,pool"},{"name":"host_languages","type":"string","required":false,"description":"Filter by host language(s), comma-separated (e.g. English, French, German, Spanish, Italian, Japanese).","on_invalid":"ignore","example":"English"},{"name":"instant_book","type":"boolean","required":false,"description":"Only listings that can be booked instantly (no host approval).","on_invalid":"ignore"},{"name":"superhost","type":"boolean","required":false,"description":"Only Guest-favorite / Superhost listings.","on_invalid":"ignore"},{"name":"free_cancellation","type":"boolean","required":false,"description":"Only listings offering free cancellation.","on_invalid":"ignore"},{"name":"pets_allowed","type":"boolean","required":false,"description":"Only listings that allow pets.","on_invalid":"ignore"},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"currency","type":"string","required":false,"description":"Price currency (ISO code: EUR, USD, GBP, TRY…).","on_invalid":"ignore","default":"EUR","example":"USD"},{"name":"locale","type":"string","required":false,"description":"Response language (en, de, tr, es…).","on_invalid":"ignore","default":"en","example":"en"},{"name":"include_raw","type":"boolean","required":false,"description":"Advanced: include the full raw response payload per listing card.","on_invalid":"ignore","default":false}],"returns":"items[]{id, name, rating, rating_label, price, coordinate{lat, lng}, badges, subtitle} + unique_count + meta.pagination{has_more, next_cursor, cursor_count}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"Istanbul, Turkey"}},{"name":"properties.detail","description":"Alias of stays.detail.","required_params":["listing_id"],"optional_params":["currency","locale"],"params":[{"name":"listing_id","type":"string","required":true,"description":"Airbnb listing ID — the number in the listing URL (airbnb.com/rooms/<listing_id>) or `id` from stays.search.","on_invalid":"reject","example":"1408102095235129361"},{"name":"currency","type":"string","required":false,"description":"Price currency (ISO code: EUR, USD, GBP, TRY…).","on_invalid":"ignore","default":"EUR","example":"USD"},{"name":"locale","type":"string","required":false,"description":"Response language (en, de, tr, es…).","on_invalid":"ignore","default":"en","example":"en"}],"returns":"parsed{...} + raw (full PDP payload) — see stays.detail","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{"listing_id":"1408102095235129361"}},{"name":"autocomplete","description":"Location autocomplete suggestions (raw passthrough).","required_params":[],"optional_params":[],"params":[{"name":"query","type":"string","required":false,"description":"Location text to complete.","on_invalid":"reject","example":"Istanbul"}],"returns":"raw.data.presentation.autoSuggestions{...}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"alibaba","category":{"id":"other","title":"Other"},"title":"Alibaba.com B2B Wholesale API — supplier product search, full wholesale product detail with quantity price tiers, MOQ, lead time and shipping weight, plus live buyer RFQs (what buyers are asking to purchase) from alibaba.com","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/alibaba/v1","spec_available":true,"actions":[{"name":"search","description":"Search alibaba.com wholesale listings by keyword — 48 supplier offers per page, each with its unit price (or price range), minimum order quantity, units sold, supplier company and country, review scores and certifications. Filter by price, MOQ, supplier country, category, review score and supplier credentials; sort by relevance, sales volume, response rate or price","required_params":["query"],"optional_params":["page","sort","min_price","max_price","min_order","max_order","supplier_country","category_id","verified_supplier","trade_assurance","min_review_score"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for on alibaba.com — a product keyword the way a buyer would type it ('led strip', 'corrugated carton box', 'nitrile gloves').","on_invalid":"reject","example":"led strip","aliases":["q","keyword","keywords","search","SearchText"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based, 48 offers per page (max 100). Page forward with next_page from the response.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result order. 'relevance' is Alibaba's own default mix; 'sales' ranks by units sold in the last 180 days; 'response_rate' ranks suppliers by how fast they reply. Alibaba's search has no price sort — use min_price / max_price to bound the range instead.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match — Alibaba's own default ranking"},{"value":"sales","label":"Most units sold in the last 180 days"},{"value":"response_rate","label":"Suppliers who reply fastest first"}],"default":"relevance","example":"sales"},{"name":"min_price","type":"number","required":false,"description":"Lowest unit price to include, in the listing currency (USD).","on_invalid":"ignore","example":1,"minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest unit price to include, in the listing currency.","on_invalid":"ignore","example":50,"minimum":0},{"name":"min_order","type":"integer","required":false,"description":"Only listings whose minimum order quantity is at least this. Units differ per listing (pieces, meters, sets, kilograms), so this filters the number, not a normalised quantity.","on_invalid":"ignore","example":1,"minimum":0,"aliases":["min_moq"]},{"name":"max_order","type":"integer","required":false,"description":"Only listings whose minimum order quantity is at most this — the practical filter for buyers who cannot commit to a container load.","on_invalid":"ignore","example":100,"minimum":1,"aliases":["max_moq"]},{"name":"supplier_country","type":"string","required":false,"description":"Two-letter country code of the supplier (CN, IN, VN, TR, US, DE …). Alibaba is overwhelmingly Chinese suppliers; this is how you find the others.","on_invalid":"ignore","example":"CN","aliases":["country","supplier_location"]},{"name":"category_id","type":"string","required":false,"description":"Alibaba category id to restrict the search to. Category ids come back on every product_detail response, in category_id and in the categories breadcrumb.","on_invalid":"ignore","example":"201713304"},{"name":"verified_supplier","type":"boolean","required":false,"description":"Only suppliers Alibaba has inspected and verified on site (its 'Verified Supplier' programme).","on_invalid":"ignore","example":true,"aliases":["verified"]},{"name":"trade_assurance","type":"boolean","required":false,"description":"Only listings covered by Alibaba Trade Assurance (order protection on payments made through Alibaba).","on_invalid":"ignore","example":true},{"name":"min_review_score","type":"enum","required":false,"description":"Only suppliers at or above this review score (4, 4.5 or 5).","on_invalid":"reject","allowed_values":[{"value":"4","label":"4.0 and up"},{"value":"4.5","label":"4.5 and up"},{"value":"5","label":"5.0 only"}],"example":"4.5"}],"returns":"results[] — one supplier offer per row: product_id (Alibaba's own numeric id as a string; pass it straight to product_detail), title, url, image, images[], price{text, currency, min, max}, promotion_price, currency, moq{text, quantity, unit}, sold_count, rating, review_count, supplier_service_score, shipping_score, supplier{company_id, name, country, years_on_alibaba, verified, logo, url, profile_url}, certifications[], is_ad — plus page, page_size, total_estimate, has_more, next_page.\nprice is the card price: a tiered listing shows its cheapest and dearest tier here (min differs from max), and the complete tier-by-tier ladder is one product_detail call away. min equals max on a flat-priced listing. price is null on the minority of listings the supplier publishes as 'Contact for price'.\nmoq.quantity is the number and moq.unit is the unit it is counted in — pieces, meters, sets, kilograms, tons — and the two must be read together: '1 set' and '1000 pieces' are both moq.quantity values. Present on every row measured.\nis_ad is Alibaba's own paid-placement flag; roughly half of a page is sponsored and those rows are returned rather than silently dropped. sold_count is populated only on listings with recorded sales. rating/review_count are null on listings with no reviews yet.\ntotal_estimate is Alibaba's own result count and it is an estimate — the same query reports noticeably different totals between calls, so paginate on has_more, not on arithmetic over the total.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"led strip"}},{"name":"product_detail","description":"Full wholesale detail for one alibaba.com listing — the complete quantity price ladder, minimum order quantity, production lead time, gross weight and package dimensions, the full specification table, image gallery, variant matrix with native SKU ids and per-variant stock, certifications, and the supplier scorecard","required_params":[],"optional_params":["product_id","url"],"params":[{"name":"product_id","type":"string","required":false,"description":"Alibaba's own numeric product id — the digits before '.html' in a /product-detail/ URL, and the same value this API returns as product_id. Pass either this or url.","on_invalid":"reject","example":"1600104532932","aliases":["id","productId","offer_id"]},{"name":"url","type":"string","required":false,"description":"Full alibaba.com product URL, used instead of product_id. Only alibaba.com hosts are accepted; the id is read out of the URL.","on_invalid":"reject","example":"https://www.alibaba.com/product-detail/x_1600104532932.html"}],"returns":"product{} — identity: product_id (Alibaba's own numeric id, returned as a string, identical to the id search returns), url, title, category_id, categories[] breadcrumb, brand, model_number, place_of_origin, ships_from.\nWholesale commercials: price_ladder[] {min_quantity, max_quantity, price, price_usd, formatted} — the quantity tiers, cheapest tier last; max_quantity is null on the open-ended top tier ('1000 and above'). price_usd is Alibaba's own USD conversion of that tier, so it stays comparable whatever currency the page was priced in. About one listing in six publishes no tiers at all — those return an empty price_ladder with price_range{min, max, min_usd, max_usd, text} instead, and price_on_request true when the supplier only invites an enquiry. currency is the currency the other price fields are quoted in.\nmoq{quantity, unit, text, customs_quantity, box_quantity} — the minimum order quantity and the unit it is counted in. Present on every product measured.\nlead_time[] {min_quantity, max_quantity, days} — the supplier's own production time in days, laddered by order size.\nshipping{gross_weight, weight_unit, package_dimensions{length, width, height, unit}, package_volume, packaging_details, port, selling_units, supply_ability, logistics_modes[], trade_price_type} — everything published that feeds a freight quote. gross_weight is per selling unit in kilograms and package_dimensions are centimetres. Both are null when the supplier left them blank, which happens on roughly a quarter of listings — a null here means 'not published', never zero. trade_price_type is the Incoterm the ladder is quoted on (FOB, EXW, CIF …). package_volume is a field Alibaba defines but suppliers do not fill; expect null.\nContent: images[] full gallery at the largest rendition, videos[], specifications[] {group, name, value, attribute_id} — the whole attribute table with Alibaba's own grouping, including the 'Packaging and delivery' group — certifications[] {certificate_id, name, number, type, validity, issuing_authority, images[]}, customizable.\nVariants: axes[] {attribute_id, name, type, values[{value_id, name, image, color}]} and variants[] {sku_id, attributes[], price, stock, unlimited_stock, in_stock}. sku_id is Alibaba's own SKU id as a string. price is ALWAYS null on a variant: Alibaba does not publish per-SKU prices on this marketplace — wholesale price is tiered by quantity at the product level, so price_ladder is the price for every variant. stock is null and unlimited_stock true on the many listings where the supplier declares unlimited capacity.\nTrust: sold_count, rating{product_rating, product_review_count, store_rating, store_review_count} — aggregates only, Alibaba publishes no review text on the product page — and supplier{company_id, name, country, city, years_on_alibaba, business_type, verified, gold_supplier, url, logo, response_time, on_time_delivery_rate, reorder_rate, store_rating, store_review_count, main_markets[], customization_abilities[]}.\nEither product_id or url is required.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"1600104532932"}},{"name":"rfq_search","description":"Search live buying requests (RFQs) posted by Alibaba buyers — the demand side of the marketplace. Each row is a purchase a real buyer is asking for right now, in their own words: what they want, how many, which country they are buying from and how long ago they posted it. Filter by keyword, buyer country, category and how recently it was posted; sort newest-first to work the board as a live feed","required_params":[],"optional_params":["query","page","sort","buyer_country","category_id","posted_within","with_attachments","open_only"],"params":[{"name":"query","type":"string","required":false,"description":"What the buyer is asking for, in the buyer's own words — 'led strip', 'nitrile gloves', 'cnc machining'. Leave it out to browse every open request on the board (183,000+ live requests), which is what sort='recent' with a buyer_country filter is for.","on_invalid":"reject","example":"led strip","aliases":["q","keyword","keywords","search","SearchText"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based, 20 requests per page (max 500). Page forward with next_page from the response.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Result order. 'relevance' is Alibaba's own Best Match mix; 'recent' puts the newest requests first and is the one to poll — its first page is typically minutes old.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Alibaba's own 'Best Match' order"},{"value":"recent","label":"Newest requests first"}],"default":"relevance","example":"recent"},{"name":"buyer_country","type":"string","required":false,"description":"Two-letter country code of the BUYER (US, IN, BR, DE, TR, AE …). Must be upper-case, and Alibaba spells the United Kingdom 'UK', not 'GB'. A code Alibaba does not recognise is rejected rather than silently ignored.","on_invalid":"reject","example":"US","aliases":["country","buyer_location"]},{"name":"category_id","type":"string","required":false,"description":"Alibaba sourcing category id to restrict the board to (1 Agriculture, 3 Apparel & Accessories, 66 Beauty, 8 Chemicals, 2829 Commercial Equipment & Machinery …). The ids are the same ones product_detail returns.","on_invalid":"ignore","example":"3","aliases":["categoryIds"]},{"name":"posted_within","type":"enum","required":false,"description":"Only requests posted inside this window. 'older_than_7d' is Alibaba's own inverse facet — it returns requests OLDER than a week, not newer.","on_invalid":"reject","allowed_values":[{"value":"1h","label":"Posted in the last hour"},{"value":"3h","label":"Posted in the last 3 hours"},{"value":"12h","label":"Posted in the last 12 hours"},{"value":"24h","label":"Posted in the last 24 hours"},{"value":"2d","label":"Posted in the last 2 days"},{"value":"3d","label":"Posted in the last 3 days"},{"value":"7d","label":"Posted in the last 7 days"},{"value":"older_than_7d","label":"Posted more than 7 days ago"}],"example":"24h","aliases":["posted","age"]},{"name":"with_attachments","type":"boolean","required":false,"description":"Only requests where the buyer attached a file — a drawing, a spec sheet or a reference photo.","on_invalid":"ignore","example":true,"aliases":["attachment"]},{"name":"open_only","type":"boolean","required":false,"description":"Only requests Alibaba still lists as open for quoting (its own 'Open RFQs' filter).","on_invalid":"ignore","example":true,"aliases":["availability","open"]}],"returns":"results[] — one buying request per row: rfq_id (Alibaba's own numeric id as a string), title, description, description_truncated, url, image, quantity, quantity_unit, buyer{name, country, country_code, level}, posted_ago_text, posted_hours_ago, posted_at_estimate, quote_slots_left (Alibaba's own \"Quotes left\" counter — how many more suppliers may still answer), has_attachments, rfq_level, rfq_star_level, rfq_star_max, tags[], expires_at, budget, budget_currency — plus query, page, page_size, total_estimate, has_more, next_page.\ndescription is the buyer's OWN text and it is what makes this surface worth reading — but Alibaba truncates it on the listing page at roughly 210 characters. description_truncated is true when it did (44 of 60 rows measured), and the full text is not published anywhere we can read without an account.\nquantity and quantity_unit must be read together and neither is normalised: the unit is whatever the buyer picked in their own language, so 'Piece/Pieces' and 'Meter/Meters' sit next to 'Caixa/Caixas' and 'Morgen/Morgen'. Both are present on every row measured across 10 categories.\nAlibaba publishes the posting time ONLY as a relative phrase. posted_ago_text is that phrase verbatim ('Just now', '22 minutes before', '4 days ago'); posted_hours_ago is it as a number; posted_at_estimate is a UTC timestamp derived from it and is an ESTIMATE — no more precise than the phrase, so a '1 days ago' row is accurate to the day, not the minute.\nexpires_at, budget and budget_currency are fields Alibaba defines but does not fill on this surface: null on 200 of 200 rows measured. A null here means 'not published', never zero and never 'no deadline'.\nbuyer.name is the contact name the buyer chose to publish publicly on the sourcing board; no email, phone or address is published there and none is returned. buyer.country is always present; buyer.country_code is Alibaba's own two-letter code and is null on the handful of rows where Alibaba writes a full country name in that slot instead. image is present on roughly a third to two-thirds of rows depending on the category — buyers often post no photo at all.\ntotal_estimate is Alibaba's own count for the filtered board. A query with no matches returns NOT_FOUND rather than an empty 200, and so does a page past the end of the result set — asked for a page it does not have, alibaba.com re-serves page 1, which this action detects rather than passing on.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"packaging box"}}]},{"name":"aliexpress","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"AliExpress API — product search, full product detail (SKU/variant prices, specs, images), buyer reviews, shipping rates, store catalogs and deals (region- and currency-aware)","version":"0.3.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/aliexpress/v1","spec_available":true,"actions":[{"name":"search","description":"Product search cards (price, sold_count, rating, store); filters sort/min_price/max_price/ship_from/free_shipping, paginated","required_params":[],"optional_params":["query","country","currency","page","max_pages","max_results","sort","min_price","max_price","ship_from","free_shipping"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for (product keywords).","on_invalid":"reject","example":"usb c cable","aliases":["q","keyword"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"reject","allowed_values":[{"value":"best_match","label":"Best match"},{"value":"orders","label":"Best selling (most orders)"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"newest","label":"Newest listed"},{"value":"default","label":"Best match (alias)"},{"value":"best_selling","label":"Best selling (alias)"},{"value":"price_asc","label":"Price: low to high (alias)"},{"value":"price_desc","label":"Price: high to low (alias)"}],"default":"best_match","example":"best_match"},{"name":"min_price","type":"number","required":false,"description":"Only items at or above this price (in `currency`).","on_invalid":"ignore","example":5,"minimum":0},{"name":"max_price","type":"number","required":false,"description":"Only items at or below this price (in `currency`).","on_invalid":"ignore","example":10,"minimum":0},{"name":"ship_from","type":"string","required":false,"description":"Only items shipped from this country (2-letter ISO code, e.g. CN, US, ES).","on_invalid":"ignore","example":"CN"},{"name":"free_shipping","type":"boolean","required":false,"description":"Only items with free shipping.","on_invalid":"ignore","default":false,"example":false},{"name":"country","type":"string","required":false,"description":"Ship-to country (2-letter ISO code, e.g. US, DE, TR). Changes prices, availability and shipping options.","on_invalid":"ignore","default":"US","example":"DE","aliases":["ship_to"]},{"name":"currency","type":"string","required":false,"description":"Currency for prices (3-letter ISO code, e.g. USD, EUR, TRY).","on_invalid":"ignore","default":"USD","example":"EUR"},{"name":"language","type":"string","required":false,"description":"Response language (2-letter code, e.g. de, es, fr, ru, pt, ja, ko, tr, it, ar). Independent of `country`: you can ship to US and read titles in German. Measured 2026-08-26 — 11 of 12 languages localise the title; `zh` often returns English because sellers do not publish a Chinese title. The code is passed through to AliExpress as given: one it does not recognise comes back in English rather than failing. `meta.language_sent` echoes what was sent.","on_invalid":"ignore","default":"en","example":"de","aliases":["lang","locale"]},{"name":"page","type":"integer","required":false,"description":"Page number to start from (easy paging: 1, 2, 3…). Measured ceiling: page 60 is the deepest page AliExpress still serves — page 100 comes back empty. Page until `meta.pagination.has_more` is false rather than probing for the end.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":60},{"name":"max_pages","type":"integer","required":false,"description":"How many consecutive pages to fetch in one call (1–10). AliExpress serves 46–60 results per page, so 10 pages is about 500 results and takes ~40s. Prefer `max_results` if you want a result count rather than a page count; larger values are capped at 10.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":10},{"name":"max_results","type":"integer","required":false,"description":"How many results to return (1–500). AliExpress serves 46–60 per page, so asking for more than about 50 fetches further pages — each one is another request against AliExpress, and 500 results takes ~40s, so ask for what you will use. Omit to get a single page. If you pass both `max_results` and `max_pages`, whichever budget is smaller wins.","on_invalid":"ignore","example":100,"minimum":1,"maximum":500,"aliases":["limit","max"]}],"returns":"results[]{product_id, title, url, image, images[], price, original_price, currency, discount_pct, price_formatted, sold_count, rating, sku_id, product_type, promo_tags[]} (store_name/store_url are null on search cards — AliExpress removed them upstream; use product_detail for the store) + related_searches[] + ranking_searches[] (AliExpress 'people also search for' / trending terms) (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"wireless earbuds","country":"US","currency":"USD"}},{"name":"product_detail","description":"Full product + SKU-variant price/stock matrix + specs + images + video + store + shipping + rating + coupons + sale countdown + wishlist counts + item weight where the seller published one (empty when they did not — never guessed)","required_params":[],"optional_params":["product_id","url","country","currency","language","province","city"],"params":[{"name":"product_id","type":"string","required":false,"description":"AliExpress product ID — the digits in the product URL (…/item/<id>.html). Provide product_id OR url.","on_invalid":"reject","example":"3256808363596774","aliases":["productId","id"]},{"name":"url","type":"string","required":false,"description":"Full product URL — alternative to product_id.","on_invalid":"reject","example":"https://www.aliexpress.com/item/3256808363596774.html","aliases":["product_url"]},{"name":"country","type":"string","required":false,"description":"Ship-to country (2-letter ISO code, e.g. US, DE, TR). Changes prices, availability and shipping options.","on_invalid":"ignore","default":"US","example":"DE","aliases":["ship_to"]},{"name":"currency","type":"string","required":false,"description":"Currency for prices (3-letter ISO code, e.g. USD, EUR, TRY).","on_invalid":"ignore","default":"USD","example":"EUR"},{"name":"language","type":"string","required":false,"description":"Response language (2-letter code, e.g. de, es, fr, ru, pt, ja, ko, tr, it, ar). Independent of `country`: you can ship to US and read titles in German. Measured 2026-08-26 — 11 of 12 languages localise the title; `zh` often returns English because sellers do not publish a Chinese title. The code is passed through to AliExpress as given: one it does not recognise comes back in English rather than failing. `meta.language_sent` echoes what was sent.","on_invalid":"ignore","default":"en","example":"de","aliases":["lang","locale"]},{"name":"province","type":"string","required":false,"description":"Destination state/province, plain text (e.g. California, Berlin, Sao Paulo). Defaults to a major region of `country`. Affects delivery estimate and, for some warehouse-local items, whether shipping resolves at all. Measured: within the US the ETA shifts by state (California 3-8 days vs Alaska 4-14), so set it when you need a precise quote.","on_invalid":"ignore","example":"California","aliases":["state","region"]},{"name":"city","type":"string","required":false,"description":"Destination city, plain text. Optional and only refines the estimate; `province` is the field that actually resolves the address (measured: city alone does not).","on_invalid":"ignore","example":"Los Angeles"}],"returns":"product{product_id, title, price_min, price_max, currency, rating, review_count, sold_count, total_stock, images[], video_url, sku_variants[]{sku_id, props, price, stock, available, image, thumbnail}, sku_properties[]{name, values[], has_images, value_details[]{value_id, name, image, thumbnail, color_hex, ships_from_code, size_chart, size_measurements}}, specs[]{name,value}, store{store_id, shop_id, name, store_url, store_home, seller_id, seller_country, seller_open_time, seller_level, top_rated, logo, seller_feedback_count, seller_positive_rate, seller_score}, shipping{ship_to, shipping_cost, free, list_freight, delivery_estimate, delivery_eta, delivery_days_min, delivery_days_max, ship_from}, tags{choice, local_plus, scene_type}, interest_point{code, text, icon}, coupons[]{text, promotion_id}, sale{type, ends_at, countdown}, selling_points[], wishlist_count, store_wished_count, description_url, weight, weight_unit, weight_raw, weight_source} — STORE IDS: AliExpress numbers one seller TWICE and the two numbers are never the same (measured 2026-08-28 over 20 products / 8 distinct stores: 20/20 different). `store_id` is the storefront number — the digits in `store_url`, the id `store_info` reports as `canonical_store_id`, and the one to pass back into `store_info`. `shop_id` is AliExpress's internal shop number, which it uses in its own storefront app links. Both open the same shop, so neither is wrong, but they are different values and each now has its own name — before 2026-08-28 `store_id` carried the shop number while `store_url` carried the storefront number, so the two disagreed on every product. — STORE LOGO: null means this shop never uploaded one. AliExpress serves a single generic avatar in that case (4 of 8 stores in the sample above shared it byte-for-byte), and that placeholder is reported as null rather than echoed as if it were the shop's own branding. — SELLER FEEDBACK: `seller_feedback_count` counts feedback left on the SELLER, not reviews of this product — a store with 10 seller ratings can easily sell a product with 3,000 buyer reviews, and `review_count` is the product figure. When the seller has no feedback at all (3 of 8 stores measured), `seller_positive_rate` and `seller_score` are null: AliExpress sends 0.0/0 there, which reads as a 0% seller rather than an unrated one. `seller_positive_rate` is AliExpress's own published percentage and is NOT derivable from the counts - its positive-feedback tally is taken over a different window than the lifetime total, so that tally is not published rather than handed over as a number that invites the wrong division. — SKU IMAGES: `sku_variants[].image` is the full-size picture of that exact variant and `thumbnail` is the 120x120 swatch the site renders in its selector. AliExpress attaches a picture to visual dimensions only, so a variant gets one when it has a colour/style dimension and null when its dimensions are text (size, model, material). Measured over five multi-variant products: 135/135, 114/114, 52/52 and 21/21 variants carried an image; null is never a placeholder and is never borrowed from another variant. `sku_properties[].has_images` tells you up front which dimension is the visual one. Size dimensions instead carry `size_chart` (the seller's own EU/US/UK/JP/BR/KR/MX conversion) and `size_measurements` where published, — WEIGHT: AliExpress publishes no structured weight, so `weight` is read out of the seller's own attribute line and is null far more often than not. Measured 2026-08-07 over 212 live products across 12 categories: 5.7% carry a usable weight, a further 7.5% have a weight attribute whose contents are not one unambiguous mass, and 86.8% say nothing at all. Coverage is wildly uneven by category — beauty 27.8%, jewelry 16.7%, auto parts 11.8%, tools/hardware 11.1%, and 0.0% for apparel, electronics, home & kitchen, office, pet supplies, phone accessories, sports & outdoor and toys — so do not budget from an average. `weight` is a number and `weight_unit` is one of g/kg/lb/oz — never a bare number, never a unit you have to infer. It is null, NEVER 0 and never borrowed from another variant or listing, whenever the seller was silent or wrote something that is not one unambiguous mass (a range like '0.2-5g', a bound like 'Below 180g', a bare '2' with no unit, or junk). `weight_raw` is the seller's verbatim string and `weight_source` the attribute it came from, so you can audit any rejection instead of guessing whether the field was silent or unparseable.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"3256808363596774"}},{"name":"reviews","description":"Buyer reviews (paginated — fetch many pages in one call) + rating distribution","required_params":[],"optional_params":["product_id","url","page","max_pages","max_results","page_size","filter","review_sort","country","currency"],"params":[{"name":"product_id","type":"string","required":false,"description":"AliExpress product ID — the digits in the product URL (…/item/<id>.html). Provide product_id OR url.","on_invalid":"reject","example":"3256808363596774","aliases":["productId","id"]},{"name":"url","type":"string","required":false,"description":"Full product URL — alternative to product_id.","on_invalid":"reject","example":"https://www.aliexpress.com/item/3256808363596774.html","aliases":["product_url"]},{"name":"filter","type":"enum","required":false,"description":"Which reviews to return (passed to the upstream feedback API; the 3 listed are the documented values).","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All reviews"},{"value":"image","label":"With photos"},{"value":"additional","label":"With follow-up comments"}],"default":"all","example":"all"},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1–20; larger values are capped at 20).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":20,"aliases":["pageSize"]},{"name":"max_pages","type":"integer","required":false,"description":"How many consecutive review pages to gather in one call (1–20). Combine with page_size=20 to pull all reviews of a product (e.g. max_pages=10 → up to 200 reviews).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":20},{"name":"review_sort","type":"string","required":false,"description":"Upstream sort key (advanced) — leave at the default.","on_invalid":"ignore","default":"complex_default"},{"name":"country","type":"string","required":false,"description":"Ship-to country (2-letter ISO code, e.g. US, DE, TR). Changes prices, availability and shipping options.","on_invalid":"ignore","default":"US","example":"DE","aliases":["ship_to"]},{"name":"currency","type":"string","required":false,"description":"Currency for prices (3-letter ISO code, e.g. USD, EUR, TRY).","on_invalid":"ignore","default":"USD","example":"EUR"},{"name":"language","type":"string","required":false,"description":"Response language (2-letter code, e.g. de, es, fr, ru, pt, ja, ko, tr, it, ar). Independent of `country`: you can ship to US and read titles in German. Measured 2026-08-26 — 11 of 12 languages localise the title; `zh` often returns English because sellers do not publish a Chinese title. The code is passed through to AliExpress as given: one it does not recognise comes back in English rather than failing. `meta.language_sent` echoes what was sent.","on_invalid":"ignore","default":"en","example":"de","aliases":["lang","locale"]},{"name":"page","type":"integer","required":false,"description":"Page number to start from (easy paging: 1, 2, 3…). Measured ceiling: page 60 is the deepest page AliExpress still serves — page 100 comes back empty. Page until `meta.pagination.has_more` is false rather than probing for the end.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":60},{"name":"max_results","type":"integer","required":false,"description":"How many reviews to return (1–400 — the ceiling is 20 per page × 20 pages). The engine works out how many review pages that costs. Use this instead of juggling `page_size` and `max_pages` yourself; if you pass both, the smaller budget wins.","on_invalid":"ignore","example":100,"minimum":1,"maximum":400,"aliases":["limit","max"]}],"returns":"reviews[]{rating, text, date, country, sku_info, logistics, images[], labels[]} + summary{total_reviews, total_pages, average_star, distribution{1..5}, positive/neutral/negative counts} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"3256808363596774","page_size":10}},{"name":"similar","description":"Products similar to a given item (search-backed 'more like this', seed product excluded), paginated","required_params":[],"optional_params":["product_id","url","query","page","max_pages","max_results","sort","country","currency"],"params":[{"name":"product_id","type":"string","required":false,"description":"AliExpress product ID — the digits in the product URL (…/item/<id>.html). Provide product_id OR url.","on_invalid":"reject","example":"3256808363596774","aliases":["productId","id"]},{"name":"url","type":"string","required":false,"description":"Full product URL — alternative to product_id.","on_invalid":"reject","example":"https://www.aliexpress.com/item/3256808363596774.html","aliases":["product_url"]},{"name":"query","type":"string","required":false,"description":"Optional seed keywords — overrides the product's own title (skips the detail lookup). Provide product_id/url OR query.","on_invalid":"ignore","example":"usb c cable","aliases":["q","keyword"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"reject","allowed_values":[{"value":"best_match","label":"Best match"},{"value":"orders","label":"Best selling (most orders)"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"newest","label":"Newest listed"},{"value":"default","label":"Best match (alias)"},{"value":"best_selling","label":"Best selling (alias)"},{"value":"price_asc","label":"Price: low to high (alias)"},{"value":"price_desc","label":"Price: high to low (alias)"}],"default":"best_match","example":"best_match"},{"name":"country","type":"string","required":false,"description":"Ship-to country (2-letter ISO code, e.g. US, DE, TR). Changes prices, availability and shipping options.","on_invalid":"ignore","default":"US","example":"DE","aliases":["ship_to"]},{"name":"currency","type":"string","required":false,"description":"Currency for prices (3-letter ISO code, e.g. USD, EUR, TRY).","on_invalid":"ignore","default":"USD","example":"EUR"},{"name":"language","type":"string","required":false,"description":"Response language (2-letter code, e.g. de, es, fr, ru, pt, ja, ko, tr, it, ar). Independent of `country`: you can ship to US and read titles in German. Measured 2026-08-26 — 11 of 12 languages localise the title; `zh` often returns English because sellers do not publish a Chinese title. The code is passed through to AliExpress as given: one it does not recognise comes back in English rather than failing. `meta.language_sent` echoes what was sent.","on_invalid":"ignore","default":"en","example":"de","aliases":["lang","locale"]},{"name":"page","type":"integer","required":false,"description":"Page number to start from (easy paging: 1, 2, 3…). Measured ceiling: page 60 is the deepest page AliExpress still serves — page 100 comes back empty. Page until `meta.pagination.has_more` is false rather than probing for the end.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":60},{"name":"max_pages","type":"integer","required":false,"description":"How many consecutive pages to fetch in one call (1–10). AliExpress serves 46–60 results per page, so 10 pages is about 500 results and takes ~40s. Prefer `max_results` if you want a result count rather than a page count; larger values are capped at 10.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":10},{"name":"max_results","type":"integer","required":false,"description":"How many results to return (1–500). AliExpress serves 46–60 per page, so asking for more than about 50 fetches further pages — each one is another request against AliExpress, and 500 results takes ~40s, so ask for what you will use. Omit to get a single page. If you pass both `max_results` and `max_pages`, whichever budget is smaller wins.","on_invalid":"ignore","example":100,"minimum":1,"maximum":500,"aliases":["limit","max"]}],"returns":"results[]{product_id, title, url, image, images[], price, original_price, currency, discount_pct, price_formatted, sold_count, rating, sku_id, product_type, promo_tags[]} (store_name/store_url are null on search cards — AliExpress removed them upstream; use product_detail for the store) + seed_query + title — products like the given one (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"description","description":"Full product description text + images","required_params":[],"optional_params":["product_id","url","description_url","country","currency"],"params":[{"name":"product_id","type":"string","required":false,"description":"AliExpress product ID — the digits in the product URL (…/item/<id>.html). Provide product_id OR url.","on_invalid":"reject","example":"3256808363596774","aliases":["productId","id"]},{"name":"url","type":"string","required":false,"description":"Full product URL — alternative to product_id.","on_invalid":"reject","example":"https://www.aliexpress.com/item/3256808363596774.html","aliases":["product_url"]},{"name":"description_url","type":"string","required":false,"description":"Direct description URL from a previous product_detail response (advanced — skips one lookup).","on_invalid":"ignore"},{"name":"country","type":"string","required":false,"description":"Ship-to country (2-letter ISO code, e.g. US, DE, TR). Changes prices, availability and shipping options.","on_invalid":"ignore","default":"US","example":"DE","aliases":["ship_to"]},{"name":"currency","type":"string","required":false,"description":"Currency for prices (3-letter ISO code, e.g. USD, EUR, TRY).","on_invalid":"ignore","default":"USD","example":"EUR"},{"name":"language","type":"string","required":false,"description":"Response language (2-letter code, e.g. de, es, fr, ru, pt, ja, ko, tr, it, ar). Independent of `country`: you can ship to US and read titles in German. Measured 2026-08-26 — 11 of 12 languages localise the title; `zh` often returns English because sellers do not publish a Chinese title. The code is passed through to AliExpress as given: one it does not recognise comes back in English rather than failing. `meta.language_sent` echoes what was sent.","on_invalid":"ignore","default":"en","example":"de","aliases":["lang","locale"]},{"name":"province","type":"string","required":false,"description":"Destination state/province, plain text (e.g. California, Berlin, Sao Paulo). Defaults to a major region of `country`. Affects delivery estimate and, for some warehouse-local items, whether shipping resolves at all. Measured: within the US the ETA shifts by state (California 3-8 days vs Alaska 4-14), so set it when you need a precise quote.","on_invalid":"ignore","example":"California","aliases":["state","region"]},{"name":"city","type":"string","required":false,"description":"Destination city, plain text. Optional and only refines the estimate; `province` is the field that actually resolves the address (measured: city alone does not).","on_invalid":"ignore","example":"Los Angeles"}],"returns":"text + images[] + block_count + format","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"shipping","description":"Shipping options per destination country","required_params":[],"optional_params":["product_id","url","country","currency","language","province","city"],"params":[{"name":"product_id","type":"string","required":false,"description":"AliExpress product ID — the digits in the product URL (…/item/<id>.html). Provide product_id OR url.","on_invalid":"reject","example":"3256808363596774","aliases":["productId","id"]},{"name":"url","type":"string","required":false,"description":"Full product URL — alternative to product_id.","on_invalid":"reject","example":"https://www.aliexpress.com/item/3256808363596774.html","aliases":["product_url"]},{"name":"country","type":"string","required":false,"description":"Ship-to country (2-letter ISO code, e.g. US, DE, TR). Changes prices, availability and shipping options.","on_invalid":"ignore","default":"US","example":"DE","aliases":["ship_to"]},{"name":"currency","type":"string","required":false,"description":"Currency for prices (3-letter ISO code, e.g. USD, EUR, TRY).","on_invalid":"ignore","default":"USD","example":"EUR"},{"name":"language","type":"string","required":false,"description":"Response language (2-letter code, e.g. de, es, fr, ru, pt, ja, ko, tr, it, ar). Independent of `country`: you can ship to US and read titles in German. Measured 2026-08-26 — 11 of 12 languages localise the title; `zh` often returns English because sellers do not publish a Chinese title. The code is passed through to AliExpress as given: one it does not recognise comes back in English rather than failing. `meta.language_sent` echoes what was sent.","on_invalid":"ignore","default":"en","example":"de","aliases":["lang","locale"]},{"name":"province","type":"string","required":false,"description":"Destination state/province, plain text (e.g. California, Berlin, Sao Paulo). Defaults to a major region of `country`. Affects delivery estimate and, for some warehouse-local items, whether shipping resolves at all. Measured: within the US the ETA shifts by state (California 3-8 days vs Alaska 4-14), so set it when you need a precise quote.","on_invalid":"ignore","example":"California","aliases":["state","region"]},{"name":"city","type":"string","required":false,"description":"Destination city, plain text. Optional and only refines the estimate; `province` is the field that actually resolves the address (measured: city alone does not).","on_invalid":"ignore","example":"Los Angeles"}],"returns":"options[]{carrier, cost, currency, delivery estimate} + option_count (for the given ship-to `country`)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"store_info","description":"Store profile (+ live seller metrics when a query is supplied)","required_params":[],"optional_params":["store_id","store_url","query","country","currency"],"params":[{"name":"store_id","type":"string","required":false,"description":"AliExpress store ID — the digits in the store URL (…/store/<id>), i.e. `store.store_id` from product_detail. AliExpress's internal shop number (`store.shop_id`) also resolves to the same shop. Provide store_id OR store_url.","on_invalid":"reject","example":"1103576287","aliases":["storeId","shop_id","shopId"]},{"name":"store_url","type":"string","required":false,"description":"Full store URL — alternative to store_id.","on_invalid":"reject","example":"https://www.aliexpress.com/store/1103576287"},{"name":"query","type":"string","required":false,"description":"Any keyword the store sells — unlocks live seller metrics (score, positive rate, feedback count). Optional.","on_invalid":"reject","example":"earbuds"},{"name":"country","type":"string","required":false,"description":"Ship-to country (2-letter ISO code, e.g. US, DE, TR). Changes prices, availability and shipping options.","on_invalid":"ignore","default":"US","example":"DE","aliases":["ship_to"]},{"name":"currency","type":"string","required":false,"description":"Currency for prices (3-letter ISO code, e.g. USD, EUR, TRY).","on_invalid":"ignore","default":"USD","example":"EUR"},{"name":"language","type":"string","required":false,"description":"Response language (2-letter code, e.g. de, es, fr, ru, pt, ja, ko, tr, it, ar). Independent of `country`: you can ship to US and read titles in German. Measured 2026-08-26 — 11 of 12 languages localise the title; `zh` often returns English because sellers do not publish a Chinese title. The code is passed through to AliExpress as given: one it does not recognise comes back in English rather than failing. `meta.language_sent` echoes what was sent.","on_invalid":"ignore","default":"en","example":"de","aliases":["lang","locale"]},{"name":"province","type":"string","required":false,"description":"Destination state/province, plain text (e.g. California, Berlin, Sao Paulo). Defaults to a major region of `country`. Affects delivery estimate and, for some warehouse-local items, whether shipping resolves at all. Measured: within the US the ETA shifts by state (California 3-8 days vs Alaska 4-14), so set it when you need a precise quote.","on_invalid":"ignore","example":"California","aliases":["state","region"]},{"name":"city","type":"string","required":false,"description":"Destination city, plain text. Optional and only refines the estimate; `province` is the field that actually resolves the address (measured: city alone does not).","on_invalid":"ignore","example":"Los Angeles"}],"returns":"store{store_id, canonical_store_id, name, store_url, source} (+ seller_id, business_type, business_license_url, tab_count when AliExpress also serves the store's own profile data — best-effort, often unavailable) + seller_metrics{seller_score, seller_positive_rate, seller_feedback_count, seller_country, top_rated} — metrics only when `query` is given AND one of the store's own products can be found for it. An id that is not a store returns NOT_FOUND.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"store_id":"1103576287"}},{"name":"deals","description":"SuperDeals / discounted cards (search-derived, sorted by discount)","required_params":["query"],"optional_params":["min_discount","sort","page","max_pages","max_results","country","currency"],"params":[{"name":"query","type":"string","required":true,"description":"Product keywords to find deals for.","on_invalid":"reject","example":"earbuds","aliases":["q","keyword"]},{"name":"min_discount","type":"integer","required":false,"description":"Only items discounted at least this % off the original price.","on_invalid":"ignore","default":0,"example":30,"minimum":0,"maximum":99},{"name":"sort","type":"enum","required":false,"description":"How candidate items are ranked before the discount filter.","on_invalid":"reject","allowed_values":[{"value":"best_match","label":"Best match"},{"value":"orders","label":"Best selling (most orders)"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"newest","label":"Newest listed"},{"value":"default","label":"Best match (alias)"},{"value":"best_selling","label":"Best selling (alias)"},{"value":"price_asc","label":"Price: low to high (alias)"},{"value":"price_desc","label":"Price: high to low (alias)"}],"default":"orders","example":"orders"},{"name":"country","type":"string","required":false,"description":"Ship-to country (2-letter ISO code, e.g. US, DE, TR). Changes prices, availability and shipping options.","on_invalid":"ignore","default":"US","example":"DE","aliases":["ship_to"]},{"name":"currency","type":"string","required":false,"description":"Currency for prices (3-letter ISO code, e.g. USD, EUR, TRY).","on_invalid":"ignore","default":"USD","example":"EUR"},{"name":"language","type":"string","required":false,"description":"Response language (2-letter code, e.g. de, es, fr, ru, pt, ja, ko, tr, it, ar). Independent of `country`: you can ship to US and read titles in German. Measured 2026-08-26 — 11 of 12 languages localise the title; `zh` often returns English because sellers do not publish a Chinese title. The code is passed through to AliExpress as given: one it does not recognise comes back in English rather than failing. `meta.language_sent` echoes what was sent.","on_invalid":"ignore","default":"en","example":"de","aliases":["lang","locale"]},{"name":"page","type":"integer","required":false,"description":"Page number to start from (easy paging: 1, 2, 3…). Measured ceiling: page 60 is the deepest page AliExpress still serves — page 100 comes back empty. Page until `meta.pagination.has_more` is false rather than probing for the end.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":60},{"name":"max_pages","type":"integer","required":false,"description":"How many consecutive pages to fetch in one call (1–10). AliExpress serves 46–60 results per page, so 10 pages is about 500 results and takes ~40s. Prefer `max_results` if you want a result count rather than a page count; larger values are capped at 10.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":10}],"returns":"results[]{product_id, title, url, image, images[], price, original_price, currency, discount_pct, price_formatted, sold_count, rating, sku_id, product_type, promo_tags[]} (store_name/store_url are null on search cards — AliExpress removed them upstream; use product_detail for the store) — only discounted items, sorted by discount_pct (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"wireless earbuds"}}]},{"name":"allegro","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Allegro API scraper — search Poland's #1 marketplace (allegro.pl): listings with price, condition, delivery & category filters, offer/product detail, category browse, related offers and a seller's full catalogue. Prices in PLN, results paginated.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/allegro/v1","spec_available":true,"actions":[{"name":"search","description":"Search Allegro by keyword — returns offer cards with title, price (PLN), delivery cost, seller, rating, photos and offer URL. Supports price range, condition, free-delivery, sort and category filters, with page pagination.","required_params":["query"],"optional_params":["max_pages","sort","min_price","max_price","condition","free_delivery","category"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for (offer keywords, Polish or any language).","on_invalid":"reject","example":"iphone 15"},{"name":"max_pages","type":"integer","required":false,"description":"How many result pages to fetch (1–10). Each page ≈ 60 offers.","on_invalid":"ignore","default":1,"minimum":1,"maximum":10},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Best match (Allegro default)"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"popularity","label":"Most popular"},{"value":"newest","label":"Most recently listed"}],"default":"relevance"},{"name":"min_price","type":"number","required":false,"description":"Minimum price filter, in PLN.","on_invalid":"ignore","example":100},{"name":"max_price","type":"number","required":false,"description":"Maximum price filter, in PLN.","on_invalid":"ignore","example":2000},{"name":"condition","type":"enum","required":false,"description":"Item condition filter.","on_invalid":"ignore","allowed_values":[{"value":"new","label":"Nowy (New)"},{"value":"used","label":"Używany (Used)"}],"example":"used"},{"name":"free_delivery","type":"boolean","required":false,"description":"Only offers with free delivery (darmowa dostawa).","on_invalid":"ignore"},{"name":"category","type":"string","required":false,"description":"Restrict to an Allegro category slug (the slug in a category URL, e.g. telefony-komorkowe-165).","on_invalid":"ignore","example":"telefony-komorkowe-165"}],"returns":"offers[]{id, title, url, price{amount,currency}, delivery_text, seller{login, super_seller, positive_feedback_percent}, rating, rating_count, images[], parameters[]} + total, last_page, pages_fetched","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"iphone 15"}},{"name":"category","description":"Browse an Allegro category without a keyword (the /kategoria/<slug> grid) — discover popular offers in a category. Supports price/condition/free-delivery/sort filters and page pagination.","required_params":["category"],"optional_params":["max_pages","sort","min_price","max_price","condition","free_delivery"],"params":[{"name":"category","type":"string","required":true,"description":"Any Allegro category: the numeric id (491), the slug (laptopy-491) or the full category URL. Use the `categories` action to find one by name. Department landing pages (like 'elektronika') have no offer grid and are rejected with that reason.","on_invalid":"reject","example":"laptopy-491"},{"name":"max_pages","type":"integer","required":false,"description":"How many category pages to fetch (1–10).","on_invalid":"ignore","default":1,"minimum":1,"maximum":10},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Allegro default"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"popularity","label":"Most popular"},{"value":"newest","label":"Most recently listed"}],"default":"relevance"},{"name":"min_price","type":"number","required":false,"description":"Minimum price filter, in PLN.","on_invalid":"ignore","example":100},{"name":"max_price","type":"number","required":false,"description":"Maximum price filter, in PLN.","on_invalid":"ignore","example":2000},{"name":"condition","type":"enum","required":false,"description":"Item condition filter.","on_invalid":"ignore","allowed_values":[{"value":"new","label":"Nowy (New)"},{"value":"used","label":"Używany (Used)"}],"example":"new"},{"name":"free_delivery","type":"boolean","required":false,"description":"Only offers with free delivery.","on_invalid":"ignore"}],"returns":"offers[] (same shape as search) + category_path, total, last_page, pages_fetched","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"offer","description":"Single Allegro offer/product detail by id or URL — title, price (PLN), main image and gallery, seller handle, and description.","required_params":[],"optional_params":["offer_id","offer_url","url"],"params":[{"name":"offer_id","type":"string","required":false,"description":"Allegro offer id — the digits in an offer URL (allegro.pl/oferta/<id>). Provide offer_id OR offer_url.","on_invalid":"reject","example":"18673156866"},{"name":"offer_url","type":"string","required":false,"description":"Full offer/product URL — alternative to offer_id.","on_invalid":"reject","example":"https://allegro.pl/oferta/18673156866","aliases":["url"]}],"returns":"offer{id, url, title, price{amount,currency}, price_string, image_url, images[], seller{login, listing_url}, description}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":{"offer_id":"18673156866"}},{"name":"seller_offers","description":"A seller's public active listings, paginated — every offer a seller (shop) has live. Provide the seller login (handle from a seller URL / a search result's seller.login).","required_params":["seller"],"optional_params":["max_pages","sort"],"params":[{"name":"seller","type":"string","required":true,"description":"Allegro seller login/handle (from allegro.pl/uzytkownik/<login> or a search result's seller.login).","on_invalid":"reject","example":"AppleOnly"},{"name":"max_pages","type":"integer","required":false,"description":"How many of the seller's listing pages to fetch (1–10).","on_invalid":"ignore","default":1,"minimum":1,"maximum":10},{"name":"sort","type":"enum","required":false,"description":"Order within the seller's listings.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Default"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"newest","label":"Most recent"}],"default":"relevance"}],"returns":"offers[] (same shape as search) + seller, total, last_page, pages_fetched","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"categories","description":"Find an Allegro category by name, or list the children of one. Returns the id you feed to `category` (and to search's `category` filter), the full path from the top of the tree, and whether it is a leaf. Allegro publishes 25 576 categories; this is how you find the right one without guessing a slug.","required_params":[],"optional_params":["query","parent_id","leaf_only","limit"],"params":[{"name":"query","type":"string","required":false,"description":"Case-insensitive text matched against the category name and its path. Omit it to list the top of the tree, or to list the children of `parent_id`.","on_invalid":"ignore","example":"laptopy","aliases":["q","name"]},{"name":"parent_id","type":"string","required":false,"description":"List this category's direct children. Combine with `query` to search inside one branch.","on_invalid":"ignore","example":"491"},{"name":"leaf_only","type":"boolean","required":false,"description":"Only leaf categories, which are the ones that carry an offer grid.","on_invalid":"ignore","default":false},{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (1-500).","on_invalid":"ignore","default":50,"minimum":1,"maximum":500}],"returns":"categories[]{id, name, path, parent_id, leaf, url}, count, total","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggested","description":"Related/recommended Allegro offers for a keyword — a quick set of relevant offers (the first result page) useful for 'more like this' / market discovery.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Keyword to fetch related offers for.","on_invalid":"reject","example":"macbook air"}],"returns":"offers[] (same shape as search) + total","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"iphone 15"}}]},{"name":"alza","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Alza API scraper — search products, browse categories and read full product records (price with and without VAT, discounts, stock, rating, reviews, spec table) from Alza, Central Europe's largest electronics retailer, across 5 storefronts: Czechia, Slovakia, Hungary, Austria and Germany. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/alza/v1","spec_available":true,"actions":[{"name":"search","description":"Search one national Alza storefront by keyword and get 24 products per page with the price a shopper pays now (VAT included), the struck-through price and the discount, the financing offer, stock wording, customer rating on a 5-star scale, energy class and the number of colour/capacity variants. Sort by price, rating, bestseller or newest, and narrow by brand, price range, in-stock, on-sale, newly-added or well-rated. Every filter is applied by the storefront's own listing service and the response reports the exact resulting total.","required_params":["query"],"optional_params":["country","page","sort","brand","min_price","max_price","in_stock_only","discounted_only","new_arrivals_only","well_rated_only","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword, exactly as a shopper would type it on the storefront. Alza often answers a keyword with its matching category or brand page; the response says which under `resolved_url` and `search_mode`.","on_invalid":"reject","example":"iphone 17","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which national Alza storefront to read. Currency, language, catalogue AND price follow the country — the same product really is priced differently on alza.at and alza.de, so pick the market you mean. alza.co.uk is not available: Alza stopped selling there on 27/5/2022 and publishes no catalogue.","on_invalid":"reject","allowed_values":[{"value":"cz","label":"Czechia — alza.cz (CZK)"},{"value":"sk","label":"Slovakia — alza.sk (EUR)"},{"value":"hu","label":"Hungary — alza.hu (HUF)"},{"value":"at","label":"Austria — alza.at (EUR)"},{"value":"de","label":"Germany — alza.de (EUR)"}],"default":"cz","example":"cz","aliases":["market"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. 24 products per page. `page_count` in the response is the real last page for this result set.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Result order. Only orderings the storefront itself offers, passed to its own listing service.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"The storefront's own default order"},{"value":"bestseller","label":"Best selling first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"rating","label":"Best customer rating first"},{"value":"newest","label":"Newest first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Keep only one brand, spelled as the storefront spells it (matched case-insensitively against the brand facet the listing returns). The response always lists the available brands with their exact product counts in `brands[]`, so an unknown name is rejected with the list.","on_invalid":"reject","example":"Apple"},{"name":"min_price","type":"number","required":false,"description":"Lowest price to include, in the storefront's currency, VAT included (CZK for cz, HUF for hu, EUR for sk/at/de).","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price to include, in the storefront's currency, VAT included.","on_invalid":"reject","minimum":0},{"name":"in_stock_only","type":"boolean","required":false,"description":"Keep only products the storefront can deliver now.","on_invalid":"ignore","default":false},{"name":"discounted_only","type":"boolean","required":false,"description":"Keep only products currently on a reduced price — Alza's own 'sale and good prices' filter (price bombs, super prices, markdowns).","on_invalid":"ignore","default":false},{"name":"new_arrivals_only","type":"boolean","required":false,"description":"Keep only recently added products (the storefront's own 'news' filter).","on_invalid":"ignore","default":false},{"name":"well_rated_only","type":"boolean","required":false,"description":"Keep only products above the storefront's own customer-rating threshold. Alza exposes this as a single switch, not a star number, so this engine does not pretend to take one.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, product_code, title, url, image, currency, price (VAT included — what a logged-out shopper pays now), was_price (the struck-through price when the product is reduced), discount_percent (computed from those two prices), discount_percent_site + discount_label (the storefront's own badge, which can disagree — e.g. it prints '-4 %' for 43 990 → 41 990), is_discounted, monthly_instalment (financing, never a price), rating, rating_count, rating_scale (5), availability_text (the storefront's own wording, e.g. 'Skladem > 5 ks'), availability_code, energy_class (EU label where the product has one), variant_count, summary, badges[], open_box}, count, total_results (exact, from the storefront's own listing service), page, page_count, per_page (24), search_mode ('resolved' when Alza answered the keyword with one of its own category or brand pages — 11 of 16 sampled keywords do — or 'keyword' when it stayed on its free-text search page), filters_supported (false in 'keyword' mode, where the storefront itself offers no sorting or filtering; asking for one there is rejected rather than silently ignored), resolved_url, category_id, brands[]{id, name, product_count}, country, currency, filters_applied. In 'keyword' mode total_results reflects the storefront's own free-text result set, which was observed to plateau near 300 on broad queries; 'resolved' mode reports the category's exact total.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"iphone","country":"cz"}},{"name":"category","description":"List the products of one Alza category page — from the site navigation, a product breadcrumb or a `search` response — 24 per page, with the same product fields as search and the same sorting and filters. Producer-filtered category URLs keep their brand restriction.","required_params":["category"],"optional_params":["country","page","sort","brand","min_price","max_price","in_stock_only","discounted_only","new_arrivals_only","well_rated_only","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"An Alza category page URL (…/<name>/<categoryId>.htm) or the bare numeric category id. A URL's host sets the country. Category URLs appear in the site navigation, in every product breadcrumb and in `resolved_url` from `search`. A producer-filtered URL (…/<categoryId>-v<producerId>.htm) keeps its brand restriction.","on_invalid":"reject","example":"https://www.alza.cz/iphone/18851638.htm","aliases":["category_url","url","category_id"]},{"name":"country","type":"enum","required":false,"description":"Which national Alza storefront to read. Currency, language, catalogue AND price follow the country — the same product really is priced differently on alza.at and alza.de, so pick the market you mean. alza.co.uk is not available: Alza stopped selling there on 27/5/2022 and publishes no catalogue.","on_invalid":"reject","allowed_values":[{"value":"cz","label":"Czechia — alza.cz (CZK)"},{"value":"sk","label":"Slovakia — alza.sk (EUR)"},{"value":"hu","label":"Hungary — alza.hu (HUF)"},{"value":"at","label":"Austria — alza.at (EUR)"},{"value":"de","label":"Germany — alza.de (EUR)"}],"default":"cz","example":"cz","aliases":["market"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. 24 products per page. `page_count` in the response is the real last page for this result set.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Result order. Only orderings the storefront itself offers, passed to its own listing service.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"The storefront's own default order"},{"value":"bestseller","label":"Best selling first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"rating","label":"Best customer rating first"},{"value":"newest","label":"Newest first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Keep only one brand, spelled as the storefront spells it (matched case-insensitively against the brand facet the listing returns). The response always lists the available brands with their exact product counts in `brands[]`, so an unknown name is rejected with the list.","on_invalid":"reject","example":"Apple"},{"name":"min_price","type":"number","required":false,"description":"Lowest price to include, in the storefront's currency, VAT included (CZK for cz, HUF for hu, EUR for sk/at/de).","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price to include, in the storefront's currency, VAT included.","on_invalid":"reject","minimum":0},{"name":"in_stock_only","type":"boolean","required":false,"description":"Keep only products the storefront can deliver now.","on_invalid":"ignore","default":false},{"name":"discounted_only","type":"boolean","required":false,"description":"Keep only products currently on a reduced price — Alza's own 'sale and good prices' filter (price bombs, super prices, markdowns).","on_invalid":"ignore","default":false},{"name":"new_arrivals_only","type":"boolean","required":false,"description":"Keep only recently added products (the storefront's own 'news' filter).","on_invalid":"ignore","default":false},{"name":"well_rated_only","type":"boolean","required":false,"description":"Keep only products above the storefront's own customer-rating threshold. Alza exposes this as a single switch, not a star number, so this engine does not pretend to take one.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, product_code, title, url, image, currency, price (VAT included — what a logged-out shopper pays now), was_price (the struck-through price when the product is reduced), discount_percent (computed from those two prices), discount_percent_site + discount_label (the storefront's own badge, which can disagree — e.g. it prints '-4 %' for 43 990 → 41 990), is_discounted, monthly_instalment (financing, never a price), rating, rating_count, rating_scale (5), availability_text (the storefront's own wording, e.g. 'Skladem > 5 ks'), availability_code, energy_class (EU label where the product has one), variant_count, summary, badges[], open_box}, count, total_results (exact), page, page_count, per_page (24), category_id (authoritative — the slug in an Alza category URL is decorative and the storefront rewrites it to whatever the id names), category_url (as you passed it), producer_id, brands[]{id, name, product_count}, country, currency, filters_applied","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"product/detail","description":"The full Alza product record by id or URL: title, brand, manufacturer part number (and the EAN when the storefront's part number really is one), the price both including and excluding VAT, the struck-through price and discount, financing, stock wording and the schema.org availability, condition, the complete image gallery, the complete technical specification grouped exactly as the site groups it, the description, colour/capacity variants with their price difference and stock, the energy class, the breadcrumb, and the rating with both counts Alza publishes.","required_params":["product_id"],"optional_params":["country","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Alza product id — the number after the -d in a product URL (…/iphone-17-pro-256gb-stribrna-d13078788.htm → 13078788). A full product URL is also accepted and its host sets the country. Every search/category row returns `product_id`.","on_invalid":"reject","example":"13078788","aliases":["id","url"]},{"name":"country","type":"enum","required":false,"description":"Which national Alza storefront to read. Currency, language, catalogue AND price follow the country — the same product really is priced differently on alza.at and alza.de, so pick the market you mean. alza.co.uk is not available: Alza stopped selling there on 27/5/2022 and publishes no catalogue.","on_invalid":"reject","allowed_values":[{"value":"cz","label":"Czechia — alza.cz (CZK)"},{"value":"sk","label":"Slovakia — alza.sk (EUR)"},{"value":"hu","label":"Hungary — alza.hu (HUF)"},{"value":"at","label":"Austria — alza.at (EUR)"},{"value":"de","label":"Germany — alza.de (EUR)"}],"default":"cz","example":"cz","aliases":["market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, product_code, title, url, brand, mpn, ean (only when the published part number is a valid EAN-13 — Alza publishes no gtin of its own), country, currency, price (VAT included), price_ex_vat (the storefront's own 'without VAT' figure), price_includes_vat, was_price, discount_percent, discount_percent_site, discount_label, is_discounted, monthly_instalment, availability_text, availability_schema, in_stock, condition, rating, rating_count (people who rated), review_count (people who wrote a review), rating_scale, description, images[], image_count, specs[]{group, attributes{name: value}}, spec_count, breadcrumb[], category_id, variants[]{name, options[]{product_id, value, url, price_difference, availability, selected}}, energy_class, delivery{stock_note, stock_detail, promise, exact_date_requires_address}}, country, currency","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"13078788","country":"cz"}},{"name":"product/reviews","description":"Customer reviews for one Alza product, newest first, straight from the storefront's own review feed: star rating, the reviewer's public nickname as the site prints it, what they liked and disliked as separate lists, the free text, the date, whether Alza verified the purchase, which variant was reviewed, any photos, and the shop's reply where there is one.","required_params":["product_id"],"optional_params":["country","limit","offset","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Alza product id — the number after the -d in a product URL (…/iphone-17-pro-256gb-stribrna-d13078788.htm → 13078788). A full product URL is also accepted and its host sets the country. Every search/category row returns `product_id`.","on_invalid":"reject","example":"13078788","aliases":["id","url"]},{"name":"country","type":"enum","required":false,"description":"Which national Alza storefront to read. Currency, language, catalogue AND price follow the country — the same product really is priced differently on alza.at and alza.de, so pick the market you mean. alza.co.uk is not available: Alza stopped selling there on 27/5/2022 and publishes no catalogue.","on_invalid":"reject","allowed_values":[{"value":"cz","label":"Czechia — alza.cz (CZK)"},{"value":"sk","label":"Slovakia — alza.sk (EUR)"},{"value":"hu","label":"Hungary — alza.hu (HUF)"},{"value":"at","label":"Austria — alza.at (EUR)"},{"value":"de","label":"Germany — alza.de (EUR)"}],"default":"cz","example":"cz","aliases":["market"]},{"name":"limit","type":"integer","required":false,"description":"How many reviews to return (1-50). The feed pages 10 at a time upstream; ask for more and the engine pages for you.","on_invalid":"reject","default":10,"minimum":1,"maximum":50},{"name":"offset","type":"integer","required":false,"description":"How many reviews to skip, for paging through a long review list.","on_invalid":"reject","default":0,"minimum":0},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"reviews[]{rating, rating_scale, author (the public nickname the site prints), text, positives[], negatives[], date, verified_purchase, reviewed_variant, detail_note (the storefront's own 'reviewed on …, variant …' line, verbatim), reviewed_product, helpful_votes, images[], shop_reply, country_flag, translated}, count, total_reviews (what the feed will page through), offset, limit, product_id, country. Alza's review form has no headline field, so reviews carry no title.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"13078788"}}]},{"name":"amazon","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Amazon Product Data API — product detail, reviews, offers, search, best-sellers, and seller data across 19 Amazon marketplaces (amazon.com, .co.uk, .de, .co.jp and more)","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/amazon/v1","spec_available":true,"actions":[{"name":"product/detail","description":"full product page (title/price/currency/rating/count/brand/features/images/categories/variations/tech-specs/A+content/compare-similar) + top-8 inline reviews, by ASIN","required_params":["asin"],"optional_params":["marketplace","include_reviews","fields","exclude"],"params":[{"name":"asin","type":"string","required":true,"description":"Amazon product ID (ASIN) — the 10-character code in the product URL after /dp/.","on_invalid":"reject","example":"B0DGHMNQ5Z"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"product{asin, title, price, currency, currency_code (ISO-4217, derived from the marketplace rather than the symbol — '$' is four different currencies), rating, brand (the brand as Amazon lists it in the product-overview table — for books, the primary author; read from markup that is the same in every marketplace, so a .de/.fr page returns 'soundcore', not the localized 'Visit the Store' link text), features[], images[], in_stock (normalised boolean; null only when the page says nothing AND carries no purchasable price), color, size (this ASIN's own variant values, lifted out of the variation map), parent_asin, attributes{weight{value,unit,grams,raw,key}, dimensions{length,width,height,depth,thickness,unit,axis_count,format,raw,key}, bsr[]{rank,category,is_primary}, model_number, part_number, manufacturer, first_available_raw, _source{}} — the TYPED form of tech_specs: weight arrives as a number in grams instead of a localized string like '4,5 Pfund', and `raw` is always kept. Unknown unit means grams is null, never guessed, asin_mismatch + served_asin (true when Amazon served a different member of the variation family than the ASIN you asked for — previously invisible; no field is removed when it is true), buybox_seller, fulfillment ('amazon' | 'merchant' | null), delivery_message, discount_pct, bought_past_month (+_raw), rating_histogram{5..1 as percentages}, description, variations, tech_specs{key:value}, aplus{images[],headings[],text}, compare_similar[]{asin,title,price,rating,image}, coupon (clippable coupon label e.g. '%10 kuponunu uygula', null when none), campaign (deal-badge ribbon e.g. 'Fırsat' / '90 günün en düşük fiyatı', null when none), gtin (GTIN-14, zero-padded from the printed UPC/EAN when Amazon prints only that — the inverse of product/gtin-to-asin), upc, ean, isbn, barcodes[] (every distinct code on the page; multipack listings print more than one) — all null when Amazon prints no barcode for this ASIN} + reviews[]{review_id,author,rating,title,date,location,verified,format,helpful_count,body,images[],marketplace} (top-8 inline, SIBLING of `product`, not nested inside it) + review_insights{summary, aspects[]{keyword,sentiment,positive,negative,mentions,mentions_positive_pct}, quotes[]{text,review_id,aspect}} (Amazon 'Customers say' AI review summary; null when the product has none) + total_review_count + average_rating","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"asin":"B0DGHMNQ5Z"}},{"name":"product/reviews","description":"Amazon product reviews by ASIN — the public reviews from the product page (and optionally merged + deduped across several marketplaces for more depth). Each review has author, rating, title, date, body, verified badge and helpful votes.","required_params":["asin"],"optional_params":["marketplace","marketplaces"],"params":[{"name":"asin","type":"string","required":true,"description":"Amazon product ID (ASIN) — the 10-character code in the product URL after /dp/.","on_invalid":"reject","example":"B0DGHMNQ5Z"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"},{"name":"marketplaces","type":"array","required":false,"description":"Merge + dedup reviews from several Amazon sites in one call (more depth than any single site). Overrides `marketplace`. Sites beyond the 19 listed are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"example":["com","co.uk","de"]}],"returns":"reviews[]{author, rating, title, date, location, verified, body, helpful_count, marketplace} + returned_count + total_review_count + average_rating + review_insights{summary, aspects[]{keyword,sentiment,positive,negative,mentions,mentions_positive_pct}, quotes[]{text,review_id,aspect}} (Amazon 'Customers say' AI review summary; null when absent)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"asin":"B0DGHMNQ5Z"}},{"name":"product/offers","description":"pinned buybox + all-offers (AOD aodAjaxMain): price/seller/condition/ships_from/delivery/prime, by ASIN","required_params":["asin"],"optional_params":["marketplace"],"params":[{"name":"asin","type":"string","required":true,"description":"Amazon product ID (ASIN) — the 10-character code in the product URL after /dp/.","on_invalid":"reject","example":"B0DGHMNQ5Z"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"pinned{price (the price you actually pay), total_price, unit_price, unit_count, unit_label, currency, currency_code, seller (the seller's NAME), condition, prime} + offers[]{same shape, plus ships_from and delivery} + offer_count. On multi-packs Amazon prints a per-unit price next to the pack price; both are returned separately and typed, so a '$4.20 per pack' next to a $20.99 pack can never be mistaken for the total.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"asin":"B0DGHMNQ5Z"}},{"name":"search","description":"product search with optional filters (price range, minimum rating, deals, brand) → results[]{asin,title,price,currency,rating,rating_count,image,sponsored}","required_params":["query"],"optional_params":["marketplace","page","max_results","sort","price_min","price_max","min_rating","deals","discount","prime","brand","brand_exact"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for (product keywords).","on_invalid":"reject","example":"laptop"},{"name":"sort","type":"enum","required":false,"description":"Result ordering (the 6 listed are the live-verified Amazon sort keys; an unknown value falls back to Featured upstream).","on_invalid":"ignore","allowed_values":[{"value":"relevanceblender","label":"Featured (relevance)"},{"value":"price-asc-rank","label":"Price: low to high"},{"value":"price-desc-rank","label":"Price: high to low"},{"value":"review-rank","label":"Average customer review"},{"value":"date-desc-rank","label":"Newest arrivals"},{"value":"exact-aware-popularity-rank","label":"Best sellers"}],"default":"relevanceblender"},{"name":"price_min","type":"integer","required":false,"description":"Minimum price filter, in whole units of the marketplace currency (e.g. 100 = $100 on amazon.com). Combine with price_max for a range.","on_invalid":"ignore","example":100,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum price filter, in whole units of the marketplace currency (e.g. 300 = $300 on amazon.com). Use with price_min for a range.","on_invalid":"ignore","example":300,"minimum":0},{"name":"min_rating","type":"integer","required":false,"description":"Keep only products rated this many stars and up (1-4). 4 = '4 stars & up' is live-verified; lower tiers are best-effort and only the US site (marketplace=com) is verified.","on_invalid":"ignore","allowed_values":[{"value":1,"label":"1 star & up"},{"value":2,"label":"2 stars & up"},{"value":3,"label":"3 stars & up"},{"value":4,"label":"4 stars & up"}],"example":4},{"name":"deals","type":"boolean","required":false,"description":"When true, restrict to products with an active Amazon deal (Today's Deals). Live-verified on the US site.","on_invalid":"ignore","default":false},{"name":"discount","type":"boolean","required":false,"description":"Alias of `deals` — restrict to discounted/on-deal products.","on_invalid":"ignore","default":false},{"name":"prime","type":"boolean","required":false,"description":"When true, attempt to restrict to Prime-eligible items. BEST-EFFORT: Amazon no longer exposes a reliable Prime URL refinement, so this may be a no-op on some sites/queries.","on_invalid":"ignore","default":false},{"name":"brand","type":"string","required":false,"description":"Filter to a brand. BEST-EFFORT: passed as a keyword refinement (the brand is appended to the query) rather than a strict brand facet, so results are brand-narrowed but not brand-exclusive.","on_invalid":"ignore","example":"HP"},{"name":"brand_exact","type":"string","required":false,"description":"Filter to a brand STRICTLY, using Amazon's own brand refinement rather than a keyword. Use this when you need a brand-narrowed result set; use `brand` when you would rather keep near-matches. Measured on `running shoes`: unfiltered 5 of 48 rows were the brand, `brand` gave 46 of 48, `brand_exact` gave 48 of 48 per page and held at 100% on pages 1-3. HONEST LIMIT: on the page variant where Amazon returns 60 cards instead of 48 it pads the tail with related products (measured once in four runs: 51 of 60), so filter client-side if you need a hard guarantee. Both params may be sent together; `brand` is unchanged and keeps its old behaviour.","on_invalid":"ignore","example":"Nike"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"max_results","type":"integer","required":false,"description":"How many products to return (1-336). Amazon's page size depends on the query (measured: 48 products a page for 'coffee maker', 16 for 'laptop'), and asking for more than one page's worth fetches the further pages automatically — they are fetched TOGETHER, so 200 results cost roughly the time of one page, not four. 336 is Amazon's own ceiling: it stops serving results after page 7 (measured on every query tried), so there is nothing above 336 to return, and a query whose pages are small tops out sooner — ask for more than exists and you simply get everything there is. Amazon repeats some sponsored cards across pages and those duplicates are removed, so a narrow query can run out of DISTINCT products before the number you asked for: when that happens the response says so in `meta.pagination` (`requested`, `returned`, `shortfall`, `note`) and `meta.stop_reason` is `page_ceiling`/`exhausted`/`pages_failed` rather than `complete` — a short answer is never reported as a full one. OMIT IT to get exactly one page, byte-for-byte the behaviour you get today — `page` on its own is completely unchanged.","on_invalid":"ignore","example":100,"minimum":1,"maximum":336,"aliases":["limit","max"]}],"returns":"results[]{asin, title (the full listing title - the same text product/detail returns; never the brand line Amazon prints above it, null only when the card carries no readable title), brand (the brand line Amazon prints on the card, null when the card has none), price, currency, rating (average stars as the card prints them, in every marketplace language; NULL only when the product has no ratings yet — measured 22 of 364 rows across 12 marketplace/query samples, and each of those cards carries no star widget at all), rating_count, image, sponsored (the product title is the real title on sponsored rows too — the ad disclaimer is stripped), currency_code, in_stock (normalised boolean; a card with a purchasable price is in stock because Amazon only prints one when a featured offer exists, and null when neither a stock line nor a price is present), coupon (clippable coupon label, null when none), campaign (deal-badge ribbon e.g. 'Fırsat', null when none), availability (stock line as Amazon words it on the card — same vocabulary as product/detail, e.g. 'Only 4 left in stock - order soon.' / 'No featured offers available'; NULL on a normally-stocked card because Amazon only renders the line for low/no stock — it is never inferred)} + page + filters_applied (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":1,"min":1},"example_params":{"query":"laptop"}},{"name":"products_batch","description":"Look up MANY Amazon products in ONE call by ASIN — up to 40 per request → each product's title, current price and currency, star rating with review count, image, and any clippable coupon or deal badge. ONE upstream request serves the whole list (not one per ASIN), so this is the cheap way to refresh a price list or reconcile a catalogue against Amazon. IMPORTANT — this returns the SUMMARY card for each product, which is what Amazon publishes on a multi-product surface. For features, technical specifications, variations, barcodes, A+ content or reviews, use product/detail, which reads the full product page and costs one call per ASIN.","required_params":["asins"],"optional_params":["marketplace"],"params":[{"name":"asins","type":"array","required":true,"description":"Amazon ASINs to look up — up to 15 per call. Accepts a list, or a comma-separated string. Anything Amazon does not return comes back in `not_found` rather than being silently dropped, so a caller batching 15 can always tell which one went missing.","on_invalid":"reject","example":["B0DGHMNQ5Z","B01GJOMWVA","B0CKM9F15Z"],"aliases":["asin","asin_list","ids"]},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"products[]{asin, title, price, currency, currency_code, rating, rating_count, image, sponsored, coupon, campaign, availability, in_stock} + not_found[] (ASINs Amazon did not return — reported, never silently dropped) + requested + resolved","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":10},"example_params":{"asins":["B0DGHMNQ5Z","B01GJOMWVA","B0CKM9F15Z"]}},{"name":"category/browse","description":"Browse a department or sub-department by its Amazon browse NODE id and page through the grid — the catalogue-walking counterpart to `search`, for when you want everything in a category rather than everything matching a phrase. Node ids come from a category URL (the number after `node=` / `n%3A`). Pagination is page-native: keep asking for the next page while `has_next` is true; an empty page means you reached the end. There is deliberately NO total count — Amazon's own result-count value swings between identical requests, so publishing it would hand you a number you cannot rely on.","required_params":["node"],"optional_params":["marketplace","page"],"params":[{"name":"node","type":"string","required":true,"description":"Amazon browse node id (the number in a category URL after `node=`). 172282 = Electronics on .com.","on_invalid":"ignore","example":"172282"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1}],"returns":"results[]{asin, title, brand, price, currency, currency_code, rating, rating_count, image, in_stock, sponsored, coupon, campaign} + node + page + has_next","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"bestsellers","description":"best-sellers ranking for a department (category slug required)","required_params":["category"],"optional_params":["marketplace","max_results"],"params":[{"name":"category","type":"string","required":true,"description":"Department slug from the bestsellers URL (amazon.com/gp/bestsellers/<slug>). REQUIRED — the all-departments root page is not server-rendered, so a department is needed to get a ranking. THE SLUGS DIFFER PER MARKETPLACE: amazon.com has no `garden` (use `home-garden` or `lawn-garden`) and amazon.de has no `electronics`, `sporting-goods` or `toys-and-games` (use `ce-de`, `sports`, `toys`). The dropdown lists the 15 slugs measured to work on amazon.com/.de/.fr/.co.uk/.it/.es alike; marketplace-specific slugs work too. A slug that is not a department on the marketplace you asked for returns INVALID_PARAM listing the slugs measured to work there — never an empty list.","on_invalid":"ignore","allowed_values":[{"value":"appliances","label":"Appliances"},{"value":"automotive","label":"Automotive"},{"value":"beauty","label":"Beauty"},{"value":"books","label":"Books"},{"value":"fashion","label":"Fashion"},{"value":"gift-cards","label":"Gift Cards"},{"value":"grocery","label":"Grocery"},{"value":"handmade","label":"Handmade"},{"value":"industrial","label":"Industrial & Scientific"},{"value":"kitchen","label":"Home & Kitchen"},{"value":"music","label":"CDs & Vinyl"},{"value":"musical-instruments","label":"Musical Instruments"},{"value":"pet-supplies","label":"Pet Supplies"},{"value":"software","label":"Software"},{"value":"videogames","label":"Video Games"}],"example":"electronics"},{"name":"max_results","type":"integer","required":false,"description":"How many ranked items to return (1-100). Amazon serves ~30 per page of a best-sellers / new-releases list and the list itself runs to 100, so asking for more than 30 fetches the further pages automatically — one upstream page per credit, about 30 items each. That makes this the cheapest discovery shape on this engine: `search` pages at roughly 15 products per upstream page. Paging stops the moment a page adds nothing new, so a short list never pays for empty pages, and `meta.pages_ok` always says how many pages actually answered.","on_invalid":"ignore","default":30,"example":100,"minimum":1,"maximum":100,"aliases":["limit","max"]},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"items[]{rank, asin, title (FULL title — this used to be cut at ~124 characters), price, currency_code, rating, image}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":1,"min":1},"example_params":{"category":"electronics","max_results":30}},{"name":"new-releases","description":"new-releases ranking for a department (category slug required)","required_params":["category"],"optional_params":["marketplace","max_results"],"params":[{"name":"category","type":"string","required":true,"description":"Department slug from the bestsellers URL (amazon.com/gp/bestsellers/<slug>). REQUIRED — the all-departments root page is not server-rendered, so a department is needed to get a ranking. THE SLUGS DIFFER PER MARKETPLACE: amazon.com has no `garden` (use `home-garden` or `lawn-garden`) and amazon.de has no `electronics`, `sporting-goods` or `toys-and-games` (use `ce-de`, `sports`, `toys`). The dropdown lists the 15 slugs measured to work on amazon.com/.de/.fr/.co.uk/.it/.es alike; marketplace-specific slugs work too. A slug that is not a department on the marketplace you asked for returns INVALID_PARAM listing the slugs measured to work there — never an empty list.","on_invalid":"ignore","allowed_values":[{"value":"appliances","label":"Appliances"},{"value":"automotive","label":"Automotive"},{"value":"beauty","label":"Beauty"},{"value":"books","label":"Books"},{"value":"fashion","label":"Fashion"},{"value":"gift-cards","label":"Gift Cards"},{"value":"grocery","label":"Grocery"},{"value":"handmade","label":"Handmade"},{"value":"industrial","label":"Industrial & Scientific"},{"value":"kitchen","label":"Home & Kitchen"},{"value":"music","label":"CDs & Vinyl"},{"value":"musical-instruments","label":"Musical Instruments"},{"value":"pet-supplies","label":"Pet Supplies"},{"value":"software","label":"Software"},{"value":"videogames","label":"Video Games"}],"example":"electronics"},{"name":"max_results","type":"integer","required":false,"description":"How many ranked items to return (1-100). Amazon serves ~30 per page of a best-sellers / new-releases list and the list itself runs to 100, so asking for more than 30 fetches the further pages automatically — one upstream page per credit, about 30 items each. That makes this the cheapest discovery shape on this engine: `search` pages at roughly 15 products per upstream page. Paging stops the moment a page adds nothing new, so a short list never pays for empty pages, and `meta.pages_ok` always says how many pages actually answered.","on_invalid":"ignore","default":30,"example":100,"minimum":1,"maximum":100,"aliases":["limit","max"]},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"items[]{rank, asin, title (FULL title — this used to be cut at ~124 characters), price, currency_code, rating, image}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":1,"min":1},"example_params":{"category":"electronics"}},{"name":"seller/profile","description":"seller profile (name, feedback %, lifetime ratings, rating)","required_params":["seller_id"],"optional_params":["marketplace"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Amazon seller ID — the code after seller= in a seller-page URL.","on_invalid":"reject","example":"A3A9OGKM04K3X0"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"seller_name + feedback_positive_pct + lifetime_ratings + rating","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"seller_id":"A3A9OGKM04K3X0"}},{"name":"autocomplete","description":"search autocomplete suggestions","required_params":["query"],"optional_params":["marketplace"],"params":[{"name":"query","type":"string","required":true,"description":"Partial search text to complete (e.g. 'lapt' → laptop…).","on_invalid":"reject","example":"lapt"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"suggestions[] (plain strings)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":{"query":"laptop"}},{"name":"seller/products","description":"a seller's catalog/storefront by seller_id (paginated)","required_params":["seller_id"],"optional_params":["marketplace","page"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Amazon seller ID — the code after seller= in a seller-page URL.","on_invalid":"reject","example":"A3A9OGKM04K3X0"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1}],"returns":"results[]{asin, title, brand, price, currency, rating, rating_count, image, sponsored} + page (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"seller_id":"A3A9OGKM04K3X0"}},{"name":"seller/reviews","description":"seller FEEDBACK reviews (rating/text/rater/date) by seller_id","required_params":["seller_id"],"optional_params":["marketplace"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Amazon seller ID — the code after seller= in a seller-page URL.","on_invalid":"reject","example":"A3A9OGKM04K3X0"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"reviews[]{rating, text, rater, date} + returned_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"seller_id":"A3A9OGKM04K3X0"}},{"name":"deals","description":"Amazon deal-products (today's deals / goldbox): asin/title/price/image","required_params":[],"optional_params":["marketplace"],"params":[{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"items[]{asin, title (the product name only — the offer text Amazon prints inside the same element, e.g. '20% off Limited time deal $239.99 List: $299.99', is separated out), price, list_price, savings_pct, in_stock, url, image, rating (null on this surface: Amazon does not render stars on a deal card, and we do not invent one)}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"product/related","description":"Amazon related & recommended products by ASIN — the product-recommendation carousels from the Amazon product page grouped by relationship: 'Customers who viewed this item also viewed', 'Customers also bought', 'Products related to this item' and 'Frequently bought together'. Each recommended product comes with its ASIN, title, price, star rating and image — ideal for building 'you may also like' / cross-sell feeds.","required_params":["asin"],"optional_params":["marketplace"],"params":[{"name":"asin","type":"string","required":true,"description":"Amazon product ID (ASIN) — the 10-character code in the product URL after /dp/.","on_invalid":"reject","example":"B0DGHMNQ5Z"},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"asin + groups{<relationship>: items[]} + related[] (flat, deduped) + group_count + item_count; each item{asin, title, price, currency, rating, image}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"asin":"0735211299"}},{"name":"gtin-to-asin","description":"Amazon barcode lookup — convert a product barcode (UPC, EAN, ISBN or GTIN) into the matching Amazon ASIN(s). Pass the 8-14 digit code from a physical product and get back the Amazon listing(s) it maps to (ASIN, title, price, rating, image) — for catalog matching, price checks and reconciling SKUs to Amazon products.","required_params":[],"optional_params":["gtin","marketplace"],"params":[{"name":"gtin","type":"string","required":false,"description":"The product barcode to look up — a UPC (12 digits), EAN (13), ISBN-10/13 or GTIN-14. Hyphens/spaces are ignored.","on_invalid":"reject","example":"9780735211292","aliases":["upc","ean","isbn","barcode","code"]},{"name":"marketplace","type":"enum","required":false,"description":"Which Amazon site to query (sets language and currency). Dropdown = the 19 verified marketplaces; other Amazon sites (e.g. eg, com.be) and forms like 'amazon.de'/'DE' are also accepted and normalized by the engine.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"amazon.com — United States"},{"value":"co.uk","label":"amazon.co.uk — United Kingdom"},{"value":"de","label":"amazon.de — Germany"},{"value":"fr","label":"amazon.fr — France"},{"value":"it","label":"amazon.it — Italy"},{"value":"es","label":"amazon.es — Spain"},{"value":"co.jp","label":"amazon.co.jp — Japan"},{"value":"in","label":"amazon.in — India"},{"value":"ca","label":"amazon.ca — Canada"},{"value":"com.au","label":"amazon.com.au — Australia"},{"value":"com.mx","label":"amazon.com.mx — Mexico"},{"value":"com.br","label":"amazon.com.br — Brazil"},{"value":"com.tr","label":"amazon.com.tr — Türkiye"},{"value":"ae","label":"amazon.ae — United Arab Emirates"},{"value":"nl","label":"amazon.nl — Netherlands"},{"value":"se","label":"amazon.se — Sweden"},{"value":"pl","label":"amazon.pl — Poland"},{"value":"sg","label":"amazon.sg — Singapore"},{"value":"sa","label":"amazon.sa — Saudi Arabia"}],"default":"com"}],"returns":"gtin + asin (best match) + matches[]{asin, title, brand, price, currency, rating, rating_count, image} + match_count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"gtin":"9780735211292"}}]},{"name":"americanas","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Americanas API scraper — americanas.com.br (Brazil): search, browse and full product detail from one of Brazil's largest marketplaces, with the card price, the PIX/a-vista price and the struck list price kept apart, interest-free instalments, the marketplace seller, every competing seller offer, EAN, specifications, variants and images. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/americanas/v1","spec_available":true,"actions":[{"name":"search","description":"Search Americanas by keyword. Every product comes with the card price, the PIX price and its discount, the struck list price, the best interest-free instalment plan, the seller (Americanas itself or a marketplace seller), how many sellers offer it, availability, EAN and category. Sort by price, best sellers, newest, discount or name; filter by brand, seller, price range, category path or any facet the site publishes.","required_params":["query"],"optional_params":["country","page","page_size","sort","brand","seller","min_price","max_price","category_path","facets","in_stock_only","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Words a shopper would type on Americanas (Portuguese).","on_invalid":"reject","example":"cafeteira eletrica","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Americanas sells in Brazil only (americanas.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — americanas.com.br (BRL)"}],"default":"br","example":"br"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1. Americanas serves only the first 2500 products of a result set: (page - 1) x page_size must be below 2500.","on_invalid":"reject","default":1,"minimum":1,"maximum":2500},{"name":"page_size","type":"integer","required":false,"description":"Products per page, up to 50.","on_invalid":"reject","default":20,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Americanas' own sort orders. price_asc / price_desc order by the card price. `discount` is Americanas' own discount ranking: it correlates with but does not exactly equal discount_pct computed from the returned prices (measured 112 of 114 adjacent pairs descending). `name_asc` is ordered by Portuguese collation, so accented names sort as a Brazilian shopper expects. Americanas' 'mais vendidos' is not offered: the source accepts it and returns the relevance order unchanged.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Mais relevantes"},{"value":"price_asc","label":"Menor preco"},{"value":"price_desc","label":"Maior preco"},{"value":"newest","label":"Lancamentos"},{"value":"discount","label":"Maior desconto"},{"value":"name_asc","label":"Nome A-Z"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"One brand, as it appears in the `brand` facet (e.g. mondial, philco).","on_invalid":"reject","example":"mondial"},{"name":"seller","type":"string","required":false,"description":"One marketplace seller, as it appears in the `sellername` facet (e.g. magazine-luiza; americanas-sa = sold by Americanas itself).","on_invalid":"reject","example":"magazine-luiza"},{"name":"min_price","type":"number","required":false,"description":"Lowest price in BRL (reais). Americanas applies it to the card price.","on_invalid":"reject","example":100,"minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in BRL (reais). Americanas applies it to the card price.","on_invalid":"reject","example":300,"minimum":0},{"name":"category_path","type":"string","required":false,"description":"Limit to a category path, as in a product's category_path or a americanas.com.br category URL (e.g. eletrodomesticos/fogao).","on_invalid":"reject","example":"eletrodomesticos/fogao"},{"name":"facets","type":"array","required":false,"description":"Extra filters as 'key/value' pairs taken from the `filters` action (e.g. genero/feminino, tamanho/41). Anything the site publishes as a facet.","on_invalid":"reject","example":["genero/feminino"]},{"name":"in_stock_only","type":"boolean","required":false,"description":"true drops products Americanas lists as unavailable.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh attempts to make before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id, sku_id, title, brand, url, image, price_brl (card price), pix_price_brl (the a-vista/PIX price the product page headlines), pix_discount_pct, list_price_brl, discount_pct, currency, installments{count, amount_brl, total_brl, interest_free, label}, seller{id, name, is_americanas}, marketplace, in_stock, offer_count, ean, reference, category, category_path[], promotions[]{name, discount_pct}}, count, total_results, max_reachable_results, page, page_size, has_more, stop_reason, unparsable_rows_dropped, sort, applied_filters, country, currency, query","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"cafeteira eletrica"}},{"name":"category","description":"Every product in an Americanas category, by category path or category URL, paged, with the same rows, sorts and filters as search.","required_params":["category"],"optional_params":["country","page","page_size","sort","brand","seller","min_price","max_price","facets","in_stock_only","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A category path (eletrodomesticos/fogao) or a americanas.com.br category URL. Up to 4 levels deep.","on_invalid":"reject","example":"eletrodomesticos/fogao","aliases":["category_url","category_path"]},{"name":"country","type":"enum","required":false,"description":"Americanas sells in Brazil only (americanas.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — americanas.com.br (BRL)"}],"default":"br","example":"br"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1. Americanas serves only the first 2500 products of a result set: (page - 1) x page_size must be below 2500.","on_invalid":"reject","default":1,"minimum":1,"maximum":2500},{"name":"page_size","type":"integer","required":false,"description":"Products per page, up to 50.","on_invalid":"reject","default":20,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Americanas' own sort orders. price_asc / price_desc order by the card price. `discount` is Americanas' own discount ranking: it correlates with but does not exactly equal discount_pct computed from the returned prices (measured 112 of 114 adjacent pairs descending). `name_asc` is ordered by Portuguese collation, so accented names sort as a Brazilian shopper expects. Americanas' 'mais vendidos' is not offered: the source accepts it and returns the relevance order unchanged.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Mais relevantes"},{"value":"price_asc","label":"Menor preco"},{"value":"price_desc","label":"Maior preco"},{"value":"newest","label":"Lancamentos"},{"value":"discount","label":"Maior desconto"},{"value":"name_asc","label":"Nome A-Z"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"One brand, as it appears in the `brand` facet (e.g. mondial, philco).","on_invalid":"reject","example":"mondial"},{"name":"seller","type":"string","required":false,"description":"One marketplace seller, as it appears in the `sellername` facet (e.g. magazine-luiza; americanas-sa = sold by Americanas itself).","on_invalid":"reject","example":"magazine-luiza"},{"name":"min_price","type":"number","required":false,"description":"Lowest price in BRL (reais). Americanas applies it to the card price.","on_invalid":"reject","example":100,"minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in BRL (reais). Americanas applies it to the card price.","on_invalid":"reject","example":300,"minimum":0},{"name":"facets","type":"array","required":false,"description":"Extra filters as 'key/value' pairs taken from the `filters` action (e.g. genero/feminino, tamanho/41). Anything the site publishes as a facet.","on_invalid":"reject","example":["genero/feminino"]},{"name":"in_stock_only","type":"boolean","required":false,"description":"true drops products Americanas lists as unavailable.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh attempts to make before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id, sku_id, title, brand, url, image, price_brl (card price), pix_price_brl (the a-vista/PIX price the product page headlines), pix_discount_pct, list_price_brl, discount_pct, currency, installments{count, amount_brl, total_brl, interest_free, label}, seller{id, name, is_americanas}, marketplace, in_stock, offer_count, ean, reference, category, category_path[], promotions[]{name, discount_pct}}, count, total_results, max_reachable_results, page, page_size, has_more, stop_reason, unparsable_rows_dropped, sort, applied_filters, country, currency, category_path","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"seller/products","description":"Everything a named Americanas marketplace seller lists, paged, with the same rows, sorts and filters as search. Seller names come from the `filters` action's sellername facet.","required_params":["seller"],"optional_params":["country","query","page","page_size","sort","brand","min_price","max_price","category_path","facets","in_stock_only","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"The seller name as it appears in the sellername facet.","on_invalid":"reject","example":"magazine-luiza"},{"name":"country","type":"enum","required":false,"description":"Americanas sells in Brazil only (americanas.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — americanas.com.br (BRL)"}],"default":"br","example":"br"},{"name":"query","type":"string","required":false,"description":"The keyword whose filters you want. Omit it to get a category's filters.","on_invalid":"reject","example":"cafeteira","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, from 1. Americanas serves only the first 2500 products of a result set: (page - 1) x page_size must be below 2500.","on_invalid":"reject","default":1,"minimum":1,"maximum":2500},{"name":"page_size","type":"integer","required":false,"description":"Products per page, up to 50.","on_invalid":"reject","default":20,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Americanas' own sort orders. price_asc / price_desc order by the card price. `discount` is Americanas' own discount ranking: it correlates with but does not exactly equal discount_pct computed from the returned prices (measured 112 of 114 adjacent pairs descending). `name_asc` is ordered by Portuguese collation, so accented names sort as a Brazilian shopper expects. Americanas' 'mais vendidos' is not offered: the source accepts it and returns the relevance order unchanged.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Mais relevantes"},{"value":"price_asc","label":"Menor preco"},{"value":"price_desc","label":"Maior preco"},{"value":"newest","label":"Lancamentos"},{"value":"discount","label":"Maior desconto"},{"value":"name_asc","label":"Nome A-Z"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"One brand, as it appears in the `brand` facet (e.g. mondial, philco).","on_invalid":"reject","example":"mondial"},{"name":"min_price","type":"number","required":false,"description":"Lowest price in BRL (reais). Americanas applies it to the card price.","on_invalid":"reject","example":100,"minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in BRL (reais). Americanas applies it to the card price.","on_invalid":"reject","example":300,"minimum":0},{"name":"category_path","type":"string","required":false,"description":"Limit to a category path, as in a product's category_path or a americanas.com.br category URL (e.g. eletrodomesticos/fogao).","on_invalid":"reject","example":"eletrodomesticos/fogao"},{"name":"facets","type":"array","required":false,"description":"Extra filters as 'key/value' pairs taken from the `filters` action (e.g. genero/feminino, tamanho/41). Anything the site publishes as a facet.","on_invalid":"reject","example":["genero/feminino"]},{"name":"in_stock_only","type":"boolean","required":false,"description":"true drops products Americanas lists as unavailable.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh attempts to make before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id, sku_id, title, brand, url, image, price_brl (card price), pix_price_brl (the a-vista/PIX price the product page headlines), pix_discount_pct, list_price_brl, discount_pct, currency, installments{count, amount_brl, total_brl, interest_free, label}, seller{id, name, is_americanas}, marketplace, in_stock, offer_count, ean, reference, category, category_path[], promotions[]{name, discount_pct}}, count, total_results, max_reachable_results, page, page_size, has_more, stop_reason, unparsable_rows_dropped, sort, applied_filters, country, currency, seller","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"product/detail","description":"The full Americanas product record by id or URL: title, brand, EAN, reference, the card price, the PIX price and its discount, the struck list price, the best interest-free instalment plan, the seller, EVERY competing seller offer with its own prices, availability, description, specifications, images, variants with their own ids and prices, category breadcrumb and release date.","required_params":["product_id"],"optional_params":["country","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"An Americanas product id (the trailing number of a product URL) or the product URL itself.","on_invalid":"reject","example":"4895445","aliases":["id","url","sku"]},{"name":"country","type":"enum","required":false,"description":"Americanas sells in Brazil only (americanas.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — americanas.com.br (BRL)"}],"default":"br","example":"br"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh attempts to make before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id, sku_id, title, brand, url, image, price_brl (card price), pix_price_brl (the a-vista/PIX price the product page headlines), pix_discount_pct, list_price_brl, discount_pct, currency, installments{count, amount_brl, total_brl, interest_free, label}, seller{id, name, is_americanas}, marketplace, in_stock, offer_count, ean, reference, category, category_path[], promotions[]{name, discount_pct}, description, specifications{name: value}, images[], variants[]{sku_id, name, ean, attributes, in_stock, price_brl, pix_price_brl}, variant_count, offers[]{seller{}, sku_id, price_brl, pix_price_brl, list_price_brl, installments{}, in_stock}, category_id, release_date, meta_description}, country, currency","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"4895445"}},{"name":"product/batch","description":"Up to 10 Americanas products in one call, each the same full record as product/detail. Ids that do not resolve are reported in not_found[] instead of failing the whole call.","required_params":["product_ids"],"optional_params":["country","max_rotations"],"params":[{"name":"product_ids","type":"array","required":true,"description":"Up to 10 Americanas product ids or product URLs in one call.","on_invalid":"reject","example":["4895445","2089027"],"aliases":["ids"]},{"name":"country","type":"enum","required":false,"description":"Americanas sells in Brazil only (americanas.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — americanas.com.br (BRL)"}],"default":"br","example":"br"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh attempts to make before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"products[]{…the product/detail shape…}, count, requested, not_found[], country, currency","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":5},"example_params":null},{"name":"filters","description":"The filters Americanas itself offers for a keyword or a category — brands, sellers, price range, category tree and the per-category attributes (size, colour, gender…). Feed any of them back into search as `facets`.","required_params":[],"optional_params":["query","category","country","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"The keyword whose filters you want. Omit it to get a category's filters.","on_invalid":"reject","example":"cafeteira","aliases":["q","keyword"]},{"name":"category","type":"string","required":false,"description":"A category path to get that category's filters.","on_invalid":"reject","example":"eletrodomesticos/fogao","aliases":["category_path","category_url"]},{"name":"country","type":"enum","required":false,"description":"Americanas sells in Brazil only (americanas.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — americanas.com.br (BRL)"}],"default":"br","example":"br"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh attempts to make before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"filters[]{key, label, type, values[]{value, label, count}}, price_range{min, max}, count, query, category_path, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"search/suggest","description":"Americanas' own search-box completions for what a shopper has typed, with how often each term is searched and the department it belongs to.","required_params":["query"],"optional_params":["country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper has typed so far.","on_invalid":"reject","example":"gelad","aliases":["q","prefix"]},{"name":"country","type":"enum","required":false,"description":"Americanas sells in Brazil only (americanas.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — americanas.com.br (BRL)"}],"default":"br","example":"br"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh attempts to make before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"suggestions[]{term, search_count, department, position}, count, query, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":{"query":"cafeteira eletrica"}}]},{"name":"app-store","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"App Store Reviews API — unified Apple App Store + Google Play reviews, ratings, top charts and ASO discovery","version":"1.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/app-store/v1","spec_available":true,"actions":[{"name":"reviews","description":"unified Apple + Play reviews for one or more apps","required_params":[],"optional_params":["apps","appleAppId","googlePlayPackage","appName","stores","countries","maxReviews"],"params":[{"name":"apps","type":"array","required":false,"description":"Apps to fetch reviews for: an array of objects with any of {name, apple/appleAppId, play/googlePlayPackage}, or plain name strings. Alternative to the single-app id params.","on_invalid":"reject","example":[{"name":"WhatsApp","apple":"310633997","play":"com.whatsapp"}]},{"name":"appleAppId","type":"string","required":false,"description":"Apple numeric app id (single-app shortcut).","on_invalid":"reject","example":"310633997"},{"name":"googlePlayPackage","type":"string","required":false,"description":"Google Play package name (single-app shortcut).","on_invalid":"reject","example":"com.whatsapp"},{"name":"appName","type":"string","required":false,"description":"App name to search per store when ids aren't supplied.","on_invalid":"reject","example":"WhatsApp"},{"name":"stores","type":"array","required":false,"description":"Which app stores to query (array). Aliases like ios/app_store and play/android/google are accepted; unknown names are ignored. Omit to query both.","on_invalid":"ignore","allowed_values":[{"value":"apple","label":"Apple App Store (iTunes)"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]},{"name":"countries","type":"array","required":false,"description":"Storefront country codes (2-letter, lowercase), e.g. ['us','gb']. Use 'all' for the Apple aggregate set. Omit for the default.","on_invalid":"ignore","example":["us"]},{"name":"maxReviews","type":"integer","required":false,"description":"Maximum reviews to collect per app/store (clamped to 100000).","on_invalid":"ignore","default":1000,"example":100,"minimum":1,"maximum":100000,"aliases":["max_reviews"]}],"returns":"kind='reviews', results[] (store, profile{name,app_id,rating,...}, reviews[] {rating, title, text, date, reviewer, version}, scraped_count, status), summary (success_rate_pct, total_reviews, …)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"apps":[{"name":"WhatsApp","apple":"310633997"}],"stores":["apple"],"countries":["us"],"maxReviews":100}},{"name":"search","description":"ranked app search results","required_params":["query"],"optional_params":["stores","country","count"],"params":[{"name":"query","type":"string","required":true,"description":"App search keyword (name or term).","on_invalid":"reject","example":"spotify","aliases":["appName","term"]},{"name":"stores","type":"array","required":false,"description":"Which app stores to query (array). Aliases like ios/app_store and play/android/google are accepted; unknown names are ignored. Omit to query both.","on_invalid":"ignore","allowed_values":[{"value":"apple","label":"Apple App Store (iTunes)"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]},{"name":"country","type":"string","required":false,"description":"Storefront country code (2-letter, lowercase), e.g. 'us'.","on_invalid":"ignore","default":"us","example":"us"},{"name":"count","type":"integer","required":false,"description":"Maximum number of apps to return.","on_invalid":"ignore","default":50,"example":20,"minimum":1,"aliases":["maxResults"]}],"returns":"kind='discovery', results[]{store,query,apps[],count}, summary","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"topCharts","description":"ranked chart/category apps","required_params":[],"optional_params":["stores","country","category","count","chart","device"],"params":[{"name":"chart","type":"enum","required":false,"description":"Which chart to pull. Apple supports top/new free/paid/grossing; Google Play maps to its equivalent top charts.","on_invalid":"ignore","allowed_values":[{"value":"topFree","label":"Top free"},{"value":"topPaid","label":"Top paid"},{"value":"topGrossing","label":"Top grossing"},{"value":"newFree","label":"New free (Apple)"},{"value":"newPaid","label":"New paid (Apple)"},{"value":"new","label":"New (Apple)"}],"default":"topFree","example":"topFree"},{"name":"category","type":"string","required":false,"description":"Genre/category filter: an Apple genre id (e.g. 6014=Games) or a Play category (e.g. GAME, SOCIAL). See listCategories for valid values.","on_invalid":"reject","example":"6014","aliases":["genre"]},{"name":"device","type":"enum","required":false,"description":"Apple-only: chart device variant (iPad has fewer chart feeds).","on_invalid":"ignore","allowed_values":[{"value":"iphone","label":"iPhone (Apple)"},{"value":"ipad","label":"iPad (Apple)"}],"default":"iphone","example":"iphone"},{"name":"stores","type":"array","required":false,"description":"Which app stores to query (array). Aliases like ios/app_store and play/android/google are accepted; unknown names are ignored. Omit to query both.","on_invalid":"ignore","allowed_values":[{"value":"apple","label":"Apple App Store (iTunes)"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]},{"name":"country","type":"string","required":false,"description":"Storefront country code (2-letter, lowercase), e.g. 'us'.","on_invalid":"ignore","default":"us","example":"us"},{"name":"count","type":"integer","required":false,"description":"Maximum number of apps to return.","on_invalid":"ignore","default":50,"example":20,"minimum":1,"aliases":["maxResults"]}],"returns":"kind='discovery', results[]{store,chart,category,apps[],count,requested_count}, summary","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"listCategories","description":"static genre/category list","required_params":[],"optional_params":["stores"],"params":[{"name":"stores","type":"array","required":false,"description":"Which app stores to query (array). Aliases like ios/app_store and play/android/google are accepted; unknown names are ignored. Omit to query both.","on_invalid":"ignore","allowed_values":[{"value":"apple","label":"Apple App Store (iTunes)"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]}],"returns":"kind='discovery', results[]{store,categories[]{id,name},count}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"appDetails","description":"full app profile","required_params":[],"optional_params":["appId","appleAppId","googlePlayPackage","stores","country","includeSimilarApps"],"params":[{"name":"appId","type":"string","required":false,"description":"App id to look up: Apple numeric id OR Play package name (appleAppId / googlePlayPackage also accepted).","on_invalid":"reject","example":"324684580","aliases":["appleAppId","googlePlayPackage","app_id"]},{"name":"stores","type":"array","required":false,"description":"Which app stores to query (array). Aliases like ios/app_store and play/android/google are accepted; unknown names are ignored. Omit to query both.","on_invalid":"ignore","allowed_values":[{"value":"apple","label":"Apple App Store (iTunes)"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]},{"name":"country","type":"string","required":false,"description":"Storefront country code (2-letter, lowercase), e.g. 'us'.","on_invalid":"ignore","default":"us","example":"us"},{"name":"includeSimilarApps","type":"boolean","required":false,"description":"Play-only: also return similar/related apps for the app.","on_invalid":"ignore","default":false,"example":true,"aliases":["include_similar"]}],"returns":"kind='discovery', results[]{store,country,profile{...histogram},similar_apps[],status}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"stores":["apple"],"country":"us","appId":"324684580"}},{"name":"developerApps","description":"every other app published by the same developer","required_params":[],"optional_params":["appId","appleAppId","googlePlayPackage","stores","country","count"],"params":[{"name":"appId","type":"string","required":false,"description":"App id to look up: Apple numeric id OR Play package name (appleAppId / googlePlayPackage also accepted).","on_invalid":"reject","example":"324684580","aliases":["appleAppId","googlePlayPackage","app_id"]},{"name":"stores","type":"array","required":false,"description":"Which app stores to query (array). Aliases like ios/app_store and play/android/google are accepted; unknown names are ignored. Omit to query both.","on_invalid":"ignore","allowed_values":[{"value":"apple","label":"Apple App Store (iTunes)"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]},{"name":"country","type":"string","required":false,"description":"Storefront country code (2-letter, lowercase), e.g. 'us'.","on_invalid":"ignore","default":"us","example":"us"},{"name":"count","type":"integer","required":false,"description":"Maximum number of apps to return.","on_invalid":"ignore","default":50,"example":20,"minimum":1,"aliases":["maxResults"]}],"returns":"kind='discovery', results[]{store,app_id,apps[],count,status}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"similarApps","description":"related / similar apps for an app","required_params":[],"optional_params":["appId","appleAppId","googlePlayPackage","stores","country","count"],"params":[{"name":"appId","type":"string","required":false,"description":"App id to look up: Apple numeric id OR Play package name (appleAppId / googlePlayPackage also accepted).","on_invalid":"reject","example":"324684580","aliases":["appleAppId","googlePlayPackage","app_id"]},{"name":"stores","type":"array","required":false,"description":"Which app stores to query (array). Aliases like ios/app_store and play/android/google are accepted; unknown names are ignored. Omit to query both.","on_invalid":"ignore","allowed_values":[{"value":"apple","label":"Apple App Store (iTunes)"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]},{"name":"country","type":"string","required":false,"description":"Storefront country code (2-letter, lowercase), e.g. 'us'.","on_invalid":"ignore","default":"us","example":"us"},{"name":"count","type":"integer","required":false,"description":"Maximum number of apps to return.","on_invalid":"ignore","default":50,"example":20,"minimum":1,"aliases":["maxResults"]}],"returns":"kind='discovery', results[]{store,app_id,apps[],count,status} (Apple has no public similar feed — returns the developer's other apps)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"argos","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Argos API scraper — argos.co.uk (UK): search and browse the catalogue, read the full product with price, was-price, multi-buy offers and Nectar points kept apart, specs, images, variants and breadcrumb; customer reviews, Q&A and special offers. Browserless.","version":"0.2.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/argos/v1","spec_available":true,"actions":[{"name":"search","description":"Search argos.co.uk by keyword. Each product carries the price, the was-price and saving of a price drop, the offer text, clearance flag, the search index's rating and review count, delivery and click & collect flags, delivery cost, seller type and variant options. Sort by price or rating; filter by brand, category, offers, new in or minimum rating. A misspelling with no matches is re-run against Argos's own spelling correction (reported in matched_query).","required_params":["query"],"optional_params":["page","page_size","sort","brands","category_id","offers_only","new_only","min_rating"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword, as typed on argos.co.uk. When a misspelling returns nothing, Argos's own spelling correction is applied and reported in matched_query.","on_invalid":"reject","example":"kettle","aliases":["q","keyword","searchTerm"]},{"name":"page","type":"integer","required":false,"description":"1-based page.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-60).","on_invalid":"reject","default":24,"minimum":1,"maximum":60},{"name":"sort","type":"enum","required":false,"description":"Order of the results.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance (the site's default)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"rating","label":"Customer rating"}],"default":"relevance"},{"name":"brands","type":"array","required":false,"description":"Only these brands (names as shown in filters_available.brands).","on_invalid":"reject","example":["russell hobbs"],"aliases":["brand"]},{"name":"category_id","type":"string","required":false,"description":"Restrict to one Argos category id (from a breadcrumb or filters_available.category).","on_invalid":"reject","example":"29560","aliases":["category"]},{"name":"offers_only","type":"boolean","required":false,"description":"Only products on a special offer (price drop or multi-buy).","on_invalid":"reject","default":false},{"name":"new_only","type":"boolean","required":false,"description":"Only 'New in' products.","on_invalid":"reject","default":false},{"name":"min_rating","type":"enum","required":false,"description":"Minimum customer rating.","on_invalid":"reject","allowed_values":[{"value":"4","label":"4 stars or more"},{"value":"3","label":"3 stars or more"},{"value":"2","label":"2 stars or more"},{"value":"1","label":"1 star or more"}]}],"returns":"results[]{product_id, title, brand, url, image, price, currency, price_is_from, was_price, savings, discount_percent, offer_text, clearance, search_index_rating, rating_scale, search_index_review_count, has_variations, variant_options, deliverable, click_and_collect, free_delivery, delivery_cost, seller_type, fulfilment_agent, badges[]}, count, total_results, page, page_size, has_more, sort_applied, filters_applied[], filters_available[]{facet, label, values[]{id, label, count}}, sponsored_dropped, query, matched_query, category_applied{category_id, name}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"kettle"}},{"name":"product/detail","description":"One Argos product in full: price, was-price and saving, the offer text, every multi-buy offer it is part of (never subtracted from the price), Nectar points, rating and review count, availability, delivery and click & collect flags, delivery cost, EAN when published, images, videos, description, feature list and specifications, breadcrumb, size/colour variants with their own prices, badges and warranties.","required_params":["product_id"],"optional_params":[],"params":[{"name":"product_id","type":"string","required":true,"description":"Argos catalogue number (7 digits, e.g. 3102039), a Tu clothing id (tuc…), a marketplace id, or an argos.co.uk/product/ URL.","on_invalid":"reject","example":"3102039","aliases":["id","catalogue_number","catalog_number","url"]}],"returns":"product{product_id, title, brand, url, ean, price, currency, was_price, savings, discount_percent, offer_text, multibuy_offers[]{offer_id, title, description, offer_type, mechanic, starts_at, ends_at, min_quantity, eligible_product_count}, nectar_points, nectar_multiplier, rating, rating_scale, review_count, availability, deliverable, click_and_collect, free_delivery, delivery_cost, delivery_cost_varies, end_of_line, made_to_order, max_quantity, age_restricted, seller_type, fulfilment_agent, images[], videos[], documents[], description, features[], specifications{}, breadcrumb[]{category_id, name, url}, category_id, variants[]{product_id, attributes{}, price, url}, badges[], warranties[], energy, dimensions, safety_text, exclusion_text}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"3102039"}},{"name":"product/reviews","description":"Customer reviews of one Argos product, paged, sortable and filterable by star rating, with the average, the 1-5 distribution, the recommend percentage and per-aspect averages.","required_params":["product_id"],"optional_params":["page","page_size","sort","rating"],"params":[{"name":"product_id","type":"string","required":true,"description":"Argos catalogue number (7 digits, e.g. 3102039), a Tu clothing id (tuc…), a marketplace id, or an argos.co.uk/product/ URL.","on_invalid":"reject","example":"3102039","aliases":["id","catalogue_number","catalog_number","url"]},{"name":"page","type":"integer","required":false,"description":"1-based page.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1-50).","on_invalid":"reject","default":10,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"oldest","label":"oldest"},{"value":"highest_rating","label":"highest rating"},{"value":"lowest_rating","label":"lowest rating"},{"value":"most_helpful","label":"most helpful"}],"default":"newest"},{"name":"rating","type":"integer","required":false,"description":"Only reviews with exactly this star rating.","on_invalid":"reject","minimum":1,"maximum":5,"aliases":["stars"]}],"returns":"product_id, reviews[]{review_id, rating, rating_scale, title, text, author, author_location, submitted_at, recommended, syndicated, badges[], secondary_ratings{}, reviewer_context{}, helpful_votes, unhelpful_votes, photos[], responses[]}, count, total_results, rating, rating_scale, total_reviews, rating_distribution{1..5}, recommended_percent, secondary_rating_averages{}, rating_filter, page, page_size, has_more","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"3102039"}},{"name":"product/questions","description":"Customer questions about one Argos product with their answers (staff, brand and best-answer flags).","required_params":["product_id"],"optional_params":["page","page_size","sort"],"params":[{"name":"product_id","type":"string","required":true,"description":"Argos catalogue number (7 digits, e.g. 3102039), a Tu clothing id (tuc…), a marketplace id, or an argos.co.uk/product/ URL.","on_invalid":"reject","example":"3102039","aliases":["id","catalogue_number","catalog_number","url"]},{"name":"page","type":"integer","required":false,"description":"1-based page.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Questions per page (1-50).","on_invalid":"reject","default":10,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Question order.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"oldest","label":"oldest"}],"default":"newest"}],"returns":"product_id, questions[]{question_id, question, details, author, submitted_at, answer_count, answers[]{answer_id, text, author, submitted_at, best_answer, brand_answer, staff_answer, helpful_votes, unhelpful_votes}}, count, total_results, page, page_size, has_more","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"3102039"}},{"name":"category","description":"Every product in one Argos category, paged, with the same rows, sorting and filters as search.","required_params":["category_id"],"optional_params":["page","page_size","sort","brands","offers_only","new_only","min_rating"],"params":[{"name":"category_id","type":"string","required":true,"description":"Argos category id (the number after c: in a /browse/ URL, or from a breadcrumb).","on_invalid":"reject","example":"29560","aliases":["category","url"]},{"name":"page","type":"integer","required":false,"description":"1-based page.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-60).","on_invalid":"reject","default":24,"minimum":1,"maximum":60},{"name":"sort","type":"enum","required":false,"description":"Order of the results.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance (the site's default)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"rating","label":"Customer rating"}],"default":"relevance"},{"name":"brands","type":"array","required":false,"description":"Only these brands (names as shown in filters_available.brands).","on_invalid":"reject","example":["russell hobbs"],"aliases":["brand"]},{"name":"offers_only","type":"boolean","required":false,"description":"Only products on a special offer (price drop or multi-buy).","on_invalid":"reject","default":false},{"name":"new_only","type":"boolean","required":false,"description":"Only 'New in' products.","on_invalid":"reject","default":false},{"name":"min_rating","type":"enum","required":false,"description":"Minimum customer rating.","on_invalid":"reject","allowed_values":[{"value":"4","label":"4 stars or more"},{"value":"3","label":"3 stars or more"},{"value":"2","label":"2 stars or more"},{"value":"1","label":"1 star or more"}]}],"returns":"results[]{product_id, title, brand, url, image, price, currency, price_is_from, was_price, savings, discount_percent, offer_text, clearance, search_index_rating, rating_scale, search_index_review_count, has_variations, variant_options, deliverable, click_and_collect, free_delivery, delivery_cost, seller_type, fulfilment_agent, badges[]}, count, total_results, page, page_size, has_more, sort_applied, filters_applied[], filters_available[]{facet, label, values[]{id, label, count}}, sponsored_dropped, category_id","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"deals","description":"Products currently on a special offer at Argos (price drops and multi-buys), optionally narrowed by keyword, category or brand, with the same rows and sorting as search.","required_params":[],"optional_params":["query","category_id","brands","page","page_size","sort"],"params":[{"name":"query","type":"string","required":false,"description":"Optional keyword to narrow the offers.","on_invalid":"reject","example":"toys","aliases":["q","keyword"]},{"name":"category_id","type":"string","required":false,"description":"Restrict to one Argos category id (from a breadcrumb or filters_available.category).","on_invalid":"reject","example":"29560","aliases":["category"]},{"name":"brands","type":"array","required":false,"description":"Only these brands (names as shown in filters_available.brands).","on_invalid":"reject","example":["russell hobbs"],"aliases":["brand"]},{"name":"page","type":"integer","required":false,"description":"1-based page.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-60).","on_invalid":"reject","default":24,"minimum":1,"maximum":60},{"name":"sort","type":"enum","required":false,"description":"Order of the results.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance (the site's default)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"rating","label":"Customer rating"}],"default":"relevance"}],"returns":"results[]{product_id, title, brand, url, image, price, currency, price_is_from, was_price, savings, discount_percent, offer_text, clearance, search_index_rating, rating_scale, search_index_review_count, has_variations, variant_options, deliverable, click_and_collect, free_delivery, delivery_cost, seller_type, fulfilment_agent, badges[]}, count, total_results, page, page_size, has_more, sort_applied, filters_applied[], filters_available[]{facet, label, values[]{id, label, count}}, sponsored_dropped, query, category_id","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"asos","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"ASOS API scraper — product search, filters, sale & new-in browse, multi-region product detail (sizes/stock/prices), reviews & similar items across UK, US, DE, FR and global markets (asos.com)","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/asos/v1","spec_available":true,"actions":[{"name":"search","description":"Keyword product search across the ASOS catalogue with filters (price, brand, colour, size, product type, sale, new-in, discount), sorting and offset/limit pagination.","required_params":["query"],"optional_params":["store","lang","currency","country","offset","limit","sort","min_price","max_price","brand","colour","color","size","product_type","on_sale","new_in_within","discount","channel","key_store_dataversion"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword (e.g. 'summer dress', 'nike trainers').","on_invalid":"reject","example":"summer dress"},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"},{"name":"lang","type":"string","required":false,"description":"Override the store's locale (advanced), e.g. en-GB, de-DE.","on_invalid":"reject"},{"name":"currency","type":"string","required":false,"description":"Override the store's currency (advanced), e.g. USD, EUR.","on_invalid":"reject"},{"name":"country","type":"string","required":false,"description":"Override ship-to country code (advanced), e.g. GB, US.","on_invalid":"reject"},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-200, default 48); clamped to 200.","on_invalid":"ignore","default":48,"example":48,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Sort order. Omit for relevance (default). Only these keys are valid.","on_invalid":"ignore","allowed_values":[{"value":"freshness","label":"Newest first"},{"value":"pricedesc","label":"Price: high to low"},{"value":"priceasc","label":"Price: low to high"}],"example":"freshness"},{"name":"min_price","type":"number","required":false,"description":"Minimum price filter (in the store's currency).","on_invalid":"ignore"},{"name":"max_price","type":"number","required":false,"description":"Maximum price filter (in the store's currency).","on_invalid":"ignore"},{"name":"brand","type":"string","required":false,"description":"Filter by brand — name (e.g. 'Nike', 'ASOS DESIGN') or facet id. Names are auto-resolved to ids; call the 'filters' action to list options.","on_invalid":"reject","example":"Nike"},{"name":"colour","type":"string","required":false,"description":"Filter by colour — name (e.g. 'Black', 'Blue', 'Multi') or facet id.","on_invalid":"reject","example":"black","aliases":["color"]},{"name":"size","type":"string","required":false,"description":"Filter by size — label (e.g. 'M', 'UK 10', 'XS') or facet id.","on_invalid":"reject","example":"M"},{"name":"product_type","type":"string","required":false,"description":"Filter by product type facet id (e.g. 8416=Dresses); see 'filters'.","on_invalid":"reject"},{"name":"on_sale","type":"enum","required":false,"description":"Limit to marked-down items only.","on_invalid":"ignore","allowed_values":[{"value":"sale","label":"On sale / marked down"},{"value":"new_season","label":"New season (full price)"}]},{"name":"new_in_within","type":"enum","required":false,"description":"Limit to items added within this window (the site's 'New in' filter).","on_invalid":"ignore","allowed_values":[{"value":"today","label":"Added today"},{"value":"yesterday","label":"Added yesterday"},{"value":"7d","label":"Last 7 days"},{"value":"14d","label":"Last 14 days"},{"value":"28d","label":"Last 28 days"}]},{"name":"discount","type":"enum","required":false,"description":"Minimum discount tier for marked-down items.","on_invalid":"ignore","allowed_values":[{"value":"20","label":"Up to 20%"},{"value":"30","label":"20-30%"},{"value":"40","label":"30-40%"},{"value":"50","label":"40-50%"},{"value":"60","label":"50-60%"},{"value":"60+","label":"60% or more"}]},{"name":"channel","type":"string","required":false,"description":"Client channel (advanced).","on_invalid":"reject","example":"desktop-web"},{"name":"key_store_dataversion","type":"string","required":false,"description":"Internal catalogue version token (advanced).","on_invalid":"reject"}],"returns":"products[] (id, name, price, brand, colour, images, in_stock, colour variants), facets[] (brands/colours/sizes/price/discount/product-type), total, offset, has_more, next_offset","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"dress"}},{"name":"category","description":"Browse all products in a category by category_id, with the same filters, sorting and pagination as search. Get category ids from the 'navigation' action.","required_params":["category_id"],"optional_params":["store","lang","currency","country","offset","limit","sort","min_price","max_price","brand","colour","color","size","product_type","on_sale","new_in_within","discount","channel"],"params":[{"name":"category_id","type":"integer","required":true,"description":"ASOS category id (the cid in a category URL; see navigation).","on_invalid":"reject","example":8799},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"},{"name":"lang","type":"string","required":false,"description":"Override the store's locale (advanced), e.g. en-GB, de-DE.","on_invalid":"reject"},{"name":"currency","type":"string","required":false,"description":"Override the store's currency (advanced), e.g. USD, EUR.","on_invalid":"reject"},{"name":"country","type":"string","required":false,"description":"Override ship-to country code (advanced), e.g. GB, US.","on_invalid":"reject"},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-200, default 48); clamped to 200.","on_invalid":"ignore","default":48,"example":48,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Sort order. Omit for relevance (default). Only these keys are valid.","on_invalid":"ignore","allowed_values":[{"value":"freshness","label":"Newest first"},{"value":"pricedesc","label":"Price: high to low"},{"value":"priceasc","label":"Price: low to high"}],"example":"freshness"},{"name":"min_price","type":"number","required":false,"description":"Minimum price filter (in the store's currency).","on_invalid":"ignore"},{"name":"max_price","type":"number","required":false,"description":"Maximum price filter (in the store's currency).","on_invalid":"ignore"},{"name":"brand","type":"string","required":false,"description":"Filter by brand — name (e.g. 'Nike', 'ASOS DESIGN') or facet id. Names are auto-resolved to ids; call the 'filters' action to list options.","on_invalid":"reject","example":"Nike"},{"name":"colour","type":"string","required":false,"description":"Filter by colour — name (e.g. 'Black', 'Blue', 'Multi') or facet id.","on_invalid":"reject","example":"black","aliases":["color"]},{"name":"size","type":"string","required":false,"description":"Filter by size — label (e.g. 'M', 'UK 10', 'XS') or facet id.","on_invalid":"reject","example":"M"},{"name":"product_type","type":"string","required":false,"description":"Filter by product type facet id (e.g. 8416=Dresses); see 'filters'.","on_invalid":"reject"},{"name":"on_sale","type":"enum","required":false,"description":"Limit to marked-down items only.","on_invalid":"ignore","allowed_values":[{"value":"sale","label":"On sale / marked down"},{"value":"new_season","label":"New season (full price)"}]},{"name":"new_in_within","type":"enum","required":false,"description":"Limit to items added within this window (the site's 'New in' filter).","on_invalid":"ignore","allowed_values":[{"value":"today","label":"Added today"},{"value":"yesterday","label":"Added yesterday"},{"value":"7d","label":"Last 7 days"},{"value":"14d","label":"Last 14 days"},{"value":"28d","label":"Last 28 days"}]},{"name":"discount","type":"enum","required":false,"description":"Minimum discount tier for marked-down items.","on_invalid":"ignore","allowed_values":[{"value":"20","label":"Up to 20%"},{"value":"30","label":"20-30%"},{"value":"40","label":"30-40%"},{"value":"50","label":"40-50%"},{"value":"60","label":"50-60%"},{"value":"60+","label":"60% or more"}]},{"name":"channel","type":"string","required":false,"description":"Client channel (advanced).","on_invalid":"reject","example":"desktop-web"}],"returns":"products[], facets[], category_name, category_id, total, offset, has_more, next_offset","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"category_id":"8799"}},{"name":"sale","description":"On-sale / marked-down products only. Provide a keyword (query) or a category_id; supports the same filters, sort and pagination as search.","required_params":[],"optional_params":["query","category_id","store","lang","currency","country","offset","limit","sort","min_price","max_price","brand","colour","color","size","product_type","discount"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to find sale items for (sale needs query OR category_id).","on_invalid":"reject","example":"dress"},{"name":"category_id","type":"integer","required":false,"description":"Category id to browse on sale (alternative to query).","on_invalid":"reject","example":8799},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"},{"name":"lang","type":"string","required":false,"description":"Override the store's locale (advanced), e.g. en-GB, de-DE.","on_invalid":"reject"},{"name":"currency","type":"string","required":false,"description":"Override the store's currency (advanced), e.g. USD, EUR.","on_invalid":"reject"},{"name":"country","type":"string","required":false,"description":"Override ship-to country code (advanced), e.g. GB, US.","on_invalid":"reject"},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-200, default 48); clamped to 200.","on_invalid":"ignore","default":48,"example":48,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Sort order. Omit for relevance (default). Only these keys are valid.","on_invalid":"ignore","allowed_values":[{"value":"freshness","label":"Newest first"},{"value":"pricedesc","label":"Price: high to low"},{"value":"priceasc","label":"Price: low to high"}],"example":"freshness"},{"name":"min_price","type":"number","required":false,"description":"Minimum price filter (in the store's currency).","on_invalid":"ignore"},{"name":"max_price","type":"number","required":false,"description":"Maximum price filter (in the store's currency).","on_invalid":"ignore"},{"name":"brand","type":"string","required":false,"description":"Filter by brand — name (e.g. 'Nike', 'ASOS DESIGN') or facet id. Names are auto-resolved to ids; call the 'filters' action to list options.","on_invalid":"reject","example":"Nike"},{"name":"colour","type":"string","required":false,"description":"Filter by colour — name (e.g. 'Black', 'Blue', 'Multi') or facet id.","on_invalid":"reject","example":"black","aliases":["color"]},{"name":"size","type":"string","required":false,"description":"Filter by size — label (e.g. 'M', 'UK 10', 'XS') or facet id.","on_invalid":"reject","example":"M"},{"name":"product_type","type":"string","required":false,"description":"Filter by product type facet id (e.g. 8416=Dresses); see 'filters'.","on_invalid":"reject"},{"name":"on_sale","type":"enum","required":false,"description":"Limit to marked-down items only.","on_invalid":"ignore","allowed_values":[{"value":"sale","label":"On sale / marked down"},{"value":"new_season","label":"New season (full price)"}]},{"name":"new_in_within","type":"enum","required":false,"description":"Limit to items added within this window (the site's 'New in' filter).","on_invalid":"ignore","allowed_values":[{"value":"today","label":"Added today"},{"value":"yesterday","label":"Added yesterday"},{"value":"7d","label":"Last 7 days"},{"value":"14d","label":"Last 14 days"},{"value":"28d","label":"Last 28 days"}]},{"name":"discount","type":"enum","required":false,"description":"Minimum discount tier for marked-down items.","on_invalid":"ignore","allowed_values":[{"value":"20","label":"Up to 20%"},{"value":"30","label":"20-30%"},{"value":"40","label":"30-40%"},{"value":"50","label":"40-50%"},{"value":"60","label":"50-60%"},{"value":"60+","label":"60% or more"}]}],"returns":"products[] (marked-down only) with price.previous + is_marked_down, facets[], total, offset, has_more, next_offset","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"dress"}},{"name":"new_in","description":"Newest arrivals — freshness-sorted products, optionally limited to a recent window (today / last 7 / 14 / 28 days). Provide a keyword (query) or a category_id.","required_params":[],"optional_params":["query","category_id","store","lang","currency","country","offset","limit","new_in_within","min_price","max_price","brand","colour","color","size","product_type"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword for new arrivals (new_in needs query OR category_id).","on_invalid":"reject","example":"trainers"},{"name":"category_id","type":"integer","required":false,"description":"Category id for new arrivals (e.g. 27108 = women's New In).","on_invalid":"reject","example":27108},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"},{"name":"lang","type":"string","required":false,"description":"Override the store's locale (advanced), e.g. en-GB, de-DE.","on_invalid":"reject"},{"name":"currency","type":"string","required":false,"description":"Override the store's currency (advanced), e.g. USD, EUR.","on_invalid":"reject"},{"name":"country","type":"string","required":false,"description":"Override ship-to country code (advanced), e.g. GB, US.","on_invalid":"reject"},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-200, default 48); clamped to 200.","on_invalid":"ignore","default":48,"example":48,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Sort order. Omit for relevance (default). Only these keys are valid.","on_invalid":"ignore","allowed_values":[{"value":"freshness","label":"Newest first"},{"value":"pricedesc","label":"Price: high to low"},{"value":"priceasc","label":"Price: low to high"}],"example":"freshness"},{"name":"min_price","type":"number","required":false,"description":"Minimum price filter (in the store's currency).","on_invalid":"ignore"},{"name":"max_price","type":"number","required":false,"description":"Maximum price filter (in the store's currency).","on_invalid":"ignore"},{"name":"brand","type":"string","required":false,"description":"Filter by brand — name (e.g. 'Nike', 'ASOS DESIGN') or facet id. Names are auto-resolved to ids; call the 'filters' action to list options.","on_invalid":"reject","example":"Nike"},{"name":"colour","type":"string","required":false,"description":"Filter by colour — name (e.g. 'Black', 'Blue', 'Multi') or facet id.","on_invalid":"reject","example":"black","aliases":["color"]},{"name":"size","type":"string","required":false,"description":"Filter by size — label (e.g. 'M', 'UK 10', 'XS') or facet id.","on_invalid":"reject","example":"M"},{"name":"product_type","type":"string","required":false,"description":"Filter by product type facet id (e.g. 8416=Dresses); see 'filters'.","on_invalid":"reject"},{"name":"on_sale","type":"enum","required":false,"description":"Limit to marked-down items only.","on_invalid":"ignore","allowed_values":[{"value":"sale","label":"On sale / marked down"},{"value":"new_season","label":"New season (full price)"}]},{"name":"new_in_within","type":"enum","required":false,"description":"Limit to items added within this window (the site's 'New in' filter).","on_invalid":"ignore","allowed_values":[{"value":"today","label":"Added today"},{"value":"yesterday","label":"Added yesterday"},{"value":"7d","label":"Last 7 days"},{"value":"14d","label":"Last 14 days"},{"value":"28d","label":"Last 28 days"}]},{"name":"discount","type":"enum","required":false,"description":"Minimum discount tier for marked-down items.","on_invalid":"ignore","allowed_values":[{"value":"20","label":"Up to 20%"},{"value":"30","label":"20-30%"},{"value":"40","label":"30-40%"},{"value":"50","label":"40-50%"},{"value":"60","label":"50-60%"},{"value":"60+","label":"60% or more"}]}],"returns":"products[] sorted newest-first, facets[], total, offset, has_more, next_offset","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"trainers"}},{"name":"product","description":"full product detail (sizes/stock/description/images) by product_id or product_url","required_params":[],"optional_params":["product_id","product_url","store"],"params":[{"name":"product_id","type":"string","required":false,"description":"ASOS product id. (product needs product_id OR product_url.)","on_invalid":"reject","example":"210879654"},{"name":"product_url","type":"string","required":false,"description":"Full ASOS product URL (alternative to product_id).","on_invalid":"reject"},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"}],"returns":"product{} — name, brand, gender, product_type, price, description, care_info, size_and_fit, images, variants[] (size, brand_size, sku, ean, colour, in_stock, per-variant price)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"210879654"}},{"name":"products","description":"batch product detail for comma-separated product_ids","required_params":["product_ids"],"optional_params":["store"],"params":[{"name":"product_ids","type":"string","required":true,"description":"Comma-separated ASOS product ids (max 20).","on_invalid":"reject","example":"210879654,205000123"},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"}],"returns":"products[] — full detail per id (best-effort; failed ids skipped)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"navigation","description":"category links from gender landing pages; format=tree returns nested path hierarchy","required_params":[],"optional_params":["gender","store","format"],"params":[{"name":"gender","type":"enum","required":false,"description":"Which landing page to read categories from.","on_invalid":"reject","allowed_values":[{"value":"women","label":"Women"},{"value":"men","label":"Men"}],"example":"women"},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"},{"name":"format","type":"enum","required":false,"description":"Output shape.","on_invalid":"ignore","allowed_values":[{"value":"flat","label":"Flat category list (default)"},{"value":"tree","label":"Nested path hierarchy"}],"example":"flat"}],"returns":"categories[] {id, name, url} (flat) OR tree[] nested (format=tree)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"reviews","description":"product reviews + rating summary from PDP embedded ratings blob (paginated)","required_params":[],"optional_params":["product_id","product_url","offset","limit"],"params":[{"name":"product_id","type":"string","required":false,"description":"ASOS product id. (reviews needs product_id OR product_url.)","on_invalid":"reject","example":"210879654"},{"name":"product_url","type":"string","required":false,"description":"Full ASOS product URL (alternative to product_id).","on_invalid":"reject"},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"limit","type":"integer","required":false,"description":"Reviews per page (1-50, default 10).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50}],"returns":"rating{summary, distribution}, reviews[], total, offset, has_more, next_offset","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"210879654"}},{"name":"similar","description":"related products via same-brand search fallback (true mightLike API is account-gated)","required_params":[],"optional_params":["product_id","product_url","limit","store"],"params":[{"name":"product_id","type":"string","required":false,"description":"ASOS product id. (similar needs product_id OR product_url.)","on_invalid":"reject","example":"210879654"},{"name":"product_url","type":"string","required":false,"description":"Full ASOS product URL (alternative to product_id).","on_invalid":"reject"},{"name":"limit","type":"integer","required":false,"description":"Max similar products (1-200, default 12).","on_invalid":"ignore","default":12,"example":12,"minimum":1,"maximum":200},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"}],"returns":"products[] same-brand related items, brand, product_id, total","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"210879654","limit":6}},{"name":"filters","description":"available search/category facets (brands, colours, sizes, price ranges)","required_params":[],"optional_params":["query","category_id","store","lang","currency","country"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to get facets for. (filters needs query OR category_id.)","on_invalid":"reject","example":"dress"},{"name":"category_id","type":"integer","required":false,"description":"Category id to get facets for (alternative to query).","on_invalid":"reject","example":8799},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"},{"name":"lang","type":"string","required":false,"description":"Override the store's locale (advanced), e.g. en-GB, de-DE.","on_invalid":"reject"},{"name":"currency","type":"string","required":false,"description":"Override the store's currency (advanced), e.g. USD, EUR.","on_invalid":"reject"},{"name":"country","type":"string","required":false,"description":"Override ship-to country code (advanced), e.g. GB, US.","on_invalid":"reject"}],"returns":"facets[] (brands, colours, sizes, price ranges), total_products, category_name","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggestions","description":"search autocomplete suggestions for partial query","required_params":["query"],"optional_params":["store","lang","currency","country"],"params":[{"name":"query","type":"string","required":true,"description":"Partial search text to autocomplete.","on_invalid":"reject","example":"dre"},{"name":"store","type":"enum","required":false,"description":"ASOS market/store — sets default language, currency and ship-to country.","on_invalid":"reject","allowed_values":[{"value":"COM","label":"UK / international (default)"},{"value":"GB","label":"United Kingdom"},{"value":"US","label":"United States"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"}],"default":"COM","example":"US"},{"name":"lang","type":"string","required":false,"description":"Override the store's locale (advanced), e.g. en-GB, de-DE.","on_invalid":"reject"},{"name":"currency","type":"string","required":false,"description":"Override the store's currency (advanced), e.g. USD, EUR.","on_invalid":"reject"},{"name":"country","type":"string","required":false,"description":"Override ship-to country code (advanced), e.g. GB, US.","on_invalid":"reject"}],"returns":"suggestions[] {term, result_count, group}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"dre"}}]},{"name":"ats-jobs","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"ATS Job Boards API — pull company-direct job postings from Greenhouse, Lever, Ashby and Workable in one unified schema","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/ats-jobs/v1","spec_available":true,"actions":[{"name":"company_jobs","description":"all open jobs for a board → {jobs[]{id,title,url,company,location,locations,...}, count, total, company, ats_source}. `ats`=greenhouse|lever|ashby|workable + `company` (board token/subdomain).","required_params":["ats","company"],"optional_params":["limit","cursor","page"],"params":[{"name":"ats","type":"enum","required":true,"description":"Applicant-tracking system / job-board provider.","on_invalid":"reject","allowed_values":[{"value":"greenhouse","label":"Greenhouse — boards-api.greenhouse.io"},{"value":"lever","label":"Lever — api.lever.co"},{"value":"ashby","label":"Ashby — api.ashbyhq.com"},{"value":"workable","label":"Workable — apply/jobs.workable.com (only ATS with cross-company search)"}],"example":"greenhouse"},{"name":"company","type":"string","required":true,"description":"Board token / subdomain / org slug (e.g. greenhouse 'gitlab', lever 'spotify', ashby 'ramp'). Identifies one company's board.","on_invalid":"reject","example":"gitlab","aliases":["token","board"]},{"name":"limit","type":"integer","required":false,"description":"Max jobs to return (1-2000). Omit/0 = provider default (all).","on_invalid":"ignore","example":100,"minimum":1,"maximum":2000},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor from a previous response (provider-specific).","on_invalid":"ignore","example":"eyJvZmZzZXQiOjUwfQ=="},{"name":"page","type":"integer","required":false,"description":"Page number for providers that paginate by page (alternative to cursor).","on_invalid":"ignore","example":1,"minimum":1}],"returns":"jobs[]{id, title, url, company, location, locations, department, ...}, count, total, company, ats_source","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"ats":"greenhouse","company":"gitlab"}},{"name":"job_detail","description":"one fully-populated job (description + requirements/benefits) by `ats` + `company` + `job_id`.","required_params":["ats","company","job_id"],"optional_params":[],"params":[{"name":"ats","type":"enum","required":true,"description":"Applicant-tracking system / job-board provider.","on_invalid":"reject","allowed_values":[{"value":"greenhouse","label":"Greenhouse — boards-api.greenhouse.io"},{"value":"lever","label":"Lever — api.lever.co"},{"value":"ashby","label":"Ashby — api.ashbyhq.com"},{"value":"workable","label":"Workable — apply/jobs.workable.com (only ATS with cross-company search)"}],"example":"greenhouse"},{"name":"company","type":"string","required":true,"description":"Board token / subdomain / org slug (e.g. greenhouse 'gitlab', lever 'spotify', ashby 'ramp'). Identifies one company's board.","on_invalid":"reject","example":"gitlab","aliases":["token","board"]},{"name":"job_id","type":"string","required":true,"description":"The job's id within that ATS board (from a company_jobs result's jobs[].id).","on_invalid":"reject","example":"4012345002","aliases":["jobId","id"]}],"returns":"job{} — one fully-populated posting (description, requirements, benefits, location, ...)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"ats":"greenhouse","company":"gitlab","job_id":"8503792002"}},{"name":"search","description":"cross-company job search over the Workable aggregator (170K jobs) → jobs[]. `query` + (default `ats`=workable). paginated.","required_params":["query"],"optional_params":["ats","limit","cursor","page"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text keyword for the Workable cross-company aggregator search.","on_invalid":"reject","example":"python engineer","aliases":["keywords"]},{"name":"ats","type":"enum","required":false,"description":"Applicant-tracking system for the cross-company search. Only 'workable' aggregates jobs across companies, so this is the sole value here and it is the default (you can omit it). To read ONE company's board on greenhouse, lever or ashby, use the `company_jobs` action instead.","on_invalid":"reject","allowed_values":[{"value":"workable","label":"Workable — apply/jobs.workable.com (only ATS with cross-company search)"}],"default":"workable","example":"workable"},{"name":"limit","type":"integer","required":false,"description":"Max jobs to return (1-2000). Omit/0 = provider default (all).","on_invalid":"ignore","example":100,"minimum":1,"maximum":2000},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor from a previous response (provider-specific).","on_invalid":"ignore","example":"eyJvZmZzZXQiOjUwfQ=="},{"name":"page","type":"integer","required":false,"description":"Page number for providers that paginate by page (alternative to cursor).","on_invalid":"ignore","example":1,"minimum":1}],"returns":"jobs[]{id, title, url, company, location, ...}, count, total, query, ats_source","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"python engineer","ats":"workable"}},{"name":"providers","description":"the supported ATS providers + their capabilities","required_params":[],"optional_params":[],"params":[],"returns":"providers[] — the supported ATS keys (greenhouse, lever, ashby, workable)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"autodoc","category":{"id":"other","title":"Other"},"title":"Autodoc API — the vehicle-fitment car-parts catalogue: pick a car down to its exact engine variant, then get every part that fits it with price, OE cross-reference, manufacturer specifications, EAN, images, rating and reviews — plus part-number and OE-number lookup across 6.7 million parts, on the UK storefront (GBP), the German one (EUR) or the Spanish one (EUR). No key, account or cookie required","version":"1.3.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/autodoc/v1","spec_available":true,"actions":[{"name":"vehicle_lookup","description":"Walk Autodoc's vehicle tree — this is where every other action starts, because car parts are only meaningful against a specific car. Call it with no parameters for every maker (176: the popular ones flagged `popular: true`, the rest from Autodoc's full maker page, each with `model_count`); add `maker` for that maker's model families; add `model` for the generations (the chassis codes: E82, F20, W204); add `generation` for the actual engine variants, each with Autodoc's numeric vehicle id. Add `vehicle` (or pass a `vehicle_url`) and you get the car itself — its full factory description (engine, kW/hp, fuel, build years, engine code) plus every part category Autodoc stocks for it, ready to feed straight into `search`. Set `market` to `de` or `es` to walk that storefront's tree instead; the slugs are the same on all, so a vehicle resolved on one market can be used on the other.","required_params":[],"optional_params":["market","maker","model","generation","vehicle","vehicle_url"],"params":[{"name":"market","type":"enum","required":false,"description":"Which Autodoc storefront to read: `uk` (autodoc.co.uk, prices in GBP), `de` (autodoc.de, EUR) or `es` (autodoc.es, EUR, Spanish titles, categories and free-text search). Defaults to `uk`. This decides the catalogue, the prices and the currency, and it applies to EVERY action here — the vehicle tree, the fitment listing, the part page, both searches and the category list. The SLUGS are shared between the storefronts, so a vehicle or category you resolved on one market can be passed straight to the other; the ids (`article_id`, `vehicle_id`, `category_id`) are the same part and the same car on both. What changes is the price, the currency and the language of the human-readable text. Currency is always read from the page itself and returned in `currency`, so you never have to infer it from this value.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom (GBP) — autodoc.co.uk"},{"value":"de","label":"Germany (EUR) — autodoc.de"},{"value":"es","label":"Spain (EUR) — autodoc.es"}],"default":"uk","example":"de","aliases":["country","store","domain","site","region"]},{"name":"maker","type":"string","required":false,"description":"The car manufacturer, as the slug Autodoc uses in its own URLs — `bmw`, `vw`, `audi`, `mercedes-benz`, `ford`, `vauxhall`, `toyota`, `renault`. Call `vehicle_lookup` with no parameters to get the full list of makers (176) with their exact slugs; never guess one. Autodoc publishes no open numeric id for a maker (that lives behind a route this API cannot reach), so the slug IS the key.","on_invalid":"reject","example":"bmw","aliases":["make","brand_maker","manufacturer","maker_slug"]},{"name":"model","type":"string","required":false,"description":"The model family slug, as returned by `vehicle_lookup` for your maker — note Autodoc uses German slugs for some families even on the UK site (`1er-reihe` is the BMW 1 Series, `3er-reihe` the 3 Series). Requires `maker`.","on_invalid":"reject","example":"1er-reihe","aliases":["model_slug","series"]},{"name":"generation","type":"string","required":false,"description":"The generation / body slug — the chassis code most owners know their car by (`1-coupe-e82`, `1-e87`, `1-f20`). Returned by `vehicle_lookup` for your model. Requires `maker` and `model`.","on_invalid":"reject","example":"1-coupe-e82","aliases":["gen","generation_slug","chassis"]},{"name":"vehicle","type":"string","required":false,"description":"The exact engine variant — this is what makes a fitment answer true, and `search` REQUIRES it. Pass either the full slug `vehicle_lookup` returns (`12272-118-d`) or just Autodoc's numeric vehicle id (`12272`); both resolve to the same car. Requires `maker`, `model` and `generation`, because Autodoc's vehicle URLs are hierarchical — the id alone has no page of its own. NOTE: this is the ONLY way to scope parts to a car. Autodoc's `?carId=` query parameter looks like it should work and is silently ignored (measured: identical results with it, without it, and with a nonsense value).","on_invalid":"reject","example":"12272-118-d","aliases":["vehicle_id","car_id","carId","engine","vehicle_slug"]},{"name":"vehicle_url","type":"string","required":false,"description":"A full Autodoc vehicle URL instead of the four path parameters — the shortest way to re-use a vehicle you already resolved. Accepted by both `vehicle_lookup` and `search`. Either storefront's spelling works (`autodoc.co.uk/spares/…` or `autodoc.de/ersatzteile/…`) and the URL's own domain SETS the market, so you do not have to pass `market` as well; passing a URL from one storefront together with `market` set to the other is refused rather than silently resolved to one of them.","on_invalid":"ignore","example":"https://www.autodoc.de/ersatzteile/bmw/1er-reihe/1-coupe-e82/12272-118-d","aliases":["url_vehicle"]}],"returns":"level ('makers'|'models'|'generations'|'vehicles'|'vehicle') + items[] whose shape follows the level: makers/models/generations are {slug, name, url, path} (plus maker_id where Autodoc publishes one; makers also carry `popular` — on the storefront's front maker page or only on its full maker page — and `model_count`, the storefront's own tally) and vehicles are {vehicle_id, vehicle_slug, engine_slug, name, engine_label, kw, hp, ccm, fuel, years, url, path} — the full factory spec of each engine variant (engine_label is the whole description, kw/hp/ccm are integers, fuel is Autodoc's own word in the storefront's language, years is the month-precise build window '09.2009-10.2013'; any of the six is null where Autodoc did not publish that row, never invented). At the deepest level you additionally get vehicle{vehicle_id, vehicle_slug, engine_slug, name, description, maker, model, generation, url} and categories[]{slug, category_id, name, url, vehicle_scoped} — the part categories Autodoc stocks for that exact car. meta.pagination is absent here: Autodoc publishes each tree level whole, on one page. HONEST LIMITS: makers, models and generations have no numeric id in Autodoc's public HTML (those ids exist only behind a route this API cannot reach), so their SLUG is the identifier and `maker_id` is null unless the page happened to publish it. `vehicle_id` is always present and is Autodoc's own. A slug that does not exist is a typed NOT_FOUND, not an empty list — Autodoc answers a bad slug with HTTP 200 and the parent page, and this API checks the page's own canonical URL rather than reporting that as zero results. A generation with no engine variants (e.g. IVECO Daily IV Kipper) is a real empty: the storefront's page and its own engine selector list nothing either; meta.notes says so.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"search","description":"The parts that FIT one exact car, in one part category — the question this API exists to answer. Give a `category` (from the `categories` action, or better from the `categories[]` that a `vehicle_lookup` on your vehicle returns) plus the full vehicle: `maker` + `model` + `generation` + `vehicle`, or a single `vehicle_url`. You get Autodoc's own fitment listing — every brand that makes that part for that car, with price, RRP, rating, review count, the manufacturer's part number, the key specifications and the image — 20 per page. THE VEHICLE IS NOT OPTIONAL, and that is Autodoc's data model rather than a limit of this API: a parts list only exists for one exact engine variant. Autodoc's category page, maker page, model page and generation page are all real pages that carry NO product listing whatsoever (measured: 0 parts at every level above the engine variant, 20 at it). Omitting the vehicle returns MISSING_PARAM rather than an empty result set that would cost you a call and tell you nothing. `market` decides which storefront is priced: `uk` (GBP), `de` or `es` (EUR). The same vehicle and the same category work on all three — what changes is the price, the currency and the language of the copy.","required_params":["category"],"optional_params":["maker","model","generation","vehicle","market","vehicle_url","page","max_results"],"params":[{"name":"category","type":"string","required":true,"description":"Which part category to list, as Autodoc's own category slug WITH its numeric id suffix — `brake-pad-set-10130`, `brake-disc-10132`, `air-filter-10360`, `shock-absorber-10175`. Call the `categories` action for all 199 with their ids. The number is the real identifier and the words are decoration: Autodoc resolves `anything-10130` to brake pads, so a slug whose words and id disagree will silently serve the id's category. A bare slug with no id (`brake-pad-set`) is accepted and redirected by Autodoc, and this API reports the category it actually landed on in `category.slug`.","on_invalid":"reject","example":"brake-pad-set-10130","aliases":["category_slug","part","part_category","c"]},{"name":"maker","type":"string","required":false,"description":"The car manufacturer, as the slug Autodoc uses in its own URLs — `bmw`, `vw`, `audi`, `mercedes-benz`, `ford`, `vauxhall`, `toyota`, `renault`. Call `vehicle_lookup` with no parameters to get the full list of makers (176) with their exact slugs; never guess one. Autodoc publishes no open numeric id for a maker (that lives behind a route this API cannot reach), so the slug IS the key.","on_invalid":"reject","example":"bmw","aliases":["make","brand_maker","manufacturer","maker_slug"]},{"name":"model","type":"string","required":false,"description":"The model family slug, as returned by `vehicle_lookup` for your maker — note Autodoc uses German slugs for some families even on the UK site (`1er-reihe` is the BMW 1 Series, `3er-reihe` the 3 Series). Requires `maker`.","on_invalid":"reject","example":"1er-reihe","aliases":["model_slug","series"]},{"name":"generation","type":"string","required":false,"description":"The generation / body slug — the chassis code most owners know their car by (`1-coupe-e82`, `1-e87`, `1-f20`). Returned by `vehicle_lookup` for your model. Requires `maker` and `model`.","on_invalid":"reject","example":"1-coupe-e82","aliases":["gen","generation_slug","chassis"]},{"name":"vehicle","type":"string","required":false,"description":"The exact engine variant — this is what makes a fitment answer true, and `search` REQUIRES it. Pass either the full slug `vehicle_lookup` returns (`12272-118-d`) or just Autodoc's numeric vehicle id (`12272`); both resolve to the same car. Requires `maker`, `model` and `generation`, because Autodoc's vehicle URLs are hierarchical — the id alone has no page of its own. NOTE: this is the ONLY way to scope parts to a car. Autodoc's `?carId=` query parameter looks like it should work and is silently ignored (measured: identical results with it, without it, and with a nonsense value).","on_invalid":"reject","example":"12272-118-d","aliases":["vehicle_id","car_id","carId","engine","vehicle_slug"]},{"name":"market","type":"enum","required":false,"description":"Which Autodoc storefront to read: `uk` (autodoc.co.uk, prices in GBP), `de` (autodoc.de, EUR) or `es` (autodoc.es, EUR, Spanish titles, categories and free-text search). Defaults to `uk`. This decides the catalogue, the prices and the currency, and it applies to EVERY action here — the vehicle tree, the fitment listing, the part page, both searches and the category list. The SLUGS are shared between the storefronts, so a vehicle or category you resolved on one market can be passed straight to the other; the ids (`article_id`, `vehicle_id`, `category_id`) are the same part and the same car on both. What changes is the price, the currency and the language of the human-readable text. Currency is always read from the page itself and returned in `currency`, so you never have to infer it from this value.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom (GBP) — autodoc.co.uk"},{"value":"de","label":"Germany (EUR) — autodoc.de"},{"value":"es","label":"Spain (EUR) — autodoc.es"}],"default":"uk","example":"de","aliases":["country","store","domain","site","region"]},{"name":"vehicle_url","type":"string","required":false,"description":"A full Autodoc vehicle URL instead of the four path parameters — the shortest way to re-use a vehicle you already resolved. Accepted by both `vehicle_lookup` and `search`. Either storefront's spelling works (`autodoc.co.uk/spares/…` or `autodoc.de/ersatzteile/…`) and the URL's own domain SETS the market, so you do not have to pass `market` as well; passing a URL from one storefront together with `market` set to the other is refused rather than silently resolved to one of them.","on_invalid":"ignore","example":"https://www.autodoc.de/ersatzteile/bmw/1er-reihe/1-coupe-e82/12272-118-d","aliases":["url_vehicle"]},{"name":"page","type":"integer","required":false,"description":"Which page of results to start from (1-based). Autodoc serves 20 parts per page. Page until `meta.pagination.has_more` is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50},{"name":"max_results","type":"integer","required":false,"description":"How many parts to return in total (1-200). Anything above 20 costs one extra upstream page fetch per additional 20 results, and each Autodoc page is roughly 650KB, so ask for what you will use.","on_invalid":"ignore","default":20,"minimum":1,"maximum":200,"aliases":["limit","max","count"]}],"returns":"parts[]{article_id, article_number, url, title, brand, brand_slug, brand_id, category_name, category_generic_id, price, price_was, rrp, currency, on_sale, rating, rating_stars_out_of_10, review_count, image, images_360_url, specifications[]{name,value}, units_left, in_stock, fits_selected_vehicle} + category{slug, category_id, name, url} + vehicle{...} when you scoped to one. meta.fitment is always 'vehicle' (this action cannot run unscoped) and meta.scope echoes the four path segments that produced the answer, meta.pagination{page, per_page, returned, pages_fetched, has_more, next_page, known_pages_at_least} carries the counts. HONEST LIMITS: Autodoc publishes NO result total anywhere on the page — its pagination strip is a sliding window — so `total_results` is null and `known_pages_at_least` is a lower bound, never a total. `units_left` is Autodoc's own 'ending soon' counter and is null on most rows; it is not a warehouse stock figure and no such figure is published. `in_stock` on a card is true when that counter is above 0 and NULL when it is 0 — 0 appears both on out-of-stock parts and on in-stock kits, so the card cannot tell; `product_detail` is authoritative. meta.completeness_pct is the share of what exists (up to `max_results`): an exhausted listing of 2 parts is 100. `rating` is on a 0-5 scale for consistency with `product_detail`; Autodoc's own listing number is 0-10 and is returned verbatim beside it as `rating_stars_out_of_10`. There is no `sort` parameter because Autodoc's `?sort=` is a no-op (measured: identical price sequence with and without it) and publishing a filter that does not bite is worse than not having one.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"category":"brake-pad-set-10130","maker":"bmw","model":"1er-reihe","generation":"1-coupe-e82","vehicle":"12272-118-d","max_results":20}},{"name":"product_detail","description":"One part in full, by Autodoc's numeric article id (or its URL). Returns the complete image gallery and the 360-degree photo set, the manufacturer's own specification table verbatim (fitting position, dimensions, material, WVA number, weight, EAN), the manufacturer part number, brand, price with currency, availability, shipping cost and return window, the aggregate rating and the customer reviews inline — and, the two fields that matter most in this industry, the full OE cross-reference (every vehicle-manufacturer part number this part replaces) and the equivalent parts Autodoc sells alongside it. `market` picks the storefront — the same `article_id` is the same part on both, priced in GBP on `uk` and EUR on `de`, and `currency` always reports what the page itself said.","required_params":[],"optional_params":["article_id","url","market","max_reviews"],"params":[{"name":"article_id","type":"string","required":false,"description":"Autodoc's own numeric part id, exactly as every other action here returns it. This is the ONLY key `product_detail` needs — the brand in the URL is decoration and Autodoc redirects `/anything/7999106` to the right part. Provide `article_id` or `url`.","on_invalid":"reject","example":"7999106","aliases":["id","pid","product_id","articleId","part_id","autodoc_id"]},{"name":"url","type":"string","required":false,"description":"A full Autodoc part URL — an alternative to `article_id`. Either storefront's domain works and the domain SETS the market, so `autodoc.de/ridex/7999106` returns the same part priced in EUR.","on_invalid":"ignore","example":"https://www.autodoc.co.uk/ridex/7999106","aliases":["product_url","part_url"]},{"name":"market","type":"enum","required":false,"description":"Which Autodoc storefront to read: `uk` (autodoc.co.uk, prices in GBP), `de` (autodoc.de, EUR) or `es` (autodoc.es, EUR, Spanish titles, categories and free-text search). Defaults to `uk`. This decides the catalogue, the prices and the currency, and it applies to EVERY action here — the vehicle tree, the fitment listing, the part page, both searches and the category list. The SLUGS are shared between the storefronts, so a vehicle or category you resolved on one market can be passed straight to the other; the ids (`article_id`, `vehicle_id`, `category_id`) are the same part and the same car on both. What changes is the price, the currency and the language of the human-readable text. Currency is always read from the page itself and returned in `currency`, so you never have to infer it from this value.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom (GBP) — autodoc.co.uk"},{"value":"de","label":"Germany (EUR) — autodoc.de"},{"value":"es","label":"Spain (EUR) — autodoc.es"}],"default":"uk","example":"de","aliases":["country","store","domain","site","region"]},{"name":"max_reviews","type":"integer","required":false,"description":"How many of the part's inline reviews to return (0-100). Autodoc publishes roughly 25 on the page itself; there is no second page of them on this route, so asking for more does not fetch more.","on_invalid":"ignore","default":25,"minimum":0,"maximum":100}],"returns":"part{article_id, article_number, sku, url, title, subtitle, brand, category_name, breadcrumb[]{name,url}, description, price, currency, price_valid_until, availability, in_stock, item_condition, shipping_cost, shipping_currency, shipping_label, return_days, rating, rating_best, rating_count, reviews[]{author, text, rating, rating_best}, images[], image, image_count, images_360_url, specifications[]{name,value}, ean, weight_kg, oem_numbers[], oem_references[]{oem_number, vehicle_maker}, compatible_makers[]{maker_id, name}, fits_vehicles[], equivalent_parts[]{article_id, brand_id, category_id, category_generic_id, price, price_was, rating}}. meta.coverage reports which of the high-value fields this particular part carries, so you can see the completeness of the row you were given instead of trusting an average. FIELD NOTES: `ean` and `weight_kg` are lifted out of the manufacturer's spec table by name — they are rows in `specifications`, not separate fields at source, and null means the manufacturer supplied neither (about a third of parts). A car part has NO size/colour variant matrix; the equivalents of one are `oem_references` (what it replaces) and `equivalent_parts` (what replaces it), and both are returned. `compatible_makers` is the list of vehicle makers this part fits; the per-model expansion of that list is loaded by a route this API cannot reach, so it is deliberately absent rather than half-filled. Reviewer names are initials because that is how Autodoc publishes them. Autodoc publishes no stock quantity, and `in_stock` is its own In/OutOfStock flag (from the schema.org offer, or — for out-of-stock parts, whose offer omits it — from the page's buy box; `availability_source` says which). `units_left` is Autodoc's 'ending soon' counter, not a stock level. `weight_kg` is only the manufacturer's own spec row: Autodoc publishes no shipping weight (shipping is a flat per-order rate plus a bulky-goods surcharge on flagged items). meta.extra.timing (every action): clearance ('memory'|'redis' = warm, 'solved'|'waited' = this call paid a Cloudflare clearance, ~14 s), cold_start, fetches, fetch_ms, total_ms.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"article_id":"7999106"}},{"name":"part_search","description":"Autodoc's own catalogue-wide search, across roughly 6.7 million parts. Built for the lookup this trade actually does: paste a manufacturer part number (`1987474465`, `402B0071`) and get that part plus its alternatives, or type plain English (`brake pads`, `wiper blades`) for a normal keyword result set. Results are not scoped to a car — use `search` when you need fitment, and `oem_lookup` when the number you hold came off the vehicle manufacturer's own part. Set `market` to `de` or `es` to search that storefront (EUR). Free text is matched by the STOREFRONT'S OWN search, which only understands its own language: Spanish text on `es`, German on `de`, English on `uk` (measured: 'pastillas de freno' on es = 20/20 brake-pad sets; the same text on de = air fresheners, as on autodoc.de itself). Part numbers work on every market.","required_params":["query"],"optional_params":["market","page","max_results"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for in Autodoc's own site search. This endpoint is built for the way the trade actually works: a MANUFACTURER PART NUMBER (`1987474465`, `402B0071`) returns that exact part plus the alternatives, an OE number often resolves too, and plain English (`brake pads`, `oil filter`) returns a normal keyword result set. Results are NOT scoped to a vehicle — this is the catalogue-wide search. To ask 'what fits MY car', use `search` with a vehicle instead. If you specifically have a VEHICLE MAKER's original number, `oem_lookup` is the better endpoint.","on_invalid":"reject","example":"1987474465","aliases":["q","keyword","search","text","part_number","number"]},{"name":"market","type":"enum","required":false,"description":"Which Autodoc storefront to read: `uk` (autodoc.co.uk, prices in GBP), `de` (autodoc.de, EUR) or `es` (autodoc.es, EUR, Spanish titles, categories and free-text search). Defaults to `uk`. This decides the catalogue, the prices and the currency, and it applies to EVERY action here — the vehicle tree, the fitment listing, the part page, both searches and the category list. The SLUGS are shared between the storefronts, so a vehicle or category you resolved on one market can be passed straight to the other; the ids (`article_id`, `vehicle_id`, `category_id`) are the same part and the same car on both. What changes is the price, the currency and the language of the human-readable text. Currency is always read from the page itself and returned in `currency`, so you never have to infer it from this value.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom (GBP) — autodoc.co.uk"},{"value":"de","label":"Germany (EUR) — autodoc.de"},{"value":"es","label":"Spain (EUR) — autodoc.es"}],"default":"uk","example":"de","aliases":["country","store","domain","site","region"]},{"name":"page","type":"integer","required":false,"description":"Which page of results to start from (1-based). Autodoc serves 20 parts per page. Page until `meta.pagination.has_more` is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50},{"name":"max_results","type":"integer","required":false,"description":"How many parts to return in total (1-200). Anything above 20 costs one extra upstream page fetch per additional 20 results, and each Autodoc page is roughly 650KB, so ask for what you will use.","on_invalid":"ignore","default":20,"minimum":1,"maximum":200,"aliases":["limit","max","count"]}],"returns":"parts[] (the same card shape as `search`) + query{text, resolved_title}. meta.pagination as in `search`. HONEST LIMITS: no result total is published, so `total_results` is null. A term Autodoc does not carry returns HTTP 200 with zero parts and `meta.notes` saying so — an honest empty, not a failure. `search` and `part_search` return the SAME `article_id` for the same part, so results from either can be fed straight into `product_detail`.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"1987474465"}},{"name":"oem_lookup","description":"Cross-reference a vehicle manufacturer's ORIGINAL part number to everything Autodoc sells as a replacement for it. Give BMW's 34216774692 and get the Brembo, TRW, Bosch, ATE and budget-brand equivalents, each with price, rating and the manufacturer's own part number. This is the endpoint a workshop or a parts reseller uses, and it is the reverse of the `oem_numbers` list `product_detail` returns for a part. Set `market` to `de` or `es` for that storefront's prices (EUR); the OE number and the parts it resolves to are the same on all three.","required_params":["oem_number"],"optional_params":["market","page","max_results"],"params":[{"name":"oem_number","type":"string","required":true,"description":"A vehicle manufacturer's ORIGINAL part number (BMW 34216774692, VAG 1K0615301AA). Returns every aftermarket part Autodoc sells as a replacement for it — the cross-reference this industry runs on. Spaces and dots are ignored. A number Autodoc does not carry returns a typed NOT_FOUND rather than the catalogue landing page it actually serves.","on_invalid":"reject","example":"34216774692","aliases":["oem","oe","oe_number","number","q"]},{"name":"market","type":"enum","required":false,"description":"Which Autodoc storefront to read: `uk` (autodoc.co.uk, prices in GBP), `de` (autodoc.de, EUR) or `es` (autodoc.es, EUR, Spanish titles, categories and free-text search). Defaults to `uk`. This decides the catalogue, the prices and the currency, and it applies to EVERY action here — the vehicle tree, the fitment listing, the part page, both searches and the category list. The SLUGS are shared between the storefronts, so a vehicle or category you resolved on one market can be passed straight to the other; the ids (`article_id`, `vehicle_id`, `category_id`) are the same part and the same car on both. What changes is the price, the currency and the language of the human-readable text. Currency is always read from the page itself and returned in `currency`, so you never have to infer it from this value.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom (GBP) — autodoc.co.uk"},{"value":"de","label":"Germany (EUR) — autodoc.de"},{"value":"es","label":"Spain (EUR) — autodoc.es"}],"default":"uk","example":"de","aliases":["country","store","domain","site","region"]},{"name":"page","type":"integer","required":false,"description":"Which page of results to start from (1-based). Autodoc serves 20 parts per page. Page until `meta.pagination.has_more` is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50},{"name":"max_results","type":"integer","required":false,"description":"How many parts to return in total (1-200). Anything above 20 costs one extra upstream page fetch per additional 20 results, and each Autodoc page is roughly 650KB, so ask for what you will use.","on_invalid":"ignore","default":20,"minimum":1,"maximum":200,"aliases":["limit","max","count"]}],"returns":"parts[] (the same card shape as `search`) + oem{number, normalised, resolved_title, url}. HONEST LIMITS: Autodoc answers an OE number it does not carry with HTTP 200 and its catalogue landing page — which would look like a working result set — so this action checks the page identity and returns a typed NOT_FOUND instead. Supplier part numbers do NOT resolve here (that is what `part_search` is for); only vehicle-manufacturer OE numbers do.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"oem_number":"34216774692"}},{"name":"categories","description":"Autodoc's part-category vocabulary — all 199 leaf categories with the slug and numeric id the `search` action needs, so a caller never has to guess one. Optionally filter with `group` (`brake`, `filter`, `suspension`). `market` picks the storefront, which is what decides the LANGUAGE of the slugs and names — the numeric ids are the same category on both, and a uk slug passed to a de `search` resolves correctly because the number is what Autodoc keys on. Cached hard: this list barely moves.","required_params":[],"optional_params":["market","group"],"params":[{"name":"group","type":"string","required":false,"description":"Optional substring filter over the category list (`brake`, `filter`, `suspension`, `oil`). Case-insensitive, matched against both the category name and its slug. Omit to get all 199. NOTE this matches the words of the storefront you asked for: on `market=de` the names and slugs are German, so `filter` still works (Ölfilter/Luftfilter) but `oil` returns nothing and `öl`/`brems` are what match (measured: `oil` -> 17 categories on uk, 0 on de). Filter on `category_id` instead when you need a market-independent answer — the ids are the same categories on both storefronts.","on_invalid":"ignore","example":"brake","aliases":["section","filter"]},{"name":"market","type":"enum","required":false,"description":"Which Autodoc storefront to read: `uk` (autodoc.co.uk, prices in GBP), `de` (autodoc.de, EUR) or `es` (autodoc.es, EUR, Spanish titles, categories and free-text search). Defaults to `uk`. This decides the catalogue, the prices and the currency, and it applies to EVERY action here — the vehicle tree, the fitment listing, the part page, both searches and the category list. The SLUGS are shared between the storefronts, so a vehicle or category you resolved on one market can be passed straight to the other; the ids (`article_id`, `vehicle_id`, `category_id`) are the same part and the same car on both. What changes is the price, the currency and the language of the human-readable text. Currency is always read from the page itself and returned in `currency`, so you never have to infer it from this value.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom (GBP) — autodoc.co.uk"},{"value":"de","label":"Germany (EUR) — autodoc.de"},{"value":"es","label":"Spain (EUR) — autodoc.es"}],"default":"uk","example":"de","aliases":["country","store","domain","site","region"]}],"returns":"categories[]{slug, category_id, name, url}. NOTE these are the catalogue-wide categories. The set Autodoc actually stocks for one specific car is narrower and comes back from `vehicle_lookup` when you pass a vehicle — prefer that list when you have a car, because it cannot contain a category that car has no parts in.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"group":"brake"}}]},{"name":"autoscout24","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"AutoScout24 API — search and view used and new car listings across Europe on autoscout24 (price, mileage, specs, dealer info and deal ratings)","version":"1.0.1","pii_redact_default":true,"mint_reusable":null,"base_path":"/autoscout24/v1","spec_available":true,"actions":[{"name":"search","description":"Paginated car search by make (+ model/filters) across EU TLDs; deal signals priceEvaluation+superDeal","required_params":[],"optional_params":["make","model","model_group","country","page","sort","desc","price_min","price_max","year_min","year_max","mileage_min","mileage_max","fuel","transmission","body_type","zip","radius","power_min","power_max","super_deal","seller_type","offer_type"],"params":[{"name":"make","type":"string","required":false,"description":"Vehicle make/brand slug (e.g. bmw, audi, volkswagen). Empty = all makes.","on_invalid":"reject","example":"bmw"},{"name":"model","type":"string","required":false,"description":"Model slug within the make (discover via the models action).","on_invalid":"reject","example":"320"},{"name":"model_group","type":"string","required":false,"description":"Model-group/line slug (broader than model).","on_invalid":"reject"},{"name":"country","type":"enum","required":false,"description":"AutoScout24 country edition (TLD) — each is a separate marketplace.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"it","label":"Italy"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"es","label":"Spain"},{"value":"at","label":"Austria"},{"value":"be","label":"Belgium"},{"value":"ch","label":"Switzerland"},{"value":"pl","label":"Poland"},{"value":"ro","label":"Romania"},{"value":"hr","label":"Croatia"},{"value":"lu","label":"Luxembourg"}],"default":"de","example":"de"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"sort","type":"enum","required":false,"description":"Sort field. Common AS24 keys shown; others accepted.","on_invalid":"ignore","allowed_values":[{"value":"price","label":"Price"},{"value":"age","label":"Age (newest)"},{"value":"mileage","label":"Mileage"},{"value":"power","label":"Power"}],"example":"price"},{"name":"desc","type":"boolean","required":false,"description":"Sort descending (true) instead of ascending.","on_invalid":"ignore","example":true},{"name":"price_min","type":"integer","required":false,"description":"Minimum price (local currency).","on_invalid":"ignore","example":5000},{"name":"price_max","type":"integer","required":false,"description":"Maximum price (local currency).","on_invalid":"ignore","example":30000},{"name":"year_min","type":"integer","required":false,"description":"Earliest first-registration year.","on_invalid":"ignore","example":2015},{"name":"year_max","type":"integer","required":false,"description":"Latest first-registration year.","on_invalid":"ignore","example":2024},{"name":"mileage_min","type":"integer","required":false,"description":"Minimum mileage (km).","on_invalid":"ignore"},{"name":"mileage_max","type":"integer","required":false,"description":"Maximum mileage (km).","on_invalid":"ignore","example":100000},{"name":"fuel","type":"enum","required":false,"description":"Fuel type (AS24 code). B=petrol, D=diesel, E=electric, 2=LPG, 3=CNG.","on_invalid":"ignore","allowed_values":[{"value":"B","label":"Petrol"},{"value":"D","label":"Diesel"},{"value":"E","label":"Electric"},{"value":"2","label":"LPG"},{"value":"3","label":"CNG"}],"example":"D"},{"name":"transmission","type":"enum","required":false,"description":"Gearbox. A=automatic, M=manual.","on_invalid":"ignore","allowed_values":[{"value":"A","label":"Automatic"},{"value":"M","label":"Manual"}],"example":"A"},{"name":"body_type","type":"string","required":false,"description":"Body type (AS24 code — discover via filter_options).","on_invalid":"reject"},{"name":"zip","type":"string","required":false,"description":"Postal code center for a radius search.","on_invalid":"reject","example":"10115"},{"name":"radius","type":"integer","required":false,"description":"Search radius (km) around zip.","on_invalid":"ignore","example":50},{"name":"power_min","type":"integer","required":false,"description":"Minimum engine power (kW).","on_invalid":"ignore"},{"name":"power_max","type":"integer","required":false,"description":"Maximum engine power (kW).","on_invalid":"ignore"},{"name":"super_deal","type":"boolean","required":false,"description":"Only listings flagged superDeal (priced well below market).","on_invalid":"ignore","example":true},{"name":"seller_type","type":"enum","required":false,"description":"Seller type. D=dealer, P=private.","on_invalid":"ignore","allowed_values":[{"value":"D","label":"Dealer"},{"value":"P","label":"Private"}],"example":"D"},{"name":"offer_type","type":"string","required":false,"description":"Offer type (AS24 code, e.g. U=used, N=new, J=annual car).","on_invalid":"reject"}],"returns":"listings[] (priceEvaluation + superDeal per card), page, total, total_pages, has_more, next_page","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"bmw","country":"de"}},{"name":"listing","description":"Full listing detail by url/path or id (description, prices, vehicle, images, seller, leasing, warranty)","required_params":[],"optional_params":["url","path","id","country"],"params":[{"name":"url","type":"string","required":false,"description":"Full AS24 listing URL or site-relative path (from a search result's url/path).","on_invalid":"reject","example":"/angebote/bmw-318-318i-touring-attiva-benzin-cat_ma13mo1640-fb7acb22-cce5-4ab1-8340-7dbe9160bca9"},{"name":"path","type":"string","required":false,"description":"Site-relative listing path (alternative to url).","on_invalid":"reject"},{"name":"id","type":"string","required":false,"description":"AS24 listing id (alternative to url/path).","on_invalid":"reject"},{"name":"country","type":"enum","required":false,"description":"AutoScout24 country edition (TLD) — each is a separate marketplace.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"it","label":"Italy"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"es","label":"Spain"},{"value":"at","label":"Austria"},{"value":"be","label":"Belgium"},{"value":"ch","label":"Switzerland"},{"value":"pl","label":"Poland"},{"value":"ro","label":"Romania"},{"value":"hr","label":"Croatia"},{"value":"lu","label":"Luxembourg"}],"default":"de","example":"de"}],"returns":"listing{} — full detail (vehicle, prices, equipment, seller, images, leasing, warranty)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"/angebote/bmw-318-318i-touring-attiva-benzin-cat_ma13mo1640-fb7acb22-cce5-4ab1-8340-7dbe9160bca9","country":"de"}},{"name":"makes","description":"Vehicle makes taxonomy from search hub page","required_params":[],"optional_params":["country"],"params":[{"name":"country","type":"enum","required":false,"description":"AutoScout24 country edition (TLD) — each is a separate marketplace.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"it","label":"Italy"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"es","label":"Spain"},{"value":"at","label":"Austria"},{"value":"be","label":"Belgium"},{"value":"ch","label":"Switzerland"},{"value":"pl","label":"Poland"},{"value":"ro","label":"Romania"},{"value":"hr","label":"Croatia"},{"value":"lu","label":"Luxembourg"}],"default":"de","example":"de"}],"returns":"makes[] — {id, name, slug} for every supported brand","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"models","description":"Models taxonomy for a make (query-param filters — path-segment /lst/make/model returns 404)","required_params":["make"],"optional_params":["country"],"params":[{"name":"make","type":"string","required":true,"description":"Vehicle make/brand slug to list models for (e.g. bmw).","on_invalid":"reject","example":"bmw"},{"name":"country","type":"enum","required":false,"description":"AutoScout24 country edition (TLD) — each is a separate marketplace.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"it","label":"Italy"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"es","label":"Spain"},{"value":"at","label":"Austria"},{"value":"be","label":"Belgium"},{"value":"ch","label":"Switzerland"},{"value":"pl","label":"Poland"},{"value":"ro","label":"Romania"},{"value":"hr","label":"Croatia"},{"value":"lu","label":"Luxembourg"}],"default":"de","example":"de"}],"returns":"models[], model_groups[], model_lines[] (each {id, name, slug}) for the make","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"bmw"}},{"name":"filter_options","description":"Available filter dimensions (fuel, body, transmission, etc.) from taxonomy blob","required_params":[],"optional_params":["make","country"],"params":[{"name":"make","type":"string","required":false,"description":"Optional make to scope the filter options to.","on_invalid":"reject","example":"bmw"},{"name":"country","type":"enum","required":false,"description":"AutoScout24 country edition (TLD) — each is a separate marketplace.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"it","label":"Italy"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"es","label":"Spain"},{"value":"at","label":"Austria"},{"value":"be","label":"Belgium"},{"value":"ch","label":"Switzerland"},{"value":"pl","label":"Poland"},{"value":"ro","label":"Romania"},{"value":"hr","label":"Croatia"},{"value":"lu","label":"Luxembourg"}],"default":"de","example":"de"}],"returns":"filters{} — available filter dimensions and their option codes","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"seller_listings","description":"Listings for a dealer/private seller by customer id (cid)","required_params":["cid"],"optional_params":["country","page","seller_id"],"params":[{"name":"cid","type":"string","required":true,"description":"AS24 dealer/seller customer id (cid) — from a listing's seller block.","on_invalid":"reject","example":"12345"},{"name":"country","type":"enum","required":false,"description":"AutoScout24 country edition (TLD) — each is a separate marketplace.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"it","label":"Italy"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"es","label":"Spain"},{"value":"at","label":"Austria"},{"value":"be","label":"Belgium"},{"value":"ch","label":"Switzerland"},{"value":"pl","label":"Poland"},{"value":"ro","label":"Romania"},{"value":"hr","label":"Croatia"},{"value":"lu","label":"Luxembourg"}],"default":"de","example":"de"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"seller_id","type":"string","required":false,"description":"Alias for cid (accepted interchangeably).","on_invalid":"reject"}],"returns":"listings[] for this seller, page, total, total_pages, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"browse_links","description":"SEO browse graph: cities, body types, model lines, top models (interlinking from search page)","required_params":[],"optional_params":["make","country"],"params":[{"name":"make","type":"string","required":false,"description":"Optional make to scope the browse graph to.","on_invalid":"reject","example":"bmw"},{"name":"country","type":"enum","required":false,"description":"AutoScout24 country edition (TLD) — each is a separate marketplace.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"it","label":"Italy"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"es","label":"Spain"},{"value":"at","label":"Austria"},{"value":"be","label":"Belgium"},{"value":"ch","label":"Switzerland"},{"value":"pl","label":"Poland"},{"value":"ro","label":"Romania"},{"value":"hr","label":"Croatia"},{"value":"lu","label":"Luxembourg"}],"default":"de","example":"de"}],"returns":"groups[] — SEO browse graph (cities, body types, model lines, top models)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"autotrader","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"AutoTrader UK API — search used and new car listings on autotrader.co.uk with full advert detail: price, price indicator, mileage, spec, images and dealer reviews (US market: use the cars-com engine)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/autotrader/v1","spec_available":true,"actions":[{"name":"search","description":"UK car listings (make/model + filters, paginated); postcode defaults to a UK centroid if omitted","required_params":[],"optional_params":["make","model","postcode","min_price","max_price","min_year","max_year","min_mileage","max_mileage","fuel","body_type","transmission","radius","page","market"],"params":[{"name":"make","type":"string","required":false,"description":"Vehicle make / manufacturer (e.g. 'BMW', 'Ford').","on_invalid":"ignore","example":"BMW"},{"name":"model","type":"string","required":false,"description":"Vehicle model (e.g. '3 Series'). Use together with make.","on_invalid":"ignore","example":"3 Series"},{"name":"postcode","type":"string","required":false,"description":"UK postcode to anchor the location-based search (defaults to a central England postcode if omitted).","on_invalid":"ignore","example":"SW1A 1AA","aliases":["zip"]},{"name":"min_price","type":"integer","required":false,"description":"Minimum price in GBP.","on_invalid":"ignore","example":5000,"minimum":0,"aliases":["price_from"]},{"name":"max_price","type":"integer","required":false,"description":"Maximum price in GBP.","on_invalid":"ignore","example":25000,"minimum":0,"aliases":["price_to"]},{"name":"min_year","type":"integer","required":false,"description":"Earliest year of manufacture.","on_invalid":"ignore","example":2018,"minimum":1900,"maximum":2100,"aliases":["year_from"]},{"name":"max_year","type":"integer","required":false,"description":"Latest year of manufacture.","on_invalid":"ignore","example":2024,"minimum":1900,"maximum":2100,"aliases":["year_to"]},{"name":"min_mileage","type":"integer","required":false,"description":"Minimum mileage (miles).","on_invalid":"ignore","example":0,"minimum":0},{"name":"max_mileage","type":"integer","required":false,"description":"Maximum mileage (miles).","on_invalid":"ignore","example":60000,"minimum":0},{"name":"fuel","type":"enum","required":false,"description":"Fuel type. Common values shown; other AutoTrader fuel labels are also accepted (forwarded to the FilterName enum).","on_invalid":"ignore","allowed_values":[{"value":"Petrol","label":"Petrol"},{"value":"Diesel","label":"Diesel"},{"value":"Electric","label":"Electric"},{"value":"Hybrid","label":"Hybrid"},{"value":"Plug-in Hybrid","label":"Plug-in Hybrid"}],"example":"Petrol","aliases":["fuel_type"]},{"name":"body_type","type":"enum","required":false,"description":"Body style. Common values shown; other AutoTrader body labels are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"Hatchback","label":"Hatchback"},{"value":"Saloon","label":"Saloon"},{"value":"Estate","label":"Estate"},{"value":"SUV","label":"SUV"},{"value":"Coupe","label":"Coupe"},{"value":"Convertible","label":"Convertible"},{"value":"MPV","label":"MPV"}],"example":"SUV"},{"name":"transmission","type":"enum","required":false,"description":"Gearbox type.","on_invalid":"ignore","allowed_values":[{"value":"Manual","label":"Manual"},{"value":"Automatic","label":"Automatic"}],"example":"Automatic"},{"name":"radius","type":"integer","required":false,"description":"Search radius in miles around the postcode.","on_invalid":"ignore","example":50,"minimum":0,"aliases":["distance"]},{"name":"page","type":"integer","required":false,"description":"Results page (paginated). Default 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"market","type":"enum","required":false,"description":"Marketplace region. Only 'uk' returns listings; 'us' is currently unavailable (use the cars-com engine for US).","on_invalid":"ignore","allowed_values":[{"value":"uk","label":"United Kingdom — AutoTrader UK (autotrader.co.uk)"},{"value":"us","label":"United States — AutoTrader US (autotrader.com) — use the cars-com engine instead"}],"default":"uk","example":"uk","aliases":["country"]}],"returns":"listings[]{advertId, title, price, rrp, make, model, year, mileage, vehicleLocation, sellerType, images, fpaLink, ...}, page_info{page, page_count, total_results}, market","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"BMW","model":"3 Series","postcode":"SW1A 1AA","market":"uk"}},{"name":"listing_detail","description":"Full advert (price+priceIndicator+deviation, mileage, full spec [fuel/trans/body/doors/seats/engine], description, images[], dealer+reviews+address)","required_params":["id"],"optional_params":["postcode","market"],"params":[{"name":"id","type":"integer","required":true,"description":"AutoTrader advert id (the digits in a /car-details/<id> URL or a search listing's advertId). Provide id OR url.","on_invalid":"reject","example":202401011234567,"aliases":["advert_id","advertId","listing_id","listingId"]},{"name":"url","type":"string","required":false,"description":"Full advert URL (alternative to id; the id is parsed from /car-details/<id>).","on_invalid":"ignore","example":"https://www.autotrader.co.uk/car-details/202401011234567","aliases":["fpa_url"]},{"name":"postcode","type":"string","required":false,"description":"UK postcode to anchor the location-based search (defaults to a central England postcode if omitted).","on_invalid":"ignore","example":"SW1A 1AA","aliases":["zip"]},{"name":"market","type":"enum","required":false,"description":"Marketplace region. Only 'uk' returns listings; 'us' is currently unavailable (use the cars-com engine for US).","on_invalid":"ignore","allowed_values":[{"value":"uk","label":"United Kingdom — AutoTrader UK (autotrader.co.uk)"},{"value":"us","label":"United States — AutoTrader US (autotrader.com) — use the cars-com engine instead"}],"default":"uk","example":"uk","aliases":["country"]}],"returns":"listing{price, priceIndicatorRating, priceDeviation, mileage, registration, year, specification{make,model,fuel,transmission,bodyType,doors,seats,engine}, description, images[], dealer{name,reviews,location}}, market","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"avito","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Avito.ru API scraper - Russia's largest classifieds site: goods, cars and real estate search with location, price, seller-type and category filters, and the full ad record with parameters, seller rating and views. No account, no browser; private sellers' personal data withheld.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/avito/v1","spec_available":true,"actions":[{"name":"search","description":"Search Avito.ru, Russia's largest classifieds site, by keyword and/or category anywhere in Russia or in one city or region: price in RUB (free, unpublished, 'from' and salary-range prices labelled), seller type, name, rating and reviews, address and nearby metro, images, description snippet, parameters summary, delivery and reserved flags, paid-placement flags. Filter by location, category, price, private or company seller and Avito delivery; sort by newest, relevance or price.","required_params":[],"optional_params":["query","location","category","price_min","price_max","seller_type","delivery_only","category_detection","sort","page","include_sponsored","include_fallback_results","include_pii","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into Avito's search box (Russian or Latin).","on_invalid":"reject","example":"диван"},{"name":"location","type":"string","required":false,"description":"Avito location slug (moskva, sankt-peterburg, kazan, moskovskaya_oblast …), a major city name (Москва) or 'all' for all of Russia. The locations action finds slugs.","on_invalid":"reject","default":"all","example":"moskva"},{"name":"category","type":"string","required":false,"description":"Category node id, Russian name or path from the categories action (mebel_i_interer, telefony/mobilnye_telefony, vakansii, predlozheniya_uslug).","on_invalid":"reject","example":"mebel_i_interer"},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in RUB.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in RUB.","on_invalid":"reject","minimum":0},{"name":"seller_type","type":"enum","required":false,"description":"private (individuals) or company (shops and businesses).","on_invalid":"reject","allowed_values":[{"value":"private","label":"private"},{"value":"company","label":"company"}]},{"name":"delivery_only","type":"boolean","required":false,"description":"Only ads with Avito Delivery.","on_invalid":"reject"},{"name":"category_detection","type":"boolean","required":false,"description":"Avito turns many keywords into a category + filters (iphone → Телефоны/Apple). true (default) follows Avito like the site does; false keeps the plain keyword search.","on_invalid":"reject","default":true},{"name":"sort","type":"enum","required":false,"description":"newest (default), relevance (Avito's default order, where paid rows rank first), price_asc, price_desc, discount (goods: biggest discount first).","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"relevance","label":"relevance"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"discount","label":"discount"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (50 rows per page). Avito stops at page 30 (1,500 rows).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":30},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep rows with paid placement ('Продвинуто', view boosts), flagged is_promoted. Off by default: they are dropped and counted in sponsored_dropped.","on_invalid":"reject","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When Avito finds nothing it pads the page with unrelated ads; return them separately in fallback_results.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names, typed addresses and exact coordinates, which are withheld by default.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Avito refuses (0 = engine default).","on_invalid":"ignore","default":0,"minimum":0,"maximum":20}],"returns":"listings[]{ad_id, title, url, category{category_id, name, slug, root_category_id}, subtitle, price, price_min, price_max, price_is_from, currency, price_text, price_period, is_free, price_not_published, price_before_discount, discount_percent, price_lowered, price_per_unit{value, unit}, published_at, location{location_id, name, address, nearby[]}, coordinates{lat, lng, precision}, coordinates_withheld, address_as_typed, seller{type, type_label, has_shop, name, name_withheld, name_hidden_by_avito, profile_id, profile_url, rating, rating_scale, reviews_count, closed_ads_count, reseller_likely, reseller_reasons[], info[], badges[]}, images[], images_count, has_video, description_snippet, params_summary, badges[], development_name, realty_type{category_type, transaction_type, rent_term}, is_promoted, paid_services[], is_xl, is_reserved, delivery_available, delivery_text, is_verified_item}, count, total, pageable_total, page, has_more, sort_applied, location, filters_applied, query_interpreted_as{category_path, note}, sponsored_dropped, promoted_on_page, fallback_results_dropped, fallback_results[], search_url","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"диван","location":"moskva"}},{"name":"cars/search","description":"Search Avito Auto - used and new cars anywhere in Russia or in one city: price (dealer 'from' prices with the price before discount), make/model, parameters summary (engine, power, gearbox, drive, body), dealer or private seller with rating, address, images and paid-placement flags. Filter by make, model, used/new, year, mileage, fuel, drive, price and seller type; sort by newest, price, year or mileage.","required_params":[],"optional_params":["location","make","model","condition","year_min","year_max","mileage_min","mileage_max","fuel","drive","price_min","price_max","seller_type","query","sort","page","include_sponsored","include_pii","max_rotations"],"params":[{"name":"location","type":"string","required":false,"description":"Avito location slug (moskva, sankt-peterburg, kazan, moskovskaya_oblast …), a major city name (Москва) or 'all' for all of Russia. The locations action finds slugs.","on_invalid":"reject","default":"all","example":"moskva"},{"name":"make","type":"string","required":false,"description":"Make as it appears in Avito URLs (toyota, lada_vaz, bmw, geely, haval).","on_invalid":"reject","example":"toyota"},{"name":"model","type":"string","required":false,"description":"Model slug as in Avito URLs (camry, granta, x5); needs make.","on_invalid":"reject","example":"camry"},{"name":"condition","type":"enum","required":false,"description":"used or new cars.","on_invalid":"reject","allowed_values":[{"value":"used","label":"used"},{"value":"new","label":"new"}]},{"name":"year_min","type":"integer","required":false,"description":"Earliest year (needs make).","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest year (needs make).","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"mileage_min","type":"integer","required":false,"description":"Lowest mileage, km (needs make).","on_invalid":"reject","minimum":0},{"name":"mileage_max","type":"integer","required":false,"description":"Highest mileage, km (needs make).","on_invalid":"reject","minimum":0},{"name":"fuel","type":"array","required":false,"description":"petrol, diesel, gas, hybrid, electric (needs make).","on_invalid":"reject","allowed_values":[{"value":"petrol","label":"petrol"},{"value":"gas","label":"gas"},{"value":"hybrid","label":"hybrid"},{"value":"diesel","label":"diesel"},{"value":"electric","label":"electric"}]},{"name":"drive","type":"array","required":false,"description":"front, rear, all_wheel (needs make).","on_invalid":"reject","allowed_values":[{"value":"rear","label":"rear"},{"value":"front","label":"front"},{"value":"all_wheel","label":"all_wheel"}]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in RUB.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in RUB.","on_invalid":"reject","minimum":0},{"name":"seller_type","type":"enum","required":false,"description":"private owners or dealers (needs make).","on_invalid":"reject","allowed_values":[{"value":"private","label":"private"},{"value":"company","label":"company"}]},{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into Avito's search box (Russian or Latin).","on_invalid":"reject","example":"диван"},{"name":"sort","type":"enum","required":false,"description":"newest (default), relevance (Avito's default order, where paid rows rank first), price_asc, price_desc, year_desc, mileage_asc.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"relevance","label":"relevance"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"year_desc","label":"year_desc"},{"value":"mileage_asc","label":"mileage_asc"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (50 rows per page). Avito stops at page 30 (1,500 rows).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":30},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep rows with paid placement ('Продвинуто', view boosts), flagged is_promoted. Off by default: they are dropped and counted in sponsored_dropped.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names, typed addresses and exact coordinates, which are withheld by default.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Avito refuses (0 = engine default).","on_invalid":"ignore","default":0,"minimum":0,"maximum":20}],"returns":"listings[]{ad_id, title, url, category{category_id, name, slug, root_category_id}, subtitle, price, price_min, price_max, price_is_from, currency, price_text, price_period, is_free, price_not_published, price_before_discount, discount_percent, price_lowered, price_per_unit{value, unit}, published_at, location{location_id, name, address, nearby[]}, coordinates{lat, lng, precision}, coordinates_withheld, address_as_typed, seller{type, type_label, has_shop, name, name_withheld, name_hidden_by_avito, profile_id, profile_url, rating, rating_scale, reviews_count, closed_ads_count, reseller_likely, reseller_reasons[], info[], badges[]}, images[], images_count, has_video, description_snippet, params_summary, badges[], development_name, realty_type{category_type, transaction_type, rent_term}, is_promoted, paid_services[], is_xl, is_reserved, delivery_available, delivery_text, is_verified_item}, count, total, pageable_total, page, has_more, sort_applied, location, filters_applied, query_interpreted_as{category_path, note}, sponsored_dropped, promoted_on_page, fallback_results_dropped, fallback_results[], search_url","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"make":"toyota","location":"moskva"}},{"name":"real_estate/search","description":"Search Avito Real Estate - apartments, rooms, houses, land, garages and commercial property for sale, long-term or daily rent: price or rent per month/day, price per m², address with nearby metro and walking time, residential complex, agency/developer/owner, images and paid-placement flags. Filter by transaction, property type, rooms, area, new-build or resale, seller type and price.","required_params":["transaction"],"optional_params":["location","property_type","rooms","area_min","area_max","market","seller_type","price_min","price_max","query","sort","page","include_sponsored","include_pii","max_rotations"],"params":[{"name":"transaction","type":"enum","required":true,"description":"sale, rent_long (long-term rent), rent_daily (daily rent), rent (both rent kinds; land, garages and commercial property).","on_invalid":"reject","allowed_values":[{"value":"sale","label":"sale"},{"value":"rent_long","label":"rent_long"},{"value":"rent_daily","label":"rent_daily"},{"value":"rent","label":"rent"}],"example":"rent_long"},{"name":"location","type":"string","required":false,"description":"Avito location slug (moskva, sankt-peterburg, kazan, moskovskaya_oblast …), a major city name (Москва) or 'all' for all of Russia. The locations action finds slugs.","on_invalid":"reject","default":"all","example":"moskva"},{"name":"property_type","type":"enum","required":false,"description":"apartment (default), room, house, land, garage, commercial.","on_invalid":"reject","allowed_values":[{"value":"apartment","label":"apartment"},{"value":"room","label":"room"},{"value":"house","label":"house"},{"value":"land","label":"land"},{"value":"garage","label":"garage"},{"value":"commercial","label":"commercial"}],"default":"apartment"},{"name":"rooms","type":"array","required":false,"description":"Apartments: studio, 1-9, 10_plus, open_plan.","on_invalid":"reject","allowed_values":[{"value":"studio","label":"studio"},{"value":"1","label":"1"},{"value":"2","label":"2"},{"value":"3","label":"3"},{"value":"4","label":"4"},{"value":"5","label":"5"},{"value":"6","label":"6"},{"value":"7","label":"7"},{"value":"8","label":"8"},{"value":"9","label":"9"},{"value":"10_plus","label":"10_plus"},{"value":"open_plan","label":"open_plan"}]},{"name":"area_min","type":"integer","required":false,"description":"Apartments: smallest total area, m².","on_invalid":"reject","minimum":0},{"name":"area_max","type":"integer","required":false,"description":"Apartments: largest total area, m².","on_invalid":"reject","minimum":0},{"name":"market","type":"enum","required":false,"description":"Apartments for sale: secondary (resale) or new_build.","on_invalid":"reject","allowed_values":[{"value":"secondary","label":"secondary"},{"value":"new_build","label":"new_build"}]},{"name":"seller_type","type":"enum","required":false,"description":"Apartments for sale: private, developer, agency. Apartments for rent: owner, agency.","on_invalid":"reject","allowed_values":[{"value":"private","label":"private"},{"value":"developer","label":"developer"},{"value":"agency","label":"agency"},{"value":"owner","label":"owner"}]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in RUB.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in RUB.","on_invalid":"reject","minimum":0},{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into Avito's search box (Russian or Latin).","on_invalid":"reject","example":"диван"},{"name":"sort","type":"enum","required":false,"description":"newest (default), relevance (Avito's default order, where paid rows rank first), price_asc, price_desc.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"relevance","label":"relevance"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (50 rows per page). Avito stops at page 30 (1,500 rows).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":30},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep rows with paid placement ('Продвинуто', view boosts), flagged is_promoted. Off by default: they are dropped and counted in sponsored_dropped.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names, typed addresses and exact coordinates, which are withheld by default.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Avito refuses (0 = engine default).","on_invalid":"ignore","default":0,"minimum":0,"maximum":20}],"returns":"listings[]{ad_id, title, url, category{category_id, name, slug, root_category_id}, subtitle, price, price_min, price_max, price_is_from, currency, price_text, price_period, is_free, price_not_published, price_before_discount, discount_percent, price_lowered, price_per_unit{value, unit}, published_at, location{location_id, name, address, nearby[]}, coordinates{lat, lng, precision}, coordinates_withheld, address_as_typed, seller{type, type_label, has_shop, name, name_withheld, name_hidden_by_avito, profile_id, profile_url, rating, rating_scale, reviews_count, closed_ads_count, reseller_likely, reseller_reasons[], info[], badges[]}, images[], images_count, has_video, description_snippet, params_summary, badges[], development_name, realty_type{category_type, transaction_type, rent_term}, is_promoted, paid_services[], is_xl, is_reserved, delivery_available, delivery_text, is_verified_item}, count, total, pageable_total, page, has_more, sort_applied, location, filters_applied, query_interpreted_as{category_path, note}, sponsored_dropped, promoted_on_page, fallback_results_dropped, fallback_results[], search_url","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"transaction":"rent_long","location":"sankt-peterburg"}},{"name":"listing","description":"The full Avito ad by id or URL, in any category: title, status, price (from/range/free/unpublished labelled, price before discount), full description, every published parameter with its Russian label and grouped building/rent-terms/house-rules/requirements blocks, car and property summaries, Avito's own market price estimate for apartments, all images, address with nearby metro, seller type, shop name, rating, reviews, reply time and verification, view counts and expiry date.","required_params":["ad_id"],"optional_params":["include_pii","max_rotations"],"params":[{"name":"ad_id","type":"string","required":true,"description":"The Avito ad id (the digits at the end of an ad URL) or the full URL.","on_invalid":"reject","example":"8341164961"},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names, typed addresses and exact coordinates, which are withheld by default.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Avito refuses (0 = engine default).","on_invalid":"ignore","default":0,"minimum":0,"maximum":20}],"returns":"listing{ad_id, title, url, status, closed_status_text, category{}, breadcrumbs[], price, price_min, price_max, price_is_from, currency, price_text, price_period, is_free, price_not_published, price_before_discount, discount_percent, price_lowered, price_per_unit{}, published_or_raised_text, expires_at, description, params[]{attribute_id, name, value}, param_groups{building[], rent_terms[], house_rules[], requirements[], …}, vehicle{year, mileage_km, generation, modification, engine, gearbox, drive, body_type, colour, condition, owners, vin}, property{rooms, area_m2, kitchen_area_m2, living_area_m2, floor, renovation, market_estimate{estimated, lowest, highest, verdict}}, images[], images_count, location{location_id, name, slug, address, district, nearby[]}, coordinates{lat, lng, precision, radius_m}, seller{type, type_label, has_shop, name, name_withheld, profile_id, profile_url, shop_name, contact_person, on_avito_since, on_avito_since_date (YYYY-MM), rating, rating_scale, reviews_count, reseller_likely, reseller_reasons[], reply_time, is_verified, inn_verified, phone_available, phone_masked}, views{total, today}, delivery_available, is_reserved}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"Avito's category tree (591 nodes: transport, real estate, jobs, services, electronics, home, fashion, hobbies, animals, business) with node ids, Russian names and the paths the search action takes.","required_params":[],"optional_params":["query"],"params":[{"name":"query","type":"string","required":false,"description":"Optional filter on the category name or path.","on_invalid":"reject","example":"диван"}],"returns":"categories[]{node_id, category_id, name, path, level, parent_node_id}, count, source","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"locations","description":"Find Avito location slugs (cities, towns and regions) for the location parameter: search by Russian or Latin name; Avito's own lookup adds the region and location id.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Town or region name (Russian or transliterated), at least 2 letters.","on_invalid":"reject","example":"казань"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Avito refuses (0 = engine default).","on_invalid":"ignore","default":0,"minimum":0,"maximum":20}],"returns":"locations[]{slug, name, region, location_id, source}, count","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"диван"}},{"name":"suggest","description":"Avito's own search-box suggestions for what a user is typing, with the category and filters Avito would apply for each.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The text typed so far (max 64 characters).","on_invalid":"reject","example":"айфо"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Avito refuses (0 = engine default).","on_invalid":"ignore","default":0,"minimum":0,"maximum":20}],"returns":"suggestions[]{query, category_id, filters{}}, related_words[], count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"диван"}}]},{"name":"barcode","category":{"id":"utilities","title":"Utilities & AI"},"title":"Barcode Lookup API — GTIN/EAN/UPC/ISBN to product data (title, brand, images, nutrition, retailer offers) via Open Food Facts and UPCitemdb, with check-digit validation","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/barcode/v1","spec_available":true,"actions":[{"name":"lookup","description":"Barcode → one merged product: title/brand/category/image/description + dimensions/model + PACKAGE WEIGHT as an explicit {weight, weight_unit} pair (plus weight_grams, weight_type, weight_source and a weight_confidence flag) + retailer offers&prices (UPCitemdb) + net content + nutrition/ingredients/allergens if food (OFF). Includes check-digit validation, GTIN-13 normalization and issuing-country. source=auto merges them, and falls back to go-upc — US general merchandise, retailer private label, apparel and footwear — for barcodes the first two do not carry. Weight is published by roughly 1 barcode in 5 (1 in 3 with deep_weight=true) — when no source states one, weight is null, never 0 and never borrowed from a similar product.","required_params":["barcode"],"optional_params":["source","off_db","deep_weight"],"params":[{"name":"barcode","type":"string","required":true,"description":"The barcode to look up: UPC-A (12), EAN-13 (13), EAN-8 (8), GTIN-14, or ISBN-13 (978/979…). Spaces/dashes are stripped; check digit is validated (mod-10). Aliases: upc, ean, gtin, isbn, code.","on_invalid":"reject","example":"5449000000996","aliases":["upc","ean","gtin","isbn","code"]},{"name":"source","type":"enum","required":false,"description":"Which source(s) to query for lookup/batch. 'auto' walks them in cost order and stops at the first hit: Open Food Facts, then UPCitemdb, then go-upc, then the retail tier. A lookup the open databases can answer never touches the slower tiers.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"All sources, merged (default) — food fields from OFF, commerce fields from UPCitemdb, and go-upc as a last-resort fallback that runs only if the first two found nothing"},{"value":"off","label":"Open Food/Beauty/Products Facts only (food/nutrition)"},{"value":"upcitemdb","label":"UPCitemdb only (general products + retailer prices)"},{"value":"goupc","label":"go-upc only — US general merchandise / retailer private-label / apparel (title, brand, category, image, description; no prices, no weight)"},{"value":"retail","label":"US retailers (target.com, then ebay.com) matched by GTIN and VERIFIED against the retailer's own published barcode. Target additionally carries package_weight + package_dimensions. Slowest tier — 'auto' reaches it only when every open database missed"}],"default":"auto","example":"auto"},{"name":"off_db","type":"enum","required":false,"description":"Which Open-*-Facts sibling DB to search/lookup against when source=off. lookup auto-falls-back food→products when source=auto.","on_invalid":"reject","allowed_values":[{"value":"food","label":"Open Food Facts (food & beverage)"},{"value":"beauty","label":"Open Beauty Facts (cosmetics)"},{"value":"petfood","label":"Open Pet Food Facts"},{"value":"products","label":"Open Products Facts (generic non-food)"}],"default":"food","example":"food"},{"name":"deep_weight","type":"boolean","required":false,"description":"Spend ONE extra upstream call, per barcode, to chase a weight the product page did not publish. Measured on 61 retailer-sourced barcodes: weight coverage 19.7% off (default, 1 call) → 29.5% on (2 calls). Off by default so the cheap path stays one call. Read weight_confidence before trusting the value either way.","on_invalid":"ignore","default":false,"example":true,"aliases":["weight_deep","extra_weight"]}],"returns":"product{barcode, gtin13, gtin_type, valid_check_digit, issuing_country, title, brand, category, description, image, images[], weight, weight_unit (g|kg|oz|lb), weight_grams, weight_type (package|net_content), weight_source, weight_raw, weight_confidence (medium|low|null), weight_flags[], net_content{value, unit, grams, is_volume}, nutrition{} (if food), ingredients, allergens[], offers[] (merchant/price), price_lowest/highest, sources[], field_source{}, resolution_level (full = name+brand+image | partial = some fields)}. When no catalogue lists the barcode the answer stays ok:false / NOT_FOUND — never a hollow product — and error.detail carries {resolution_level: 'identifier_only', identifier{barcode, gtin13, gtin_type, valid_check_digit, gs1_prefix, issuing_country, is_isbn}} so a malformed code is distinguishable from a valid one nobody currently lists.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"barcode":"5449000000996"}},{"name":"batch","description":"Up to 20 barcodes in one call → array of merged products (input order preserved), each with its own source/validation. The competitor caps at 10.","required_params":["barcodes"],"optional_params":["source","off_db","deep_weight"],"params":[{"name":"barcodes","type":"array","required":true,"description":"Up to 20 barcodes — a JSON array or a comma-separated string (competitor caps batch at 10; we allow 20). Each is normalized + validated; results preserve input order with per-item source.","on_invalid":"reject","example":"5449000000996,0885909950805","aliases":["upcs","eans","gtins","codes"]},{"name":"source","type":"enum","required":false,"description":"Which source(s) to query for lookup/batch. 'auto' walks them in cost order and stops at the first hit: Open Food Facts, then UPCitemdb, then go-upc, then the retail tier. A lookup the open databases can answer never touches the slower tiers.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"All sources, merged (default) — food fields from OFF, commerce fields from UPCitemdb, and go-upc as a last-resort fallback that runs only if the first two found nothing"},{"value":"off","label":"Open Food/Beauty/Products Facts only (food/nutrition)"},{"value":"upcitemdb","label":"UPCitemdb only (general products + retailer prices)"},{"value":"goupc","label":"go-upc only — US general merchandise / retailer private-label / apparel (title, brand, category, image, description; no prices, no weight)"},{"value":"retail","label":"US retailers (target.com, then ebay.com) matched by GTIN and VERIFIED against the retailer's own published barcode. Target additionally carries package_weight + package_dimensions. Slowest tier — 'auto' reaches it only when every open database missed"}],"default":"auto","example":"auto"},{"name":"off_db","type":"enum","required":false,"description":"Which Open-*-Facts sibling DB to search/lookup against when source=off. lookup auto-falls-back food→products when source=auto.","on_invalid":"reject","allowed_values":[{"value":"food","label":"Open Food Facts (food & beverage)"},{"value":"beauty","label":"Open Beauty Facts (cosmetics)"},{"value":"petfood","label":"Open Pet Food Facts"},{"value":"products","label":"Open Products Facts (generic non-food)"}],"default":"food","example":"food"},{"name":"deep_weight","type":"boolean","required":false,"description":"Spend ONE extra upstream call, per barcode, to chase a weight the product page did not publish. Measured on 61 retailer-sourced barcodes: weight coverage 19.7% off (default, 1 call) → 29.5% on (2 calls). Off by default so the cheap path stays one call. Read weight_confidence before trusting the value either way.","on_invalid":"ignore","default":false,"example":true,"aliases":["weight_deep","extra_weight"]}],"returns":"products[] (one per input barcode: found bool + checked bool + resolution_level + merged product with the same weight/weight_unit block as lookup; a not-found entry carries identifier{} — the decoded, verified barcode — instead of a product), requested, found_count, weight_found_count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"barcodes":"5449000000996,0885909950805"}},{"name":"search","description":"Free-text product-name search across the open databases → product cards with pagination. Optional category scope. (Competitor: keyword/title/category search.)","required_params":["query"],"optional_params":["category","off_db","source","page","page_size"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text product-name keyword search (matches title across the open databases). Aliases: q, search, name, title.","on_invalid":"reject","example":"coca cola zero","aliases":["q","search","name","title"]},{"name":"category","type":"string","required":false,"description":"Optional Open-Food-Facts category tag to scope a search/brand query (e.g. 'sodas', 'chocolate-spreads', 'biscuits').","on_invalid":"reject","example":"chocolate-spreads"},{"name":"off_db","type":"enum","required":false,"description":"Which Open-*-Facts sibling DB to search/lookup against when source=off. lookup auto-falls-back food→products when source=auto.","on_invalid":"reject","allowed_values":[{"value":"food","label":"Open Food Facts (food & beverage)"},{"value":"beauty","label":"Open Beauty Facts (cosmetics)"},{"value":"petfood","label":"Open Pet Food Facts"},{"value":"products","label":"Open Products Facts (generic non-food)"}],"default":"food","example":"food"},{"name":"source","type":"enum","required":false,"description":"Which source(s) to query for lookup/batch. 'auto' walks them in cost order and stops at the first hit: Open Food Facts, then UPCitemdb, then go-upc, then the retail tier. A lookup the open databases can answer never touches the slower tiers.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"All sources, merged (default) — food fields from OFF, commerce fields from UPCitemdb, and go-upc as a last-resort fallback that runs only if the first two found nothing"},{"value":"off","label":"Open Food/Beauty/Products Facts only (food/nutrition)"},{"value":"upcitemdb","label":"UPCitemdb only (general products + retailer prices)"},{"value":"goupc","label":"go-upc only — US general merchandise / retailer private-label / apparel (title, brand, category, image, description; no prices, no weight)"},{"value":"retail","label":"US retailers (target.com, then ebay.com) matched by GTIN and VERIFIED against the retailer's own published barcode. Target additionally carries package_weight + package_dimensions. Slowest tier — 'auto' reaches it only when every open database missed"}],"default":"auto","example":"auto"},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped 1-1000). Page forward with meta.next_page. Note: Open Food Facts throttles deep pages, so a deep page may take an extra moment while the engine retries.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-50, default 20); out-of-range values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50,"aliases":["limit","per_page"]}],"returns":"products[] (barcode, title, brand, category, image, nutriscore), count, page, page_count, has_more, next_page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nutella"}},{"name":"by_brand","description":"All products for a brand/manufacturer → product cards with pagination. (Competitor: brand + manufacturer search.)","required_params":["brand"],"optional_params":["category","off_db","page","page_size"],"params":[{"name":"brand","type":"string","required":true,"description":"Brand or manufacturer name → that brand's products. Aliases: manufacturer, brand_name.","on_invalid":"reject","example":"nutella","aliases":["manufacturer","brand_name"]},{"name":"category","type":"string","required":false,"description":"Optional Open-Food-Facts category tag to scope a search/brand query (e.g. 'sodas', 'chocolate-spreads', 'biscuits').","on_invalid":"reject","example":"chocolate-spreads"},{"name":"off_db","type":"enum","required":false,"description":"Which Open-*-Facts sibling DB to search/lookup against when source=off. lookup auto-falls-back food→products when source=auto.","on_invalid":"reject","allowed_values":[{"value":"food","label":"Open Food Facts (food & beverage)"},{"value":"beauty","label":"Open Beauty Facts (cosmetics)"},{"value":"petfood","label":"Open Pet Food Facts"},{"value":"products","label":"Open Products Facts (generic non-food)"}],"default":"food","example":"food"},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped 1-1000). Page forward with meta.next_page. Note: Open Food Facts throttles deep pages, so a deep page may take an extra moment while the engine retries.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-50, default 20); out-of-range values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50,"aliases":["limit","per_page"]}],"returns":"products[] (this brand's items), brand, count, page, page_count, has_more, next_page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"brand":"coca-cola"}},{"name":"by_prefix","description":"GS1 company-prefix (partial-barcode) search → products whose barcode starts with the given 6+ digits, plus the decoded issuing country. (Competitor: `491234*` partial method.)","required_params":["prefix"],"optional_params":["off_db","page","page_size"],"params":[{"name":"prefix","type":"string","required":true,"description":"A GS1 company prefix — the first 6+ digits of a barcode (the competitor's `491234*` partial-barcode method). Returns products whose barcode starts with these digits + the decoded issuing country.","on_invalid":"reject","example":"5449000","aliases":["gs1_prefix","company_prefix"]},{"name":"off_db","type":"enum","required":false,"description":"Which Open-*-Facts sibling DB to search/lookup against when source=off. lookup auto-falls-back food→products when source=auto.","on_invalid":"reject","allowed_values":[{"value":"food","label":"Open Food Facts (food & beverage)"},{"value":"beauty","label":"Open Beauty Facts (cosmetics)"},{"value":"petfood","label":"Open Pet Food Facts"},{"value":"products","label":"Open Products Facts (generic non-food)"}],"default":"food","example":"food"},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped 1-1000). Page forward with meta.next_page. Note: Open Food Facts throttles deep pages, so a deep page may take an extra moment while the engine retries.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-50, default 20); out-of-range values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50,"aliases":["limit","per_page"]}],"returns":"products[] (barcode starts-with prefix), prefix, issuing_country, prefix_basis (GTIN-13 | GTIN-12 (UPC-A) | GTIN-8 (EAN-8) | ambiguous), issuing_country_alt{} (only when a short prefix reads differently as a UPC-A with its unprinted leading zero), count, page, has_more, next_page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"prefix":"5449000"}},{"name":"by_mpn","description":"Manufacturer-Part-Number / model lookup → products with that MPN/model (UPCitemdb keyword index over the MPN). Exact model/mpn matches are surfaced first. Closes the competitor's mpn query-method (the proprietary mpn= DB-index isn't on the open tier, but the keyword index resolves real MPNs — Logitech 910-005565, Sony WH-1000XM4, Canon 2727C002 all verified).","required_params":["mpn"],"optional_params":["page","page_size"],"params":[{"name":"mpn","type":"string","required":true,"description":"Manufacturer Part Number / model number → matching products. Aliases: model, model_number, part_number. Results whose model/mpn field equals the query are surfaced first (exact_match=true).","on_invalid":"reject","example":"910-005565","aliases":["model","model_number","part_number","mpn_number"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped 1-1000). Page forward with meta.next_page. Note: Open Food Facts throttles deep pages, so a deep page may take an extra moment while the engine retries.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-50, default 20); out-of-range values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50,"aliases":["limit","per_page"]}],"returns":"products[] (exact-mpn first, each w/ matched_mpn + exact_match bool), mpn, exact_match_count, count, page, page_count, has_more, next_page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"mpn":"910-005565"}},{"name":"validate","description":"Validate + decode a barcode WITHOUT a network call: mod-10 check digit, GTIN type, GTIN-13 normalization, GS1 issuing country, ISBN/Bookland detection. (We EXCEED the competitor here — it has no standalone validate.)","required_params":["barcode"],"optional_params":[],"params":[{"name":"barcode","type":"string","required":true,"description":"The barcode to look up: UPC-A (12), EAN-13 (13), EAN-8 (8), GTIN-14, or ISBN-13 (978/979…). Spaces/dashes are stripped; check digit is validated (mod-10). Aliases: upc, ean, gtin, isbn, code.","on_invalid":"reject","example":"5449000000996","aliases":["upc","ean","gtin","isbn","code"]}],"returns":"valid, gtin_type, digits, gtin13, check_digit, expected_check_digit, issuing_country, is_isbn, reason (if invalid)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"barcode":"40123455"}}]},{"name":"bestbuy","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Best Buy API — search products, fetch product details, live prices, images, and customer reviews from BestBuy.com","version":"0.6.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/bestbuy/v1","spec_available":true,"actions":[{"name":"search","description":"Search Best Buy by keyword → a paginated, sortable, filterable list of products with name, brand, model, current & regular price, savings, star rating + review count, stock status, image gallery, variants, category, seller type (Best Buy itself vs a marketplace seller), and the product link. Narrow with friendly filters: brand, min_price/max_price, min_rating, condition. NOTE: the full category breadcrumb (category_path) is not published on Best Buy's result grid - grid rows carry the product_type labels instead. For the breadcrumb, use product_detail for one product or products_batch for up to 15 at a time.","required_params":["query"],"optional_params":["max_results","page","sort","brand","min_price","max_price","min_rating","condition","category","include_sponsored"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for on Best Buy (product keywords, brand, or model).","on_invalid":"reject","example":"macbook air","aliases":["q"]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return. MAXIMUM 240 — that is the published ceiling, so there is nothing to probe for. Spans result pages automatically (24/page, 10 pages). Measured 2026-08-07 on 'laptop': 24/48/96/144/192 came back exact and 240 came back 226, because Best Buy's own grid repeats a few products across deep pages and duplicates are dropped — so treat 240 as an upper bound, not a promise of exactly 240 rows. Above 240 the value is clamped to 240 rather than rejected.","on_invalid":"ignore","default":24,"minimum":1,"maximum":240},{"name":"page","type":"integer","required":false,"description":"Result page to start from (1-based; ~24 products/page). Combine with max_results to walk past the 240-per-call ceiling: page=11 starts where a 240-result call ended.","on_invalid":"ignore","default":1,"minimum":1},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Best match"},{"value":"best_selling","label":"Best selling"},{"value":"best_discount","label":"Biggest discount"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"rating","label":"Customer rating"},{"value":"newest","label":"New arrivals"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Filter to one brand (e.g. Apple, HP, Samsung, Sony). Use the exact brand name as Best Buy shows it.","on_invalid":"ignore","example":"Apple"},{"name":"min_price","type":"number","required":false,"description":"Lowest price to include (USD). Combine with max_price for a price window.","on_invalid":"ignore","example":500,"minimum":0,"aliases":["price_min"]},{"name":"max_price","type":"number","required":false,"description":"Highest price to include (USD).","on_invalid":"ignore","example":1000,"minimum":0,"aliases":["price_max"]},{"name":"min_rating","type":"enum","required":false,"description":"Only products at or above this customer rating.","on_invalid":"ignore","allowed_values":[{"value":"5","label":"5 stars only"},{"value":"4","label":"4 stars & up"},{"value":"3","label":"3 stars & up"},{"value":"2","label":"2 stars & up"},{"value":"top_rated","label":"Top-Rated only"}]},{"name":"condition","type":"enum","required":false,"description":"Product condition.","on_invalid":"ignore","allowed_values":[{"value":"new","label":"Brand new"},{"value":"open_box","label":"Open-Box"},{"value":"refurbished","label":"Refurbished"},{"value":"pre_owned","label":"Pre-Owned / used"}]},{"name":"category","type":"string","required":false,"description":"Advanced: restrict results with a raw Best Buy facet token (escape hatch for power users). Discover the available facets for a keyword with the `categories` action. Most users want the brand / min_price / max_price / min_rating / condition filters instead.","on_invalid":"ignore","example":"Apple","aliases":["filter","qp"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Best Buy mixes paid placements into its result grid. By default they are returned in their real grid position and marked `sponsored: true` so you can tell them apart. Set to false to return organic results only.","on_invalid":"ignore","default":true,"aliases":["sponsored"]}],"returns":"results[]{sku, name, brand, model, sponsored, price{current, regular, savings, savings_pct}, rating{average, review_count}, availability{in_stock, ship_by}, image, images[], variants{types, options[]}, open_box{available, from_price, condition_codes[]} (present when an open-box version is also on sale), seller_type ('1P' = sold by Best Buy itself, '3P' = a marketplace seller) + seller_id + seller (a name only for 1P - Best Buy publishes no name for marketplace sellers on any surface, so 3P rows carry the type and id and a null name), product_type[], url} + meta{page, pages_fetched, sort, filter, grid_size, with_price, incomplete, sponsored_count, has_next}. `has_next` tells you whether another page exists: true means increment `page` for more, false means this was the last page. Requesting a page beyond the last returns NOT_FOUND with has_next:false and is NOT billed - the end-of-results signal, not an error to retry.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"laptop"}},{"name":"product_detail","description":"Get the full product card for one Best Buy item by its product number, URL, or product-id → name, brand, model, current/regular price + savings, clearance/sale flags & special offers, stock status, star rating with a 5★-to-1★ breakdown, what customers like/dislike, image gallery, color/storage/carrier variants, and the category breadcrumb.","required_params":[],"optional_params":["sku","url"],"params":[{"name":"sku","type":"string","required":false,"description":"Best Buy product number. Accepts the 7-digit SKU (e.g. 6565837), OR the product-id from the page URL (the code like JJGCQ8VCFQ), OR a full bestbuy.com product link — any of the three works.","on_invalid":"reject","example":"6565837","aliases":["skuId","sku_id","product_id","id"]},{"name":"url","type":"string","required":false,"description":"A full bestbuy.com product page URL (alternative to the product number).","on_invalid":"reject","example":"https://www.bestbuy.com/product/apple-macbook-air/JJGCQYXQ58/sku/6565837","aliases":["product_url"]}],"returns":"product{sku, name, brand, model, price{current, regular, savings, savings_pct, pricing_type, offers[]}, availability{in_stock, button_text}, rating{average, review_count, breakdown, verified_purchase_count}, customers_say{pros[], cons[]}, image, images[], variants{types, options[]}, category_path[] (the full breadcrumb, root first: Computers & Tablets > Laptops > All Laptops > Chromebooks > Touchscreen Chromebooks), product_type[], url, condition, open_box{available, from_price, condition_codes[]} (present when Best Buy also sells this product open-box; null when it does not), seller_type ('1P' = sold by Best Buy itself, '3P' = a marketplace seller) + seller_id + seller (the seller's NAME, which Best Buy publishes only for its own 1P listings - a 3P listing returns its type and id and a null name, never a made-up one), upc (the product's barcode), weight (as printed, e.g. '3.99 pounds'), weight_value + weight_unit (the same weight as a number plus its unit, e.g. 3.99 + 'POUND' — units seen in a 381-product sample: POUND, OUNCE, GRAM; both are null, never guessed, if the printed string cannot be parsed), dimensions{Product Height/Width/Depth}, specifications[]{name, value, group}, spec_count, description, features[], included_items[], manufacturer, reviews[] (the top-5 customer reviews inline: rating, author, pros, cons, helpful_count, photos, verified/incentivized flags - the full feed is on the `reviews` action)}. SHIPPING WEIGHT: `weight` is Best Buy's own printed string and is unchanged; `weight_value` (number) and `weight_unit` (POUND | OUNCE | GRAM | KILOGRAM) are the parsed pair for rate calculations. Whenever a printed weight exists the pair is present too — null if the string could not be parsed with certainty, because a wrong unit is worse than no weight.","cacheable":true,"cache_ttl_seconds":7200,"pricing":{"mode":"flat","credits":2},"example_params":{"sku":"6571043"}},{"name":"products_batch","description":"Look up MANY Best Buy products in ONE call by product number — up to 15 per request → each product's barcode (UPC), name, brand, price, rating, images, full technical specifications, shipping weight and package dimensions. Built for enriching a whole catalogue or price list at once instead of one product at a time.","required_params":["skus"],"optional_params":[],"params":[{"name":"skus","type":"array","required":true,"description":"Best Buy product numbers to look up — up to 15 per call. Accepts a list, or a comma-separated string. Anything Best Buy does not resolve comes back in `not_found` rather than being silently dropped.","on_invalid":"reject","example":["6679152","6588292","6408356"],"aliases":["sku","sku_ids","ids"]}],"returns":"products[]{sku, upc, name, brand, price{current, regular}, in_stock, availability{in_stock, button_state, button_text}, rating{average, review_count}, images[], url, condition, weight, weight_value, weight_unit, dimensions, specifications[]{name, value, group}, spec_count, description, features[], included_items[], manufacturer} + not_found[] (skus Best Buy did not resolve)","cacheable":true,"cache_ttl_seconds":7200,"pricing":{"mode":"flat","credits":5},"example_params":null},{"name":"reviews","description":"Get customer reviews for a Best Buy product → each review's star rating, title, full text, author, date, pros & cons, verified-purchase / incentivized flags, how long they've owned it, helpful-vote counts, and any customer photos. Paginated.","required_params":[],"optional_params":["sku","url","page","page_size","sort"],"params":[{"name":"sku","type":"string","required":false,"description":"Best Buy product number. Accepts the 7-digit SKU (e.g. 6565837), OR the product-id from the page URL (the code like JJGCQ8VCFQ), OR a full bestbuy.com product link — any of the three works.","on_invalid":"reject","example":"6565837","aliases":["skuId","sku_id","product_id","id"]},{"name":"url","type":"string","required":false,"description":"A full bestbuy.com product page URL (alternative to the product number).","on_invalid":"reject","example":"https://www.bestbuy.com/product/apple-macbook-air/JJGCQYXQ58/sku/6565837","aliases":["product_url"]},{"name":"page","type":"integer","required":false,"description":"Page of reviews to return.","on_invalid":"ignore","default":1,"minimum":1},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (max 100).","on_invalid":"ignore","default":20,"minimum":1,"maximum":100,"aliases":["pageSize"]},{"name":"sort","type":"enum","required":false,"description":"How to order the reviews.","on_invalid":"ignore","allowed_values":[{"value":"MOST_RECENT","label":"Newest first"},{"value":"MOST_HELPFUL","label":"Most helpful first"},{"value":"HIGHEST_RATING","label":"Highest rating first"},{"value":"LOWEST_RATING","label":"Lowest rating first"}],"default":"MOST_RECENT"}],"returns":"{sku, total_reviews, total_pages, page, rating_breakdown, reviews[]{rating, title, text, author, submitted_at, recommended, pros, cons, days_of_ownership, helpful_count, verified_purchaser, incentivized, photos[]}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"sku":"6565837"}},{"name":"review_summary","description":"Get the review snapshot for a Best Buy product → average rating, total review count, verified-purchase count, the full 5★-to-1★ rating breakdown, and a 'what customers say' summary of the most-mentioned pros and cons — in a single call.","required_params":[],"optional_params":["sku","url"],"params":[{"name":"sku","type":"string","required":false,"description":"Best Buy product number. Accepts the 7-digit SKU (e.g. 6565837), OR the product-id from the page URL (the code like JJGCQ8VCFQ), OR a full bestbuy.com product link — any of the three works.","on_invalid":"reject","example":"6565837","aliases":["skuId","sku_id","product_id","id"]},{"name":"url","type":"string","required":false,"description":"A full bestbuy.com product page URL (alternative to the product number).","on_invalid":"reject","example":"https://www.bestbuy.com/product/apple-macbook-air/JJGCQYXQ58/sku/6565837","aliases":["product_url"]}],"returns":"{sku, total_reviews, average_rating, verified_purchase_count, rating_breakdown{5,4,3,2,1}, customers_say{pros[], cons[]}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"sku":"6565837"}},{"name":"search_suggestions","description":"Get Best Buy search autocomplete suggestions for a partial query → the suggested search terms (with spell-correction), just like the dropdown under the search box.","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"The partial search text to autocomplete (e.g. 'lapt').","on_invalid":"reject","example":"lapt","aliases":["q"]},{"name":"limit","type":"integer","required":false,"description":"How many suggestions to return (1–20).","on_invalid":"ignore","default":11,"minimum":1,"maximum":20,"aliases":["count"]}],"returns":"{query, suggestions[]{term, categories[]{name, id}, product_skus[]}, corrected_query, correctly_spelled}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"laptop"}},{"name":"popular_terms","description":"Get Best Buy's currently trending / most-popular search terms (no input needed).","required_params":[],"optional_params":[],"params":[],"returns":"{terms[]}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"price","description":"Get the live pricing for a Best Buy product by SKU → current price, regular price, savings, clearance/sale flags and special offers (from Best Buy's pricing API).","required_params":["sku"],"optional_params":[],"params":[{"name":"sku","type":"string","required":true,"description":"The Best Buy product SKU (7-digit number, e.g. 6565837).","on_invalid":"reject","example":"6565837","aliases":["skuId","sku_id","id"]}],"returns":"{sku, pricing{current, regular, savings, savings_pct, pricing_type, currency, button_state, button_text, in_stock, condition, offers[], name, brand}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"sku":"6571043"}},{"name":"gifts","description":"Get the Gift-With-Purchase offers for a Best Buy product by SKU → each promotional offer (e.g. 'Apple TV Up to 1 Month GWP') and the free gift SKUs that come with it.","required_params":["sku"],"optional_params":[],"params":[{"name":"sku","type":"string","required":true,"description":"The Best Buy product SKU to check for gift-with-purchase.","on_invalid":"reject","example":"6565837","aliases":["skuId","sku_id","id"]}],"returns":"{sku, offers[]{offer_id, name}, gifts[]{sku, quantity, name, offer_id}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"sku":"6571043"}},{"name":"description","description":"Get a Best Buy product's full description and complete technical specifications by SKU → the marketing description plus every spec (name/value pairs: connectivity, dimensions, features, etc.). The deep product detail that lives on the product page.","required_params":[],"optional_params":["sku","url"],"params":[{"name":"sku","type":"string","required":false,"description":"The Best Buy product SKU (7-digit, e.g. 6505727).","on_invalid":"reject","example":"6505727","aliases":["skuId","sku_id","id"]},{"name":"url","type":"string","required":false,"description":"A full bestbuy.com /product/ URL (alternative to the SKU).","on_invalid":"ignore","example":"https://www.bestbuy.com/product/x/J7XSRH5CXG/sku/6505727","aliases":["product_url"]}],"returns":"{sku, description, description_short, features[], included_items[], specifications[]{name, value, group}, spec_count, weight, weight_value, weight_unit, dimensions, upc}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"deals","description":"Browse Best Buy's current deals — on-sale and clearance products site-wide, sorted by biggest discount by default → each product's name, brand, current & regular price, the amount and percent saved, star rating, stock status, image and link. Great for a 'today's best deals' / price-drop feed. (To find deals within a category, use search with sort=best_discount.)","required_params":[],"optional_params":["sort","max_results","page","include_sponsored"],"params":[{"name":"sort","type":"enum","required":false,"description":"How to order the deals (default: biggest discount).","on_invalid":"ignore","allowed_values":[{"value":"best_discount","label":"Biggest discount"},{"value":"best_selling","label":"Best selling"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"rating","label":"Customer rating"},{"value":"newest","label":"New arrivals"}],"default":"best_discount"},{"name":"max_results","type":"integer","required":false,"description":"How many deal products to return. MAXIMUM 240 (24/page, 10 pages), the same published ceiling as search. Measured 2026-08-07: 96 returned 96, 240 returned 180 — the deals grid is a finite list, so 240 is an upper bound rather than a guarantee. Above 240 the value is clamped, not rejected.","on_invalid":"ignore","default":24,"minimum":1,"maximum":240},{"name":"page","type":"integer","required":false,"description":"Result page to start from (1-based; ~24/page).","on_invalid":"ignore","default":1,"minimum":1},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep Best Buy's paid placements (marked `sponsored: true`) in the results. Set to false for organic deals only.","on_invalid":"ignore","default":true,"aliases":["sponsored"]}],"returns":"results[]{sku, name, brand, sponsored, price{current, regular, savings, savings_pct}, rating{average, review_count}, availability, image, url} + meta{record_count, with_savings, with_price, sponsored_count, sort, page, has_next (true = increment page for more; false = last page)}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"trending","description":"Get Best Buy's trending-right-now search terms — what shoppers are searching for at the moment (distinct from popular_terms, which is all-time most-popular). No input needed.","required_params":[],"optional_params":[],"params":[],"returns":"{terms[]}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"qa","description":"Get the customer questions & answers for a Best Buy product → each question with its author, date, and every answer (text, author, date, helpful-vote count, and which answer was voted best). Great for pre-purchase research. Paginated.","required_params":[],"optional_params":["sku","url","page","page_size","sort"],"params":[{"name":"sku","type":"string","required":false,"description":"Best Buy product number. Accepts the 7-digit SKU (e.g. 6565837), OR the product-id from the page URL (the code like JJGCQ8VCFQ), OR a full bestbuy.com product link — any of the three works.","on_invalid":"reject","example":"6565837","aliases":["skuId","sku_id","product_id","id"]},{"name":"url","type":"string","required":false,"description":"A full bestbuy.com product page URL (alternative to the product number).","on_invalid":"reject","example":"https://www.bestbuy.com/product/apple-macbook-air/JJGCQYXQ58/sku/6565837","aliases":["product_url"]},{"name":"page","type":"integer","required":false,"description":"Page of questions to return.","on_invalid":"ignore","default":1,"minimum":1},{"name":"page_size","type":"integer","required":false,"description":"Questions per page (max 100).","on_invalid":"ignore","default":10,"minimum":1,"maximum":100,"aliases":["pageSize"]},{"name":"sort","type":"enum","required":false,"description":"How to order the questions.","on_invalid":"ignore","allowed_values":[{"value":"MOST_RECENT","label":"Newest first"},{"value":"MOST_HELPFUL","label":"Most helpful first"}],"default":"MOST_RECENT"}],"returns":"{sku, total_questions, page, page_size, questions[]{id, question, detail, author, submitted_at, answer_count, helpful_count, is_featured, photos[], answers[]{id, text, author, submitted_at, helpful_count, is_best_answer, is_brand, from_best_buy_member}}}","cacheable":true,"cache_ttl_seconds":7200,"pricing":{"mode":"flat","credits":1},"example_params":{"sku":"6565837"}},{"name":"store_availability","description":"Check whether a Best Buy product (by SKU) is available to buy for a given ZIP code (and optionally a specific store) → an available flag plus the live buy-button status (e.g. Add to Cart / Sold Out / Pre-Order). Useful for retail-arbitrage and local-stock checks.","required_params":["sku"],"optional_params":["zip","store_id"],"params":[{"name":"sku","type":"string","required":true,"description":"The Best Buy product SKU (7-digit number, e.g. 6505727).","on_invalid":"reject","example":"6505727","aliases":["skuId","sku_id","id"]},{"name":"zip","type":"string","required":false,"description":"The US ZIP code to check availability for (defaults to 10001 / New York if omitted).","on_invalid":"ignore","default":"10001","example":"10001","aliases":["zip_code","postal_code","postalCode"]},{"name":"store_id","type":"string","required":false,"description":"Optional Best Buy store number to check a specific store. Omit to check general availability for the ZIP.","on_invalid":"ignore","example":"1531","aliases":["storeId"]}],"returns":"{sku, zip, store_id, available, button_state, status_text}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"sku":"6505727","zip":"10001"}},{"name":"categories","description":"Discover the categories and filter facets available for a Best Buy keyword search → the category sub-paths (each with a category id you can browse) plus every filterable facet (Brand, Price, Customer Rating, and category-specific attributes) with their values and product counts. Use it to learn what you can filter by before calling search.","required_params":["query"],"optional_params":["category"],"params":[{"name":"query","type":"string","required":true,"description":"The keyword to discover categories & filters for (e.g. 'laptop', 'tv', 'headphones').","on_invalid":"reject","example":"laptop","aliases":["q"]},{"name":"category","type":"string","required":false,"description":"Advanced: narrow to a sub-category first (raw facet token) to discover its deeper facets.","on_invalid":"ignore","aliases":["filter","qp"]}],"returns":"{query, categories[]{name, category_path, count}, filters[]{field, display_name, values[]{value, count, category_path}}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"laptop"}}]},{"name":"bestprice","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"BestPrice.gr API — Greek price-comparison data scraper: product search, category browsing, and every Greek shop's price for one product (lowest and highest price, shop name, availability) from bestprice.gr — no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/bestprice/v1","spec_available":true,"actions":[{"name":"search","description":"Search BestPrice by keyword. Returns the product grid: title, the price BestPrice shows (the lowest across shops), how many shops carry it, and the product id you feed to `product`.","required_params":["query"],"optional_params":["page","limit"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for, in Greek or English.","on_invalid":"reject","example":"iphone 15","aliases":["q","keyword","term"]},{"name":"page","type":"integer","required":false,"description":"1-based page of the grid (24 products a page).","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows to return from the page (1-24). The source serves 24 a page; use `page` for more.","on_invalid":"ignore","default":24,"minimum":1,"maximum":24}],"returns":"products[]{product_id, url, title, price_eur, currency, category_id, shop_count, image}, page, limit, query","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"product","description":"One product with EVERY shop offer: the shop name, its price, availability and the price band across the market (lowest, highest, how many shops). This is the whole point of a price-comparison source.","required_params":["product_id"],"optional_params":[],"params":[{"name":"product_id","type":"string","required":true,"description":"The numeric product id, or a bestprice.gr product URL.","on_invalid":"reject","example":"2159006120","aliases":["id","url"]}],"returns":"product{product_id, url, title, brand, gtin, category_path, price_low_eur, price_high_eur, offer_count (what the market has), offers_listed (how many this response carries), rating, rating_count, offers[]{shop, price_eur, currency, url, availability, condition}}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"category","description":"Browse one category's grid without a keyword. Same rows as `search`. Take the category id from a search row's `category_id` or from a category URL.","required_params":["category_id"],"optional_params":["page","limit","query"],"params":[{"name":"category_id","type":"string","required":true,"description":"Numeric category id (806), or a bestprice.gr category URL.","on_invalid":"reject","example":"806","aliases":["category","cid","url"]},{"name":"query","type":"string","required":false,"description":"Optional keyword to narrow the category.","on_invalid":"ignore","example":"iphone","aliases":["q"]},{"name":"page","type":"integer","required":false,"description":"1-based page of the grid (24 products a page).","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows to return from the page (1-24). The source serves 24 a page; use `page` for more.","on_invalid":"ignore","default":24,"minimum":1,"maximum":24}],"returns":"products[] (same shape as search), page, limit, category_id","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"bing","category":{"id":"search-seo","title":"Search & SEO"},"title":"Bing Search API — web, news & video search results (SERP scraper)","version":"2.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/bing/v1","spec_available":true,"actions":[{"name":"search","description":"Web search results — ranked organic pages with title, URL, snippet, answer box and related searches. Filter by market/language (mkt or gl/hl), SafeSearch and recency (freshness), with offset pagination. Every result set is checked against your query before it is returned: if the index answers with pages that do not match what you asked, the request is served from another index instead, and if no index can answer it you get an explicit 404 rather than confident-looking wrong rows. The share of returned rows that carry your query terms is published as meta.relevance.","required_params":["q"],"optional_params":["engine","depth","mkt","gl","hl","count","page","first","safe","freshness","device"],"params":[{"name":"q","type":"string","required":true,"description":"Search query (the keywords to look up).","on_invalid":"reject","example":"best laptop 2026","aliases":["query","keyword"]},{"name":"engine","type":"enum","required":false,"description":"Which search index to query. Leave on auto. Bing is kept for callers who explicitly want it, but it ignores search operators and matches individual words rather than the whole query, so it returns dictionary and generic pages for many real queries.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Best available index (default). Currently Brave, which applies search operators and returns relevant results for company and product queries."},{"value":"brave","label":"Brave Search — applies search operators such as site:example.com and \"exact phrase\"."},{"value":"bing","label":"Bing — good for plain keywords; it ignores operators."},{"value":"gnews","label":"Google News RSS — a keyless door into GOOGLE's index. Despite the name it is not a news index: site: and \"exact phrase\" both apply, and it returns ordinary web pages. Every row carries a publication date (100% coverage vs Brave's ~15%), so use it when you need to know HOW OLD a result is. Trade-off: no snippet, and thinner than Brave on quoted phrases — it complements Brave rather than replacing it (measured overlap: 8%)."},{"value":"gemini","label":"Google's own index, reached through Google's Gemini grounding API. The only backend here that supports date operators: after:2026-06-01 and before:2020-01-01 both work, which no other index on this endpoint offers. It is also the narrowest: about 5 results per request (raise it with depth=deep), each carrying a URL and a source domain but no title, snippet or date, and site: is dropped before the search runs — the queries_run field in the response shows you exactly what Google searched. Slower than the other backends: seconds, not milliseconds."},{"value":"yandex","label":"Yandex — currently unavailable (coming soon)"}],"default":"auto","example":"auto"},{"name":"depth","type":"enum","required":false,"description":"How hard the gemini backend should work on one request. Ignored by the other search backends.","on_invalid":"ignore","allowed_values":[{"value":"exact","label":"Run your query once and return what it found — about 5 results in roughly 10 seconds."},{"value":"deep","label":"Keep searching around your query and return everything found. Typically tens of results (a live call returned 46 from 25 searches in 33 seconds). Three trade-offs: it is slow, a broad query can run long enough to time out (retry, or narrow the query), and the extra results come from wording the search differently, so they drift away from your exact query."}],"default":"exact","example":"exact"},{"name":"mkt","type":"string","required":false,"description":"Bing market as lang-COUNTRY (e.g. en-US, en-GB, de-DE). This is what sets the locale. If omitted it is derived from gl + hl.","on_invalid":"ignore","example":"en-US","aliases":["market"]},{"name":"gl","type":"string","required":false,"description":"Country as a 2-letter ISO-3166 code (e.g. us, gb, de). Sending it routes the default `auto` engine to Bing, which is the index measured to honour it: on the same query, gl=in returns Indian sites and gl=us returns US ones. Brave ignores country entirely and is located by the request's own egress instead, so ask for `engine=brave` only when you do not care where the results are from.","on_invalid":"ignore","example":"us"},{"name":"hl","type":"string","required":false,"description":"Language as an ISO-639 code (e.g. en, de) — used to build mkt when mkt is absent.","on_invalid":"ignore","example":"en"},{"name":"count","type":"integer","required":false,"description":"Requested results (1-30; clamped). Note: Bing caps organic search results at ~10 per page regardless of count.","on_invalid":"ignore","example":10,"minimum":1,"maximum":30},{"name":"page","type":"integer","required":false,"description":"1-based page for offset pagination (best-effort: Bing's bare pagination is session/IP-sensitive and may repeat page 1).","on_invalid":"ignore","example":2,"minimum":1},{"name":"first","type":"integer","required":false,"description":"Explicit 1-based result offset (alternative to page; first=11 ~ page 2). Best-effort.","on_invalid":"ignore","example":11,"minimum":1},{"name":"safe","type":"enum","required":false,"description":"Bing SafeSearch level (search only). An unrecognized value is ignored.","on_invalid":"ignore","allowed_values":[{"value":"off","label":"No filtering"},{"value":"moderate","label":"Moderate"},{"value":"strict","label":"Strict"}],"example":"moderate"},{"name":"freshness","type":"enum","required":false,"description":"Restrict results to a recency window (Bing `qft` interval). Single-letter forms d/w/m are also accepted; an unrecognized value is ignored.","on_invalid":"ignore","allowed_values":[{"value":"day","label":"Past 24 hours"},{"value":"week","label":"Past 7 days"},{"value":"month","label":"Past 30 days"}],"example":"week","aliases":["time_range"]},{"name":"device","type":"enum","required":false,"description":"User-agent profile. Only 'mobile' changes behavior; any other value is desktop.","on_invalid":"ignore","allowed_values":[{"value":"desktop","label":"Desktop user-agent (default)"},{"value":"mobile","label":"Mobile user-agent"}],"example":"desktop"}],"returns":"engine, query, mkt, page_offset, total_estimate, count, results[] (position/title/url/displayed_url/domain/favicon/snippet), related_searches[], answer_box{}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"best laptop 2026","gl":"us"}},{"name":"news","description":"Bing News results for a keyword — article title, source, URL and snippet, sorted by recency. Filter by market and a recency window (freshness).","required_params":["q"],"optional_params":["mkt","gl","hl","count","freshness"],"params":[{"name":"q","type":"string","required":true,"description":"Search query (the keywords to look up).","on_invalid":"reject","example":"best laptop 2026","aliases":["query","keyword"]},{"name":"mkt","type":"string","required":false,"description":"Bing market as lang-COUNTRY (e.g. en-US, en-GB, de-DE). This is what sets the locale. If omitted it is derived from gl + hl.","on_invalid":"ignore","example":"en-US","aliases":["market"]},{"name":"gl","type":"string","required":false,"description":"Country as a 2-letter ISO-3166 code (e.g. us, gb, de). Sending it routes the default `auto` engine to Bing, which is the index measured to honour it: on the same query, gl=in returns Indian sites and gl=us returns US ones. Brave ignores country entirely and is located by the request's own egress instead, so ask for `engine=brave` only when you do not care where the results are from.","on_invalid":"ignore","example":"us"},{"name":"hl","type":"string","required":false,"description":"Language as an ISO-639 code (e.g. en, de) — used to build mkt when mkt is absent.","on_invalid":"ignore","example":"en"},{"name":"count","type":"integer","required":false,"description":"Requested results (1-50; clamped). Note: Bing caps organic search results at ~10 per page regardless of count.","on_invalid":"ignore","example":10,"minimum":1,"maximum":50},{"name":"freshness","type":"enum","required":false,"description":"Restrict results to a recency window (Bing `qft` interval). Single-letter forms d/w/m are also accepted; an unrecognized value is ignored.","on_invalid":"ignore","allowed_values":[{"value":"day","label":"Past 24 hours"},{"value":"week","label":"Past 7 days"},{"value":"month","label":"Past 30 days"}],"example":"week","aliases":["time_range"]}],"returns":"engine, query, mkt, count, news[] (position/title/url/source/snippet)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"tesla","gl":"us"}},{"name":"videos","description":"Bing video search results — watch-page URL, thumbnail, duration and hosting platform (YouTube/Dailymotion/…) for every result; publisher/channel, view count, publish date and description when Bing exposes them. ~30 videos per page; paginate for more.","required_params":["q"],"optional_params":["mkt","gl","hl","page","first","safe"],"params":[{"name":"q","type":"string","required":true,"description":"Search query (the keywords to look up).","on_invalid":"reject","example":"best laptop 2026","aliases":["query","keyword"]},{"name":"mkt","type":"string","required":false,"description":"Bing market as lang-COUNTRY (e.g. en-US, en-GB, de-DE). This is what sets the locale. If omitted it is derived from gl + hl.","on_invalid":"ignore","example":"en-US","aliases":["market"]},{"name":"gl","type":"string","required":false,"description":"Country as a 2-letter ISO-3166 code (e.g. us, gb, de). Sending it routes the default `auto` engine to Bing, which is the index measured to honour it: on the same query, gl=in returns Indian sites and gl=us returns US ones. Brave ignores country entirely and is located by the request's own egress instead, so ask for `engine=brave` only when you do not care where the results are from.","on_invalid":"ignore","example":"us"},{"name":"hl","type":"string","required":false,"description":"Language as an ISO-639 code (e.g. en, de) — used to build mkt when mkt is absent.","on_invalid":"ignore","example":"en"},{"name":"page","type":"integer","required":false,"description":"1-based result page (each page ≈ 30 items).","on_invalid":"ignore","example":2,"minimum":1},{"name":"first","type":"integer","required":false,"description":"Explicit 1-based result offset (alternative to page; first=11 ~ page 2). Best-effort.","on_invalid":"ignore","example":11,"minimum":1},{"name":"safe","type":"enum","required":false,"description":"Bing SafeSearch level (search only). An unrecognized value is ignored.","on_invalid":"ignore","allowed_values":[{"value":"off","label":"No filtering"},{"value":"moderate","label":"Moderate"},{"value":"strict","label":"Strict"}],"example":"moderate"}],"returns":"engine, query, mkt, page_offset, count, videos[] (position/title/url/duration/platform always present; thumbnail_url/publisher/views/published/description best-effort)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"how to make pizza","gl":"us"}},{"name":"autocomplete","description":"Bing search autocomplete — query suggestions / typeahead from Bing's public suggest endpoint — fast and cheap. Useful for keyword research.","required_params":["q"],"optional_params":["mkt","gl","hl"],"params":[{"name":"q","type":"string","required":true,"description":"Search query (the keywords to look up).","on_invalid":"reject","example":"best laptop 2026","aliases":["query","keyword"]},{"name":"mkt","type":"string","required":false,"description":"Bing market as lang-COUNTRY (e.g. en-US, en-GB, de-DE). This is what sets the locale. If omitted it is derived from gl + hl.","on_invalid":"ignore","example":"en-US","aliases":["market"]},{"name":"gl","type":"string","required":false,"description":"Country as a 2-letter ISO-3166 code (e.g. us, gb, de). Sending it routes the default `auto` engine to Bing, which is the index measured to honour it: on the same query, gl=in returns Indian sites and gl=us returns US ones. Brave ignores country entirely and is located by the request's own egress instead, so ask for `engine=brave` only when you do not care where the results are from.","on_invalid":"ignore","example":"us"},{"name":"hl","type":"string","required":false,"description":"Language as an ISO-639 code (e.g. en, de) — used to build mkt when mkt is absent.","on_invalid":"ignore","example":"en"}],"returns":"engine, query, mkt, count, suggestions[] (ordered list of Bing query suggestions)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"best lap","gl":"us"}}]},{"name":"blocket","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Blocket API — Nordic second-hand classifieds (Blocket Sweden, FINN Norway, Tori Finland, DBA Denmark): search listings, read the full listing and browse categories, in local currency. No account, no browser; private sellers' data stays private.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/blocket/v1","spec_available":true,"actions":[{"name":"search","description":"Search second-hand listings on Blocket (se), FINN (no), Tori (fi) or DBA (dk) by keyword, category or region: listing id, title, price in local currency (null for give-aways), free/give-away flag, municipality, publication time, private or business seller, shipping and buy-now availability, brand, images and attributes, with the true total and category/region counts. Filter by price, condition, seller type, ad type, shipping and ads published today; sort by relevance, newest or price.","required_params":[],"optional_params":["query","country","category","location","page","sort","price_min","price_max","condition","seller_type","listing_type","shipping","published_today","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword, in the site's language (cykel, sykkel, polkupyörä, cykel). Optional when `category` or `location` is given.","on_invalid":"reject","example":"cykel","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Nordic marketplace: se = Blocket, no = FINN torget, fi = Tori, dk = DBA. Prices come back in that country's currency; listing ids belong to one site.","on_invalid":"reject","allowed_values":[{"value":"se","label":"Sweden — Blocket (SEK)"},{"value":"no","label":"Norway — FINN torget (NOK)"},{"value":"fi","label":"Finland — Tori (EUR)"},{"value":"dk","label":"Denmark — DBA (DKK)"}],"default":"se","example":"se","aliases":["site","market"]},{"name":"category","type":"string","required":false,"description":"Category code from `categories` or a search's `category_facets` — 0.<id> (top level, e.g. 0.69 sport), 1.<id>.<id> (sub-category) or 2.<id>.<id>.<id> (leaf, e.g. 2.69.3963.257 bicycles). The codes are shared by all four sites; the names are localised.","on_invalid":"reject","example":"0.69"},{"name":"location","type":"string","required":false,"description":"Region code from a search's `region_facets` (e.g. 0.300001 Stockholm on Blocket, 0.20003 Akershus on FINN). Region codes are per country.","on_invalid":"reject","example":"0.300001"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-50 (53 listings per page). The sites stop at page 50 whatever the total.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Order of results. Anything else is rejected (the sites silently fall back to relevance).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Most relevant (site default)"},{"value":"newest","label":"Newest first"},{"value":"price_asc","label":"Lowest price first — give-away ads come first"},{"value":"price_desc","label":"Highest price first"}],"default":"relevance"},{"name":"price_min","type":"integer","required":false,"description":"Lowest price, whole units of the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price, whole units of the country's currency.","on_invalid":"reject","minimum":0},{"name":"condition","type":"enum","required":false,"description":"Item condition, on the sites' shared five-step scale.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New, unused"},{"value":"like_new","label":"Like new"},{"value":"good","label":"Good, gently used"},{"value":"fair","label":"Fair, visibly used"},{"value":"needs_repair","label":"Needs repair"}]},{"name":"seller_type","type":"enum","required":false,"description":"Only private sellers or only businesses.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private person"},{"value":"business","label":"Business / shop"}]},{"name":"listing_type","type":"enum","required":false,"description":"Kind of ad. Give-away ads have no price.","on_invalid":"reject","allowed_values":[{"value":"sell","label":"For sale"},{"value":"give_away","label":"Given away for free"},{"value":"wanted","label":"Wanted (buyer ads)"}]},{"name":"shipping","type":"enum","required":false,"description":"Only ads that can be shipped through the site's own delivery service, or only free shipping.","on_invalid":"reject","allowed_values":[{"value":"shipping","label":"Can be shipped (Blocket Frakt / FINN Fiks ferdig / ToriDiili / DBA Fiks færdig)"},{"value":"free_shipping","label":"Seller pays shipping"}]},{"name":"published_today","type":"boolean","required":false,"description":"Only ads published today.","on_invalid":"reject"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, url, price (number, null when none is published or the ad is a give-away), currency, is_free, listing_type (sell|give_away|wanted), listing_type_label, location (municipality), coordinates{lat, lon} (business sellers, or with include_pii), listed_at (ISO, UTC), seller_type (private|business), seller_name (businesses only), brand, shipping_available, buy_now, free_shipping, image, images[], image_count, attributes[]{id, label, value}, labels[]}, count, total_results, page, last_page, has_more, sort_applied, filters_applied[]{filter, label, values}, category_facets[]{category, name, count}, region_facets[]{location, name, count}, country, site, currency, query","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"cykel","country":"se"}},{"name":"listing","description":"The full listing by id or URL: title, full description, price and currency, give-away flag, status (active or sold), condition on the five-step scale, category path with its search code, all attributes (size, brand, model…), every image with dimensions, postal code and city, last-edited time, shipping and buy-now availability, and the seller — for businesses the shop name, organisation id, company registry link, address, website and their other listings; for private sellers only the seller type.","required_params":["listing_id"],"optional_params":["country","max_rotations"],"params":[{"name":"listing_id","type":"string","required":true,"description":"Listing id (the number at the end of …/recommerce/forsale/item/26612110) or the full listing URL — a URL also sets the country.","on_invalid":"reject","example":"26612110","aliases":["id","ad_id","item_id","finnkode","url"]},{"name":"country","type":"enum","required":false,"description":"Which Nordic marketplace: se = Blocket, no = FINN torget, fi = Tori, dk = DBA. Prices come back in that country's currency; listing ids belong to one site.","on_invalid":"reject","allowed_values":[{"value":"se","label":"Sweden — Blocket (SEK)"},{"value":"no","label":"Norway — FINN torget (NOK)"},{"value":"fi","label":"Finland — Tori (EUR)"},{"value":"dk","label":"Denmark — DBA (DKK)"}],"default":"se","example":"se","aliases":["site","market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{listing_id, title, url, status (active|sold|inactive), status_label, price (null for give-aways or when none is published), currency, is_free, listing_type, listing_type_label, condition{code (new|like_new|good|fair|needs_repair), label, value_id}, description (phones/e-mails redacted unless include_pii), category, category_path[]{id, name}, category_search_code, attributes[]{id, label, value, value_id}, images[]{url, width, height}, image_count, location{postal_code, city, country_code, street_address, lat, lon} (street/coordinates for businesses or with include_pii), edited_at, seller{type, id, name (businesses), organisation_id, shop_url, website_url, company_registry_url, logo_url, address{street, city, postal_code}, verified_identity, has_phone, phone (include_pii only), selling_points[]}, shipping{shipping_available, buy_now, free_shipping}, is_webstore, seller_other_listings[]{listing_id, title, price, location, url, image}, country, site}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"The marketplace category tree of one site with live listing counts — three levels, each node with the code to pass as `category` to search. Optionally counted for a keyword.","required_params":[],"optional_params":["country","query","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Which Nordic marketplace: se = Blocket, no = FINN torget, fi = Tori, dk = DBA. Prices come back in that country's currency; listing ids belong to one site.","on_invalid":"reject","allowed_values":[{"value":"se","label":"Sweden — Blocket (SEK)"},{"value":"no","label":"Norway — FINN torget (NOK)"},{"value":"fi","label":"Finland — Tori (EUR)"},{"value":"dk","label":"Denmark — DBA (DKK)"}],"default":"se","example":"se","aliases":["site","market"]},{"name":"query","type":"string","required":false,"description":"Optional keyword: counts are then for that keyword.","on_invalid":"reject","example":"cykel","aliases":["q"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"categories[]{category, name, count, level, search_param, children[]}, count, total_results, region_facets[]{location, name, count}, country, site, query","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"bluesky","category":{"id":"social","title":"Social Media"},"title":"Bluesky API scraper — public Bluesky profiles, posts, threads, replies, likes, reposts, quotes, followers/following, lists, custom feeds and starter packs, plus authenticated post search and timeline (AT Protocol / bsky.app)","version":"0.3.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/bluesky/v1","spec_available":true,"actions":[{"name":"profile","description":"actor profile: did/handle/displayName/desc/followers/follows/posts counts/avatar/banner/labels (+ batch via 'actors' <=25). Requires actor OR actors (engine-enforced; required_params=() so the actors-only batch isn't rejected by the gateway literal-key validator).","required_params":[],"optional_params":["actor","actors"],"params":[{"name":"actor","type":"string","required":false,"description":"A Bluesky account — its handle (e.g. bsky.app), a did:plc:… DID, or a bsky.app/profile/<…> URL. The AppView resolves all three.","on_invalid":"reject","example":"bsky.app","aliases":["handle","did"]},{"name":"actors","type":"array","required":false,"description":"Batch mode: up to 25 handles/DIDs (array or comma-separated string). When given, returns a profiles[] batch instead of a single profile.","on_invalid":"ignore","example":["bsky.app","jay.bsky.team"]}],"returns":"single: did, handle, display_name, description, followers_count, follows_count, posts_count, avatar, banner, labels, verified, pinned_post — OR (with `actors`) profiles[] + count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"actor":"bsky.app"}},{"name":"author_feed","description":"an actor's posts (full record+embed+counts), cursor-paginated; filter=posts_no_replies|posts_with_replies|posts_with_media|posts_and_author_threads","required_params":["actor"],"optional_params":["limit","filter","cursor"],"params":[{"name":"actor","type":"string","required":true,"description":"A Bluesky account — its handle (e.g. bsky.app), a did:plc:… DID, or a bsky.app/profile/<…> URL. The AppView resolves all three.","on_invalid":"reject","example":"bsky.app","aliases":["handle","did"]},{"name":"filter","type":"enum","required":false,"description":"Which of the author's posts to include.","on_invalid":"reject","allowed_values":[{"value":"posts_no_replies","label":"Posts, no replies (default)"},{"value":"posts_with_replies","label":"Posts and replies"},{"value":"posts_with_media","label":"Posts with media only"},{"value":"posts_and_author_threads","label":"Posts and the author's own threads"}],"default":"posts_no_replies","example":"posts_with_replies"},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-200, default 30). Auto-paginated; larger values are clamped to 200.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":200},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"posts[] (uri, text, author, like/repost/reply/quote counts, embed, tags), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"actor":"bsky.app","limit":30}},{"name":"search_actors","description":"search users by name/handle/bio (cursor); typeahead=true for fast suggest","required_params":["q"],"optional_params":["limit","cursor","typeahead"],"params":[{"name":"q","type":"string","required":true,"description":"Search query (keywords; also accepted as 'query').","on_invalid":"reject","example":"news","aliases":["query"]},{"name":"typeahead","type":"boolean","required":false,"description":"true = fast as-you-type suggestions (no pagination); false = full search.","on_invalid":"ignore","example":false},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-100, default 25). Auto-paginated; larger values are clamped to 100.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"actors[] (did, handle, display_name, description, avatar, verified), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"news","limit":25}},{"name":"thread","description":"a post + its reply tree (recursive) + parent","required_params":["uri"],"optional_params":["depth","parent_height"],"params":[{"name":"uri","type":"string","required":true,"description":"The post's at:// AT-URI (or a bsky.app/profile/<did>/post/<rkey> URL). Get it from a post's `uri` field.","on_invalid":"reject","example":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l","aliases":["post"]},{"name":"depth","type":"integer","required":false,"description":"How many levels of replies to include below the post (0-100).","on_invalid":"ignore","default":6,"example":6,"minimum":0,"maximum":100},{"name":"parent_height","type":"integer","required":false,"description":"How many parent posts above the target to include (0-100).","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":100}],"returns":"root{post, replies[] (recursive)}, parent, reply_total","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"uri":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l","depth":3}},{"name":"post_detail","description":"hydrate one or more posts by at:// URI (<=25): record/embed/like+repost+reply+quote counts","required_params":["uris"],"optional_params":[],"params":[{"name":"uris","type":"array","required":true,"description":"One or more post at:// AT-URIs (array or comma-separated string, up to 25). A single 'uri' is also accepted.","on_invalid":"reject","example":["at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"],"aliases":["uri"]}],"returns":"posts[] (full normalized post each), count, requested","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"uris":["at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l"]}},{"name":"likes","description":"actors who liked a post (cursor); cid auto-used if given","required_params":["uri"],"optional_params":["cid","limit","cursor"],"params":[{"name":"uri","type":"string","required":true,"description":"The post's at:// AT-URI (or a bsky.app/profile/<did>/post/<rkey> URL). Get it from a post's `uri` field.","on_invalid":"reject","example":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l","aliases":["post"]},{"name":"cid","type":"string","required":false,"description":"Optional post content-id (a post's `cid`). Speeds up the lookup; auto-resolved from the URI when omitted.","on_invalid":"ignore","example":"bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq"},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-500, default 50). Auto-paginated; larger values are clamped to 500.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":500},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"likes[] (actor did/handle/display_name + liked_at), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"uri":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l","cid":"bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq","limit":25}},{"name":"reposts","description":"actors who reposted a post (cursor)","required_params":["uri"],"optional_params":["cid","limit","cursor"],"params":[{"name":"uri","type":"string","required":true,"description":"The post's at:// AT-URI (or a bsky.app/profile/<did>/post/<rkey> URL). Get it from a post's `uri` field.","on_invalid":"reject","example":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l","aliases":["post"]},{"name":"cid","type":"string","required":false,"description":"Optional post content-id (a post's `cid`). Speeds up the lookup; auto-resolved from the URI when omitted.","on_invalid":"ignore","example":"bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq"},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-500, default 50). Auto-paginated; larger values are clamped to 500.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":500},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"reposted_by[] (actor did/handle/display_name), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"uri":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l","cid":"bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq","limit":25}},{"name":"followers","description":"actors following the subject (cursor)","required_params":["actor"],"optional_params":["limit","cursor"],"params":[{"name":"actor","type":"string","required":true,"description":"A Bluesky account — its handle (e.g. bsky.app), a did:plc:… DID, or a bsky.app/profile/<…> URL. The AppView resolves all three.","on_invalid":"reject","example":"bsky.app","aliases":["handle","did"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-2000, default 100). Auto-paginated; larger values are clamped to 2000.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":2000},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"subject, followers[] (actor objects), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"actor":"bsky.app","limit":50}},{"name":"follows","description":"actors the subject follows (cursor)","required_params":["actor"],"optional_params":["limit","cursor"],"params":[{"name":"actor","type":"string","required":true,"description":"A Bluesky account — its handle (e.g. bsky.app), a did:plc:… DID, or a bsky.app/profile/<…> URL. The AppView resolves all three.","on_invalid":"reject","example":"bsky.app","aliases":["handle","did"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-2000, default 100). Auto-paginated; larger values are clamped to 2000.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":2000},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"subject, follows[] (actor objects), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"actor":"bsky.app","limit":10}},{"name":"quotes","description":"Accounts/posts that QUOTE a given post (quote-posts), cursor-paginated. The other half of a post's engagement alongside likes and reposts.","required_params":["uri"],"optional_params":["cid","limit","cursor"],"params":[{"name":"uri","type":"string","required":true,"description":"The post's at:// AT-URI (or a bsky.app/profile/<did>/post/<rkey> URL). Get it from a post's `uri` field.","on_invalid":"reject","example":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l","aliases":["post"]},{"name":"cid","type":"string","required":false,"description":"Optional post content-id (a post's `cid`). Speeds up the lookup; auto-resolved from the URI when omitted.","on_invalid":"ignore","example":"bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq"},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-200, default 50). Auto-paginated; larger values are clamped to 200.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":200},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"posts[] (each quoting post, full normalized), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"uri":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.post/3l6oveex3ii2l","cid":"bafyreicnt42y6vo6pfpvyro234ac4o6ijug6adwwrh7awflgrqlt4zibxq","limit":25}},{"name":"suggested_follows","description":"Accounts suggested from a given account — Bluesky's 'who to follow next' / similar-accounts set. Not paginated (a fixed suggestion set, ~10-50 actors).","required_params":["actor"],"optional_params":["limit"],"params":[{"name":"actor","type":"string","required":true,"description":"A Bluesky account — its handle (e.g. bsky.app), a did:plc:… DID, or a bsky.app/profile/<…> URL. The AppView resolves all three.","on_invalid":"reject","example":"bsky.app","aliases":["handle","did"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-100, default 25). Auto-paginated; larger values are clamped to 100.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"suggestions[] (actor objects), count, is_fallback","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"actor":"bsky.app"}},{"name":"lists","description":"The curated/moderation lists an account CREATED (user-curated lists + mute/block mod-lists), cursor-paginated.","required_params":["actor"],"optional_params":["limit","cursor"],"params":[{"name":"actor","type":"string","required":true,"description":"A Bluesky account — its handle (e.g. bsky.app), a did:plc:… DID, or a bsky.app/profile/<…> URL. The AppView resolves all three.","on_invalid":"reject","example":"bsky.app","aliases":["handle","did"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-500, default 50). Auto-paginated; larger values are clamped to 500.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":500},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"lists[] (uri, name, purpose, description, list_item_count, creator), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"actor":"nytimes.com","limit":10}},{"name":"list","description":"A single list's metadata plus its MEMBERS (the accounts on the list), members cursor-paginated.","required_params":["list"],"optional_params":["limit","cursor"],"params":[{"name":"list","type":"string","required":true,"description":"A list's at:// AT-URI (e.g. at://did:plc:…/app.bsky.graph.list/<rkey>), or a bsky.app/profile/<did>/lists/<rkey> URL. Get it from the `lists` action.","on_invalid":"reject","example":"at://did:plc:eclio37ymobqex2ncko63h4r/app.bsky.graph.list/3lbl2hyzmfy2u","aliases":["list_uri","uri"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-2000, default 100). Auto-paginated; larger values are clamped to 2000.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":2000},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"list (metadata), members[] (actor objects), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"list":"at://did:plc:eclio37ymobqex2ncko63h4r/app.bsky.graph.list/3lbl2hyzmfy2u","limit":20}},{"name":"list_feed","description":"The feed of posts authored by the members of a list (a list used as a custom timeline), cursor-paginated.","required_params":["list"],"optional_params":["limit","cursor"],"params":[{"name":"list","type":"string","required":true,"description":"A list's at:// AT-URI (e.g. at://did:plc:…/app.bsky.graph.list/<rkey>), or a bsky.app/profile/<did>/lists/<rkey> URL. Get it from the `lists` action.","on_invalid":"reject","example":"at://did:plc:eclio37ymobqex2ncko63h4r/app.bsky.graph.list/3lbl2hyzmfy2u","aliases":["list_uri","uri"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-200, default 30). Auto-paginated; larger values are clamped to 200.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":200},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"posts[] (from list members, full normalized), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"list":"at://did:plc:eclio37ymobqex2ncko63h4r/app.bsky.graph.list/3lbl2hyzmfy2u","limit":15}},{"name":"actor_feeds","description":"The custom feed generators an account CREATED (its published feeds), cursor-paginated.","required_params":["actor"],"optional_params":["limit","cursor"],"params":[{"name":"actor","type":"string","required":true,"description":"A Bluesky account — its handle (e.g. bsky.app), a did:plc:… DID, or a bsky.app/profile/<…> URL. The AppView resolves all three.","on_invalid":"reject","example":"bsky.app","aliases":["handle","did"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-500, default 50). Auto-paginated; larger values are clamped to 500.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":500},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"feeds[] (uri, display_name, description, like_count, creator), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"actor":"bsky.app","limit":10}},{"name":"feed_generator","description":"One custom feed generator's metadata plus its live online/valid status (is the feed service up).","required_params":["feed"],"optional_params":[],"params":[{"name":"feed","type":"string","required":true,"description":"A feed-generator's at:// URI (…/app.bsky.feed.generator/<rkey>) or its bsky.app/profile/<id>/feed/<rkey> share URL. Get it from `actor_feeds` or `popular_feeds`.","on_invalid":"reject","example":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot","aliases":["feed_uri","uri"]}],"returns":"feed-generator view + is_online, is_valid","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"feed":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot"}},{"name":"popular_feeds","description":"Discover popular custom feed generators — pass `q` to search feeds by name/topic, or omit for the platform-wide popular list. Cursor-paginated.","required_params":[],"optional_params":["q","limit","cursor"],"params":[{"name":"q","type":"string","required":false,"description":"Optional search query to filter popular feeds by name/topic. Omit for the platform-wide popular list.","on_invalid":"ignore","example":"news","aliases":["query"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-100, default 50). Auto-paginated; larger values are clamped to 100.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"feeds[] (feed-generator views), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"news","limit":10}},{"name":"get_feed","description":"The posts served BY a custom feed generator (e.g. a Discover/What's-Hot/topic feed) by its at:// URI, cursor-paginated. Public — no account required.","required_params":["feed"],"optional_params":["limit","cursor"],"params":[{"name":"feed","type":"string","required":true,"description":"A feed-generator's at:// URI (e.g. a custom/discover feed). Get it from a profile's associated feedgens or a feed's share URL.","on_invalid":"reject","example":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot","aliases":["feed_uri","uri"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-200, default 30). Auto-paginated; larger values are clamped to 200.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":200},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"feed, posts[] from that feed generator, count, cursor","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"feed":"at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/whats-hot","limit":20}},{"name":"starter_packs","description":"The starter packs an account CREATED (shareable onboarding bundles of accounts + feeds), cursor-paginated.","required_params":["actor"],"optional_params":["limit","cursor"],"params":[{"name":"actor","type":"string","required":true,"description":"A Bluesky account — its handle (e.g. bsky.app), a did:plc:… DID, or a bsky.app/profile/<…> URL. The AppView resolves all three.","on_invalid":"reject","example":"bsky.app","aliases":["handle","did"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-500, default 50). Auto-paginated; larger values are clamped to 500.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":500},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"starter_packs[] (uri, name, description, creator, list_item_count, join counts), count, cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"actor":"bsky.app","limit":10}},{"name":"starter_pack","description":"One starter pack's full detail: its underlying list, sample member profiles and any bundled feeds.","required_params":["starter_pack"],"optional_params":[],"params":[{"name":"starter_pack","type":"string","required":true,"description":"A starter-pack at:// URI (…/app.bsky.graph.starterpack/<rkey>) or a bsky.app/starter-pack/<id>/<rkey> URL. Get it from the `starter_packs` action.","on_invalid":"reject","example":"at://did:plc:ragtjsm2j2vknwkz3zp4oxrd/app.bsky.graph.starterpack/3m4j33zq7sz2m","aliases":["starterPack","uri"]}],"returns":"starter-pack view + list, members[] (sample), feeds[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"starter_pack":"at://did:plc:ragtjsm2j2vknwkz3zp4oxrd/app.bsky.graph.starterpack/3m4j33zq7sz2m"}},{"name":"search_posts","description":"Search Bluesky posts by keyword or hashtag — filter by sort order, date range, author, language, domain or tag. Requires an app-password; returns a clear error if none is configured.","required_params":["q"],"optional_params":["sort","limit","cursor","since","until","author","mentions","lang","domain","url","tag"],"params":[{"name":"q","type":"string","required":true,"description":"Search query (keywords; also accepted as 'query').","on_invalid":"reject","example":"news","aliases":["query"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering for post search.","on_invalid":"reject","allowed_values":[{"value":"top","label":"Top / most relevant (default)"},{"value":"latest","label":"Most recent first"}],"default":"top","example":"latest"},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-100, default 25). Auto-paginated; larger values are clamped to 100.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""},{"name":"since","type":"string","required":false,"description":"Only posts at/after this time (ISO-8601 or YYYY-MM-DD).","on_invalid":"ignore","example":"2024-01-01T00:00:00Z"},{"name":"until","type":"string","required":false,"description":"Only posts at/before this time (ISO-8601 or YYYY-MM-DD).","on_invalid":"ignore","example":"2024-12-31T23:59:59Z"},{"name":"author","type":"string","required":false,"description":"Restrict to posts by this account (handle or DID).","on_invalid":"ignore","example":"bsky.app"},{"name":"mentions","type":"string","required":false,"description":"Restrict to posts mentioning this account (handle or DID).","on_invalid":"ignore","example":"bsky.app"},{"name":"lang","type":"string","required":false,"description":"Restrict to posts in this language (BCP-47 code, e.g. en, tr, ja).","on_invalid":"ignore","example":"en"},{"name":"domain","type":"string","required":false,"description":"Restrict to posts linking to this domain.","on_invalid":"ignore","example":"nasa.gov"},{"name":"url","type":"string","required":false,"description":"Restrict to posts linking to this exact URL.","on_invalid":"ignore","example":"https://bsky.app"},{"name":"tag","type":"string","required":false,"description":"Restrict to posts with this hashtag (without the #).","on_invalid":"ignore","example":"art"}],"returns":"posts[] (full normalized post each), hits_total, count, cursor","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"bluesky","sort":"top","limit":25}},{"name":"get_actor_likes","description":"posts an actor liked (authed; the AppView serves the authenticated account's own likes). Defaults to the logged-in handle.","required_params":[],"optional_params":["actor","limit","cursor"],"params":[{"name":"actor","type":"string","required":false,"description":"A Bluesky account — its handle (e.g. bsky.app), a did:plc:… DID, or a bsky.app/profile/<…> URL. The AppView resolves all three.","on_invalid":"reject","example":"bsky.app","aliases":["handle","did"]},{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-200, default 30). Auto-paginated; larger values are clamped to 200.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":200},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"actor, posts[] the account liked, count, cursor (authed)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":20}},{"name":"timeline","description":"the authenticated account's home timeline (authed)","required_params":[],"optional_params":["limit","cursor","algorithm"],"params":[{"name":"limit","type":"integer","required":false,"description":"Max records to return (1-200, default 30). Auto-paginated; larger values are clamped to 200.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":200},{"name":"algorithm","type":"string","required":false,"description":"Optional timeline algorithm key (server-defined; omit for the default).","on_invalid":"ignore","example":"reverse-chronological"},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's `cursor`. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"posts[] from the account's home timeline, count, cursor (authed)","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":20}}]},{"name":"bol","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"bol.com API scraper - search, product detail, marketplace seller offers and category browse for bol.com, the leading online retailer in the Netherlands and Belgium. Prices in EUR, Dutch and French storefronts, no account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/bol/v1","spec_available":true,"actions":[{"name":"search","description":"Search bol.com by keyword, paginated. Every row carries the product id and url, title, brand, the current price and bol's own 90-day reference price, the discount, the seller behind the buy-box (bol itself or a marketplace partner), the delivery promise, the rating and review count, the category path, the EAN when bol publishes one, and whether the row is a paid placement. The response also returns the ids of the categories the results fall into, which is what `category` takes.","required_params":["query"],"optional_params":["page","sort","market","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword, in the storefront's language (Dutch for nl and be, French for be-fr).","on_invalid":"reject","example":"koptelefoon","aliases":["q","searchtext","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based, ~30 products per page. bol serves at most 10 search pages for a query - page 11 comes back empty - so narrow the query rather than paging past it. Category browse pages go much deeper (see `total_pages`).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":10},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Only these three are published because only these three were measured to actually re-order bol's results; every other ordering the site offers is applied client-side and is not reachable from a request.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"bol's own default order"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"}],"example":"price_asc","aliases":["order","sorteren"]},{"name":"market","type":"enum","required":false,"description":"Which bol storefront to read: nl (bol.com/nl/nl, Dutch) - be (bol.com/be/nl, Belgian Dutch) - be-fr (bol.com/be/fr, Belgian French). One catalogue, three localised storefronts; prices are in EUR on all three and can differ between them.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - bol.com/nl/nl, Dutch, EUR"},{"value":"be","label":"Belgium (Dutch) - bol.com/be/nl, EUR"},{"value":"be-fr","label":"Belgium (French) - bol.com/be/fr, EUR"}],"default":"nl","example":"nl","aliases":["country","site"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a refused request (1-10, default 4). Leave unchanged for typical use.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"products[]{product_id, title, url, brand{}, price, currency, reference_price, discount_percent, condition, seller{id, name, is_bol, rating, rating_count (null — bol publishes a seller score, not a count), top_seller}, delivery{description, arrives_by, shipping_cost, within_48h}, low_stock, promotions[], rating, review_count, image, category, category_path[], ean, highlights[], sponsored, offers_url}, count, page, total_results, total_results_is_estimate, total_pages, categories[]{id, name, url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"koptelefoon"}},{"name":"product/detail","description":"Full bol.com product by id (or by its url): title, brand, EAN and MPN, the buy-box price with bol's 90-day reference price and the discount, the seller, the delivery promise, the full image gallery, the complete specification table, the description as plain text, the category breadcrumb, the average rating and review count, and how many competing offers exist. Review TEXT is not returned - bol serves it only to a signed-in session, and this endpoint never invents it.","required_params":["product_id"],"optional_params":["market","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"bol product id - the long number at the end of a product url (bol.com/nl/nl/p/<slug>/9300000180008278/). A full product url works too: the words in the path are decoration and the number is the key. Every row `search` and `category` return carries both.","on_invalid":"reject","example":"9300000180008278","aliases":["id","url","product_url","sku","ean_url"]},{"name":"market","type":"enum","required":false,"description":"Which bol storefront to read: nl (bol.com/nl/nl, Dutch) - be (bol.com/be/nl, Belgian Dutch) - be-fr (bol.com/be/fr, Belgian French). One catalogue, three localised storefronts; prices are in EUR on all three and can differ between them.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - bol.com/nl/nl, Dutch, EUR"},{"value":"be","label":"Belgium (Dutch) - bol.com/be/nl, EUR"},{"value":"be-fr","label":"Belgium (French) - bol.com/be/fr, EUR"}],"default":"nl","example":"nl","aliases":["country","site"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a refused request (1-10, default 4). Leave unchanged for typical use.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"product{product_id, title, subtitle, url, brand{id, name, url}, ean, mpn, model, colour, price, currency, reference_price, discount_percent, discount_amount, condition, seller{}, delivery{}, low_stock, promotions[], rating, review_count, rating_scale (null — bol publishes no scale for the product rating; its SELLER score is a separate 1-10 scale on seller.rating), description, highlights[], specifications[]{group, key, name, values[]}, images[], video, category, category_path[], breadcrumb[]{id, name, url}, offers_url, offer_count, related_products[]}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"9300000180008278"}},{"name":"product/offers","description":"Every seller offering one bol.com product, with that seller's price, condition, delivery promise, shipping cost and bol seller rating - bol is a marketplace and this is the competing-offer table behind the buy-box, on bol's own price-overview page. Cheap: about 45 KB per call against 290 KB for the product page.","required_params":["product_id"],"optional_params":["market","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"bol product id - the long number at the end of a product url (bol.com/nl/nl/p/<slug>/9300000180008278/). A full product url works too: the words in the path are decoration and the number is the key. Every row `search` and `category` return carries both.","on_invalid":"reject","example":"9300000180008278","aliases":["id","url","product_url","sku","ean_url"]},{"name":"market","type":"enum","required":false,"description":"Which bol storefront to read: nl (bol.com/nl/nl, Dutch) - be (bol.com/be/nl, Belgian Dutch) - be-fr (bol.com/be/fr, Belgian French). One catalogue, three localised storefronts; prices are in EUR on all three and can differ between them.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - bol.com/nl/nl, Dutch, EUR"},{"value":"be","label":"Belgium (Dutch) - bol.com/be/nl, EUR"},{"value":"be-fr","label":"Belgium (French) - bol.com/be/fr, EUR"}],"default":"nl","example":"nl","aliases":["country","site"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a refused request (1-10, default 4). Leave unchanged for typical use.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"product{product_id, title, url, image}, offers[]{offer_id, price, currency, reference_price, discount_percent, condition, offer_type, seller{id, name, is_bol, rating, rating_count (null — bol publishes a seller score, not a count), top_seller}, delivery{description, arrives_by, shipping_cost, within_48h}, low_stock, promotions[]}, count, offer_counts{new, refurbished, secondhand}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"9300000180008278"}},{"name":"category","description":"Browse a bol.com category by its id, paginated - the same rich product row `search` returns, plus the category bol resolved and its breadcrumb. Category listings page far deeper than search does and their result total is exact rather than estimated.","required_params":["category_id"],"optional_params":["page","sort","market","max_rotations"],"params":[{"name":"category_id","type":"string","required":true,"description":"bol category id - the number in a category url (bol.com/nl/nl/l/laptops/4770/). A full category url works too. The NUMBER decides the category and the words are ignored, so /l/koptelefoons/4770/ really does serve Laptops; the response echoes the category bol resolved. `search` returns the ids of the categories its results fall into, under `categories`.","on_invalid":"reject","example":"4770","aliases":["id","category","url"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based, ~30 products per page. Category browse pages go deep - the response reports `total_pages`.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Only these three are published because only these three were measured to actually re-order bol's results; every other ordering the site offers is applied client-side and is not reachable from a request.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"bol's own default order"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"}],"example":"price_asc","aliases":["order","sorteren"]},{"name":"market","type":"enum","required":false,"description":"Which bol storefront to read: nl (bol.com/nl/nl, Dutch) - be (bol.com/be/nl, Belgian Dutch) - be-fr (bol.com/be/fr, Belgian French). One catalogue, three localised storefronts; prices are in EUR on all three and can differ between them.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - bol.com/nl/nl, Dutch, EUR"},{"value":"be","label":"Belgium (Dutch) - bol.com/be/nl, EUR"},{"value":"be-fr","label":"Belgium (French) - bol.com/be/fr, EUR"}],"default":"nl","example":"nl","aliases":["country","site"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a refused request (1-10, default 4). Leave unchanged for typical use.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"category{id, name, url, path[]}, products[]{...same row as search}, count, page, total_results, total_results_is_estimate, total_pages","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"category_id":"4770"}}]},{"name":"booking","category":{"id":"travel","title":"Travel & Lodging"},"title":"Booking.com API — hotel search, prices, availability, guest reviews & destination lookup (booking.com, global coverage)","version":"1.2.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/booking/v1","spec_available":true,"actions":[{"name":"hotels/search","description":"Search hotels in a destination for given dates (25 hotels per page, with prices, review scores, photos, room configurations). Supports sorting, price/star/rating/amenity filters and paging. Pass ?include_facets=1 to list every available filter and sorter for the destination.","required_params":[],"optional_params":["query","dest_id","dest_type","checkin","checkout","adults","rooms","children_ages","currency","page","sort_by","min_price","max_price","min_rating","stars","free_cancellation","breakfast_included","amenities","include_facets","include_raw"],"params":[{"name":"query","type":"string","required":false,"description":"Destination as free text — city, region or landmark. Provide query OR dest_id+dest_type.","on_invalid":"reject","example":"Paris"},{"name":"dest_id","type":"string","required":false,"description":"Advanced: Booking destination ID (unambiguous — bypasses the free-text lookup). Pair with dest_type.","on_invalid":"reject","example":"-755070"},{"name":"dest_type","type":"string","required":false,"description":"Advanced: the destination's type as Booking labels it. One of: city, region, district, landmark, airport, hotel, country.","on_invalid":"ignore","example":"city"},{"name":"checkin","type":"string","required":false,"description":"Check-in date (YYYY-MM-DD). Always pass real dates — prices and availability depend on them.","on_invalid":"reject","example":"2026-10-14"},{"name":"checkout","type":"string","required":false,"description":"Check-out date (YYYY-MM-DD).","on_invalid":"reject","example":"2026-10-16"},{"name":"adults","type":"integer","required":false,"description":"Number of adult guests.","on_invalid":"reject","default":2,"minimum":1,"maximum":30},{"name":"rooms","type":"integer","required":false,"description":"Number of rooms.","on_invalid":"reject","default":1,"minimum":1,"maximum":30},{"name":"children_ages","type":"string","required":false,"description":"Comma-separated ages of children (e.g. '5,9'). Adds child occupancy to the search/price. Omit for adults-only.","on_invalid":"ignore","example":"5,9"},{"name":"currency","type":"string","required":false,"description":"Price currency (ISO code: EUR, USD, GBP, TRY…).","on_invalid":"ignore","default":"EUR","example":"USD"},{"name":"page","type":"integer","required":false,"description":"Result page (25 hotels each). pagination.total in the response tells you how many results exist.","on_invalid":"ignore","default":1,"minimum":1,"maximum":40},{"name":"sort_by","type":"string","required":false,"description":"Sort order. One of: top_picks (default), price (low→high), price_desc (high→low), review_score, best_reviewed_and_price, stars_desc, stars_asc, distance.","on_invalid":"ignore","example":"price"},{"name":"min_price","type":"number","required":false,"description":"Minimum price per stay, in the chosen currency.","on_invalid":"ignore","example":50},{"name":"max_price","type":"number","required":false,"description":"Maximum price per stay, in the chosen currency.","on_invalid":"ignore","example":200},{"name":"min_rating","type":"number","required":false,"description":"Minimum guest review score (1–10). E.g. 8 = 'Very good+'.","on_invalid":"ignore","example":8,"minimum":1,"maximum":10},{"name":"stars","type":"string","required":false,"description":"Star rating(s) to include, comma-separated (1–5). E.g. '4,5' = 4- and 5-star only.","on_invalid":"ignore","example":"4,5"},{"name":"free_cancellation","type":"boolean","required":false,"description":"Only properties offering free cancellation.","on_invalid":"ignore","default":false},{"name":"breakfast_included","type":"boolean","required":false,"description":"Only properties where breakfast is included.","on_invalid":"ignore","default":false},{"name":"amenities","type":"string","required":false,"description":"Advanced: comma-separated Booking filter IDs (from ?include_facets=1 → available_filters). E.g. hotelfacility-107 (pool), roomfacility-11 (air-con).","on_invalid":"ignore","example":"hotelfacility-107,roomfacility-11"},{"name":"include_facets","type":"boolean","required":false,"description":"Also return available_sorters + available_filters for the destination (filter/sort discovery).","on_invalid":"ignore","default":false},{"name":"include_raw","type":"boolean","required":false,"description":"Include Booking's full raw payload per item (large). Default off — the normalized fields cover the common cases.","on_invalid":"ignore","default":false}],"returns":"items[]{hotel_id, page_name, name, description, url, location, price{amount, amount_unformatted, currency}, price_before_discount, review_score{score, review_count, label}, star_rating, photo, room_configurations, policies, badges} + count (25/page) + pagination{per_page, total, offset} + (with include_facets) available_sorters[] + available_filters[]","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"dest_id":"-755070","dest_type":"city","checkin":"2026-10-14","checkout":"2026-10-16"}},{"name":"hotels/detail","description":"Full hotel record: summary, rating breakdown, facilities, room types, surroundings, FAQ.","required_params":[],"optional_params":["page_name","country_code","hotel_url","checkin","checkout","adults","rooms","currency"],"params":[{"name":"page_name","type":"string","required":false,"description":"REQUIRED for hotels/detail & hotels/reviews (with country_code): the hotel's URL slug — booking.com/hotel/<country_code>/<page_name>.html. Copy page_name + country_code straight from a hotels/search result item (or pass the item's full url as hotel_url). A numeric hotel_id alone does NOT work — Booking detail pages are addressed by this slug.","on_invalid":"reject","example":"celine-taxim"},{"name":"country_code","type":"string","required":false,"description":"REQUIRED with page_name (for hotels/detail & hotels/reviews): the 2-letter country in the hotel URL (booking.com/hotel/<country_code>/…). Comes from the hotels/search result item alongside page_name.","on_invalid":"reject","example":"tr"},{"name":"hotel_url","type":"string","required":false,"description":"Full hotel URL (alternative to page_name+country_code) — the url field of a hotels/search result item.","on_invalid":"reject","example":"https://www.booking.com/hotel/tr/celine-taxim.html"},{"name":"checkin","type":"string","required":false,"description":"Check-in date (YYYY-MM-DD). Always pass real dates — prices and availability depend on them.","on_invalid":"reject","example":"2026-10-14"},{"name":"checkout","type":"string","required":false,"description":"Check-out date (YYYY-MM-DD).","on_invalid":"reject","example":"2026-10-16"},{"name":"adults","type":"integer","required":false,"description":"Number of adult guests.","on_invalid":"reject","default":2,"minimum":1,"maximum":30},{"name":"rooms","type":"integer","required":false,"description":"Number of rooms.","on_invalid":"reject","default":1,"minimum":1,"maximum":30},{"name":"currency","type":"string","required":false,"description":"Price currency (ISO code: EUR, USD, GBP, TRY…).","on_invalid":"ignore","default":"EUR","example":"USD"}],"returns":"hotel_id + name + summary + rating_breakdown + facilities[] + room_types[] + surroundings + faq[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{"page_name":"celine-taxim","country_code":"tr"}},{"name":"hotels/availability","description":"Visible room blocks (room, occupancy, price, cancellation policy, meal plan) for a destination's top hotel on given dates.","required_params":[],"optional_params":["query","dest_id","dest_type","checkin","checkout","hotel_id","adults","rooms","children_ages","currency"],"params":[{"name":"query","type":"string","required":false,"description":"Destination free text. Provide query OR dest_id+dest_type.","on_invalid":"reject","example":"Istanbul"},{"name":"dest_id","type":"string","required":false,"description":"Advanced: Booking destination ID (unambiguous — bypasses the free-text lookup). Pair with dest_type.","on_invalid":"reject","example":"-755070"},{"name":"dest_type","type":"string","required":false,"description":"Advanced: the destination's type as Booking labels it. One of: city, region, district, landmark, airport, hotel, country.","on_invalid":"ignore","example":"city"},{"name":"checkin","type":"string","required":false,"description":"Check-in date (YYYY-MM-DD). Always pass real dates — prices and availability depend on them.","on_invalid":"reject","example":"2026-10-14"},{"name":"checkout","type":"string","required":false,"description":"Check-out date (YYYY-MM-DD).","on_invalid":"reject","example":"2026-10-16"},{"name":"hotel_id","type":"integer","required":false,"description":"Pin to one hotel from the search results (default: the top result).","on_invalid":"ignore"},{"name":"adults","type":"integer","required":false,"description":"Number of adult guests.","on_invalid":"reject","default":2,"minimum":1,"maximum":30},{"name":"rooms","type":"integer","required":false,"description":"Number of rooms.","on_invalid":"reject","default":1,"minimum":1,"maximum":30},{"name":"children_ages","type":"string","required":false,"description":"Comma-separated ages of children (e.g. '5,9'). Adds child occupancy to the search/price. Omit for adults-only.","on_invalid":"ignore","example":"5,9"},{"name":"currency","type":"string","required":false,"description":"Price currency (ISO code: EUR, USD, GBP, TRY…).","on_invalid":"ignore","default":"EUR","example":"USD"}],"returns":"room_blocks[]{room_id, occupancy, final_price, original_price, free_cancellation_until, cancellation_type, available_count_hint, breakfast_included, meal_plan} + hotel_id + is_available + price","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"hotels/reviews","description":"Paginated, deduped guest reviews for one hotel (score, title, pros/cons text, owner reply, room type, stay dates, reviewer country, photos). Fetches ALL reviews by default; supports sorting and keyword search. The response also lists the available review filters (by score / language / customer type / season / topic).","required_params":[],"optional_params":["page_name","country_code","hotel_id","hotel_url","max_reviews","sort_by","keyword","review_page_size"],"params":[{"name":"page_name","type":"string","required":false,"description":"REQUIRED for hotels/detail & hotels/reviews (with country_code): the hotel's URL slug — booking.com/hotel/<country_code>/<page_name>.html. Copy page_name + country_code straight from a hotels/search result item (or pass the item's full url as hotel_url). A numeric hotel_id alone does NOT work — Booking detail pages are addressed by this slug.","on_invalid":"reject","example":"celine-taxim"},{"name":"country_code","type":"string","required":false,"description":"REQUIRED with page_name (for hotels/detail & hotels/reviews): the 2-letter country in the hotel URL (booking.com/hotel/<country_code>/…). Comes from the hotels/search result item alongside page_name.","on_invalid":"reject","example":"tr"},{"name":"hotel_url","type":"string","required":false,"description":"Full hotel URL (alternative to page_name+country_code).","on_invalid":"reject","example":"https://www.booking.com/hotel/tr/celine-taxim.html"},{"name":"max_reviews","type":"integer","required":false,"description":"How many reviews to fetch. Omit for ALL reviews (paged 25/page internally).","on_invalid":"reject","minimum":1,"maximum":10000},{"name":"sort_by","type":"string","required":false,"description":"Review order. One of: most_relevant (default), newest, oldest, highest_score, lowest_score.","on_invalid":"ignore","example":"newest"},{"name":"keyword","type":"string","required":false,"description":"Only reviews mentioning this keyword (free-text search).","on_invalid":"ignore","example":"breakfast"},{"name":"review_page_size","type":"integer","required":false,"description":"Advanced: reviews per internal page (Booking caps at 25).","on_invalid":"ignore","default":25,"minimum":1,"maximum":25},{"name":"hotel_id","type":"integer","required":false,"description":"Advanced: Booking hotel ID.","on_invalid":"ignore"}],"returns":"reviews[]{review_id, score, reviewed_date, reviewed_date_iso, language, title, positive_text, negative_text, partner_reply, reviewer_country, reviewer_country_code, guest_type, customer_type, room_type, stay{checkin, checkout, nights}, photos[], helpful_votes, review_url} + unique_count + total_count + rating_breakdown[] + language_filters[] + available_filters{score_buckets, customer_types, time_of_year, topics} + available_sorters[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{}},{"name":"destinations/autocomplete","description":"Resolve a free-text place ('Paris', 'Maldives', 'JFK') into the destination IDs the other actions take (dest_id + dest_type), with country, coordinates and how many hotels/homes each match has. Use this first when you only have a place name.","required_params":[],"optional_params":["query","limit"],"params":[{"name":"query","type":"string","required":true,"description":"Place to look up — city, region, landmark, airport or country.","on_invalid":"reject","example":"Paris"},{"name":"limit","type":"integer","required":false,"description":"Max suggestions to return (1–20).","on_invalid":"ignore","default":10,"minimum":1,"maximum":20}],"returns":"suggestions[]{dest_id, dest_type, label, name, region, country_code, latitude, longitude, hotel_count, home_count, photo} + count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Paris"}}]},{"name":"books","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Books & Authors API — search books/authors, full book details by ISBN, author bibliographies, all editions, genre/subject browse, trending books, and public-domain ebooks (OpenLibrary + Project Gutenberg)","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/books/v1","spec_available":true,"actions":[{"name":"book_detail","description":"merged book record by ISBN-10/13 or OLID (work OL..W / edition OL..M): title/authors/covers/subjects/description/pages/publishers/languages/editions/identifiers/ratings+distribution/reading-log; queried ISBN always injected","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"ISBN-10/13, OR OpenLibrary work id (OL..W), OR edition id (OL..M).","on_invalid":"reject","example":"9780439023528","aliases":["isbn","olid"]}],"returns":"book{} — title, authors[], covers, subjects, description, number_of_pages, publishers, languages, editions_count, isbn_10/13, ratings{average,distribution}, reading_log","cacheable":true,"cache_ttl_seconds":604800,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"9780439023528"}},{"name":"search","description":"search books: q OR fielded (title/author/subject/publisher/place/person/isbn/language); rich cards (ratings/reading-log/ebook_access/IA); sort=new|old|rating|want_to_read|editions; pagination","required_params":[],"optional_params":["q","query","title","author","subject","publisher","place","person","isbn","language","sort","limit","per_page","page"],"params":[{"name":"q","type":"string","required":false,"description":"Free-text search. Supply `q` OR at least one fielded param (title/author/subject/publisher/place/person/isbn/language).","on_invalid":"reject","example":"the hunger games","aliases":["query"]},{"name":"title","type":"string","required":false,"description":"Fielded search filter — match on title (OpenLibrary search). Combinable with other fielded params.","on_invalid":"reject","example":"lord of the rings"},{"name":"author","type":"string","required":false,"description":"Fielded search filter — match on author (OpenLibrary search). Combinable with other fielded params.","on_invalid":"reject","example":"tolkien"},{"name":"subject","type":"string","required":false,"description":"Fielded search filter — match on subject (OpenLibrary search). Combinable with other fielded params.","on_invalid":"reject","example":"fantasy"},{"name":"publisher","type":"string","required":false,"description":"Fielded search filter — match on publisher (OpenLibrary search). Combinable with other fielded params.","on_invalid":"reject","example":"penguin"},{"name":"place","type":"string","required":false,"description":"Fielded search filter — match on place (OpenLibrary search). Combinable with other fielded params.","on_invalid":"reject","example":"london"},{"name":"person","type":"string","required":false,"description":"Fielded search filter — match on person (OpenLibrary search). Combinable with other fielded params.","on_invalid":"reject","example":"napoleon"},{"name":"isbn","type":"string","required":false,"description":"Fielded search filter — match on isbn (OpenLibrary search). Combinable with other fielded params.","on_invalid":"reject","example":"9780439023528"},{"name":"language","type":"string","required":false,"description":"Fielded search filter — match on language (OpenLibrary search). Combinable with other fielded params.","on_invalid":"reject","example":"eng"},{"name":"sort","type":"enum","required":false,"description":"Result ordering (OpenLibrary sort). Common keys shown; other OpenLibrary sort keys also pass through.","on_invalid":"ignore","allowed_values":[{"value":"new","label":"Newest"},{"value":"old","label":"Oldest"},{"value":"rating","label":"Highest rated"},{"value":"want_to_read","label":"Most wanted-to-read"},{"value":"editions","label":"Most editions"}],"example":"rating"},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20); out-of-range values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["per_page"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped to 1-1000).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000}],"returns":"results[] (title, authors[], olid, first_publish_year, ratings, ebook_access, ia ids, cover), numFound, page","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"the hunger games"}},{"name":"author","description":"author by OLID (OL..A) → bio/photo/dates/alternate-names/remote-ids(goodreads/wikidata/viaf/gutenberg)/links + include_works; or query/name → best-match-ranked author list","required_params":[],"optional_params":["id","query","name","q","include_works","works_limit","per_page","limit"],"params":[{"name":"id","type":"string","required":false,"description":"OpenLibrary author id (OL..A) for a profile. Supply `id` OR a query (`query`/`name`/`q`) for author search.","on_invalid":"reject","example":"OL26320A"},{"name":"query","type":"string","required":false,"description":"Author search text → best-match-ranked list. Supply this OR `id`.","on_invalid":"reject","example":"j r r tolkien","aliases":["name","q"]},{"name":"include_works","type":"boolean","required":false,"description":"Profile mode only: also return the author's top works.","on_invalid":"ignore","default":false,"example":true},{"name":"works_limit","type":"integer","required":false,"description":"Max works when include_works=true (1-50).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-50, default 10); out-of-range values are clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50,"aliases":["per_page"]}],"returns":"profile: author{name,bio,photo,birth/death,alternate_names,remote_ids,top_works[]}; OR search: results[] (name, olid, work_count)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"j r r tolkien"}},{"name":"author_works","description":"full paginated bibliography of an author (OL..A): every work with cover, first-publish year and subjects; page/limit pagination over the author's complete catalog","required_params":["id"],"optional_params":["olid","limit","per_page","page"],"params":[{"name":"id","type":"string","required":true,"description":"OpenLibrary author id (OL..A). Get one from the `author` action.","on_invalid":"reject","example":"OL26320A","aliases":["olid"]},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 50); out-of-range values are clamped.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":100,"aliases":["per_page"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped to 1-1000).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000}],"returns":"results[] (title, olid, covers, first_publish_date, subjects), total, page, has_next","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"OL26320A","limit":5}},{"name":"subjects","description":"browse a subject / genre / theme → ranked work cards PLUS facets (top authors, publishers, related subjects, people, places, time-periods) and work_count/ebook_count; optional ebooks-only and published_in year-range filters; page/limit pagination","required_params":["subject"],"optional_params":["name","q","genre","ebooks","published_in","sort","limit","per_page","page"],"params":[{"name":"subject","type":"string","required":true,"description":"Subject / genre / theme to browse (free text; spaces are fine, e.g. 'science fiction', 'historical fiction', 'love', 'cooking').","on_invalid":"reject","example":"fantasy","aliases":["name","q","genre"]},{"name":"ebooks","type":"boolean","required":false,"description":"Only return works that have a readable/borrowable ebook.","on_invalid":"ignore","default":false,"example":true},{"name":"published_in","type":"string","required":false,"description":"Restrict the subject browse to a publish-year range, e.g. 2000-2010.","on_invalid":"reject","example":"2000-2010"},{"name":"sort","type":"enum","required":false,"description":"Ordering of the subject's works. Known keys shown; others pass through.","on_invalid":"ignore","allowed_values":[{"value":"editions","label":"Most editions (popularity proxy)"},{"value":"new","label":"Newest first"},{"value":"old","label":"Oldest first"}],"example":"editions"},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 24); out-of-range values are clamped.","on_invalid":"ignore","default":24,"example":24,"minimum":1,"maximum":100,"aliases":["per_page"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped to 1-1000).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000}],"returns":"subject{name,work_count,ebook_count,related_subjects[],authors[],publishers[],people[],places[],times[]}, results[] (work cards), total, page, has_next","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"subject":"fantasy","limit":5}},{"name":"trending","description":"most popular / trending books for a time window (now|daily|weekly|monthly|yearly) → ranked work cards (title, authors, cover, year, ebook access); page/limit pagination","required_params":[],"optional_params":["period","range","limit","per_page","page"],"params":[{"name":"period","type":"enum","required":false,"description":"Trending window. One of now|daily|weekly|monthly|yearly.","on_invalid":"ignore","allowed_values":[{"value":"now","label":"Right now"},{"value":"daily","label":"Today (default)"},{"value":"weekly","label":"This week"},{"value":"monthly","label":"This month"},{"value":"yearly","label":"This year"}],"default":"daily","example":"weekly","aliases":["range"]},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 24); out-of-range values are clamped.","on_invalid":"ignore","default":24,"example":24,"minimum":1,"maximum":100,"aliases":["per_page"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped to 1-1000).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000}],"returns":"results[] (title, authors[], olid, first_publish_year, covers, ebook_access), period, page","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"period":"daily","limit":5}},{"name":"editions","description":"every printing / edition of a book (give a work OLID, an edition OLID, or any ISBN) → each edition's ISBN-10/13, publisher, format, publish date/place, page count, language and cover; page/limit pagination","required_params":["id"],"optional_params":["olid","isbn","limit","per_page","page"],"params":[{"name":"id","type":"string","required":true,"description":"A work OLID (OL..W), an edition OLID (OL..M), or any ISBN of the book — all resolve to the work whose editions are listed.","on_invalid":"reject","example":"OL5735363W","aliases":["olid","isbn"]},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 50); out-of-range values are clamped.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":100,"aliases":["per_page"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped to 1-1000).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000}],"returns":"results[] (olid, title, isbn_13/10, publishers, publish_date, physical_format, number_of_pages, languages, covers), work_olid, total, page, has_next","cacheable":true,"cache_ttl_seconds":604800,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"OL5735363W","limit":5}},{"name":"ebook","description":"public-domain full-text (Project Gutenberg): query OR id=Gutenberg-id OR ids=batch; filters languages/topic/sort; returns formats{epub/txt/html/kindle/cover}+download_url+read_url; gutenberg.org OPDS fallback when gutendex is down","required_params":[],"optional_params":["query","search","q","id","gutenberg_id","ids","languages","topic","sort","mime_type","author_year_start","author_year_end","copyright","limit","per_page","page"],"params":[{"name":"query","type":"string","required":false,"description":"Full-text search of Project Gutenberg. Supply `query` OR `id` (Gutenberg id) OR `ids` (batch) OR a filter.","on_invalid":"reject","example":"pride and prejudice","aliases":["search","q"]},{"name":"id","type":"string","required":false,"description":"A single Project Gutenberg ebook id (digits).","on_invalid":"reject","example":"1342","aliases":["gutenberg_id"]},{"name":"ids","type":"array","required":false,"description":"Batch of Gutenberg ids (list or comma-separated string).","on_invalid":"reject","example":"1342,84,2701"},{"name":"languages","type":"string","required":false,"description":"Gutendex language filter — comma-separated ISO 639-1 codes (e.g. en, fr).","on_invalid":"reject","example":"en"},{"name":"topic","type":"string","required":false,"description":"Gutendex topic filter (matches bookshelf or subject).","on_invalid":"reject","example":"children"},{"name":"sort","type":"enum","required":false,"description":"Gutendex ordering. Known keys shown; passed through if Gutendex adds more.","on_invalid":"ignore","allowed_values":[{"value":"popular","label":"Most downloaded (default)"},{"value":"ascending","label":"Gutenberg id ascending"},{"value":"descending","label":"Gutenberg id descending"}],"example":"popular"},{"name":"mime_type","type":"string","required":false,"description":"Gutendex mime_type filter (e.g. application/epub+zip, text/plain).","on_invalid":"reject","example":"application/epub+zip"},{"name":"author_year_start","type":"integer","required":false,"description":"Gutendex filter: author alive on/after this year.","on_invalid":"ignore","example":1800},{"name":"author_year_end","type":"integer","required":false,"description":"Gutendex filter: author alive on/before this year.","on_invalid":"ignore","example":1900},{"name":"copyright","type":"string","required":false,"description":"Gutendex copyright filter: true|false|null (comma-separated to combine).","on_invalid":"reject","example":"false"},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-32, default 32); out-of-range values are clamped.","on_invalid":"ignore","default":32,"example":32,"minimum":1,"maximum":32,"aliases":["per_page"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (clamped to 1-1000).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000}],"returns":"single: ebook{title,authors,languages,formats{epub/txt/html/kindle/cover},download_url,read_url}; OR list: results[], count, next","cacheable":true,"cache_ttl_seconds":604800,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"1342"}}]},{"name":"boyner","category":{"id":"other","title":"Other"},"title":"Boyner API scraper — search & product detail on Boyner (boyner.com.tr), Turkey's department-store marketplace (fashion, shoes, sneakers); prices in TRY, seller + coupons + sizes. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/boyner/v1","spec_available":true,"actions":[{"name":"search","description":"Search Boyner by keyword (`query`), paginated (`page`, 24/page). Every card carries product_id, title, brand, price (current + original + discount%), seller (merchantName — filter 'BOYNER' for Boyner-sold), campaigns/coupons (Hopi, 'Sepette %N İndirim'), image, url, category, rating, stock.","required_params":["query"],"optional_params":["page","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword (Turkish keywords work best, e.g. 'erkek spor ayakkabı', 'nike sneaker', a brand name).","on_invalid":"reject","example":"erkek spor ayakkabı","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page — 1-based (1, 2, 3…), 24 products per page.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"aliases":["sayfa","pg"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-12, default 6).","on_invalid":"ignore","default":6,"minimum":1,"maximum":12}],"returns":"products[]{product_id, title, brand, url, category, category_id, price, original_price, discount_rate, campaign, currency=TRY, seller, merchant_id, campaigns[], badges[], special_badges[], rating, review_count, stock, in_stock, color, gender, variant_id, barcodes[], image, images[], is_free_cargo}; count, total, total_pages, page. HONEST LIMIT: Boyner REMOVED the seller NAME from listing cards on 2026-08-22 — `seller` is null on search and `merchant_id` carries the seller ('1' = Boyner's own stock); the name is on product/detail. A query the source itself counts as 0 returns NOT_FOUND, never an empty 200, and a non-zero source total with no parsable card returns PARSE_ERROR rather than a silent empty list.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"erkek spor ayakkabı"}},{"name":"product/detail","description":"Full Boyner product by `url` OR `product_id`: title, brand, price (current + original + discount%), campaign headline + coupons (Hopi etc.), seller/merchantName + other offers, SIZES (Beden — EU sizes with per-size stock + barcode), all images, rating, review_count, stock, gtin/barcode, category, breadcrumbs, attributes, description and sample reviews. Parsed from Boyner's own getProductDetail JSON.","required_params":[],"optional_params":["url","product_id","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"Full Boyner product URL (…-p-<id>). Provide url OR product_id.","on_invalid":"reject","example":"https://www.boyner.com.tr/tommy-hilfiger-lacivert-erkek-sneaker-th-hi-vulc-core-low-lth-ii-ess-p-15593795","aliases":["product_url"]},{"name":"product_id","type":"string","required":false,"description":"Boyner product id — the digits after '-p-' in the product URL. Provide product_id OR url.","on_invalid":"reject","example":"15593795","aliases":["id"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-12, default 6).","on_invalid":"ignore","default":6,"minimum":1,"maximum":12}],"returns":"product{product_id, title, brand, brand_id, url, category, category_id, breadcrumbs[], price, original_price, discount_rate, currency=TRY, campaign (str|null, e.g. '500 TL İndirim'), campaign_type, campaigns[]{id, title, content, url, start, end}, coupons[], seller, merchant_id, merchant_rating, is_boyner_product, other_merchants[]{merchant_id, name, rating, price, original_price, shipping_cost, has_free_cargo, url, delivery}, in_stock, stock, stock_variants_total, stock_text, size_title, sizes[]{value, variant_id, barcode, in_stock, quantity, is_selected}, rating, review_count, favorite_count, gtin, images[], attributes[]{name, value}, description, badges[], delivery}. HONEST LIMITS (measured 2026-08-22): Boyner's product SSR payload no longer carries review bodies (they are fetched client-side), so `sample_reviews` is null — the source does not publish them on this route. It also publishes no product-level stock total, so `stock` is null and the arithmetic sum of the per-size counts is published separately as `stock_variants_total`. `product_type`, `is_hopi_usable` and `is_outlet` are likewise no longer published.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.boyner.com.tr/tommy-hilfiger-lacivert-erkek-sneaker-th-hi-vulc-core-low-lth-ii-ess-p-15593795"}}]},{"name":"bunnings","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Bunnings API scraper — Australia's and New Zealand's #1 hardware and home-improvement retailer (bunnings.com.au, bunnings.co.nz): store-priced search and category browse, full product records, marketplace sellers, per-store stock with aisle and bay, the store finder and search suggestions. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/bunnings/v1","spec_available":true,"actions":[{"name":"search","description":"Search Bunnings by keyword, priced for one store (prices differ by region). Filters: brand, price range, minimum rating, fulfilment option, offer badge, Bunnings vs Marketplace seller, special order, category. Each row: item number, title, brand, store price, unit price, marketplace seller, fulfilment options, offer badges and campaign, key selling points, the search-index rating and review count, variant count, image, URL and category path.","required_params":["query"],"optional_params":["country","store_id","postcode","page","per_page","sort","brand","price_min","price_max","min_rating","fulfilment","offer","seller","special_order","category","include_fallback_results","live_prices","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword(s).","on_invalid":"reject","example":"cordless drill","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Bunnings storefront. Currency follows it (AUD / NZD).","on_invalid":"reject","allowed_values":[{"value":"au","label":"Australia — bunnings.com.au, AUD"},{"value":"nz","label":"New Zealand — bunnings.co.nz, NZD"}],"default":"au","example":"au"},{"name":"store_id","type":"string","required":false,"description":"Bunnings store number (from the stores action). Prices, stock and aisle locations are store-bound. Default: the site's own default store (AU 6400 Mentone VIC, NZ 9489).","on_invalid":"reject","example":"6400"},{"name":"postcode","type":"string","required":false,"description":"4-digit postcode; the store Bunnings assigns to it is used (instead of store_id).","on_invalid":"reject","example":"2000"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":500},{"name":"per_page","type":"integer","required":false,"description":"Rows per page (Bunnings' own page is 36; max 60).","on_invalid":"reject","default":36,"example":36,"minimum":1,"maximum":60},{"name":"sort","type":"enum","required":false,"description":"Result order (each one is Bunnings' own sort).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"price_asc","label":"Price low to high (store price)"},{"value":"price_desc","label":"Price high to low (store price)"},{"value":"rating","label":"Rating high to low"},{"value":"name_asc","label":"Name A-Z"},{"value":"name_desc","label":"Name Z-A"},{"value":"newest","label":"Newest first"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"Only this brand (Bunnings' brand name, case-insensitive).","on_invalid":"reject","example":"Ryobi"},{"name":"price_min","type":"number","required":false,"description":"Lowest store price.","on_invalid":"reject","example":20},{"name":"price_max","type":"number","required":false,"description":"Highest store price.","on_invalid":"reject","example":200},{"name":"min_rating","type":"number","required":false,"description":"Minimum star rating (0-5).","on_invalid":"reject","example":4,"minimum":0,"maximum":5},{"name":"fulfilment","type":"enum","required":false,"description":"Only products offered this way at the chosen store.","on_invalid":"reject","allowed_values":[{"value":"click_and_collect","label":"Click & Collect"},{"value":"delivery","label":"Delivery"},{"value":"in_store","label":"In-store"}],"example":"click_and_collect"},{"name":"offer","type":"enum","required":false,"description":"Only products carrying this Bunnings offer badge.","on_invalid":"reject","allowed_values":[{"value":"new_arrival","label":"New Arrival"},{"value":"redemption_offer","label":"Redemption Offer"},{"value":"the_block","label":"The Block"},{"value":"delivery_included","label":"Delivery Included"},{"value":"custom_made","label":"Custom Made"},{"value":"fsc_certified","label":"FSC Certified"}],"example":"new_arrival"},{"name":"seller","type":"enum","required":false,"description":"Bunnings' own range, Bunnings Marketplace third-party sellers, or both. Default follows the site: AU shows both, NZ shows Bunnings' range only.","on_invalid":"reject","allowed_values":[{"value":"all","label":"Bunnings + Marketplace"},{"value":"bunnings","label":"Sold by Bunnings"},{"value":"marketplace","label":"Bunnings Marketplace sellers"}],"example":"bunnings"},{"name":"special_order","type":"boolean","required":false,"description":"true = only special-order products; false = exclude them.","on_invalid":"reject","example":false},{"name":"category","type":"string","required":false,"description":"Restrict to a category code (e.g. drills) or category URL.","on_invalid":"reject","example":"drills"},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no row on the page contains a query word, the rows are dropped as unrelated padding; true returns them in fallback_results.","on_invalid":"reject","default":false},{"name":"live_prices","type":"boolean","required":false,"description":"Search rows carry the price Bunnings' search grid shows (its search index), which can lag the product page (2 of 84 rows measured). true re-prices every row from the live product price (one extra small request per row); rows then say price_source=live and keep search_index_price when it differed.","on_invalid":"reject","default":false}],"returns":"results[]{position, item_number, title, brand, brand_code, url, price, price_source (search_index | live), search_index_price (only when live_prices re-priced a differing row), currency, unit_price{price, unit, unit_code, item_quantity}, sold_by_unit, is_marketplace, seller{name, trusted_seller}, fulfilment_options[], is_special_order, delivery_included, promotions[], campaign{id, starts, ends, onepass_exclusive}, key_selling_points[], search_index_rating, search_index_review_count, rating_scale, variant_count, colour_count, new_arrival, best_seller, age_restricted, for_hire, image, thumbnail, category_path[{code, name, path}]}, count, total_results, page, per_page, has_more, store{store_id, name, pricing_region, chosen_by}, country, currency, query, sort, did_you_mean, site_redirect{url, category_code}, fallback_results_dropped, fallback_results[] (only with include_fallback_results=true), duplicate_rows_dropped, live_price_changes (only with live_prices=true), page_notice","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"cordless drill"}},{"name":"category/products","description":"Browse a Bunnings category (any level, from 'tools' down to 'cordless-drill-kits') with the same store pricing, sorts and filters as search.","required_params":["category"],"optional_params":["country","store_id","postcode","page","per_page","sort","brand","price_min","price_max","min_rating","fulfilment","offer","seller","special_order","live_prices","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"Category code (last part of the category URL, e.g. cordless-drill-kits) or a bunnings.com.au / bunnings.co.nz /products/… category URL.","on_invalid":"reject","example":"cordless-drill-kits","aliases":["category_code","category_url"]},{"name":"country","type":"enum","required":false,"description":"Bunnings storefront. Currency follows it (AUD / NZD).","on_invalid":"reject","allowed_values":[{"value":"au","label":"Australia — bunnings.com.au, AUD"},{"value":"nz","label":"New Zealand — bunnings.co.nz, NZD"}],"default":"au","example":"au"},{"name":"store_id","type":"string","required":false,"description":"Bunnings store number (from the stores action). Prices, stock and aisle locations are store-bound. Default: the site's own default store (AU 6400 Mentone VIC, NZ 9489).","on_invalid":"reject","example":"6400"},{"name":"postcode","type":"string","required":false,"description":"4-digit postcode; the store Bunnings assigns to it is used (instead of store_id).","on_invalid":"reject","example":"2000"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":500},{"name":"per_page","type":"integer","required":false,"description":"Rows per page (Bunnings' own page is 36; max 60).","on_invalid":"reject","default":36,"example":36,"minimum":1,"maximum":60},{"name":"sort","type":"enum","required":false,"description":"Result order (each one is Bunnings' own sort).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"price_asc","label":"Price low to high (store price)"},{"value":"price_desc","label":"Price high to low (store price)"},{"value":"rating","label":"Rating high to low"},{"value":"name_asc","label":"Name A-Z"},{"value":"name_desc","label":"Name Z-A"},{"value":"newest","label":"Newest first"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"Only this brand (Bunnings' brand name, case-insensitive).","on_invalid":"reject","example":"Ryobi"},{"name":"price_min","type":"number","required":false,"description":"Lowest store price.","on_invalid":"reject","example":20},{"name":"price_max","type":"number","required":false,"description":"Highest store price.","on_invalid":"reject","example":200},{"name":"min_rating","type":"number","required":false,"description":"Minimum star rating (0-5).","on_invalid":"reject","example":4,"minimum":0,"maximum":5},{"name":"fulfilment","type":"enum","required":false,"description":"Only products offered this way at the chosen store.","on_invalid":"reject","allowed_values":[{"value":"click_and_collect","label":"Click & Collect"},{"value":"delivery","label":"Delivery"},{"value":"in_store","label":"In-store"}],"example":"click_and_collect"},{"name":"offer","type":"enum","required":false,"description":"Only products carrying this Bunnings offer badge.","on_invalid":"reject","allowed_values":[{"value":"new_arrival","label":"New Arrival"},{"value":"redemption_offer","label":"Redemption Offer"},{"value":"the_block","label":"The Block"},{"value":"delivery_included","label":"Delivery Included"},{"value":"custom_made","label":"Custom Made"},{"value":"fsc_certified","label":"FSC Certified"}],"example":"new_arrival"},{"name":"seller","type":"enum","required":false,"description":"Bunnings' own range, Bunnings Marketplace third-party sellers, or both. Default follows the site: AU shows both, NZ shows Bunnings' range only.","on_invalid":"reject","allowed_values":[{"value":"all","label":"Bunnings + Marketplace"},{"value":"bunnings","label":"Sold by Bunnings"},{"value":"marketplace","label":"Bunnings Marketplace sellers"}],"example":"bunnings"},{"name":"special_order","type":"boolean","required":false,"description":"true = only special-order products; false = exclude them.","on_invalid":"reject","example":false},{"name":"live_prices","type":"boolean","required":false,"description":"Search rows carry the price Bunnings' search grid shows (its search index), which can lag the product page (2 of 84 rows measured). true re-prices every row from the live product price (one extra small request per row); rows then say price_source=live and keep search_index_price when it differed.","on_invalid":"reject","default":false}],"returns":"results[] (same row shape as search), count, total_results, page, per_page, has_more, category{code, name, path}, store{…}, country, currency, sort","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/detail","description":"The full Bunnings product record for one store: title, brand, model number, store price, unit price, Afterpay/PayPal instalments, availability (delivery, click & collect and in-store stock with aisle and bay), rating and review count, description, key features, the spec table, dimensions and weight, images, manuals, breadcrumb, variants, offer badges and campaign, warranty, and for Bunnings Marketplace listings every seller's offer with the featured one marked.","required_params":["item_number"],"optional_params":["country","store_id","postcode","url","max_rotations"],"params":[{"name":"item_number","type":"string","required":true,"description":"Bunnings item number (I/N, e.g. 0539753) or a product URL (…_p0539753).","on_invalid":"reject","example":"0539753","aliases":["product_id","id","url","product_url","sku"]},{"name":"country","type":"enum","required":false,"description":"Bunnings storefront. Currency follows it (AUD / NZD).","on_invalid":"reject","allowed_values":[{"value":"au","label":"Australia — bunnings.com.au, AUD"},{"value":"nz","label":"New Zealand — bunnings.co.nz, NZD"}],"default":"au","example":"au"},{"name":"store_id","type":"string","required":false,"description":"Bunnings store number (from the stores action). Prices, stock and aisle locations are store-bound. Default: the site's own default store (AU 6400 Mentone VIC, NZ 9489).","on_invalid":"reject","example":"6400"},{"name":"postcode","type":"string","required":false,"description":"4-digit postcode; the store Bunnings assigns to it is used (instead of store_id).","on_invalid":"reject","example":"2000"}],"returns":"product{item_number, title, brand, brand_code, model_number, model_name, gtin (null — not published), manufacturer, url, price, currency, was_price (null — not published), member_price (null), unit_price{price, unit, unit_code, item_quantity}, instalments, availability, fulfilment{store_id, store_name, in_store{available, stock, stock_status, aisle_locations[{aisle, bay}], store_map_url}, click_and_collect{available, stock, stock_status, collect_from}, delivery{available, delivery_included, stock, stock_status, message_code}, is_special_order, add_to_cart_enabled, stock_hidden_by_site}, rating, review_count, rating_scale, is_marketplace, seller{id, name}, offers[{offer_id, seller{id, name}, price, shipping_price, total_price, currency, delivery_from, delivery_to, is_featured}], featured_offer_id, cheapest_offer_price, has_multiple_offers, description, key_features[], specs[{name, value}], dimensions{product[], package[]}, weight_kg, images[], documents[{type, url, size_bytes}], breadcrumb[{code, name, path}], variants[{item_number, options, colour, url, is_current}], promotions[], campaign{…}, warranty, delivery_information, safety_information, flags{…}}, store{…}, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"item_number":"0539753"}},{"name":"product/stock","description":"In-store stock, click & collect, the aisle and bay, and the store price for one item across several Bunnings stores: pass store_ids, or a postcode / latitude+longitude to check the nearest stores.","required_params":["item_number"],"optional_params":["country","store_ids","postcode","latitude","longitude","nearest","url","max_rotations"],"params":[{"name":"item_number","type":"string","required":true,"description":"Bunnings item number (I/N, e.g. 0539753) or a product URL (…_p0539753).","on_invalid":"reject","example":"0539753","aliases":["product_id","id","url","product_url","sku"]},{"name":"country","type":"enum","required":false,"description":"Bunnings storefront. Currency follows it (AUD / NZD).","on_invalid":"reject","allowed_values":[{"value":"au","label":"Australia — bunnings.com.au, AUD"},{"value":"nz","label":"New Zealand — bunnings.co.nz, NZD"}],"default":"au","example":"au"},{"name":"store_ids","type":"array","required":false,"description":"Up to 10 store numbers to check (comma-separated). Or use postcode / latitude+longitude to check the nearest stores.","on_invalid":"reject","example":"6400,7313"},{"name":"postcode","type":"string","required":false,"description":"4-digit postcode; the store Bunnings assigns to it is used (instead of store_id).","on_invalid":"reject","example":"2000"},{"name":"latitude","type":"number","required":false,"description":"Latitude (with longitude) to find the nearest stores.","on_invalid":"reject","example":-33.8688},{"name":"longitude","type":"number","required":false,"description":"Longitude (with latitude).","on_invalid":"reject","example":151.2093},{"name":"nearest","type":"integer","required":false,"description":"How many nearest stores to check when postcode or latitude/longitude is given.","on_invalid":"reject","default":5,"example":5,"minimum":1,"maximum":10}],"returns":"item_number, title, stores[{store_id, name, suburb, state, distance_km, price, currency, unit_price, availability, in_store{available, stock, stock_status, aisle_locations[], store_map_url}, click_and_collect{…}, delivery{…}, is_special_order}], count, in_stock_store_count, country","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"item_number":"0539753"}},{"name":"stores","description":"The Bunnings store finder: stores nearest a postcode or latitude/longitude (20 per page), or one store by id — address, phone, coordinates, distance, opening hours, services, click & collect and drive & collect flags, and the pricing region.","required_params":[],"optional_params":["country","postcode","latitude","longitude","store_id","page","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Bunnings storefront. Currency follows it (AUD / NZD).","on_invalid":"reject","allowed_values":[{"value":"au","label":"Australia — bunnings.com.au, AUD"},{"value":"nz","label":"New Zealand — bunnings.co.nz, NZD"}],"default":"au","example":"au"},{"name":"postcode","type":"string","required":false,"description":"4-digit postcode; the store Bunnings assigns to it is used (instead of store_id).","on_invalid":"reject","example":"2000"},{"name":"latitude","type":"number","required":false,"description":"Latitude (with longitude) to find the nearest stores.","on_invalid":"reject","example":-33.8688},{"name":"longitude","type":"number","required":false,"description":"Longitude (with latitude).","on_invalid":"reject","example":151.2093},{"name":"store_id","type":"string","required":false,"description":"One store by number (returns opening hours and services).","on_invalid":"reject","example":"7313"},{"name":"page","type":"integer","required":false,"description":"Page of stores (20 per page, nearest first).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":50}],"returns":"stores[{store_id, name, address, address_line2, suburb, state, postcode, country, phone, email, latitude, longitude, distance_km, store_type, pricing_region, time_zone, has_click_and_collect, has_delivery, has_drive_and_collect, is_active, opening_hours[{day, open, close, closed}] (store_id lookups), services[] (store_id lookups), store_map_url}], count, total_stores, page, has_more, origin{latitude, longitude, postcode}, country","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"postcode":"2000"}},{"name":"search/suggest","description":"Bunnings' search-box suggestions for a partial keyword.","required_params":["query"],"optional_params":["country","store_id","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Partial keyword typed into the search box.","on_invalid":"reject","example":"hamm","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Bunnings storefront. Currency follows it (AUD / NZD).","on_invalid":"reject","allowed_values":[{"value":"au","label":"Australia — bunnings.com.au, AUD"},{"value":"nz","label":"New Zealand — bunnings.co.nz, NZD"}],"default":"au","example":"au"},{"name":"store_id","type":"string","required":false,"description":"Bunnings store number (from the stores action). Prices, stock and aisle locations are store-bound. Default: the site's own default store (AU 6400 Mentone VIC, NZ 9489).","on_invalid":"reject","example":"6400"}],"returns":"suggestions[{text, score}], count, query, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"cordless drill"}}]},{"name":"car-rental","category":{"id":"travel","title":"Travel & Lodging"},"title":"Car Rental API (DiscoverCars scraper) — compare rental-car offers & prices from 35+ suppliers across 145 countries, with location resolver, supplier comparison & reviews","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/car-rental/v1","spec_available":true,"actions":[{"name":"cars/search","description":"aggregated rental-car offers for a location + dates → offers[]{vehicle(name/category/ACRISS/transmission/seats/bags/fuel), price{amount,currency}, supplier(name/rating/pickup_address/coords), pickup.type, mileage, fuel_policy, free_cancellation, book_url} + facets. Location via `query` OR explicit place_id/city_id/country_id. One-way via drop_query. Dates pickup_date/dropoff_date (YYYY-MM-DD). Narrow with category/supplier/transmission/max_price/min_supplier_rating/free_cancellation_only filters + sort.","required_params":[],"optional_params":["query","place_id","city_id","country_id","pickup_date","dropoff_date","pickup_time","dropoff_time","currency","residence_country","driver_age","drop_query","drop_place_id","drop_city_id","drop_country_id","max_offers","include_facets","prefer_airport","category","supplier","transmission","min_seats","max_price","min_supplier_rating","free_cancellation_only","unlimited_mileage_only","sort","include_supplier_summary"],"params":[{"name":"query","type":"string","required":false,"description":"Pickup location to resolve (city / airport name). Provide this OR an explicit place_id + city_id + country_id.","on_invalid":"ignore","example":"Madrid Airport"},{"name":"place_id","type":"string","required":false,"description":"Explicit DiscoverCars place id (from cars/autocomplete). Use together with city_id + country_id to skip resolution.","on_invalid":"ignore","example":"123456"},{"name":"city_id","type":"string","required":false,"description":"Explicit DiscoverCars city id (pairs with place_id + country_id).","on_invalid":"ignore","example":"789"},{"name":"country_id","type":"string","required":false,"description":"Explicit DiscoverCars country id (pairs with place_id + city_id).","on_invalid":"ignore","example":"45"},{"name":"pickup_date","type":"string","required":false,"description":"Pickup date (YYYY-MM-DD). Defaults to ~30 days out if omitted.","on_invalid":"ignore","example":"2026-11-07"},{"name":"dropoff_date","type":"string","required":false,"description":"Drop-off date (YYYY-MM-DD). Defaults to ~30 days out if omitted.","on_invalid":"ignore","example":"2026-11-10"},{"name":"pickup_time","type":"string","required":false,"description":"Pickup time of day (HH:MM, 24h). Default 10:00.","on_invalid":"ignore","default":"10:00","example":"10:00"},{"name":"dropoff_time","type":"string","required":false,"description":"Drop-off time of day (HH:MM, 24h). Default 10:00.","on_invalid":"ignore","default":"10:00","example":"10:00"},{"name":"currency","type":"string","required":false,"description":"ISO-4217 currency for prices (e.g. EUR, USD, GBP). Default EUR.","on_invalid":"ignore","default":"EUR","example":"EUR"},{"name":"residence_country","type":"string","required":false,"description":"Driver's country of residence (ISO-2, e.g. US, GB) — affects pricing/availability. Default US.","on_invalid":"ignore","default":"US","example":"US"},{"name":"driver_age","type":"integer","required":false,"description":"Driver age (affects young/senior-driver fees). Default 35.","on_invalid":"ignore","default":35,"example":35,"minimum":18,"maximum":99},{"name":"drop_query","type":"string","required":false,"description":"Different drop-off location (city/airport name) for a one-way rental. Omit for same-location return.","on_invalid":"ignore","example":"Barcelona Airport"},{"name":"drop_place_id","type":"string","required":false,"description":"Explicit drop-off place id (one-way; pairs with drop_city_id).","on_invalid":"ignore","example":"654321"},{"name":"drop_city_id","type":"string","required":false,"description":"Explicit drop-off city id (one-way).","on_invalid":"ignore","example":"987"},{"name":"drop_country_id","type":"string","required":false,"description":"Explicit drop-off country id (one-way).","on_invalid":"ignore","example":"45"},{"name":"max_offers","type":"integer","required":false,"description":"Cap the number of offers returned. Omit for all.","on_invalid":"ignore","example":40,"minimum":1},{"name":"include_facets","type":"boolean","required":false,"description":"Include aggregation facets (supplier/category/price buckets) in the response. Default true.","on_invalid":"ignore","default":true,"example":true},{"name":"prefer_airport","type":"boolean","required":false,"description":"When resolving `query`, prefer the airport location over downtown. Default true.","on_invalid":"ignore","default":true,"example":true},{"name":"category","type":"string","required":false,"description":"Filter by vehicle category substring (case-insensitive), e.g. Mini, Economy, Compact, Intermediate, SUV, Luxury, Van. From facets.carGroups.","on_invalid":"ignore","example":"SUV"},{"name":"supplier","type":"string","required":false,"description":"Filter by supplier name substring (case-insensitive), e.g. Avis, Hertz, Sixt, Budget, Enterprise. See the `suppliers` rollup for what's available.","on_invalid":"ignore","example":"Avis"},{"name":"transmission","type":"enum","required":false,"description":"Filter by transmission. One of: automatic, manual.","on_invalid":"ignore","allowed_values":[{"value":"automatic","label":"Automatic"},{"value":"manual","label":"Manual"}],"example":"automatic"},{"name":"min_seats","type":"integer","required":false,"description":"Only offers with at least this many seats.","on_invalid":"ignore","example":5,"minimum":1},{"name":"max_price","type":"number","required":false,"description":"Only offers whose TOTAL rental price is at or below this (in `currency`).","on_invalid":"ignore","example":200,"minimum":0},{"name":"min_supplier_rating","type":"number","required":false,"description":"Only suppliers rated at or above this score (0-10 scale).","on_invalid":"ignore","example":8.0,"minimum":0,"maximum":10},{"name":"free_cancellation_only","type":"boolean","required":false,"description":"Only offers with free cancellation. Default false.","on_invalid":"ignore","default":false,"example":true},{"name":"unlimited_mileage_only","type":"boolean","required":false,"description":"Only offers with unlimited mileage. Default false.","on_invalid":"ignore","default":false,"example":true},{"name":"sort","type":"enum","required":false,"description":"Sort order. One of: price_asc (default, cheapest first), price_desc, rating_desc (best-rated supplier first).","on_invalid":"ignore","allowed_values":[{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"rating_desc","label":"Supplier rating: high to low"}],"default":"price_asc","example":"price_asc"},{"name":"include_supplier_summary","type":"boolean","required":false,"description":"Include a per-supplier rollup (cheapest price, offer count, rating) in the response. Default true.","on_invalid":"ignore","default":true,"example":true}],"returns":"offers[]{vehicle{name,category,ACRISS,transmission,seats,bags,fuel}, price{amount,currency,daily,rental_days}, supplier{name,rating,pickup_address,coords}, pickup.type, mileage, fuel_policy, free_cancellation, book_url} + suppliers[] (per-supplier cheapest/count/rating), price_range, total_available, facets, pickup_location, dropoff_location, one_way, guid, search_url","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"Madrid Airport","currency":"EUR","pickup_date":"2026-11-07","dropoff_date":"2026-11-10","max_offers":40}},{"name":"cars/autocomplete","description":"resolve a location string (`query`) → place/city/country IDs (for cars/search)","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Location string to resolve into place/city/country IDs.","on_invalid":"reject","example":"London"}],"returns":"results[]{place_id, city_id, country_id, label, is_airport}, count, query","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"London"}},{"name":"cars/reviews","description":"DiscoverCars customer reviews for a location → reviews[]{rating(0-10), text, author, author_country, car_name, date, photos} + average_rating + count. Location via `query` (city/country name; resolved automatically) OR explicit location_url. Filter with min_rating / with_text_only; country_only widens city→country scope.","required_params":[],"optional_params":["query","location_url","country_only","min_rating","with_text_only","max_reviews"],"params":[{"name":"query","type":"string","required":false,"description":"Location (city or country name) to fetch DiscoverCars customer reviews for. Provide this OR an explicit location_url.","on_invalid":"ignore","example":"Madrid"},{"name":"location_url","type":"string","required":false,"description":"Explicit DiscoverCars review slug `country/city` (or `country`), e.g. spain/madrid, usa-california/los-angeles. Skips query resolution.","on_invalid":"ignore","example":"spain/madrid"},{"name":"country_only","type":"boolean","required":false,"description":"Fetch country-wide reviews instead of city-level. Default false (city-level, auto-falls back to country if the city has none).","on_invalid":"ignore","default":false,"example":false},{"name":"min_rating","type":"integer","required":false,"description":"Only reviews rated at or above this (0-10 scale).","on_invalid":"ignore","example":8,"minimum":0,"maximum":10},{"name":"with_text_only","type":"boolean","required":false,"description":"Only reviews that include written text. Default false.","on_invalid":"ignore","default":false,"example":true},{"name":"max_reviews","type":"integer","required":false,"description":"Cap the number of reviews returned. Omit for all (~up to 50 most recent).","on_invalid":"ignore","example":50,"minimum":1}],"returns":"reviews[]{review_id, date, rating, text, author, author_country, car_name, photos, helpful_votes}, count, average_rating, location{country,city,location_url}, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Madrid"}}]},{"name":"cardmarket","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Cardmarket API scraper — Europe's largest trading-card marketplace (cardmarket.com): Magic, Pokémon, Yu-Gi-Oh!, One Piece, Lorcana, Flesh and Blood and more. Search, set listings, Cardmarket's price guide with the 30-day sell-price history, and every seller's offer with condition, card language, foil and seller country, in euro. No account, no browser.","version":"0.2.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/cardmarket/v1","spec_available":true,"actions":[{"name":"search","description":"Search Cardmarket by card or product name for one game: product id, name, expansion, collector number, rarity, number of offers, the cheapest offer price and the image. Narrow to a category (Singles, Booster-Boxes…), only products with offers; sort by popularity, price, name, number or release date; page through results.","required_params":["query"],"optional_params":["game","language","category","search_mode","sort","only_available","page","per_page","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Card or product name as typed in Cardmarket's search box.","on_invalid":"reject","example":"black lotus","aliases":["q","searchString","keyword"]},{"name":"game","type":"enum","required":false,"description":"The trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.","on_invalid":"reject","allowed_values":[{"value":"Magic","label":"Magic"},{"value":"Pokemon","label":"Pokemon"},{"value":"YuGiOh","label":"YuGiOh"},{"value":"OnePiece","label":"OnePiece"},{"value":"Lorcana","label":"Lorcana"},{"value":"FleshAndBlood","label":"FleshAndBlood"},{"value":"Digimon","label":"Digimon"},{"value":"DragonBallSuper","label":"DragonBallSuper"},{"value":"StarWarsUnlimited","label":"StarWarsUnlimited"},{"value":"Riftbound","label":"Riftbound"},{"value":"BattleSpiritsSaga","label":"BattleSpiritsSaga"},{"value":"FinalFantasy","label":"FinalFantasy"},{"value":"Vanguard","label":"Vanguard"},{"value":"WeissSchwarz","label":"WeissSchwarz"},{"value":"WoW","label":"WoW"},{"value":"StarWarsDestiny","label":"StarWarsDestiny"},{"value":"Cyberpunk","label":"Cyberpunk"},{"value":"Dragoborne","label":"Dragoborne"},{"value":"FoW","label":"FoW"},{"value":"MyLittlePony","label":"MyLittlePony"},{"value":"Spoils","label":"Spoils"}],"default":"Pokemon","example":"Magic"},{"name":"language","type":"enum","required":false,"description":"Cardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"}],"default":"en","example":"en"},{"name":"category","type":"string","required":false,"description":"Cardmarket category path name, e.g. Singles, Boosters, Booster-Boxes, Elite-Trainer-Boxes, Sealed-Products (game-specific). Omit for all categories.","on_invalid":"reject","example":"Singles"},{"name":"search_mode","type":"enum","required":false,"description":"Which of Cardmarket's two keyword searches to use.","on_invalid":"reject","allowed_values":[{"value":"classic","label":"Classic name search (stable order, capped near 300 hits)"},{"value":"new","label":"Cardmarket's new search (broader matching, order varies)"}],"default":"classic","example":"classic"},{"name":"sort","type":"enum","required":false,"description":"Cardmarket's own orderings: popularity, price, name, collector number, release date.","on_invalid":"reject","allowed_values":[{"value":"popularity","label":"popularity"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"name_asc","label":"name_asc"},{"value":"name_desc","label":"name_desc"},{"value":"number_asc","label":"number_asc"},{"value":"number_desc","label":"number_desc"},{"value":"release_asc","label":"release_asc"},{"value":"release_desc","label":"release_desc"}],"default":"popularity","example":"price_asc"},{"name":"only_available","type":"boolean","required":false,"description":"Only products that currently have offers.","on_invalid":"reject","default":false},{"name":"page","type":"integer","required":false,"description":"Result page (1-based).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":500},{"name":"per_page","type":"enum","required":false,"description":"Rows per page, one of Cardmarket's own page sizes.","on_invalid":"reject","allowed_values":[{"value":30,"label":"30"},{"value":50,"label":"50"},{"value":100,"label":"100"}],"default":50,"example":50},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, name, name_en (English name when the site language is not English), url, category, expansion, expansion_slug, number, rarity, available_items, search_index_price_from (the 'From' figure of Cardmarket's search index; it can differ from the product page, use product/detail price_from for the live figure), currency, image}, count, total, total_is_lower_bound, page, per_page, total_pages, has_more, game, language, query, category, search_mode, search_mode_served, results_may_be_incomplete (Cardmarket's own 'some results may be missing' notice), redirected_to_product","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"black lotus","game":"Magic"}},{"name":"expansion/products","description":"Every product of one expansion (set) with the same rows as `search`, filterable by rarity and sortable by collector number, price or popularity.","required_params":["expansion"],"optional_params":["game","language","category","rarity","sort","only_available","page","per_page","max_rotations"],"params":[{"name":"expansion","type":"string","required":true,"description":"Expansion slug from `expansions` (e.g. Base-Set, 151) or a cardmarket.com expansion / listing URL.","on_invalid":"reject","example":"Alpha","aliases":["set","expansion_slug"]},{"name":"game","type":"enum","required":false,"description":"The trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.","on_invalid":"reject","allowed_values":[{"value":"Magic","label":"Magic"},{"value":"Pokemon","label":"Pokemon"},{"value":"YuGiOh","label":"YuGiOh"},{"value":"OnePiece","label":"OnePiece"},{"value":"Lorcana","label":"Lorcana"},{"value":"FleshAndBlood","label":"FleshAndBlood"},{"value":"Digimon","label":"Digimon"},{"value":"DragonBallSuper","label":"DragonBallSuper"},{"value":"StarWarsUnlimited","label":"StarWarsUnlimited"},{"value":"Riftbound","label":"Riftbound"},{"value":"BattleSpiritsSaga","label":"BattleSpiritsSaga"},{"value":"FinalFantasy","label":"FinalFantasy"},{"value":"Vanguard","label":"Vanguard"},{"value":"WeissSchwarz","label":"WeissSchwarz"},{"value":"WoW","label":"WoW"},{"value":"StarWarsDestiny","label":"StarWarsDestiny"},{"value":"Cyberpunk","label":"Cyberpunk"},{"value":"Dragoborne","label":"Dragoborne"},{"value":"FoW","label":"FoW"},{"value":"MyLittlePony","label":"MyLittlePony"},{"value":"Spoils","label":"Spoils"}],"default":"Pokemon","example":"Magic"},{"name":"language","type":"enum","required":false,"description":"Cardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"}],"default":"en","example":"en"},{"name":"category","type":"string","required":false,"description":"Cardmarket category path name, e.g. Singles, Boosters, Booster-Boxes, Elite-Trainer-Boxes, Sealed-Products (game-specific). Omit for all categories.","on_invalid":"reject","example":"Singles"},{"name":"rarity","type":"string","required":false,"description":"Rarity name or Cardmarket rarity id as listed in `rarity_options` of the response.","on_invalid":"reject","example":"Rare"},{"name":"sort","type":"enum","required":false,"description":"Cardmarket's own orderings: popularity, price, name, collector number, release date.","on_invalid":"reject","allowed_values":[{"value":"popularity","label":"popularity"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"name_asc","label":"name_asc"},{"value":"name_desc","label":"name_desc"},{"value":"number_asc","label":"number_asc"},{"value":"number_desc","label":"number_desc"},{"value":"release_asc","label":"release_asc"},{"value":"release_desc","label":"release_desc"}],"default":"popularity","example":"price_asc"},{"name":"only_available","type":"boolean","required":false,"description":"Only products that currently have offers.","on_invalid":"reject","default":false},{"name":"page","type":"integer","required":false,"description":"Result page (1-based).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":500},{"name":"per_page","type":"enum","required":false,"description":"Rows per page, one of Cardmarket's own page sizes.","on_invalid":"reject","allowed_values":[{"value":30,"label":"30"},{"value":50,"label":"50"},{"value":100,"label":"100"}],"default":50,"example":50},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, name, name_en (English name when the site language is not English), url, category, expansion, expansion_slug, number, rarity, available_items, search_index_price_from (the 'From' figure of Cardmarket's search index; it can differ from the product page, use product/detail price_from for the live figure), currency, image}, count, total, total_is_lower_bound, page, per_page, total_pages, has_more, game, language, expansion_slug, rarity_applied, rarity_options[]{id, name}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"expansions","description":"Every expansion (set) Cardmarket lists for a game, newest first: name, slug, set code where published, number of cards, release date.","required_params":[],"optional_params":["game","language","max_rotations"],"params":[{"name":"game","type":"enum","required":false,"description":"The trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.","on_invalid":"reject","allowed_values":[{"value":"Magic","label":"Magic"},{"value":"Pokemon","label":"Pokemon"},{"value":"YuGiOh","label":"YuGiOh"},{"value":"OnePiece","label":"OnePiece"},{"value":"Lorcana","label":"Lorcana"},{"value":"FleshAndBlood","label":"FleshAndBlood"},{"value":"Digimon","label":"Digimon"},{"value":"DragonBallSuper","label":"DragonBallSuper"},{"value":"StarWarsUnlimited","label":"StarWarsUnlimited"},{"value":"Riftbound","label":"Riftbound"},{"value":"BattleSpiritsSaga","label":"BattleSpiritsSaga"},{"value":"FinalFantasy","label":"FinalFantasy"},{"value":"Vanguard","label":"Vanguard"},{"value":"WeissSchwarz","label":"WeissSchwarz"},{"value":"WoW","label":"WoW"},{"value":"StarWarsDestiny","label":"StarWarsDestiny"},{"value":"Cyberpunk","label":"Cyberpunk"},{"value":"Dragoborne","label":"Dragoborne"},{"value":"FoW","label":"FoW"},{"value":"MyLittlePony","label":"MyLittlePony"},{"value":"Spoils","label":"Spoils"}],"default":"Pokemon","example":"Magic"},{"name":"language","type":"enum","required":false,"description":"Cardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"}],"default":"en","example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"expansions[]{name, slug, code, url, products_url, card_count, release_date (YYYY-MM-DD), release_date_text, group}, count, game, language","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"product/detail","description":"One Cardmarket product by id or URL: name, expansion, number, rarity, image, number of items for sale, Cardmarket's price guide (From, Price Trend, 30/7/1-day average sell price), the daily average sell price of the last 30 days, and the first 50 offers with condition, card language, foil/signed/first-edition flags, quantity and the seller's country.","required_params":["product_id"],"optional_params":["game","language","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Cardmarket's numeric product id (from any search row) or a cardmarket.com product URL.","on_invalid":"reject","example":"5465","aliases":["id","url"]},{"name":"game","type":"enum","required":false,"description":"The trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.","on_invalid":"reject","allowed_values":[{"value":"Magic","label":"Magic"},{"value":"Pokemon","label":"Pokemon"},{"value":"YuGiOh","label":"YuGiOh"},{"value":"OnePiece","label":"OnePiece"},{"value":"Lorcana","label":"Lorcana"},{"value":"FleshAndBlood","label":"FleshAndBlood"},{"value":"Digimon","label":"Digimon"},{"value":"DragonBallSuper","label":"DragonBallSuper"},{"value":"StarWarsUnlimited","label":"StarWarsUnlimited"},{"value":"Riftbound","label":"Riftbound"},{"value":"BattleSpiritsSaga","label":"BattleSpiritsSaga"},{"value":"FinalFantasy","label":"FinalFantasy"},{"value":"Vanguard","label":"Vanguard"},{"value":"WeissSchwarz","label":"WeissSchwarz"},{"value":"WoW","label":"WoW"},{"value":"StarWarsDestiny","label":"StarWarsDestiny"},{"value":"Cyberpunk","label":"Cyberpunk"},{"value":"Dragoborne","label":"Dragoborne"},{"value":"FoW","label":"FoW"},{"value":"MyLittlePony","label":"MyLittlePony"},{"value":"Spoils","label":"Spoils"}],"default":"Pokemon","example":"Magic"},{"name":"language","type":"enum","required":false,"description":"Cardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"}],"default":"en","example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, name, title_suffix, url, game, language, category, is_single, expansion, expansion_slug, number, rarity, species, manufacturer, versions_count, versions_url, image, available_items, currency, price_from, price_trend, avg_sell_price_30d, avg_sell_price_7d, avg_sell_price_1d, price_guide_extra[]{label, value}, price_history[]{date, avg_sell_price}, breadcrumbs[]{name, url}, data_source (product_page | catalog). While Cardmarket refuses a game's product pages the product comes from Cardmarket's daily catalogue (data_source=catalog): catalog_name, category_name, expansion_id and price_guide{low, trend, avg, avg1, avg7, avg30, low_holo, trend_holo, avg_holo, avg1_holo, avg7_holo, avg30_holo, created_at} are added, price_from is the cheapest live offer, and page-only fields are null and listed in unavailable_fields[]}, offers[]{offer_id, price, currency, price_excludes_shipping, quantity, condition (MT|NM|EX|GD|LP|PL|PO), condition_name, condition_rank, card_language{code, name}, foil, signed, first_edition, altered, comment, photo_url, seller{username, url, type (private|professional|powerseller), country_code, country, sales, available_items}}, offers_count, offers_has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"5465","game":"Magic"}},{"name":"product/offers","description":"Every offer on one product in Cardmarket's own order (roughly cheapest first), 50 per page up to Cardmarket's 300: price, quantity, condition, card language, foil/signed/first-edition/altered, seller name, type, country and sales. Filter with Cardmarket's own filters: card language, minimum condition, seller country, seller type, foil, signed, first edition, altered.","required_params":["product_id"],"optional_params":["game","language","card_language","min_condition","seller_country","seller_type","foil","signed","first_edition","altered","page","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Cardmarket's numeric product id (from any search row) or a cardmarket.com product URL.","on_invalid":"reject","example":"5465","aliases":["id","url"]},{"name":"game","type":"enum","required":false,"description":"The trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.","on_invalid":"reject","allowed_values":[{"value":"Magic","label":"Magic"},{"value":"Pokemon","label":"Pokemon"},{"value":"YuGiOh","label":"YuGiOh"},{"value":"OnePiece","label":"OnePiece"},{"value":"Lorcana","label":"Lorcana"},{"value":"FleshAndBlood","label":"FleshAndBlood"},{"value":"Digimon","label":"Digimon"},{"value":"DragonBallSuper","label":"DragonBallSuper"},{"value":"StarWarsUnlimited","label":"StarWarsUnlimited"},{"value":"Riftbound","label":"Riftbound"},{"value":"BattleSpiritsSaga","label":"BattleSpiritsSaga"},{"value":"FinalFantasy","label":"FinalFantasy"},{"value":"Vanguard","label":"Vanguard"},{"value":"WeissSchwarz","label":"WeissSchwarz"},{"value":"WoW","label":"WoW"},{"value":"StarWarsDestiny","label":"StarWarsDestiny"},{"value":"Cyberpunk","label":"Cyberpunk"},{"value":"Dragoborne","label":"Dragoborne"},{"value":"FoW","label":"FoW"},{"value":"MyLittlePony","label":"MyLittlePony"},{"value":"Spoils","label":"Spoils"}],"default":"Pokemon","example":"Magic"},{"name":"language","type":"enum","required":false,"description":"Cardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"}],"default":"en","example":"en"},{"name":"card_language","type":"array","required":false,"description":"Only offers of cards printed in these languages (one or more, e.g. en or en,de). Language names such as English or Japanese are accepted too.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"es","label":"Spanish"},{"value":"it","label":"Italian"},{"value":"zh-cn","label":"Simplified Chinese"},{"value":"ja","label":"Japanese"},{"value":"pt","label":"Portuguese"},{"value":"ru","label":"Russian"},{"value":"ko","label":"Korean"},{"value":"zh-tw","label":"Traditional Chinese"},{"value":"nl","label":"Dutch"}],"example":["en"]},{"name":"min_condition","type":"enum","required":false,"description":"Only offers in this condition or better (Mint > Near Mint > Excellent > Good > Light Played > Played > Poor). Cardmarket's codes MT, NM, EX, GD, LP, PL, PO and names such as 'near mint' are accepted too.","on_invalid":"reject","allowed_values":[{"value":"mint","label":"Mint"},{"value":"near_mint","label":"Near Mint"},{"value":"excellent","label":"Excellent"},{"value":"good","label":"Good"},{"value":"light_played","label":"Light Played"},{"value":"played","label":"Played"},{"value":"poor","label":"Poor"}],"example":"near_mint"},{"name":"seller_country","type":"array","required":false,"description":"Only offers from sellers located in these countries (one or more ISO codes, e.g. DE or DE,FR).","on_invalid":"reject","allowed_values":[{"value":"AT","label":"Austria"},{"value":"BE","label":"Belgium"},{"value":"BG","label":"Bulgaria"},{"value":"CH","label":"Switzerland"},{"value":"CY","label":"Cyprus"},{"value":"CZ","label":"Czech Republic"},{"value":"DE","label":"Germany"},{"value":"DK","label":"Denmark"},{"value":"EE","label":"Estonia"},{"value":"ES","label":"Spain"},{"value":"FI","label":"Finland"},{"value":"FR","label":"France"},{"value":"GB","label":"United Kingdom"},{"value":"GR","label":"Greece"},{"value":"HU","label":"Hungary"},{"value":"IE","label":"Ireland"},{"value":"IT","label":"Italy"},{"value":"LI","label":"Liechtenstein"},{"value":"LT","label":"Lithuania"},{"value":"LU","label":"Luxembourg"},{"value":"LV","label":"Latvia"},{"value":"MT","label":"Malta"},{"value":"NL","label":"Netherlands"},{"value":"NO","label":"Norway"},{"value":"PL","label":"Poland"},{"value":"PT","label":"Portugal"},{"value":"RO","label":"Romania"},{"value":"SE","label":"Sweden"},{"value":"SG","label":"Singapore"},{"value":"SI","label":"Slovenia"},{"value":"SK","label":"Slovakia"},{"value":"CA","label":"Canada"},{"value":"HR","label":"Croatia"},{"value":"JP","label":"Japan"},{"value":"IS","label":"Iceland"}],"example":["DE"]},{"name":"seller_type","type":"enum","required":false,"description":"Only offers from this seller type.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private"},{"value":"professional","label":"Professional"},{"value":"powerseller","label":"Powerseller"}],"example":"professional"},{"name":"foil","type":"boolean","required":false,"description":"true = only foil offers, false = only non-foil (games with foil printings).","on_invalid":"reject"},{"name":"signed","type":"boolean","required":false,"description":"true/false: signed cards.","on_invalid":"reject"},{"name":"first_edition","type":"boolean","required":false,"description":"true/false: first-edition cards (Pokémon, Yu-Gi-Oh!).","on_invalid":"reject"},{"name":"altered","type":"boolean","required":false,"description":"true/false: altered cards.","on_invalid":"reject"},{"name":"page","type":"integer","required":false,"description":"Offer page, 50 offers each, in Cardmarket's order (roughly cheapest first). Cardmarket stops at 6 pages (300 offers).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":6},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, name, url, game, expansion, number, rarity, available_items, price_from, price_trend, currency}, offers[]{offer_id, price, currency, price_excludes_shipping, quantity, condition (MT|NM|EX|GD|LP|PL|PO), condition_name, condition_rank, card_language{code, name}, foil, signed, first_edition, altered, comment, photo_url, seller{username, url, type (private|professional|powerseller), country_code, country, sales, available_items}}, count, page, has_more, max_pages_reached, filters_applied, available_filters","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"5465"}},{"name":"search/suggest","description":"Cardmarket's search-box suggestions for what a shopper has typed so far: product name, expansion, link and image.","required_params":["query"],"optional_params":["game","language","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper typed so far (3+ characters).","on_invalid":"reject","example":"chariz","aliases":["q","prefix"]},{"name":"game","type":"enum","required":false,"description":"The trading-card game (Cardmarket's own path name). Aliases like mtg, ygo, one-piece, fab, swu are accepted.","on_invalid":"reject","allowed_values":[{"value":"Magic","label":"Magic"},{"value":"Pokemon","label":"Pokemon"},{"value":"YuGiOh","label":"YuGiOh"},{"value":"OnePiece","label":"OnePiece"},{"value":"Lorcana","label":"Lorcana"},{"value":"FleshAndBlood","label":"FleshAndBlood"},{"value":"Digimon","label":"Digimon"},{"value":"DragonBallSuper","label":"DragonBallSuper"},{"value":"StarWarsUnlimited","label":"StarWarsUnlimited"},{"value":"Riftbound","label":"Riftbound"},{"value":"BattleSpiritsSaga","label":"BattleSpiritsSaga"},{"value":"FinalFantasy","label":"FinalFantasy"},{"value":"Vanguard","label":"Vanguard"},{"value":"WeissSchwarz","label":"WeissSchwarz"},{"value":"WoW","label":"WoW"},{"value":"StarWarsDestiny","label":"StarWarsDestiny"},{"value":"Cyberpunk","label":"Cyberpunk"},{"value":"Dragoborne","label":"Dragoborne"},{"value":"FoW","label":"FoW"},{"value":"MyLittlePony","label":"MyLittlePony"},{"value":"Spoils","label":"Spoils"}],"default":"Pokemon","example":"Magic"},{"name":"language","type":"enum","required":false,"description":"Cardmarket site language. Product names follow it (Charizard / Glurak / Dracaufeu); prices, ids and offers are the same.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"}],"default":"en","example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"suggestions[]{name, text, url, category, expansion, expansion_slug, image}, count, query, game, language","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"black lotus"}}]},{"name":"carousell","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Carousell API — the Southeast Asian classifieds marketplace (Singapore, Malaysia, Hong Kong, Philippines, Taiwan, Indonesia): search listings, read the full listing and a seller's listings, in local currency. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/carousell/v1","spec_available":true,"actions":[{"name":"search","description":"Search Carousell listings in one country by keyword or category, 48 per page: listing id, title, price in local currency with the seller's earlier price when it was lowered, condition, status, posting time, whether the seller paid to bump it (and when), likes, seller username, photos, and for cars and property the card's key facts (mileage, registration, bedrooms, size). Filter by price range, condition and category; sort by best match, newest or price; page with a cursor.","required_params":[],"optional_params":["query","country","category_id","sort","price_min","price_max","condition","cursor","exclude_bumped","autocorrect","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword. Optional when `category_id` is given.","on_invalid":"reject","example":"iphone 15","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Carousell storefront: sg, my, hk, ph, tw or id. Prices come back in that country's currency; listing ids and usernames belong to one storefront.","on_invalid":"reject","allowed_values":[{"value":"sg","label":"Singapore — carousell.sg (SGD)"},{"value":"my","label":"Malaysia — carousell.com.my (MYR)"},{"value":"hk","label":"Hong Kong — carousell.com.hk (HKD)"},{"value":"ph","label":"Philippines — carousell.ph (PHP)"},{"value":"tw","label":"Taiwan — carousell.com.tw (TWD)"},{"value":"id","label":"Indonesia — carousell.co.id (IDR)"}],"default":"sg","example":"sg","aliases":["market"]},{"name":"category_id","type":"string","required":false,"description":"Carousell category id — from `suggest` (suggestions[].categories[].id) or a listing's category.id (e.g. 1287 Sofas in Singapore).","on_invalid":"reject","example":"1287","aliases":["category","collection_id"]},{"name":"sort","type":"enum","required":false,"description":"Order of results.","on_invalid":"reject","allowed_values":[{"value":"best_match","label":"Best match (site default order in the app)"},{"value":"newest","label":"Most recent first"},{"value":"price_asc","label":"Lowest price first — free and no-price items come first"},{"value":"price_desc","label":"Highest price first"}],"default":"best_match"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in the country's currency.","on_invalid":"reject","minimum":0},{"name":"condition","type":"enum","required":false,"description":"Item condition on Carousell's five-step scale.","on_invalid":"reject","allowed_values":[{"value":"brand_new","label":"Brand new"},{"value":"like_new","label":"Like new"},{"value":"lightly_used","label":"Lightly used"},{"value":"well_used","label":"Well used"},{"value":"heavily_used","label":"Heavily used"}]},{"name":"cursor","type":"string","required":false,"description":"The `next_cursor` of the previous page. Omit for the first page.","on_invalid":"reject","example":""},{"name":"exclude_bumped","type":"boolean","required":false,"description":"Drop listings the seller paid to bump up the results (counted in bumped_dropped). Bumped listings still match your query.","on_invalid":"reject","default":false},{"name":"autocorrect","type":"boolean","required":false,"description":"Let Carousell correct a misspelled keyword ('iphnoe' → iPhone results). Off by default: a misspelled keyword then returns no results.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try for a difficult request (1-6).","on_invalid":"ignore","default":4,"minimum":1,"maximum":6}],"returns":"results[]{listing_id, title, url, price (number; null for free items and listings without a price), price_text, is_free, price_not_published, original_price + price_dropped (seller lowered the price), currency, condition (brand_new|like_new|lightly_used|well_used|heavily_used, or new|used in two-step categories, null for cars/property), condition_label, status (active|reserved|sold|…), posted_at (null on bumped cards), is_bumped, bumped_at, last_bumped_at, is_promoted, likes_count, seller{id, username, display_name}, card_type, vertical (cars|property|null), is_certified, buyer_protection_tag, deal_label, tags[], attributes[]{name, value} (cars: depreciation, registration date, mileage; property: bedrooms, bathrooms, size, MRT), card_lines[], image, images[], country}, count, total_results, total_is_lower_bound, has_more, next_cursor, bumped_count, bumped_dropped, non_listing_cards_dropped, sort_applied, filters_applied, query, country, currency","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"iphone","country":"sg"}},{"name":"listing","description":"The full listing by id or URL: title, full description, price and currency (free items and no-price services marked), fixed price or open to offers, status (active, reserved, sold), condition, category, every attribute (model, storage, size…), car and property details (engine, COE, depreciation, bedrooms, lease, district), all photos, likes, posting / edit / expiry dates, meet-up points, mailing and Carousell shipping options, Buyer Protection, and the seller: username, business or private, verification, rating with review counts, followers, join date.","required_params":["listing_id"],"optional_params":["country","max_rotations"],"params":[{"name":"listing_id","type":"string","required":true,"description":"Listing id (the number at the end of a carousell listing URL, …/p/iphone-15-pro-1459547251/) or the full URL — a URL also sets the country.","on_invalid":"reject","example":"1459547251","aliases":["id","url"]},{"name":"country","type":"enum","required":false,"description":"Which Carousell storefront: sg, my, hk, ph, tw or id. Prices come back in that country's currency; listing ids and usernames belong to one storefront.","on_invalid":"reject","allowed_values":[{"value":"sg","label":"Singapore — carousell.sg (SGD)"},{"value":"my","label":"Malaysia — carousell.com.my (MYR)"},{"value":"hk","label":"Hong Kong — carousell.com.hk (HKD)"},{"value":"ph","label":"Philippines — carousell.ph (PHP)"},{"value":"tw","label":"Taiwan — carousell.com.tw (TWD)"},{"value":"id","label":"Indonesia — carousell.co.id (IDR)"}],"default":"sg","example":"sg","aliases":["market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try for a difficult request (1-6).","on_invalid":"ignore","default":4,"minimum":1,"maximum":6}],"returns":"listing{listing_id, title, url, status, is_active, price (null for free items and services without a price), currency, is_free, price_not_published, fixed_price, condition, condition_label, description, category{id, name, slug}, attributes[]{name, value}, details[]{group, name, value} (specifications, financials, unit_details, location…), highlights[], images[], image_count, likes_count, posted_at, last_modified_at, expires_at, buyer_protection, delivery{meetup, meetups[]{name, address, latitude, longitude, note}, mailing, mailing_details, carousell_shipping, deal_options[], default_delivery_option}, seller{id, username, display_name, type (business|private|null), identity, is_official_partner, verified{id, mobile, email, facebook, gplus}, rating (0-5), rating_scale, review_count, positive_reviews, neutral_reviews, negative_reviews, followers_count, joined_at, response_rate, profile_url}, certified_product{product_id, variant_id}, country}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"seller_listings","description":"A seller's listings on one storefront, newest first, 40 per page, including reserved and sold items: the same row fields as search, plus the seller's total listing count.","required_params":["username"],"optional_params":["country","cursor","max_rotations"],"params":[{"name":"username","type":"string","required":true,"description":"Seller username (search rows: seller.username), or the profile URL …/u/<username>/.","on_invalid":"reject","example":"w1695","aliases":["seller","user"]},{"name":"country","type":"enum","required":false,"description":"Which Carousell storefront: sg, my, hk, ph, tw or id. Prices come back in that country's currency; listing ids and usernames belong to one storefront.","on_invalid":"reject","allowed_values":[{"value":"sg","label":"Singapore — carousell.sg (SGD)"},{"value":"my","label":"Malaysia — carousell.com.my (MYR)"},{"value":"hk","label":"Hong Kong — carousell.com.hk (HKD)"},{"value":"ph","label":"Philippines — carousell.ph (PHP)"},{"value":"tw","label":"Taiwan — carousell.com.tw (TWD)"},{"value":"id","label":"Indonesia — carousell.co.id (IDR)"}],"default":"sg","example":"sg","aliases":["market"]},{"name":"cursor","type":"string","required":false,"description":"The `next_cursor` of the previous page. Omit for the first page.","on_invalid":"reject","example":""},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try for a difficult request (1-6).","on_invalid":"ignore","default":4,"minimum":1,"maximum":6}],"returns":"results[] (same row shape as search), count, total_results, has_more, next_cursor, username, country, currency","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"suggest","description":"Carousell's keyword autocomplete for one country, with the categories each suggestion maps to (their ids work as search category_id).","required_params":["query"],"optional_params":["country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The beginning of a keyword.","on_invalid":"reject","example":"iph","aliases":["q"]},{"name":"country","type":"enum","required":false,"description":"Which Carousell storefront: sg, my, hk, ph, tw or id. Prices come back in that country's currency; listing ids and usernames belong to one storefront.","on_invalid":"reject","allowed_values":[{"value":"sg","label":"Singapore — carousell.sg (SGD)"},{"value":"my","label":"Malaysia — carousell.com.my (MYR)"},{"value":"hk","label":"Hong Kong — carousell.com.hk (HKD)"},{"value":"ph","label":"Philippines — carousell.ph (PHP)"},{"value":"tw","label":"Taiwan — carousell.com.tw (TWD)"},{"value":"id","label":"Indonesia — carousell.co.id (IDR)"}],"default":"sg","example":"sg","aliases":["market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try for a difficult request (1-6).","on_invalid":"ignore","default":4,"minimum":1,"maximum":6}],"returns":"suggestions[]{suggestion, categories[]{id, name}}, count, query, country","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iph","country":"sg"}}]},{"name":"carrefour-fr","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Carrefour France API scraper (carrefour.fr): search groceries and non-food, read full product records with struck and loyalty-card prices, compare Carrefour and marketplace offers, read reviews, browse categories and promotions, and price against any drive store. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/carrefour-fr/v1","spec_available":true,"actions":[{"name":"search","description":"Search carrefour.fr by keyword with the site's sorts and filters (brand, price range, promotions, own brand, organic, Nutri-Score, any listed facet). Each row: EAN, title, brand, URL, the price with the struck price and discount, loyalty-card offers, multi-buy offers, the unit price, seller (Carrefour or marketplace), availability, rating, Nutri-Score and how many other offers exist. Prices follow the chosen store (store_id / postal_code).","required_params":["query"],"optional_params":["page","sort","brand","price_min","price_max","on_promotion","carrefour_brand","organic","nutriscore","facet","include_unavailable","store_id","postal_code","include_sponsored","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword (French), e.g. 'lait', 'aspirateur robot', 'nutella'.","on_invalid":"reject","example":"lait","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page (30 products per page).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"The site's own sort orders. Price sorts order products by their LOWEST offer (lowest_offer_price), which can be a marketplace offer below the row's buy-box price.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance (site default)"},{"value":"price_asc","label":"Lowest offer price first"},{"value":"price_desc","label":"Highest offer price first"},{"value":"unit_price_asc","label":"Price per kg/L, lowest first (groceries)"},{"value":"unit_price_desc","label":"Price per kg/L, highest first (groceries)"},{"value":"rating","label":"Customer rating, best first"}],"default":"relevance"},{"name":"brand","type":"array","required":false,"description":"Brand filter, one or more (comma-separated), as listed in available_filters (field facet_marque), e.g. 'LACTEL,CANDIA'.","on_invalid":"reject","example":"LACTEL"},{"name":"price_min","type":"number","required":false,"description":"Minimum price in EUR (the site's price filter).","on_invalid":"reject","example":5,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in EUR (the site's price filter).","on_invalid":"reject","example":10,"minimum":0},{"name":"on_promotion","type":"boolean","required":false,"description":"Only products with a running promotion (including loyalty-card offers).","on_invalid":"reject","example":true},{"name":"carrefour_brand","type":"boolean","required":false,"description":"Only Carrefour's own-brand products.","on_invalid":"reject"},{"name":"organic","type":"boolean","required":false,"description":"Only organic products.","on_invalid":"reject"},{"name":"nutriscore","type":"array","required":false,"description":"Nutri-Score grades to keep (comma-separated), e.g. 'A,B'.","on_invalid":"reject","allowed_values":[{"value":"A","label":"Nutri-Score A"},{"value":"B","label":"Nutri-Score B"},{"value":"C","label":"Nutri-Score C"},{"value":"D","label":"Nutri-Score D"},{"value":"E","label":"Nutri-Score E"}],"example":"A,B"},{"name":"facet","type":"array","required":false,"description":"Any other facet the site lists in available_filters, as 'field=value' (repeat or comma-separate for several).","on_invalid":"reject","example":"facette_format_lait=Bouteille"},{"name":"include_unavailable","type":"boolean","required":false,"description":"Also list products that cannot be bought right now (the site hides them by default).","on_invalid":"reject","default":false},{"name":"store_id","type":"string","required":false,"description":"Price and stock for this drive/pickup store (a `store_id` from the `stores` action). Default: carrefour.fr's national online catalogue.","on_invalid":"reject","example":"800259"},{"name":"postal_code","type":"string","required":false,"description":"French postal code: prices for the nearest drive/pickup store (echoed in `store`). Use instead of store_id.","on_invalid":"reject","example":"69001","aliases":["zip"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep sponsored rows (flagged is_sponsored). Default: dropped and counted in sponsored_dropped.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When carrefour.fr pads a no-match keyword with loosely similar products, return them in fallback_results (default: dropped and counted).","on_invalid":"ignore","default":false}],"returns":"results[]{position, product_id (EAN), ean, title, brand, url, product_type ('product'|'marketplace'), business_type ('food'|'non-food'), category, category_path[], packaging, format, price, currency=EUR, was_price, discount_amount, discount_percent, promotion_label, promotion_ends, loyalty_price, loyalty_offers[{type, label, card_credit, min_quantity, discount_percent, card_credit, card_credit_scope ('unit'|'lot'), credit_basis, price_after_credit (single-unit offers only), lot_price, lot_price_after_credit, valid_from, valid_until}], multibuy_offers[{type, label, quantity, total_price, regular_total, valid_until}], promotion_badges[], unit_price, unit_of_measure, unit_price_label, unit_price_basis ('price'|'regular_price'), offer_id, seller{id, name, is_carrefour, rating, rating_count, rating_scale, url}, shipping_cost, free_shipping, free_shipping_minimum, delivery_days_min, delivery_days_max, availability, in_stock, low_stock, other_offers_count, other_offers_lowest_price, lowest_offer_price (min of the row price and the other offers' lowest; the value the site's price sorts use), rating, review_count, rating_scale, nutriscore, labels[], highlight, is_best_seller, is_new, is_sponsored, image}, count (organic rows), total_results, total_pages, page, page_size, sort, applied_filters, sponsored_dropped, sponsored_count, search_type, available_filters[{field, label, type, selected, values[{value, label, count, selected}], price_range_eur}], has_next_page, store{store_id, store_code, name, is_default, …}, query, did_you_mean, autocorrected, related_searches[], keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[] (only with include_fallback_results=true), page_notice, redirected_to, redirect_type ('category'|'promotions'|'brand'|null)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"lait"}},{"name":"product/detail","description":"The full carrefour.fr product record by EAN or URL: title, brand, category breadcrumb, the buy-box price with struck price, loyalty-card and multi-buy offers, unit price, availability, every offer (Carrefour store, Carrefour home delivery, marketplace sellers with rating and shipping), rating with the per-star breakdown, description, key features, characteristics, ingredients and nutrition, storage/usage information, Nutri-Score, energy class, dimensions, images and variants (colour/size with their own EAN and price).","required_params":[],"optional_params":["product_id","url","store_id","postal_code","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Product EAN (8-14 digits); every search row returns it as product_id.","on_invalid":"reject","example":"6942351431352","aliases":["ean","gtin"]},{"name":"url","type":"string","required":false,"description":"carrefour.fr product URL (alternative to product_id).","on_invalid":"reject","example":"https://www.carrefour.fr/p/tv-qled-4k-55-139-cm-55e7s-hisense-6942351431352","aliases":["product_url"]},{"name":"store_id","type":"string","required":false,"description":"Price and stock for this drive/pickup store (a `store_id` from the `stores` action). Default: carrefour.fr's national online catalogue.","on_invalid":"reject","example":"800259"},{"name":"postal_code","type":"string","required":false,"description":"French postal code: prices for the nearest drive/pickup store (echoed in `store`). Use instead of store_id.","on_invalid":"reject","example":"69001","aliases":["zip"]},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, ean, internal_id, title, short_title, brand, url, product_type, business_type, category, breadcrumb[{name, url}], offer_id, fulfilment, seller{…}, price, currency=EUR, was_price, discount_amount, discount_percent, promotion_label, promotion_ends, loyalty_price, loyalty_offers[], multibuy_offers[], promotion_badges[], unit_price, unit_of_measure, unit_price_label, unit_price_basis, shipping_cost, free_shipping, delivery_days_min, delivery_days_max, availability, in_stock, low_stock, max_order_quantity, is_preorder, offers_count, cheapest_offer{offer_id, seller, price, shipping_cost, total_price}, offers[] (as product/offers), rating, review_count, rating_scale=5, rating_breakdown_percent{1..5}, description, key_features[], characteristics[{id, name, values[]}], composition{ingredients, allergens, regulated_name, nutrition[{name, per, value, daily_value_percent}]}, information{storage, …}, packaging, format, origin, nutriscore, ecoscore, energy_class, repairability_or_sustainability_index, legal_guarantee_years, labels[], warnings[], weights_and_measures[{type, value, unit}], delivery_info, images[], image_count, variants[{product_id, title, url, attributes{color, size, …}, lowest_price, offers_published, image}], is_best_seller}, store{…}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"6942351431352"}},{"name":"product/offers","description":"Every offer on one carrefour.fr product (by EAN or URL): the Carrefour store offer, Carrefour home delivery and each marketplace seller, with price, struck price, loyalty offers, shipping cost and delivery time, seller rating, stock and warranty add-ons, plus the cheapest offer.","required_params":[],"optional_params":["product_id","url","sort","store_id","postal_code","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Product EAN (8-14 digits); every search row returns it as product_id.","on_invalid":"reject","example":"6942351431352","aliases":["ean","gtin"]},{"name":"url","type":"string","required":false,"description":"carrefour.fr product URL (alternative to product_id).","on_invalid":"reject","example":"https://www.carrefour.fr/p/tv-qled-4k-55-139-cm-55e7s-hisense-6942351431352","aliases":["product_url"]},{"name":"sort","type":"enum","required":false,"description":"Order of the offers.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Price + shipping, lowest first"},{"value":"price_desc","label":"Price + shipping, highest first"},{"value":"as_listed","label":"The site's own order (buy-box first)"}],"default":"price_asc"},{"name":"store_id","type":"string","required":false,"description":"Price and stock for this drive/pickup store (a `store_id` from the `stores` action). Default: carrefour.fr's national online catalogue.","on_invalid":"reject","example":"800259"},{"name":"postal_code","type":"string","required":false,"description":"French postal code: prices for the nearest drive/pickup store (echoed in `store`). Use instead of store_id.","on_invalid":"reject","example":"69001","aliases":["zip"]},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"offers[]{offer_id, is_buy_box, fulfilment ('store'|'carrefour_home_delivery'|'marketplace'|'physical_store'), seller{id, name, is_carrefour, rating, rating_count, rating_scale, url}, price, currency=EUR, was_price, discount_amount, discount_percent, promotion_label, promotion_ends, loyalty_price, loyalty_offers[], multibuy_offers[], promotion_badges[], unit_price, unit_of_measure, unit_price_label, unit_price_basis, shipping_cost, free_shipping, free_shipping_minimum, delivery_days_min, delivery_days_max, total_price, availability, in_stock, low_stock, max_order_quantity, is_preorder, is_new, express_delivery, relay_point_eligible, offer_note, warranty_options[{name, price, ean}]}, count, product{product_id, title, url}, cheapest{offer_id, seller, price, shipping_cost, total_price}, marketplace_offers, carrefour_offers, sort, store{…}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"6942351431352"}},{"name":"product/reviews","description":"Verified customer reviews of a carrefour.fr product (by EAN or URL), paged, sortable and filterable by star rating: rating, title, text, author display name, review and order dates and the review source.","required_params":[],"optional_params":["product_id","url","page","per_page","sort","stars","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Product EAN (8-14 digits); every search row returns it as product_id.","on_invalid":"reject","example":"6942351431352","aliases":["ean","gtin"]},{"name":"url","type":"string","required":false,"description":"carrefour.fr product URL (alternative to product_id).","on_invalid":"reject","example":"https://www.carrefour.fr/p/tv-qled-4k-55-139-cm-55e7s-hisense-6942351431352","aliases":["product_url"]},{"name":"page","type":"integer","required":false,"description":"Review page.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"per_page","type":"integer","required":false,"description":"Reviews per page (max 100).","on_invalid":"reject","default":20,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"rating_desc","label":"Best rating first"},{"value":"rating_asc","label":"Worst rating first"}],"default":"newest"},{"name":"stars","type":"integer","required":false,"description":"Only reviews with this star rating (1-5).","on_invalid":"reject","example":5,"minimum":1,"maximum":5},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"reviews[]{author, is_anonymous, rating, rating_scale=5, title, text, review_date, order_date, source}, count, total_reviews (for the star filter when given), page, per_page, total_pages, sort, stars, product_id","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"seller/reviews","description":"Buyer reviews of a carrefour.fr marketplace seller, newest or oldest first: rating, the tags the buyer picked, author display name and dates.","required_params":["seller_id"],"optional_params":["page","per_page","sort","max_rotations"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Marketplace seller id (offers[].seller.id).","on_invalid":"reject","example":"2731"},{"name":"page","type":"integer","required":false,"description":"Review page.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"per_page","type":"integer","required":false,"description":"Reviews per page (max 100).","on_invalid":"reject","default":20,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Review order (the site offers no star filter or rating sort for sellers).","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"}],"default":"newest"},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"reviews[]{author, rating, rating_scale=5, tags[], review_date, created_date}, count, total_reviews, page, per_page, total_pages, sort, seller_id, seller_url","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller/profile","description":"A carrefour.fr marketplace seller's public page: name, logo, description, return policy, shipping zone and delivery time, rating, and the legal notice the site publishes (company name, registration and VAT numbers, business address, legal representative, terms URL).","required_params":["seller_id"],"optional_params":["max_rotations"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Marketplace seller id (offers[].seller.id).","on_invalid":"reject","example":"2731"},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"seller{seller_id, name, slug, url, logo, banner, description, return_policy, rating, rating_count, rating_scale, shipping{delivery_days_min, delivery_days_max, free_shipping_minimum, zone, fees[{type, amount}]}, company_name, company_id, vat_number, legal_representative, address{street, postal_code, city, region, country}, terms_url}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller/products","description":"Everything a carrefour.fr marketplace seller lists, with the same sorts, filters and row fields as search.","required_params":["seller_id"],"optional_params":["page","sort","brand","price_min","price_max","on_promotion","carrefour_brand","organic","nutriscore","facet","include_unavailable","store_id","postal_code","include_sponsored","max_rotations"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Marketplace seller id (offers[].seller.id).","on_invalid":"reject","example":"2731"},{"name":"page","type":"integer","required":false,"description":"Result page (30 products per page).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"The site's own sort orders. Price sorts order products by their LOWEST offer (lowest_offer_price), which can be a marketplace offer below the row's buy-box price.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance (site default)"},{"value":"price_asc","label":"Lowest offer price first"},{"value":"price_desc","label":"Highest offer price first"},{"value":"unit_price_asc","label":"Price per kg/L, lowest first (groceries)"},{"value":"unit_price_desc","label":"Price per kg/L, highest first (groceries)"},{"value":"rating","label":"Customer rating, best first"}],"default":"relevance"},{"name":"brand","type":"array","required":false,"description":"Brand filter, one or more (comma-separated), as listed in available_filters (field facet_marque), e.g. 'LACTEL,CANDIA'.","on_invalid":"reject","example":"LACTEL"},{"name":"price_min","type":"number","required":false,"description":"Minimum price in EUR (the site's price filter).","on_invalid":"reject","example":5,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in EUR (the site's price filter).","on_invalid":"reject","example":10,"minimum":0},{"name":"on_promotion","type":"boolean","required":false,"description":"Only products with a running promotion (including loyalty-card offers).","on_invalid":"reject","example":true},{"name":"carrefour_brand","type":"boolean","required":false,"description":"Only Carrefour's own-brand products.","on_invalid":"reject"},{"name":"organic","type":"boolean","required":false,"description":"Only organic products.","on_invalid":"reject"},{"name":"nutriscore","type":"array","required":false,"description":"Nutri-Score grades to keep (comma-separated), e.g. 'A,B'.","on_invalid":"reject","allowed_values":[{"value":"A","label":"Nutri-Score A"},{"value":"B","label":"Nutri-Score B"},{"value":"C","label":"Nutri-Score C"},{"value":"D","label":"Nutri-Score D"},{"value":"E","label":"Nutri-Score E"}],"example":"A,B"},{"name":"facet","type":"array","required":false,"description":"Any other facet the site lists in available_filters, as 'field=value' (repeat or comma-separate for several).","on_invalid":"reject","example":"facette_format_lait=Bouteille"},{"name":"include_unavailable","type":"boolean","required":false,"description":"Also list products that cannot be bought right now (the site hides them by default).","on_invalid":"reject","default":false},{"name":"store_id","type":"string","required":false,"description":"Price and stock for this drive/pickup store (a `store_id` from the `stores` action). Default: carrefour.fr's national online catalogue.","on_invalid":"reject","example":"800259"},{"name":"postal_code","type":"string","required":false,"description":"French postal code: prices for the nearest drive/pickup store (echoed in `store`). Use instead of store_id.","on_invalid":"reject","example":"69001","aliases":["zip"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep sponsored rows (flagged is_sponsored). Default: dropped and counted in sponsored_dropped.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id (EAN), ean, title, brand, url, product_type ('product'|'marketplace'), business_type ('food'|'non-food'), category, category_path[], packaging, format, price, currency=EUR, was_price, discount_amount, discount_percent, promotion_label, promotion_ends, loyalty_price, loyalty_offers[{type, label, card_credit, min_quantity, discount_percent, card_credit, card_credit_scope ('unit'|'lot'), credit_basis, price_after_credit (single-unit offers only), lot_price, lot_price_after_credit, valid_from, valid_until}], multibuy_offers[{type, label, quantity, total_price, regular_total, valid_until}], promotion_badges[], unit_price, unit_of_measure, unit_price_label, unit_price_basis ('price'|'regular_price'), offer_id, seller{id, name, is_carrefour, rating, rating_count, rating_scale, url}, shipping_cost, free_shipping, free_shipping_minimum, delivery_days_min, delivery_days_max, availability, in_stock, low_stock, other_offers_count, other_offers_lowest_price, lowest_offer_price (min of the row price and the other offers' lowest; the value the site's price sorts use), rating, review_count, rating_scale, nutriscore, labels[], highlight, is_best_seller, is_new, is_sponsored, image}, count (organic rows), total_results, total_pages, page, page_size, sort, applied_filters, sponsored_dropped, sponsored_count, search_type, available_filters[{field, label, type, selected, values[{value, label, count, selected}], price_range_eur}], has_next_page, store{store_id, store_code, name, is_default, …}, seller_id, seller_url","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"category","description":"Browse a carrefour.fr category (e.g. 'cremerie/laits', 'image-son/televiseurs') with the same sorts, filters, store pricing and row fields as search.","required_params":["category"],"optional_params":["page","sort","brand","price_min","price_max","on_promotion","carrefour_brand","organic","nutriscore","facet","include_unavailable","store_id","postal_code","include_sponsored","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"Category path as in the site's URL /r/<path> (e.g. 'cremerie/laits', 'image-son/televiseurs') or the full category URL.","on_invalid":"reject","example":"cremerie/laits"},{"name":"page","type":"integer","required":false,"description":"Result page (30 products per page).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"The site's own sort orders. Price sorts order products by their LOWEST offer (lowest_offer_price), which can be a marketplace offer below the row's buy-box price.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance (site default)"},{"value":"price_asc","label":"Lowest offer price first"},{"value":"price_desc","label":"Highest offer price first"},{"value":"unit_price_asc","label":"Price per kg/L, lowest first (groceries)"},{"value":"unit_price_desc","label":"Price per kg/L, highest first (groceries)"},{"value":"rating","label":"Customer rating, best first"}],"default":"relevance"},{"name":"brand","type":"array","required":false,"description":"Brand filter, one or more (comma-separated), as listed in available_filters (field facet_marque), e.g. 'LACTEL,CANDIA'.","on_invalid":"reject","example":"LACTEL"},{"name":"price_min","type":"number","required":false,"description":"Minimum price in EUR (the site's price filter).","on_invalid":"reject","example":5,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in EUR (the site's price filter).","on_invalid":"reject","example":10,"minimum":0},{"name":"on_promotion","type":"boolean","required":false,"description":"Only products with a running promotion (including loyalty-card offers).","on_invalid":"reject","example":true},{"name":"carrefour_brand","type":"boolean","required":false,"description":"Only Carrefour's own-brand products.","on_invalid":"reject"},{"name":"organic","type":"boolean","required":false,"description":"Only organic products.","on_invalid":"reject"},{"name":"nutriscore","type":"array","required":false,"description":"Nutri-Score grades to keep (comma-separated), e.g. 'A,B'.","on_invalid":"reject","allowed_values":[{"value":"A","label":"Nutri-Score A"},{"value":"B","label":"Nutri-Score B"},{"value":"C","label":"Nutri-Score C"},{"value":"D","label":"Nutri-Score D"},{"value":"E","label":"Nutri-Score E"}],"example":"A,B"},{"name":"facet","type":"array","required":false,"description":"Any other facet the site lists in available_filters, as 'field=value' (repeat or comma-separate for several).","on_invalid":"reject","example":"facette_format_lait=Bouteille"},{"name":"include_unavailable","type":"boolean","required":false,"description":"Also list products that cannot be bought right now (the site hides them by default).","on_invalid":"reject","default":false},{"name":"store_id","type":"string","required":false,"description":"Price and stock for this drive/pickup store (a `store_id` from the `stores` action). Default: carrefour.fr's national online catalogue.","on_invalid":"reject","example":"800259"},{"name":"postal_code","type":"string","required":false,"description":"French postal code: prices for the nearest drive/pickup store (echoed in `store`). Use instead of store_id.","on_invalid":"reject","example":"69001","aliases":["zip"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep sponsored rows (flagged is_sponsored). Default: dropped and counted in sponsored_dropped.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id (EAN), ean, title, brand, url, product_type ('product'|'marketplace'), business_type ('food'|'non-food'), category, category_path[], packaging, format, price, currency=EUR, was_price, discount_amount, discount_percent, promotion_label, promotion_ends, loyalty_price, loyalty_offers[{type, label, card_credit, min_quantity, discount_percent, card_credit, card_credit_scope ('unit'|'lot'), credit_basis, price_after_credit (single-unit offers only), lot_price, lot_price_after_credit, valid_from, valid_until}], multibuy_offers[{type, label, quantity, total_price, regular_total, valid_until}], promotion_badges[], unit_price, unit_of_measure, unit_price_label, unit_price_basis ('price'|'regular_price'), offer_id, seller{id, name, is_carrefour, rating, rating_count, rating_scale, url}, shipping_cost, free_shipping, free_shipping_minimum, delivery_days_min, delivery_days_max, availability, in_stock, low_stock, other_offers_count, other_offers_lowest_price, lowest_offer_price (min of the row price and the other offers' lowest; the value the site's price sorts use), rating, review_count, rating_scale, nutriscore, labels[], highlight, is_best_seller, is_new, is_sponsored, image}, count (organic rows), total_results, total_pages, page, page_size, sort, applied_filters, sponsored_dropped, sponsored_count, search_type, available_filters[{field, label, type, selected, values[{value, label, count, selected}], price_range_eur}], has_next_page, store{store_id, store_code, name, is_default, …}, category, category_url","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"deals","description":"carrefour.fr's promotions hub: every product with a running promotion (struck prices, loyalty-card credits, multi-buy offers, catalogue offers), with the same sorts, filters, store pricing and row fields as search.","required_params":[],"optional_params":["page","sort","brand","price_min","price_max","on_promotion","carrefour_brand","organic","nutriscore","facet","include_unavailable","store_id","postal_code","include_sponsored","max_rotations"],"params":[{"name":"page","type":"integer","required":false,"description":"Result page (30 products per page).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"The site's own sort orders. Price sorts order products by their LOWEST offer (lowest_offer_price), which can be a marketplace offer below the row's buy-box price.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance (site default)"},{"value":"price_asc","label":"Lowest offer price first"},{"value":"price_desc","label":"Highest offer price first"},{"value":"unit_price_asc","label":"Price per kg/L, lowest first (groceries)"},{"value":"unit_price_desc","label":"Price per kg/L, highest first (groceries)"},{"value":"rating","label":"Customer rating, best first"}],"default":"relevance"},{"name":"brand","type":"array","required":false,"description":"Brand filter, one or more (comma-separated), as listed in available_filters (field facet_marque), e.g. 'LACTEL,CANDIA'.","on_invalid":"reject","example":"LACTEL"},{"name":"price_min","type":"number","required":false,"description":"Minimum price in EUR (the site's price filter).","on_invalid":"reject","example":5,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in EUR (the site's price filter).","on_invalid":"reject","example":10,"minimum":0},{"name":"on_promotion","type":"boolean","required":false,"description":"Only products with a running promotion (including loyalty-card offers).","on_invalid":"reject","example":true},{"name":"carrefour_brand","type":"boolean","required":false,"description":"Only Carrefour's own-brand products.","on_invalid":"reject"},{"name":"organic","type":"boolean","required":false,"description":"Only organic products.","on_invalid":"reject"},{"name":"nutriscore","type":"array","required":false,"description":"Nutri-Score grades to keep (comma-separated), e.g. 'A,B'.","on_invalid":"reject","allowed_values":[{"value":"A","label":"Nutri-Score A"},{"value":"B","label":"Nutri-Score B"},{"value":"C","label":"Nutri-Score C"},{"value":"D","label":"Nutri-Score D"},{"value":"E","label":"Nutri-Score E"}],"example":"A,B"},{"name":"facet","type":"array","required":false,"description":"Any other facet the site lists in available_filters, as 'field=value' (repeat or comma-separate for several).","on_invalid":"reject","example":"facette_format_lait=Bouteille"},{"name":"include_unavailable","type":"boolean","required":false,"description":"Also list products that cannot be bought right now (the site hides them by default).","on_invalid":"reject","default":false},{"name":"store_id","type":"string","required":false,"description":"Price and stock for this drive/pickup store (a `store_id` from the `stores` action). Default: carrefour.fr's national online catalogue.","on_invalid":"reject","example":"800259"},{"name":"postal_code","type":"string","required":false,"description":"French postal code: prices for the nearest drive/pickup store (echoed in `store`). Use instead of store_id.","on_invalid":"reject","example":"69001","aliases":["zip"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep sponsored rows (flagged is_sponsored). Default: dropped and counted in sponsored_dropped.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id (EAN), ean, title, brand, url, product_type ('product'|'marketplace'), business_type ('food'|'non-food'), category, category_path[], packaging, format, price, currency=EUR, was_price, discount_amount, discount_percent, promotion_label, promotion_ends, loyalty_price, loyalty_offers[{type, label, card_credit, min_quantity, discount_percent, card_credit, card_credit_scope ('unit'|'lot'), credit_basis, price_after_credit (single-unit offers only), lot_price, lot_price_after_credit, valid_from, valid_until}], multibuy_offers[{type, label, quantity, total_price, regular_total, valid_until}], promotion_badges[], unit_price, unit_of_measure, unit_price_label, unit_price_basis ('price'|'regular_price'), offer_id, seller{id, name, is_carrefour, rating, rating_count, rating_scale, url}, shipping_cost, free_shipping, free_shipping_minimum, delivery_days_min, delivery_days_max, availability, in_stock, low_stock, other_offers_count, other_offers_lowest_price, lowest_offer_price (min of the row price and the other offers' lowest; the value the site's price sorts use), rating, review_count, rating_scale, nutriscore, labels[], highlight, is_best_seller, is_new, is_sponsored, image}, count (organic rows), total_results, total_pages, page, page_size, sort, applied_filters, sponsored_dropped, sponsored_count, search_type, available_filters[{field, label, type, selected, values[{value, label, count, selected}], price_range_eur}], has_next_page, store{store_id, store_code, name, is_default, …}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"search/suggest","description":"carrefour.fr's autocomplete for a partial keyword: keyword suggestions and keyword-in-category suggestions, each with its search URL.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Partial keyword to complete.","on_invalid":"reject","example":"lai","aliases":["q"]},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"suggestions[{keyword, url}], category_suggestions[{keyword, category, url}], count","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"lait"}},{"name":"stores","description":"Find Carrefour stores near a French postal code or a latitude/longitude, nearest first: name, banner, format, address, distance, today's opening hours and the drive/pickup services whose `store_id` prices search, category, deals, product/detail and product/offers for that store.","required_params":[],"optional_params":["postal_code","latitude","longitude","mode","page","per_page","max_rotations"],"params":[{"name":"postal_code","type":"string","required":false,"description":"French postal code to search around (or give latitude + longitude).","on_invalid":"reject","example":"69001","aliases":["zip"]},{"name":"latitude","type":"number","required":false,"description":"Latitude (with longitude) — alternative to postal_code.","on_invalid":"reject","example":45.764,"aliases":["lat"]},{"name":"longitude","type":"number","required":false,"description":"Longitude (with latitude).","on_invalid":"reject","example":4.8357,"aliases":["lng","lon"]},{"name":"mode","type":"enum","required":false,"description":"Which stores to list.","on_invalid":"reject","allowed_values":[{"value":"picking","label":"Stores with drive / pickup (selectable as store_id)"},{"value":"delivery","label":"Stores that deliver"},{"value":"all","label":"All stores"}],"default":"picking"},{"name":"page","type":"integer","required":false,"description":"Result page.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"per_page","type":"integer","required":false,"description":"Stores per page (max 20).","on_invalid":"reject","default":10,"minimum":1,"maximum":20},{"name":"max_rotations","type":"integer","required":false,"description":"Maximum fresh exits to try before giving up.","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"stores[]{store_id (use in other actions; null when the store has no drive/pickup), selectable, store_code, name, banner, format, services[{store_id, name, drive_type, status}], address, postal_code, city, latitude, longitude, distance_km, is_open_today, today_opening[{opens, closes}], url}, count, page, per_page, origin{postal_code, commune, latitude, longitude}, mode","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"carrefoursa","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"CarrefourSA API scraper — CarrefourSA (Turkey) online grocery: search and browse products, read the full product record with the regular price and the CarrefourSA Kart member price kept apart, unit prices, multi-buy and basket campaigns, stock, barcode, label sheet and nutrition table, plus reviews and search suggestions. Prices in TRY. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/carrefoursa/v1","spec_available":true,"actions":[{"name":"search","description":"Search carrefoursa.com by keyword, or browse a category, and get one row per product: the regular price and, separately, the CarrefourSA Kart member price when one runs, unit price for weight-sold and multi-pack products, stock status with unit count, multi-buy and basket campaigns with their dates, brand and category path. Filter by brand, price band and in-stock, sort the way the site does, page through the results. The response also lists the categories, brands, price bands and package sizes available for the query.","required_params":[],"optional_params":["query","category","page","page_size","sort","brand","in_stock","price_band","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"What to look for on carrefoursa.com, as a shopper would type it. Turkish keywords match best ('peynir', 'zeytinyağı', 'bebek bezi'); brand names and small typos work too. Optional when `category` is given.","on_invalid":"reject","example":"peynir","aliases":["q","keyword","text"]},{"name":"category","type":"string","required":false,"description":"Browse or narrow to one CarrefourSA category: its code (the number after /c/ in a category URL, e.g. https://www.carrefoursa.com/beyaz-peynir/c/1319 → 1319) or the URL itself. Codes come back in every row's `category.id`, in `keyword_redirect` and in `filters_available`.","on_invalid":"reject","example":"1319","aliases":["category_id","category_code"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"ignore","default":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Products per page, 1-100 (default 20).","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result order — only the orderings carrefoursa.com offers. `sort_applied` in the response is CarrefourSA's own confirmation.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"CarrefourSA's smart ordering (the website default)"},{"value":"best_selling","label":"Best sellers first"},{"value":"price_asc","label":"Lowest displayed price first (the card price when one runs)"},{"value":"price_desc","label":"Highest displayed price first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Only these brands: CarrefourSA brand codes (BRN-1392) as returned in `filters_available.brands` and every row's `brand.id`. Several codes (comma-separated or a list) mean any of them.","on_invalid":"reject","example":"BRN-1392","aliases":["brands","brand_id","brand_ids"]},{"name":"in_stock","type":"boolean","required":false,"description":"true = only products CarrefourSA shows as in stock.","on_invalid":"ignore","default":false},{"name":"price_band","type":"string","required":false,"description":"Only products in these CarrefourSA price bands, exactly as labelled in `filters_available.price_bands` (e.g. '50 TL - 199,99 TL'). Several bands mean any of them. Arbitrary ranges are not supported by the site.","on_invalid":"reject","example":"50 TL - 199,99 TL","aliases":["price_bands"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id, title, brand{id, name, url}, category{id, name, url}, category_path[], url, image, price (number, TRY — what a shopper WITHOUT a CarrefourSA Kart pays), price_display, currency=TRY, original_price (null — no non-card discount was observed), discount_percent (null), member_price (the CarrefourSA Kart price when one runs, else null), member_price_display, member_discount_percent, member_program ('CarrefourSA Kart' | null), member_price_condition (e.g. '100 TL ve Üzeri %40' when the card price needs a minimum basket, else null), unit_price, unit_price_unit ('kg' | 'l' | 'piece'), member_unit_price, unit_price_basis ('sold_by_weight' | 'site_per_piece' | 'package_size' | null), sold_by ('piece' | 'weight'), price_per ('piece' | 'kg'), availability ('in_stock' | 'low_stock' | 'out_of_stock'), in_stock, stock_level (units at the default online store), limited_stock, min_order_quantity, max_order_quantity (an order cap, not stock), order_step, badges[]{type, text}, promotions[]{text, description, code, kind ('multi_buy' | 'basket_threshold' | 'campaign'), card_required, active_from, active_to}, multi_buy_offer, special_today, search_index_rating, search_index_review_count (category browse rows only)}, count, page, page_size, total_results, total_pages, has_more, sort_applied, keyword_redirect{type, id, url} (the category or brand page the website would send this keyword to — rows are still the keyword's own matches), applied_filters[]{filter, id, name}, filters_available{categories[], top_categories[], brands[], package_sizes[]{id, name, count}, price_bands[]{label, count}, in_stock_count, out_of_stock_count} (null if that part of the answer was unavailable), query, category","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"peynir"}},{"name":"product/detail","description":"The full CarrefourSA product record by product code or URL: title, brand, category path, every image, barcode, the regular price and the CarrefourSA Kart price kept apart (with the minimum basket when the card price needs one), unit price, package size, availability and order limits, multi-buy and basket campaigns with dates, the label sheet (ingredients, allergens, origin, storage, food business operator) and the nutrition table, the description and rating.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"CarrefourSA product code — the number every search row returns as `product_id` (30500720) — or a carrefoursa.com product URL.","on_invalid":"reject","example":"30500720","aliases":["id","code","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, title, brand{id, name, url}, category{id, name, url}, category_path[], url, images[], barcode, barcode_in_store_code, price (number, TRY — what a shopper WITHOUT a CarrefourSA Kart pays), price_display, currency=TRY, original_price (null — no non-card discount was observed), discount_percent (null), member_price (the CarrefourSA Kart price when one runs, else null), member_price_display, member_discount_percent, member_program ('CarrefourSA Kart' | null), member_price_condition (e.g. '100 TL ve Üzeri %40' when the card price needs a minimum basket, else null), unit_price, unit_price_unit ('kg' | 'l' | 'piece'), member_unit_price, unit_price_basis ('sold_by_weight' | 'site_per_piece' | 'package_size' | null), sold_by ('piece' | 'weight'), price_per ('piece' | 'kg'), package_size{raw, amount, unit}, availability ('in_stock' | 'out_of_stock'), in_stock, limited_stock, limited_stock_text, min_order_quantity, max_order_quantity, order_step, free_shipping, badges[], promotions[], multi_buy_offer, special_today, sponsored, rating (1-5, null when unrated), review_count (written reviews), rating_scale, description, specs{label: value}, spec_table[], nutrition{basis, reference_intake_basis, rows[]{name, value, reference_intake_percent}, note}, ingredients, allergens, origin, storage, usage, warnings, food_business_operator, approval_number, variants[] (always empty — no variant products seen), price_scope_note}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"30384476"}},{"name":"product/reviews","description":"Written customer reviews of one CarrefourSA product, newest first: star rating (1-5), headline, review text and date. Most products have none; reviewer names are never returned.","required_params":["product_id"],"optional_params":["limit","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"CarrefourSA product code — the number every search row returns as `product_id` (30500720) — or a carrefoursa.com product URL.","on_invalid":"reject","example":"30500720","aliases":["id","code","url"]},{"name":"limit","type":"integer","required":false,"description":"How many reviews to return, newest first (1-100, default 20).","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"reviews[]{rating, headline, comment, date}, count, total_reviews, average_rating, rating_scale (5), order ('newest_first'), product_id","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"30384476"}},{"name":"search/suggest","description":"CarrefourSA's own search-box suggestions for what a shopper has typed so far.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the shopper has typed so far (at least 2 characters).","on_invalid":"reject","example":"çikol","aliases":["q","term","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"suggestions[] (search phrases), products[]{product_id, title, url} (empty unless the site returns product suggestions), query","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"çikol"}}]},{"name":"catawiki","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Catawiki API scraper - Europe's weekly online auctions (watches, art, jewellery, classic cars, coins, wine, collectibles): lot search with live bids, full lot records with expert estimate, reserve status, Buyer Protection fee and shipping per country, bid history, auction and category listings. EUR, GBP or USD in 18 languages. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/catawiki/v1","spec_available":true,"actions":[{"name":"search","description":"Search open Catawiki lots by keyword: lot id, title, image, the current bid in EUR, GBP or USD, whether anyone has bid, closing time, reserve price set and met, buy-now price, free shipping and the auction id. Filter by category, reserve, free shipping, seller country and closing day; sort by relevance, ending soon or newest. Unrelated padding shown for keywords with no results is dropped and counted.","required_params":["query"],"optional_params":["category_id","include_fallback_results","page","per_page","sort","reserve","free_shipping","seller_country","closing_date","language","currency","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Keyword, in any language Catawiki supports (typos such as 'rolx' are corrected by the site).","on_invalid":"reject","example":"rolex","aliases":["q","keyword"]},{"name":"category_id","type":"string","required":false,"description":"Only lots in these Catawiki categories (numbers such as 343 Rolex Watches; `categories` lists them). Comma-separated.","on_invalid":"reject","example":"343","aliases":["category"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":10000},{"name":"per_page","type":"integer","required":false,"description":"Lots per page, 1-100 (default 24, as on the site).","on_invalid":"reject","default":24,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"sort","type":"enum","required":false,"description":"Order. Only orderings measured to change the results are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Catawiki's own relevance (default)"},{"value":"ending_soon","label":"Lots closing soonest first"},{"value":"newest","label":"Most recently published lots first (Catawiki's publication time)"}],"default":"relevance"},{"name":"reserve","type":"enum","required":false,"description":"Only lots with, or without, a reserve price.","on_invalid":"reject","allowed_values":[{"value":"with_reserve","label":"Only lots that have a reserve price"},{"value":"no_reserve","label":"Only lots without a reserve price"}]},{"name":"free_shipping","type":"boolean","required":false,"description":"Only lots with free shipping everywhere.","on_invalid":"reject"},{"name":"seller_country","type":"string","required":false,"description":"Only lots whose seller is in these countries (two-letter codes, comma-separated).","on_invalid":"reject","example":"nl","aliases":["seller_location"]},{"name":"closing_date","type":"string","required":false,"description":"Only lots closing on these days (YYYY-MM-DD, comma-separated).","on_invalid":"reject","example":"2026-09-20","aliases":["ends_on"]},{"name":"language","type":"enum","required":false,"description":"Language of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"nl","label":"Dutch"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"pt","label":"Portuguese"},{"value":"da","label":"Danish"},{"value":"sv","label":"Swedish"},{"value":"no","label":"Norwegian"},{"value":"fi","label":"Finnish"},{"value":"pl","label":"Polish"},{"value":"hu","label":"Hungarian"},{"value":"ro","label":"Romanian"},{"value":"el","label":"Greek"},{"value":"ja","label":"Japanese"},{"value":"zh-Hans","label":"Chinese (simplified)"},{"value":"zh-Hant","label":"Chinese (traditional)"}],"default":"en","example":"de","aliases":["lang","locale"]},{"name":"currency","type":"enum","required":false,"description":"Currency for bids, estimates, fees and shipping. Catawiki converts from EUR itself.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro (the site's default)"},{"value":"GBP","label":"British pound"},{"value":"USD","label":"US dollar"}],"default":"EUR","example":"GBP","aliases":["currency_code"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When Catawiki finds nothing for a keyword it shows unrelated 'you may also like' lots. They are dropped by default and counted; true returns them in `fallback_results`.","on_invalid":"reject","default":false}],"returns":"lots[]{lot_id, title, subtitle, url, image, thumbnail, auction_id, currency, current_bid (number, null while nobody has bid; excludes fee and shipping), has_bids, status (open|closed), is_sold, sold_price (only when sold), reserve_price_set, reserve_price_met (null when no reserve), buy_now_price_eur, buy_now_available, free_shipping, start_time, end_time, favorite_count, explicit_content, bid_state (ok|unavailable), rating (null), review_count (null)}, count, total_results, page, has_more, fallback_results_dropped, fallback_results[] (only with include_fallback_results), corrected_query, query, filters{}","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"rolex","per_page":24}},{"name":"product/detail","description":"One Catawiki lot in full, open or closed: title, description, every image, specifications (brand, model, condition, year…), the expert or retail estimate, the current or final bid, bid count, next minimum bid, reserve met, sold or not, buy-now price, the Buyer Protection fee and the fee on the current bid, shipping rates per country (and the total if won now for your country), delivery time, the seller (pro or private, score, feedback counts, objects sold, country), the curating experts and the last 10 bids.","required_params":["lot_id"],"optional_params":["shipping_country","language","currency","max_rotations"],"params":[{"name":"lot_id","type":"integer","required":true,"description":"Catawiki lot id - the number in /l/<id>-<slug>. A full lot URL works.","on_invalid":"reject","example":106723305,"aliases":["id","url","lot"]},{"name":"shipping_country","type":"string","required":false,"description":"Two-letter country code to quote shipping and the total cost for. Default: the shipping rates for every country are returned without a total.","on_invalid":"reject","example":"de","aliases":["destination_country","ship_to"]},{"name":"language","type":"enum","required":false,"description":"Language of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"nl","label":"Dutch"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"pt","label":"Portuguese"},{"value":"da","label":"Danish"},{"value":"sv","label":"Swedish"},{"value":"no","label":"Norwegian"},{"value":"fi","label":"Finnish"},{"value":"pl","label":"Polish"},{"value":"hu","label":"Hungarian"},{"value":"ro","label":"Romanian"},{"value":"el","label":"Greek"},{"value":"ja","label":"Japanese"},{"value":"zh-Hans","label":"Chinese (simplified)"},{"value":"zh-Hant","label":"Chinese (traditional)"}],"default":"en","example":"de","aliases":["lang","locale"]},{"name":"currency","type":"enum","required":false,"description":"Currency for bids, estimates, fees and shipping. Catawiki converts from EUR itself.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro (the site's default)"},{"value":"GBP","label":"British pound"},{"value":"USD","label":"US dollar"}],"default":"EUR","example":"GBP","aliases":["currency_code"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"item{lot_id, title, subtitle, url, language, status (open|closed), is_sold, currency, current_bid, last_bid, sold_price, bid_count, next_minimum_bid, reserve_price_met, close_to_reserve_price, buy_now_price, buy_now_price_eur, buy_now_available_until, experts_estimate{min, max, type (expert|retail), label}, buyer_protection_fee{percentage, fixed, currency}, buyer_protection_fee_amount (on current_bid, or on sold_price when sold), total_if_won_now (open lots with shipping_country), start_time, end_time, auction_id, category{id, url, level}, description, auto_translated_description, summary, specifications[]{name, value, specification_id, value_id}, attributes{brand, model, condition, gender, movement, material, country_of_origin, period, case_diameter, year}, images[], image, video_count, experts[]{id, name, bio}, seller{id, name, url, type (pro|private), is_top_seller, country{code, name}, city, score, score_scale, positive_count, neutral_count, negative_count, feedback_count, objects_sold, lots_in_auction, member_since, badges[], profile}, shipping{destination{code, name, price, available, currency}, rates[]{country_code, country, price, currency}, delivery_days{from, to}, combined_shipping_allowed, delivery_methods[], pickup_only, pickup_location, extra_insurance, payment_methods[]}, favorite_count, high_interest, explicit_content, recent_bids[], gtin (null), rating (null), review_count (null)}, auction{auction_id, title, url, status, start_time, close_time, closed_at, lot_count, themed, image}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"lot/bids","description":"The full bid history of one Catawiki lot, newest first: amount in EUR, GBP or USD, time, the bidder's public pseudonym and country, and how many bids that bidder has placed on Catawiki.","required_params":["lot_id"],"optional_params":["currency","max_rotations"],"params":[{"name":"lot_id","type":"integer","required":true,"description":"Catawiki lot id - the number in /l/<id>-<slug>. A full lot URL works.","on_invalid":"reject","example":106723305,"aliases":["id","url","lot"]},{"name":"currency","type":"enum","required":false,"description":"Currency for bids, estimates, fees and shipping. Catawiki converts from EUR itself.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro (the site's default)"},{"value":"GBP","label":"British pound"},{"value":"USD","label":"US dollar"}],"default":"EUR","example":"GBP","aliases":["currency_code"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"lot_id, currency, bids[]{bid_id, amount, currency, time, bidder, bidder_country, bidder_total_bids, from_order}, count, highest_bid","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"auction/lots","description":"Every lot of one Catawiki auction, open or already closed, with the auction's title, status and closing time and each lot's current or final bid, sold flag, reserve status and buy-now price - a closed auction is a list of real sale results.","required_params":["auction_id"],"optional_params":["page","per_page","language","currency","max_rotations"],"params":[{"name":"auction_id","type":"integer","required":true,"description":"Catawiki auction id - the number in /a/<id>-<slug>; every lot row returns it.","on_invalid":"reject","example":1263236,"aliases":["id","url","auction"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":10000},{"name":"per_page","type":"integer","required":false,"description":"Lots per page, 1-100 (default 24, as on the site).","on_invalid":"reject","default":24,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"language","type":"enum","required":false,"description":"Language of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"nl","label":"Dutch"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"pt","label":"Portuguese"},{"value":"da","label":"Danish"},{"value":"sv","label":"Swedish"},{"value":"no","label":"Norwegian"},{"value":"fi","label":"Finnish"},{"value":"pl","label":"Polish"},{"value":"hu","label":"Hungarian"},{"value":"ro","label":"Romanian"},{"value":"el","label":"Greek"},{"value":"ja","label":"Japanese"},{"value":"zh-Hans","label":"Chinese (simplified)"},{"value":"zh-Hant","label":"Chinese (traditional)"}],"default":"en","example":"de","aliases":["lang","locale"]},{"name":"currency","type":"enum","required":false,"description":"Currency for bids, estimates, fees and shipping. Catawiki converts from EUR itself.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro (the site's default)"},{"value":"GBP","label":"British pound"},{"value":"USD","label":"US dollar"}],"default":"EUR","example":"GBP","aliases":["currency_code"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"auction{auction_id, title, url, status, start_time, close_time, closed_at, lot_count, themed, image}, lots[]{lot_id, title, subtitle, url, image, thumbnail, auction_id, currency, current_bid (number, null while nobody has bid; excludes fee and shipping), has_bids, status (open|closed), is_sold, sold_price (only when sold), reserve_price_set, reserve_price_met (null when no reserve), buy_now_price_eur, buy_now_available, free_shipping, start_time, end_time, favorite_count, explicit_content, bid_state (ok|unavailable), rating (null), review_count (null)}, count, total_results, page, has_more","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"category/products","description":"Browse the open lots of one Catawiki category with live bids, the same row fields as search, and the same reserve, free shipping, seller country and closing day filters and sorts.","required_params":["category_id"],"optional_params":["page","per_page","sort","reserve","free_shipping","seller_country","closing_date","language","currency","max_rotations","include_sponsored"],"params":[{"name":"category_id","type":"integer","required":true,"description":"Catawiki category id - the number in /c/<id>-<slug>; `categories` lists them.","on_invalid":"reject","example":343,"aliases":["category","url"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":10000},{"name":"per_page","type":"integer","required":false,"description":"Lots per page, 1-100 (default 24, as on the site).","on_invalid":"reject","default":24,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"sort","type":"enum","required":false,"description":"Order. Only orderings measured to change the results are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Catawiki's own relevance (default)"},{"value":"ending_soon","label":"Lots closing soonest first"},{"value":"newest","label":"Most recently published lots first (Catawiki's publication time)"}],"default":"relevance"},{"name":"reserve","type":"enum","required":false,"description":"Only lots with, or without, a reserve price.","on_invalid":"reject","allowed_values":[{"value":"with_reserve","label":"Only lots that have a reserve price"},{"value":"no_reserve","label":"Only lots without a reserve price"}]},{"name":"free_shipping","type":"boolean","required":false,"description":"Only lots with free shipping everywhere.","on_invalid":"reject"},{"name":"seller_country","type":"string","required":false,"description":"Only lots whose seller is in these countries (two-letter codes, comma-separated).","on_invalid":"reject","example":"nl","aliases":["seller_location"]},{"name":"closing_date","type":"string","required":false,"description":"Only lots closing on these days (YYYY-MM-DD, comma-separated).","on_invalid":"reject","example":"2026-09-20","aliases":["ends_on"]},{"name":"language","type":"enum","required":false,"description":"Language of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"nl","label":"Dutch"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"pt","label":"Portuguese"},{"value":"da","label":"Danish"},{"value":"sv","label":"Swedish"},{"value":"no","label":"Norwegian"},{"value":"fi","label":"Finnish"},{"value":"pl","label":"Polish"},{"value":"hu","label":"Hungarian"},{"value":"ro","label":"Romanian"},{"value":"el","label":"Greek"},{"value":"ja","label":"Japanese"},{"value":"zh-Hans","label":"Chinese (simplified)"},{"value":"zh-Hant","label":"Chinese (traditional)"}],"default":"en","example":"de","aliases":["lang","locale"]},{"name":"currency","type":"enum","required":false,"description":"Currency for bids, estimates, fees and shipping. Catawiki converts from EUR itself.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro (the site's default)"},{"value":"GBP","label":"British pound"},{"value":"USD","label":"US dollar"}],"default":"EUR","example":"GBP","aliases":["currency_code"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5},{"name":"include_sponsored","type":"boolean","required":false,"description":"Catawiki can promote lots on category pages. They are dropped by default and counted in sponsored_dropped; true returns them with sponsored: true.","on_invalid":"reject","default":false}],"returns":"category{id, name, url, parent_id, level, auction_count, ancestors[]{id, name, level}}, lots[]{lot_id, title, subtitle, url, image, thumbnail, auction_id, currency, current_bid (number, null while nobody has bid; excludes fee and shipping), has_bids, status (open|closed), is_sold, sold_price (only when sold), reserve_price_set, reserve_price_met (null when no reserve), buy_now_price_eur, buy_now_available, free_shipping, start_time, end_time, favorite_count, explicit_content, bid_state (ok|unavailable), sponsored, rating (null), review_count (null)}, count, total_results, page, has_more, sponsored_dropped (count is organic rows)","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"Catawiki's category tree one level at a time: id, name, parent, link and how many auctions each category is running.","required_params":[],"optional_params":["level","parent_id","language","max_rotations"],"params":[{"name":"level","type":"integer","required":false,"description":"Category tree level: 0 top categories (16), 1 categories (80), 2 sub-categories (~310).","on_invalid":"reject","default":0,"minimum":0,"maximum":2},{"name":"parent_id","type":"integer","required":false,"description":"Only categories directly under this one.","on_invalid":"reject","example":333},{"name":"language","type":"enum","required":false,"description":"Language of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"nl","label":"Dutch"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"pt","label":"Portuguese"},{"value":"da","label":"Danish"},{"value":"sv","label":"Swedish"},{"value":"no","label":"Norwegian"},{"value":"fi","label":"Finnish"},{"value":"pl","label":"Polish"},{"value":"hu","label":"Hungarian"},{"value":"ro","label":"Romanian"},{"value":"el","label":"Greek"},{"value":"ja","label":"Japanese"},{"value":"zh-Hans","label":"Chinese (simplified)"},{"value":"zh-Hant","label":"Chinese (traditional)"}],"default":"en","example":"de","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"categories[]{id, name, url, parent_id, level, auction_count}, count, level","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"Catawiki's own keyword suggestions for the start of a search term.","required_params":["query"],"optional_params":["language","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The start of a keyword.","on_invalid":"reject","example":"rol","aliases":["q","keyword"]},{"name":"language","type":"enum","required":false,"description":"Language of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"nl","label":"Dutch"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"pt","label":"Portuguese"},{"value":"da","label":"Danish"},{"value":"sv","label":"Swedish"},{"value":"no","label":"Norwegian"},{"value":"fi","label":"Finnish"},{"value":"pl","label":"Polish"},{"value":"hu","label":"Hungarian"},{"value":"ro","label":"Romanian"},{"value":"el","label":"Greek"},{"value":"ja","label":"Japanese"},{"value":"zh-Hans","label":"Chinese (simplified)"},{"value":"zh-Hant","label":"Chinese (traditional)"}],"default":"en","example":"de","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"query, suggestions[], count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"rolex"}}]},{"name":"cdiscount","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Cdiscount API scraper — France's #2 marketplace (cdiscount.com): search products, read the full listing (EAN, specs, variants, buy-box price with its tax breakdown, reference price, delivery), list every seller's offer, and read reviews. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/cdiscount/v1","spec_available":true,"actions":[{"name":"search","description":"Search cdiscount.com by keyword, with the site's sorts and filters (condition, seller kind, Cdiscount à volonté, minimum rating, brand). Each row is the product's buy-box offer: product code, offer id, title, URL, brand, the buy-box price with its eco-participation/VAT/copy-levy breakdown, the legal reference price and discount when shown, condition, seller (Cdiscount or marketplace, with rating), CDAV flags, star rating, sponsored flag, image, and how many other new/used offers exist.","required_params":["query"],"optional_params":["page","sort","price_min","price_max","condition","seller_kind","cdav_only","min_rating","brand","include_sponsored","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Keyword to search on cdiscount.com (French or brand/model words: 'aspirateur robot', 'iphone 15', 'lego technic').","on_invalid":"reject","example":"aspirateur robot","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Cdiscount serves 47 organic listings per page; `total_pages` says how many exist. A page past the end returns an empty page.","on_invalid":"reject","default":1,"minimum":1,"maximum":300},{"name":"sort","type":"enum","required":false,"description":"Order of the results — the site's own orderings. Price sorts follow the buy-box price.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Cdiscount's default order"},{"value":"price_asc","label":"Lowest buy-box price first"},{"value":"price_desc","label":"Highest buy-box price first"},{"value":"best_selling","label":"Best sellers (last 7 days) first"},{"value":"rating","label":"Highest rated first"},{"value":"seller_rating","label":"Highest seller rating first"}],"default":"relevance"},{"name":"price_min","type":"number","required":false,"description":"Lowest buy-box price in EUR (inclusive). Applied to the returned page; rows below it are dropped and counted in `dropped_outside_price_range`.","on_invalid":"reject","example":20,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest buy-box price in EUR (inclusive).","on_invalid":"reject","example":50,"minimum":0},{"name":"condition","type":"enum","required":false,"description":"Filter by condition (server-side facet).","on_invalid":"reject","allowed_values":[{"value":"new","label":"New only"},{"value":"used","label":"Used or refurbished only"}]},{"name":"seller_kind","type":"enum","required":false,"description":"Restrict to Cdiscount's own offers or to marketplace sellers.","on_invalid":"reject","allowed_values":[{"value":"cdiscount","label":"Sold by Cdiscount"},{"value":"marketplace","label":"Sold by marketplace sellers"}]},{"name":"cdav_only","type":"boolean","required":false,"description":"Only listings eligible to Cdiscount à volonté (member free shipping).","on_invalid":"reject"},{"name":"min_rating","type":"enum","required":false,"description":"Minimum customer rating (server-side facet).","on_invalid":"reject","allowed_values":[{"value":"4","label":"4 stars and up"},{"value":"3","label":"3 stars and up"}]},{"name":"brand","type":"string","required":false,"description":"Cdiscount brand slug (as in its brand facet, e.g. 'lego', 'apple').","on_invalid":"reject","example":"lego"},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default): Cdiscount's sponsored placements are dropped and counted in `sponsored_dropped`. true: they are returned in place, flagged `is_sponsored` with `advertiser`. `count` always counts organic rows only.","on_invalid":"ignore","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no product on the page contains a query word, Cdiscount pads the page with unrelated products. false (default): results are empty and `fallback_results_dropped` counts what was dropped. true: those products are returned apart, in `fallback_results`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id, offer_id, title, url, brand_id, price, currency=EUR, price_without_vat, reference_price, reference_price_type, reference_price_date, discount_percent, eco_participation, vat_amount, copy_levy, price_includes_eco_fee, unit_price, condition ('new'|'refurbished'|'used'), condition_grade, seller{id, name, is_cdiscount, rating, rating_scale, rating_count, sales_count, expedition_country}, is_cdav, cdav_free_shipping, free_shipping, rating, rating_count, rating_scale, is_sponsored, advertiser, other_new_offers, other_used_offers, lowest_new_offer_price, lowest_used_offer_price, category_id, category_code_path, promotions, image, images}, count (organic rows), sponsored_count (returned sponsored rows, only with include_sponsored=true), sponsored_dropped, total_results (0 when the page was fallback), total_pages, page, page_size, sort, query, did_you_mean, applied_filters, selected_category, dropped_outside_price_range, keyword_matches_on_page, fallback_results_dropped, fallback_total (Cdiscount's count for a dropped fallback page), fallback_results[] (only with include_fallback_results=true), page_notice; rating is rounded to 2 decimals, rating_count is the raw count","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"aspirateur robot"}},{"name":"product/detail","description":"The full Cdiscount product record by URL or product_id: title, brand, EAN, buy-box price with its eco-participation/VAT/copy-levy breakdown, the legal reference price and discount, the 4x instalment option, availability, condition, seller, the number of other new/used offers and their lowest prices, star rating with the 1-5 breakdown, energy label, repairability index, images, specs, description, breadcrumb, variants and the delivery options (cost + date).","required_params":[],"optional_params":["url","product_id","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"A cdiscount.com product URL. Every search row returns one as `url`.","on_invalid":"reject","example":"https://www.cdiscount.com/juniors/jeux-de-construction/x/f-12083-lego77260.html","aliases":["product_url"]},{"name":"product_id","type":"string","required":false,"description":"Alternative to `url`: the product code (the part after -f-<dept>- in a product URL). Every search row returns it as `product_id`.","on_invalid":"reject","example":"lego77260","aliases":["code","product_code","sku"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, offer_id, sku, title, url, brand, brand_id, ean, manufacturer_model_number, price, currency=EUR, price_without_vat, reference_price, reference_price_type, reference_price_date, discount_percent, eco_participation, vat_amount, copy_levy, price_includes_eco_fee, installment_4x{monthly_amount, first_amount, months, fee_rate_percent, total_fee, is_free}, availability, in_stock, max_quantity, is_preorder, condition, condition_grade, seller{...}, total_offers, total_new_offers, total_used_offers, lowest_new_offer_price, lowest_used_offer_price, rating, rating_count, rating_scale, rating_breakdown, recommended_count, energy_label, repairability_index, image_count, images[], specs[{group, attributes[{name, value}]}], description, short_description, category_code_path, breadcrumb[{name, url}], variants{axes[], current_key, options[{key, product_id, offer_id, url, price, is_current}]}, delivery[{mode, name, price, cdav_price, min_delivery_date, max_delivery_date, speed}], video_url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"lego77260"}},{"name":"product/offers","description":"Every seller's offer for one product (new + used/refurbished), by URL or product_id: each offer's price with its tax breakdown, the legal reference price, condition, the seller (with rating and sales count), CDAV and free-shipping flags, and the offer URL. The buy-box is not always the cheapest, so this is the multi-seller price view.","required_params":[],"optional_params":["url","product_id","sort","page","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"A cdiscount.com product URL. Every search row returns one as `url`.","on_invalid":"reject","example":"https://www.cdiscount.com/juniors/jeux-de-construction/x/f-12083-lego77260.html","aliases":["product_url"]},{"name":"product_id","type":"string","required":false,"description":"Alternative to `url`: the product code (the part after -f-<dept>- in a product URL). Every search row returns it as `product_id`.","on_invalid":"reject","example":"lego77260","aliases":["code","product_code","sku"]},{"name":"sort","type":"enum","required":false,"description":"Order of the seller offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Cdiscount's default order"},{"value":"price_asc","label":"Cheapest offer first"},{"value":"price_desc","label":"Dearest offer first"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Offer page, 1-based. Cdiscount serves 4 offers per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"offers[]{offer_id, seller{id, name, is_cdiscount, rating, rating_scale, rating_count, sales_count, expedition_country}, price, currency=EUR, price_without_vat, reference_price, discount_percent, eco_participation, vat_amount, condition, condition_grade, is_cdav, cdav_free_shipping, free_shipping, rating, rating_count, url}, count, total_offers, total_pages, page, product{product_id, title}, cheapest, lowest_new_offer_price, lowest_used_offer_price","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"lego77260"}},{"name":"product/reviews","description":"Customer reviews for a product, by URL or product_id, paged and sortable, with an optional star filter. Each review carries its score, title, text, author nickname, date, per-criterion scores when present, and whether it was syndicated from the brand.","required_params":[],"optional_params":["url","product_id","page","per_page","sort","stars","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"A cdiscount.com product URL. Every search row returns one as `url`.","on_invalid":"reject","example":"https://www.cdiscount.com/juniors/jeux-de-construction/x/f-12083-lego77260.html","aliases":["product_url"]},{"name":"product_id","type":"string","required":false,"description":"Alternative to `url`: the product code (the part after -f-<dept>- in a product URL). Every search row returns it as `product_id`.","on_invalid":"reject","example":"lego77260","aliases":["code","product_code","sku"]},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"per_page","type":"integer","required":false,"description":"Reviews per page (1-50).","on_invalid":"reject","default":10,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Order of the reviews.","on_invalid":"reject","allowed_values":[{"value":"most_helpful","label":"Cdiscount's default order"},{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"lowest_rating","label":"Lowest scores first"}],"default":"most_helpful"},{"name":"stars","type":"string","required":false,"description":"Comma-separated star values to keep (1-5), e.g. '1,2' for the low scores.","on_invalid":"reject","example":"1,2"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"reviews[]{id, score, title, content, nickname, date, product_use_date, criterions[{name, score}], source_type, source_name, images[]}, count, total_reviews, average_rating, rating_scale, recommended_count, rating_breakdown, product_id, page, sort","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"search/suggest","description":"Cdiscount's autocomplete for a partial query: product suggestions (title, url, price, marketplace flag) and keyword suggestions.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Keyword to search on cdiscount.com (French or brand/model words: 'aspirateur robot', 'iphone 15', 'lego technic').","on_invalid":"reject","example":"aspirateur robot","aliases":["q","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"suggestions[{title, url, price, currency=EUR, is_marketplace}], keyword_suggestions[{keyword, categories[]}], count","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"aspirateur robot"}}]},{"name":"ceneo","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Ceneo API scraper — Polish price comparison: search products, read the full product record, and get every merchant's offer (price, shop rating, delivery) for one product on ceneo.pl. Prices in PLN. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/ceneo/v1","spec_available":true,"actions":[{"name":"search","description":"Search ceneo.pl by keyword and get the matching products: Ceneo product id, title, brand, image, the FROM price (the cheapest offer Ceneo knows for that product), how many shops sell it, the customer rating and review count, the category, and Ceneo's own key-parameter preview. Use the returned `product_id` with `product/offers` to get every shop's price for that product.","required_params":["query"],"optional_params":["page","sort","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for on ceneo.pl. Polish keywords match best, but brand and model numbers (e.g. 'logitech g733', 'iPhone 15 128GB') work directly. Ceneo matches loosely, so a two-word query returns accessories as well as the product itself.","on_invalid":"reject","example":"logitech g733","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-BASED (1, 2, 3…). 30 products per page. `total_results` tells you how many exist when Ceneo answered as a keyword search; on a category answer it is null and you page until a page comes back empty.","on_invalid":"ignore","default":1,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Only orderings ceneo.pl actually honours are accepted; anything else is rejected rather than silently ignored. Note that `price_asc` sorts on each product's CHEAPEST offer.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Ceneo's own recommended order (default)"},{"value":"price_asc","label":"Cheapest first (by the product's lowest offer)"},{"value":"price_desc","label":"Most expensive first"},{"value":"rating_desc","label":"Highest customer rating first"},{"value":"popularity","label":"Most visited products first"}],"default":"relevance"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1–8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{product_id, title, brand, url, image, price_min, price_min_display, price_max (null — the search card publishes no upper bound; product/detail has the band), currency=PLN, offer_count (how many shops sell it — null when Ceneo prints no shop count on the card), free_delivery_offer_count, rating, review_count, category, category_id, category_url, key_specs[], variant_count, promoted}, count, excluded_shop_offers (single shop-offer tiles Ceneo mixes into the grid; they have no Ceneo product page, so they are counted, not returned), total_results (null when Ceneo answered with a category page — see search_mode), search_mode ('keyword' | 'category' when Ceneo redirected the keyword onto one of its own category pages), resolved_category, resolved_url (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"logitech g733"}},{"name":"product/detail","description":"The full Ceneo product record by `product_id` (or product URL): title, brand, description, image gallery, the price BAND across all shops (price_min/price_max) with Ceneo's own offer count, the customer rating, the category breadcrumb and the complete technical specification, grouped exactly as Ceneo groups it.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Ceneo product id — the number in the product URL (https://www.ceneo.pl/108733030). A full product URL is also accepted. Every `search` row returns this as `product_id`.","on_invalid":"reject","example":"108733030","aliases":["id","pid","sku","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1–8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, title, brand, url, description, images[], price_min, price_max, price_min_display, price_max_display, currency=PLN, offer_count, availability, condition, rating, review_count, rating_scale, category, breadcrumb[], specs[]{group, attributes{name: value}}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"108733030"}},{"name":"product/offers","description":"Every shop offer for one product — the price comparison itself. For the given `product_id` you get one row per merchant: merchant name, Ceneo merchant id, merchant domain, price (numeric and formatted), the Ceneo shop rating and how many reviews it rests on, the delivery cost line, whether delivery is free, the declared dispatch time and a working offer link. Rows are ordered cheapest first. Ceneo shows only part of the list on the product page; by default this action returns the complete one.","required_params":["product_id"],"optional_params":["all_offers","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Ceneo product id — the number in the product URL (https://www.ceneo.pl/108733030). A full product URL is also accepted. Every `search` row returns this as `product_id`.","on_invalid":"reject","example":"108733030","aliases":["id","pid","sku","url"]},{"name":"all_offers","type":"boolean","required":false,"description":"true (default) returns EVERY merchant offer Ceneo lists for the product. false returns only the offers the product page shows without expanding the list (about 15) and costs one request less.","on_invalid":"ignore","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1–8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, title, brand, price_min, price_max, currency=PLN, offer_count (Ceneo's own published count)} + offers[]{position, offer_id, seller{id, name, domain, rating (0-5, null for a shop Ceneo has not rated), rating_count}, price (number), price_display, currency=PLN, offer_url, offer_title (the merchant's own listing title), delivery, free_delivery, dispatch, promoted, product_id} + count, cheapest, most_expensive","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"108733030"}}]},{"name":"change-detect","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Change-Detect API — website content monitoring and change detection: noise-resistant content and structural fingerprints, human-readable diffs, batch URL snapshots — stateless building block for SEO, compliance and competitor-watch workflows","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/change-detect/v1","spec_available":true,"actions":[{"name":"snapshot","description":"Fetch a URL and return a noise-resistant fingerprint: content_hash (normalised main content, rotating-token-stripped), structural_hash (DOM skeleton), text_hash, title, meta_description, main_content (boilerplate-stripped), word_count, links[]. Store the returned snapshot/hash and feed it back to diff/monitor_check later.","required_params":["url"],"optional_params":["selector","follow_redirects"],"params":[{"name":"url","type":"string","required":true,"description":"The page to fingerprint. Full URL (https://example.com/page) or bare domain (example.com → https:// assumed). Only http/https; private / internal / cloud-metadata targets are SSRF-blocked. Alias: target.","on_invalid":"reject","example":"https://example.com","aliases":["u","target","link"]},{"name":"selector","type":"string","required":false,"description":"Scope detection to a region instead of the whole page. Accepts a FULL CSS selector ('div.price-box > span.amount', '.product:nth-child(2)', '[data-testid=total]') OR an XPath ('//div[@id=\"price\"]', '//table//tr[2]/td[3]') — lxml-backed. If the selector matches nothing the whole page is used and `selector_matched:false` is reported.","on_invalid":"ignore","example":"#price","aliases":["css","css_selector","xpath","region"]},{"name":"follow_redirects","type":"boolean","required":false,"description":"Follow redirects (http→https, apex→www) before fingerprinting the final URL (default true). Each hop is independently SSRF-validated.","on_invalid":"ignore","default":true,"example":true,"aliases":["follow"]}],"returns":"content_hash, structural_hash, text_hash, title, meta_description, main_content, normalized_text, word_count, links[], link_count, content_type, status, fetched_at, byte_size, likely_js_app, final_url, selector_matched","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://example.com"}},{"name":"diff","description":"Diff a page against a prior baseline (snapshot object OR content_hash OR raw text), or compare two live URLs (url + url2). Returns changed(bool), change_ratio(0..1), change_type(text|structural|both|none), added[]/removed[]/modified[] blocks, and a human summary — all on the NOISE-RESISTANT normalised content.","required_params":["url"],"optional_params":["baseline","url2","selector","mode","follow_redirects"],"params":[{"name":"url","type":"string","required":true,"description":"The page to fingerprint. Full URL (https://example.com/page) or bare domain (example.com → https:// assumed). Only http/https; private / internal / cloud-metadata targets are SSRF-blocked. Alias: target.","on_invalid":"reject","example":"https://example.com","aliases":["u","target","link"]},{"name":"baseline","type":"object","required":false,"description":"The prior state to diff against: a snapshot object returned by a previous `snapshot` call, OR a 64-hex content_hash, OR raw prior text/HTML. (diff needs `baseline` OR `url2`.)","on_invalid":"ignore","example":{"content_hash":"…","normalized_text":"…"},"aliases":["previous","prior","old"]},{"name":"url2","type":"string","required":false,"description":"Second URL — when comparing two live pages (A vs B) instead of a page against a stored baseline. SSRF-guarded like `url`.","on_invalid":"reject","example":"https://example.org","aliases":["b","url_b","compare_url"]},{"name":"selector","type":"string","required":false,"description":"Scope detection to a region instead of the whole page. Accepts a FULL CSS selector ('div.price-box > span.amount', '.product:nth-child(2)', '[data-testid=total]') OR an XPath ('//div[@id=\"price\"]', '//table//tr[2]/td[3]') — lxml-backed. If the selector matches nothing the whole page is used and `selector_matched:false` is reported.","on_invalid":"ignore","example":"#price","aliases":["css","css_selector","xpath","region"]},{"name":"mode","type":"enum","required":false,"description":"What to compare: text (main content, default) | structural (DOM skeleton) | full (both) | links (outbound link set).","on_invalid":"ignore","allowed_values":[{"value":"text","label":"Compare the noise-resistant main-content TEXT (default — detects wording changes)"},{"value":"structural","label":"Compare the DOM tag-skeleton only (detects layout/structure changes)"},{"value":"full","label":"Compare BOTH text and structure (changed if either differs)"},{"value":"links","label":"Compare the set of outbound links only (detects added/removed links)"}],"default":"text","example":"text"},{"name":"follow_redirects","type":"boolean","required":false,"description":"Follow redirects (http→https, apex→www) before fingerprinting the final URL (default true). Each hop is independently SSRF-validated.","on_invalid":"ignore","default":true,"example":true,"aliases":["follow"]}],"returns":"changed, change_ratio, change_type, added[], removed[], modified[], added_count, removed_count, modified_count, structural_changed, summary, current{content_hash,structural_hash,...}, baseline_kind","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://example.com","url2":"https://www.iana.org/help/example-domains"}},{"name":"monitor_check","description":"The stateless half of monitoring: re-fetch the URL and tell you FAST whether it changed since a known hash. Pass baseline_hash (+ optional selector/mode). Returns changed(bool) + current_hash + a short diff_summary — the cheap 'did it change?' path.","required_params":["url","baseline_hash"],"optional_params":["selector","mode","follow_redirects"],"params":[{"name":"url","type":"string","required":true,"description":"The page to fingerprint. Full URL (https://example.com/page) or bare domain (example.com → https:// assumed). Only http/https; private / internal / cloud-metadata targets are SSRF-blocked. Alias: target.","on_invalid":"reject","example":"https://example.com","aliases":["u","target","link"]},{"name":"baseline_hash","type":"string","required":true,"description":"The content_hash (or text_hash) from a prior snapshot. monitor_check re-fetches the URL and tells you, fast, whether it changed since this hash. 64-hex.","on_invalid":"ignore","example":"3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b","aliases":["hash","previous_hash","prev_hash"]},{"name":"selector","type":"string","required":false,"description":"Scope detection to a region instead of the whole page. Accepts a FULL CSS selector ('div.price-box > span.amount', '.product:nth-child(2)', '[data-testid=total]') OR an XPath ('//div[@id=\"price\"]', '//table//tr[2]/td[3]') — lxml-backed. If the selector matches nothing the whole page is used and `selector_matched:false` is reported.","on_invalid":"ignore","example":"#price","aliases":["css","css_selector","xpath","region"]},{"name":"mode","type":"enum","required":false,"description":"What to compare: text (main content, default) | structural (DOM skeleton) | full (both) | links (outbound link set).","on_invalid":"ignore","allowed_values":[{"value":"text","label":"Compare the noise-resistant main-content TEXT (default — detects wording changes)"},{"value":"structural","label":"Compare the DOM tag-skeleton only (detects layout/structure changes)"},{"value":"full","label":"Compare BOTH text and structure (changed if either differs)"},{"value":"links","label":"Compare the set of outbound links only (detects added/removed links)"}],"default":"text","example":"text"},{"name":"follow_redirects","type":"boolean","required":false,"description":"Follow redirects (http→https, apex→www) before fingerprinting the final URL (default true). Each hop is independently SSRF-validated.","on_invalid":"ignore","default":true,"example":true,"aliases":["follow"]}],"returns":"changed, current_hash, baseline_hash, mode, hash_kind, diff_summary, final_url, selector_matched, fetched_at","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://example.com","baseline_hash":"0000000000000000000000000000000000000000000000000000000000000000"}},{"name":"extract","description":"Main-content extraction only — boilerplate (nav/header/footer/ads/cookie/comments) stripped → clean text + structured blocks + links. Useful to feed clean diffs or to get just the article. No fingerprint comparison.","required_params":["url"],"optional_params":["selector","follow_redirects"],"params":[{"name":"url","type":"string","required":true,"description":"The page to fingerprint. Full URL (https://example.com/page) or bare domain (example.com → https:// assumed). Only http/https; private / internal / cloud-metadata targets are SSRF-blocked. Alias: target.","on_invalid":"reject","example":"https://example.com","aliases":["u","target","link"]},{"name":"selector","type":"string","required":false,"description":"Scope detection to a region instead of the whole page. Accepts a FULL CSS selector ('div.price-box > span.amount', '.product:nth-child(2)', '[data-testid=total]') OR an XPath ('//div[@id=\"price\"]', '//table//tr[2]/td[3]') — lxml-backed. If the selector matches nothing the whole page is used and `selector_matched:false` is reported.","on_invalid":"ignore","example":"#price","aliases":["css","css_selector","xpath","region"]},{"name":"follow_redirects","type":"boolean","required":false,"description":"Follow redirects (http→https, apex→www) before fingerprinting the final URL (default true). Each hop is independently SSRF-validated.","on_invalid":"ignore","default":true,"example":true,"aliases":["follow"]}],"returns":"main_content, blocks[], word_count, title, meta_description, links[], link_count, content_hash, content_type, final_url, selector_matched","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://example.com"}},{"name":"batch","description":"Snapshot up to 20 URLs concurrently in one call (each independently SSRF-guarded, shared concurrency). Returns a compact fingerprint per URL.","required_params":["urls"],"optional_params":["selector"],"params":[{"name":"urls","type":"array","required":true,"description":"List of URLs to snapshot in one call (max 20); each is independently SSRF-guarded and fetched concurrently.","on_invalid":"reject","example":["https://example.com","https://example.org"]},{"name":"selector","type":"string","required":false,"description":"Scope detection to a region instead of the whole page. Accepts a FULL CSS selector ('div.price-box > span.amount', '.product:nth-child(2)', '[data-testid=total]') OR an XPath ('//div[@id=\"price\"]', '//table//tr[2]/td[3]') — lxml-backed. If the selector matches nothing the whole page is used and `selector_matched:false` is reported.","on_invalid":"ignore","example":"#price","aliases":["css","css_selector","xpath","region"]}],"returns":"results[] (url, ok, content_hash, structural_hash, text_hash, title, word_count, link_count, likely_js_app | error), count, ok_count","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"urls":["https://example.com","https://www.iana.org/domains/reserved"]}}]},{"name":"chrono24","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Chrono24 API — luxury watch marketplace scraper: search pre-owned and new watches by brand, model or keyword with price, condition, year, movement and sort filters, plus full watch detail (reference number, movement, case material, case diameter, year, condition, dial, seller location, price and images) and brand/model browse from chrono24.com — no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/chrono24/v1","spec_available":true,"actions":[{"name":"search","description":"Search Chrono24 by free-text keyword (brand + model + reference, e.g. 'rolex submariner', 'omega speedmaster 3861'). Optional filters: price_min/price_max, condition (new/used), movement, year, sort. Paginated (~60/page). Returns listing cards with title, price, currency, condition availability, image and url.","required_params":["query"],"optional_params":["page","price_min","price_max","condition","movement","year","sort"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for — brand, model and/or reference number ('rolex submariner', 'patek nautilus 5711', 'omega 3861').","on_invalid":"reject","example":"rolex submariner","aliases":["q","keyword","text"]},{"name":"page","type":"integer","required":false,"description":"Result page (~60 listings per page). Page until meta.pagination.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"price_min","type":"integer","required":false,"description":"Minimum price filter (in the listing currency, USD).","on_invalid":"ignore","example":2000,"minimum":0,"aliases":["priceFrom"]},{"name":"price_max","type":"integer","required":false,"description":"Maximum price filter (in the listing currency, USD).","on_invalid":"ignore","example":15000,"minimum":0,"aliases":["priceTo"]},{"name":"condition","type":"enum","required":false,"description":"Filter by watch condition.","on_invalid":"ignore","allowed_values":[{"value":"new","label":"New / unworn"},{"value":"used","label":"Pre-owned / used"},{"value":"incomplete","label":"Incomplete (parts only)"}]},{"name":"movement","type":"enum","required":false,"description":"Filter by movement type.","on_invalid":"ignore","allowed_values":[{"value":"automatic","label":"Automatic"},{"value":"manual","label":"Manual winding"},{"value":"quartz","label":"Quartz"}]},{"name":"year","type":"integer","required":false,"description":"Filter to watches produced in this year.","on_invalid":"ignore","example":2020,"minimum":1900,"maximum":2030},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance (default ranking)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"newest","label":"Newest listings first"}],"default":"relevance"}],"returns":"listings[]{listing_id, title, price, currency, url, image, availability} + aggregate{low_price, high_price, total_results} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"rolex submariner"}},{"name":"browse","description":"Browse all listings for a brand (e.g. brand='rolex') or a brand+model (brand='omega', model='speedmaster'). Same filters and paginated card shape as search — the catalog-discovery surface for a whole brand or model family.","required_params":["brand"],"optional_params":["model","page","price_min","price_max","condition","movement","year","sort"],"params":[{"name":"brand","type":"string","required":true,"description":"Watch brand to browse (rolex, omega, patek-philippe, audemars-piguet, tudor, cartier, ...).","on_invalid":"reject","example":"rolex","aliases":["manufacturer"]},{"name":"model","type":"string","required":false,"description":"Optional model/family within the brand (submariner, speedmaster, nautilus, ...).","on_invalid":"ignore","example":"datejust","aliases":["family"]},{"name":"page","type":"integer","required":false,"description":"Result page (~60 listings per page). Page until meta.pagination.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"price_min","type":"integer","required":false,"description":"Minimum price filter (in the listing currency, USD).","on_invalid":"ignore","example":2000,"minimum":0,"aliases":["priceFrom"]},{"name":"price_max","type":"integer","required":false,"description":"Maximum price filter (in the listing currency, USD).","on_invalid":"ignore","example":15000,"minimum":0,"aliases":["priceTo"]},{"name":"condition","type":"enum","required":false,"description":"Filter by watch condition.","on_invalid":"ignore","allowed_values":[{"value":"new","label":"New / unworn"},{"value":"used","label":"Pre-owned / used"},{"value":"incomplete","label":"Incomplete (parts only)"}]},{"name":"movement","type":"enum","required":false,"description":"Filter by movement type.","on_invalid":"ignore","allowed_values":[{"value":"automatic","label":"Automatic"},{"value":"manual","label":"Manual winding"},{"value":"quartz","label":"Quartz"}]},{"name":"year","type":"integer","required":false,"description":"Filter to watches produced in this year.","on_invalid":"ignore","example":2020,"minimum":1900,"maximum":2030},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance (default ranking)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"newest","label":"Newest listings first"}],"default":"relevance"}],"returns":"listings[]{listing_id, title, price, currency, url, image, availability} + aggregate{low_price, high_price, total_results}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"brand":"omega"}},{"name":"detail","description":"Full watch listing by `url` OR `listing_id`: brand, model, reference number, price, currency, condition (+ condition text), year, movement, case material, case diameter, crystal, strap material, dial, gender, jewels, power reserve, scope of delivery, seller location, delivery estimate, description and all images.","required_params":[],"optional_params":["url","listing_id"],"params":[{"name":"url","type":"string","required":false,"description":"Full Chrono24 listing URL (from a search/browse result).","on_invalid":"ignore","example":"https://www.chrono24.com/omega/seamaster--id45792727.htm","aliases":["listing_url"]},{"name":"listing_id","type":"string","required":false,"description":"Chrono24 listing id (the number in --id<N>.htm). Provide url OR listing_id.","on_invalid":"ignore","example":"45792727","aliases":["id"]}],"returns":"watch{listing_id, title, brand, model, reference_number, price, currency, condition, year, movement, case_material, case_diameter, crystal, strap_material, dial, gender, jewels, power_reserve, scope_of_delivery, seller_location, delivery_estimate, description, images[], url}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.chrono24.com/omega/seamaster--id45792727.htm"}}]},{"name":"ciceksepeti","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Çiçeksepeti API scraper — Turkish marketplace (ciceksepeti.com): search flowers, gifts, electronics, fashion and home by keyword or category with price range, free shipping, same-day and sort; read the full product — price, struck price and in-basket price in TRY, stock, variants with their own prices, seller and seller score, rating, specifications, delivery badges; page through reviews; autocomplete. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/ciceksepeti/v1","spec_available":true,"actions":[{"name":"search","description":"Search ciceksepeti.com by keyword, or browse a Çiçeksepeti category, with price range, free shipping, same-day delivery and the site's seven sort orders, 30 products a page. Each row: product id and code, title, URL, image, the price, the struck price or the in-basket price label (kept apart), discount, the site's delivery text and badge, category path, marketplace flag and the search index's rating.","required_params":[],"optional_params":["query","category","page","sort","price_min","price_max","free_shipping","same_day","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to search on ciceksepeti.com, in Turkish or brand/model words ('kırmızı gül', 'orkide', 'airpods', 'kupa'). Optional when `category` is given; with `category` it narrows that category.","on_invalid":"reject","example":"kırmızı gül","aliases":["q","keyword"]},{"name":"category","type":"string","required":false,"description":"A Çiçeksepeti category to browse: its slug ('kirmizi-gul', 'cep-telefonu', 'kozmetik') or its URL (https://www.ciceksepeti.com/d/kirmizi-gul). search/suggest returns category slugs.","on_invalid":"reject","example":"kirmizi-gul","aliases":["category_url","url"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Çiçeksepeti serves 30 products per page; `total_pages` says how many exist. A page past the end returns an empty page.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Order of the results — the seven orderings the site itself offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Çiçeksepeti's recommended order"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"newest","label":"Newest first"},{"value":"most_favorited","label":"Most favourited first"},{"value":"most_reviewed","label":"Most reviewed first"},{"value":"best_selling","label":"Best sellers first"}],"default":"relevance"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in Turkish lira (inclusive, whole lira).","on_invalid":"reject","example":500,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in Turkish lira (inclusive, whole lira).","on_invalid":"reject","example":1500,"minimum":0},{"name":"free_shipping","type":"boolean","required":false,"description":"Only products with free shipping (the site's 'Kargo Bedava' filter).","on_invalid":"reject","default":false},{"name":"same_day","type":"boolean","required":false,"description":"Only products the site offers for same-day delivery ('Aynı Gün Teslimat').","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id, product_code, variant_code, title, url, image, price (number, TRY — the price the card shows; for price_type 'basket' this is the in-basket price), price_display, price_type ('discounted' | 'basket' | 'regular'), price_before_discount (struck was-price, price_type 'discounted' only), price_outside_basket (the price before the basket discount, price_type 'basket' only, null when the card shows none), basket_price_label ('Sepet Fiyatı', 'Sepette %6 İndirim'), discount_percent, currency=TRY, search_index_rating, search_index_rating_count (the search index's figures — NOT the product page's; use product/detail for rating and rating_count), rating_scale (5), delivery_text, badge, category_id, category_path[{id, name}], is_marketplace, is_personalized, is_bundle, has_image_reviews}, count, total_results, total_pages, page, page_size (30), has_next_page, delivery_type, page_notice, listing_url","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"kırmızı gül"}},{"name":"product/detail","description":"The full Çiçeksepeti product page by URL or product code: title, brand, price, VAT-free price, struck price and discount when shown, in-basket price label, availability and stock of the selected variant, every variant with its own price and availability, images, star rating and count, seller and seller score for marketplace items, category path, breadcrumb, specification table, bouquet contents, description, and the site's delivery / sales badges.","required_params":[],"optional_params":["url","product_code","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"A ciceksepeti.com product URL (…-<code>). Every search row returns one as `url`.","on_invalid":"reject","example":"https://www.ciceksepeti.com/beyaz-buket-kagidinda-20li-kirmizi-gul-buketi-at5418","aliases":["product_url"]},{"name":"product_code","type":"string","required":false,"description":"Alternative to `url`: the product code at the end of the product URL ('kcm74954793', 'at5418'). Every search row returns it as `product_code`.","on_invalid":"reject","example":"kcm74954793","aliases":["code"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, product_code, variant_id, variant_code, title, url, brand, price, price_excluding_vat, price_before_discount (null unless the page shows a struck price), discount_percent, basket_price_label (set when the shown price is the in-basket price), currency=TRY, availability ('in_stock'|'out_of_stock'), in_stock, stock_count (the selected variant's stock; null when the page publishes none, e.g. flowers), stock_variant_code, images[], rating, rating_count, rating_scale (5), seller{id, name, url, rating (Çiçeksepeti seller score), rating_scale (null — no maximum printed)} (null when Çiçeksepeti sells it), sold_by_ciceksepeti, is_marketplace, category_path[], breadcrumb[{name, url}], specifications[{name, value}], contents[] (bouquet contents, e.g. 'Tekli Kırmızı Gül: 20 Adet'), description, variants[{variant_code, variant_id, product_code, is_this_product (false = a sibling product shown as a colour swatch), options{axis: value}, price, price_before_discount, discount_percent, available, is_default, url}] (null when the product has none), has_variants, sales_badges[] (the site's delivery / payment badges, e.g. 'Aynı Gün Ücretsiz Teslimat', '350 TL Üzeri Kargo Bedava'), installment_count}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_code":"at5418"}},{"name":"product/reviews","description":"Written reviews of a Çiçeksepeti product, 20 per call, with the site's six review orders, a star filter and cursor paging: star rating, text, date, reviewer's city and 'helpful' votes. Reviewer names are not returned.","required_params":[],"optional_params":["product_id","product_code","url","sort","rating","cursor","max_rotations"],"params":[{"name":"product_id","type":"integer","required":false,"description":"Alternative to `url`/`product_code`: the numeric product_id a search row or product/detail returns.","on_invalid":"reject","example":97730201,"minimum":1},{"name":"product_code","type":"string","required":false,"description":"Alternative to `url`: the product code at the end of the product URL ('kcm74954793', 'at5418'). Every search row returns it as `product_code`.","on_invalid":"reject","example":"kcm74954793","aliases":["code"]},{"name":"url","type":"string","required":false,"description":"A ciceksepeti.com product URL (…-<code>). Every search row returns one as `url`.","on_invalid":"reject","example":"https://www.ciceksepeti.com/beyaz-buket-kagidinda-20li-kirmizi-gul-buketi-at5418","aliases":["product_url"]},{"name":"sort","type":"enum","required":false,"description":"Order of the reviews — the six orderings the site's review page offers.","on_invalid":"reject","allowed_values":[{"value":"recommended","label":"Çiçeksepeti's recommended order"},{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"rating_desc","label":"Highest rating first"},{"value":"rating_asc","label":"Lowest rating first"},{"value":"most_liked","label":"Most 'helpful' votes first"}],"default":"recommended"},{"name":"rating","type":"integer","required":false,"description":"Only reviews with this many stars (1-5).","on_invalid":"reject","example":1,"minimum":1,"maximum":5},{"name":"cursor","type":"string","required":false,"description":"Paging token: pass the `next_cursor` of the previous response to get the next 20 reviews. Omit for the first page.","on_invalid":"reject"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"reviews[{id, rating (1-5), text, date (YYYY-MM-DD), city, like_count}], count, has_more, next_cursor, product_id, sort, rating_filter","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"search/suggest","description":"Çiçeksepeti's own search autocomplete for a partial keyword: suggested categories with their slug (usable as `category` in search) and the query the site would run.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the user has typed so far (2+ characters).","on_invalid":"reject","example":"gül","aliases":["q","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"suggestions[{text, type ('Kategori', …), url, category_slug, query}], count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"kırmızı gül"}}]},{"name":"coles","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Coles API scraper — Coles Supermarkets (Australia) online grocery: search products, read the full product record with shelf price, was-price, half-price and multi-buy specials, unit price, barcode, nutrition panel and country of origin, browse categories and every special. Prices in AUD. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/coles/v1","spec_available":true,"actions":[{"name":"search","description":"Search coles.com.au by keyword. Each product comes with its shelf price, the was-price and saving when on special, the half-price / multi-buy / online-only flags, the unit price per kg, litre or 100 g, availability, brand, size and category path. Sort by price or unit price and filter by brand, special type, dietary and free-from facets. Paid placements are removed unless you ask for them.","required_params":["query"],"optional_params":["page","sort","brand_ids","special","dietary_ids","allergen_ids","include_sponsored","include_alternate_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper would type it on coles.com.au ('milk', 'tim tam', 'laundry liquid'). Brand names work too.","on_invalid":"reject","example":"milk","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Coles returns 48 products per page; read `count`, `total_results` and `page_count` rather than assuming a size.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Result order. Leave empty for Coles's own order (relevance for search, best sellers for categories, recommended for specials). Only orders Coles actually applies are offered; `sort_applied` is Coles's own confirmation.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Lowest shelf price first"},{"value":"price_desc","label":"Highest shelf price first"},{"value":"unit_price_asc","label":"Lowest unit price (per kg / L / 100 g) first"}]},{"name":"brand_ids","type":"array","required":false,"description":"Only these brands — Coles brand ids from `filters_available.brands` or a row's `brand.id`. Several ids are OR-ed.","on_invalid":"reject","example":["2780582535"],"aliases":["brand_id"]},{"name":"special","type":"enum","required":false,"description":"Only products on this kind of special.","on_invalid":"reject","allowed_values":[{"value":"half_price","label":"Half-price specials only"},{"value":"multi_buy","label":"Multi-buy specials only (e.g. 2 for $9.40)"},{"value":"online_only","label":"Online-only specials"}]},{"name":"dietary_ids","type":"array","required":false,"description":"Dietary facets (vegan, vegetarian, halal, GMO free …) — ids from `filters_available.dietary`. Several ids are OR-ed.","on_invalid":"reject","example":["1033"]},{"name":"allergen_ids","type":"array","required":false,"description":"Free-from facets (gluten free, lactose free, nut free …) — ids from `filters_available.allergens`.","on_invalid":"reject","example":["9"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops paid placements. Coles injects them into the first page (they also repeat products that appear further down); true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"include_alternate_results","type":"boolean","required":false,"description":"When nothing matches, Coles shows unrelated fallback products instead. false (default) drops them — `results` stays empty and `alternate_results_dropped` counts them; true returns them separately in `alternate_results`, never in `results`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string), title (brand + name), name, brand{id,name}, size, category{id,name,level}, breadcrumb[]{id,name,level} (Coles's first listing), category_paths[][] (every category the product is shelved in), url, image, price (number — the shelf price for one item; null when the product is unavailable), price_display, currency=AUD, original_price (the was-price when Coles shows one, else null), original_price_display, discount_percent, save_amount, member_price / member_price_display / member_discount_percent / member_program / member_unit_price (null — Coles publishes no member or Flybuys price), unit_price, unit_price_unit ('1L', '100g', '1kg'), unit_price_display ('$1.65/ 1L'), sold_by ('piece' | 'weight'), price_per ('piece'), price_is_estimate (true on weighed produce: the price is for one item of approximate weight), promotion_type ('special' | 'everyday' | 'new' | 'bonuscollectable' | null), special_type ('percent_off' | 'multi_save' | null), price_description ('1/2 Price', '40% Off', '2 for $9.40'), half_price, online_only_special, multi_buy_offer, multi_buy{min_quantity, unit_price, unit_price_display, unit_measure_price_display}, badges[]{type,text}, availability ('in_stock' | 'unavailable'), in_stock, available_quantity, max_order_quantity, max_promotional_quantity, age_restricted, rating/review_count/rating_scale (null), sponsored}, count, total_results, page, page_size, page_count, sponsored_dropped, sort_applied (Coles's own echo: relevance | best_selling | recommended | price_asc | price_desc | unit_price_asc), alternate_result (true = nothing matched), alternate_results_dropped (Coles's unrelated fallback products, dropped), alternate_results[] (empty unless include_alternate_results=true), did_you_mean[], filters_available{brands[], allergens[], dietary[], specials[]}{id,name,count}, categories[]{id,name,level,slug,count}, query","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"milk"}},{"name":"product/detail","description":"The full Coles product record by `product_id` (or product URL): title, brand, size, barcode (GTIN), every image, shelf price, was-price and saving, special and multi-buy details, unit price, availability and order limits, the label (ingredients, allergens, storage and usage instructions), the nutrition panel per serving and per 100 g/ml, country of origin, and the other sizes and varieties of the same product.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Coles product id (the number every search row returns as `product_id`), or a coles.com.au product URL.","on_invalid":"reject","example":"9760070","aliases":["id","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id (string), title (brand + name), name, brand{id,name}, size, category{id,name,level}, breadcrumb[]{id,name,level} (Coles's first listing), category_paths[][] (every category the product is shelved in), url, image, price (number — the shelf price for one item; null when the product is unavailable), price_display, currency=AUD, original_price (the was-price when Coles shows one, else null), original_price_display, discount_percent, save_amount, member_price / member_price_display / member_discount_percent / member_program / member_unit_price (null — Coles publishes no member or Flybuys price), unit_price, unit_price_unit ('1L', '100g', '1kg'), unit_price_display ('$1.65/ 1L'), sold_by ('piece' | 'weight'), price_per ('piece'), price_is_estimate (true on weighed produce: the price is for one item of approximate weight), promotion_type ('special' | 'everyday' | 'new' | 'bonuscollectable' | null), special_type ('percent_off' | 'multi_save' | null), price_description ('1/2 Price', '40% Off', '2 for $9.40'), half_price, online_only_special, multi_buy_offer, multi_buy{min_quantity, unit_price, unit_price_display, unit_measure_price_display}, badges[]{type,text}, availability ('in_stock' | 'unavailable'), in_stock, available_quantity, max_order_quantity, max_promotional_quantity, age_restricted, rating/review_count/rating_scale (null), sponsored, barcode, images[], description, specs{label: value}, ingredients, allergen_warning, storage, usage, dimensions, origin, country_of_origin, nutrition{servings_per_package, serving_size, per_serving{}, per_100{}, panels[]}, nutritional_claims[], lifestyle[], minimum_life, variant_count, variants[]{product_id, variant_type ('size' | 'variety'), title, size, price, in_stock, url}, last_updated, store{store_id}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"9760070"}},{"name":"deals","description":"Coles's specials: every product on special, or only half-price, multi-buy or online-only specials, optionally within one category. Same rows, sorting and brand filter as search.","required_params":[],"optional_params":["type","category","page","sort","brand_ids","include_sponsored","max_rotations"],"params":[{"name":"type","type":"enum","required":false,"description":"Which of Coles's specials to read.","on_invalid":"reject","allowed_values":[{"value":"all","label":"Every product on special"},{"value":"half_price","label":"Half-price specials"},{"value":"multi_buy","label":"Multi-buy specials"},{"value":"online_only","label":"Online-only specials"}],"default":"all"},{"name":"category","type":"string","required":false,"description":"Optional: only specials in this category — a slug path from `categories` ('dairy-eggs-fridge' or 'dairy-eggs-fridge/milk') or a coles.com.au URL.","on_invalid":"reject","example":"dairy-eggs-fridge","aliases":["category_slug"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Coles returns 48 products per page; read `count`, `total_results` and `page_count` rather than assuming a size.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Result order. Leave empty for Coles's own order (relevance for search, best sellers for categories, recommended for specials). Only orders Coles actually applies are offered; `sort_applied` is Coles's own confirmation.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Lowest shelf price first"},{"value":"price_desc","label":"Highest shelf price first"},{"value":"unit_price_asc","label":"Lowest unit price (per kg / L / 100 g) first"}]},{"name":"brand_ids","type":"array","required":false,"description":"Only these brands — Coles brand ids from `filters_available.brands` or a row's `brand.id`. Several ids are OR-ed.","on_invalid":"reject","example":["2780582535"],"aliases":["brand_id"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops paid placements. Coles injects them into the first page (they also repeat products that appear further down); true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string), title (brand + name), name, brand{id,name}, size, category{id,name,level}, breadcrumb[]{id,name,level} (Coles's first listing), category_paths[][] (every category the product is shelved in), url, image, price (number — the shelf price for one item; null when the product is unavailable), price_display, currency=AUD, original_price (the was-price when Coles shows one, else null), original_price_display, discount_percent, save_amount, member_price / member_price_display / member_discount_percent / member_program / member_unit_price (null — Coles publishes no member or Flybuys price), unit_price, unit_price_unit ('1L', '100g', '1kg'), unit_price_display ('$1.65/ 1L'), sold_by ('piece' | 'weight'), price_per ('piece'), price_is_estimate (true on weighed produce: the price is for one item of approximate weight), promotion_type ('special' | 'everyday' | 'new' | 'bonuscollectable' | null), special_type ('percent_off' | 'multi_save' | null), price_description ('1/2 Price', '40% Off', '2 for $9.40'), half_price, online_only_special, multi_buy_offer, multi_buy{min_quantity, unit_price, unit_price_display, unit_measure_price_display}, badges[]{type,text}, availability ('in_stock' | 'unavailable'), in_stock, available_quantity, max_order_quantity, max_promotional_quantity, age_restricted, rating/review_count/rating_scale (null), sponsored}, count, total_results, page, page_size, page_count, sponsored_dropped, sort_applied (Coles's own echo: relevance | best_selling | recommended | price_asc | price_desc | unit_price_asc), alternate_result (true = nothing matched), alternate_results_dropped (Coles's unrelated fallback products, dropped), alternate_results[] (empty unless include_alternate_results=true), did_you_mean[], filters_available{brands[], allergens[], dietary[], specials[]}{id,name,count}, categories[]{id,name,level,slug,count}, type, category_slug","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"type":"half_price"}},{"name":"category","description":"Every product in one Coles category (one to three levels deep), paged, with the same rows, sorting and filters as search. Category slugs come from `categories`.","required_params":["category"],"optional_params":["page","sort","brand_ids","special","dietary_ids","allergen_ids","include_sponsored","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A category slug path from `categories` (one to three levels, e.g. 'dairy-eggs-fridge' or 'dairy-eggs-fridge/milk') or a coles.com.au/browse URL.","on_invalid":"reject","example":"dairy-eggs-fridge/milk","aliases":["category_slug","slug","url"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Coles returns 48 products per page; read `count`, `total_results` and `page_count` rather than assuming a size.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Result order. Leave empty for Coles's own order (relevance for search, best sellers for categories, recommended for specials). Only orders Coles actually applies are offered; `sort_applied` is Coles's own confirmation.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Lowest shelf price first"},{"value":"price_desc","label":"Highest shelf price first"},{"value":"unit_price_asc","label":"Lowest unit price (per kg / L / 100 g) first"}]},{"name":"brand_ids","type":"array","required":false,"description":"Only these brands — Coles brand ids from `filters_available.brands` or a row's `brand.id`. Several ids are OR-ed.","on_invalid":"reject","example":["2780582535"],"aliases":["brand_id"]},{"name":"special","type":"enum","required":false,"description":"Only products on this kind of special.","on_invalid":"reject","allowed_values":[{"value":"half_price","label":"Half-price specials only"},{"value":"multi_buy","label":"Multi-buy specials only (e.g. 2 for $9.40)"},{"value":"online_only","label":"Online-only specials"}]},{"name":"dietary_ids","type":"array","required":false,"description":"Dietary facets (vegan, vegetarian, halal, GMO free …) — ids from `filters_available.dietary`. Several ids are OR-ed.","on_invalid":"reject","example":["1033"]},{"name":"allergen_ids","type":"array","required":false,"description":"Free-from facets (gluten free, lactose free, nut free …) — ids from `filters_available.allergens`.","on_invalid":"reject","example":["9"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops paid placements. Coles injects them into the first page (they also repeat products that appear further down); true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string), title (brand + name), name, brand{id,name}, size, category{id,name,level}, breadcrumb[]{id,name,level} (Coles's first listing), category_paths[][] (every category the product is shelved in), url, image, price (number — the shelf price for one item; null when the product is unavailable), price_display, currency=AUD, original_price (the was-price when Coles shows one, else null), original_price_display, discount_percent, save_amount, member_price / member_price_display / member_discount_percent / member_program / member_unit_price (null — Coles publishes no member or Flybuys price), unit_price, unit_price_unit ('1L', '100g', '1kg'), unit_price_display ('$1.65/ 1L'), sold_by ('piece' | 'weight'), price_per ('piece'), price_is_estimate (true on weighed produce: the price is for one item of approximate weight), promotion_type ('special' | 'everyday' | 'new' | 'bonuscollectable' | null), special_type ('percent_off' | 'multi_save' | null), price_description ('1/2 Price', '40% Off', '2 for $9.40'), half_price, online_only_special, multi_buy_offer, multi_buy{min_quantity, unit_price, unit_price_display, unit_measure_price_display}, badges[]{type,text}, availability ('in_stock' | 'unavailable'), in_stock, available_quantity, max_order_quantity, max_promotional_quantity, age_restricted, rating/review_count/rating_scale (null), sponsored}, count, total_results, page, page_size, page_count, sponsored_dropped, sort_applied (Coles's own echo: relevance | best_selling | recommended | price_asc | price_desc | unit_price_asc), alternate_result (true = nothing matched), alternate_results_dropped (Coles's unrelated fallback products, dropped), alternate_results[] (empty unless include_alternate_results=true), did_you_mean[], filters_available{brands[], allergens[], dietary[], specials[]}{id,name,count}, categories[]{id,name,level,slug,count}, category_slug","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"categories","description":"Coles's full online category tree — every department, category and aisle with its id, slug path, URL and product count.","required_params":[],"optional_params":["max_rotations"],"params":[{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"categories[]{id, name, level, slug, product_count, url, children[]}, count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{}}]},{"name":"coolblue","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Coolblue API — live product, price, stock and specification data scraper for coolblue.nl, coolblue.be and coolblue.de: keyword search with the retailer's own result count, category browsing with the printed delivery promise, the full manufacturer spec table, review scores and per-store pickup availability — no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/coolblue/v1","spec_available":true,"actions":[{"name":"search","description":"Search Coolblue by keyword: product id, name, price in euro, the delivery promise the site prints beside the product, the review score and the key specs. When the keyword is a whole category Coolblue answers with that category instead of a result list — this endpoint follows that and tells you so in `resolved_as`, so a search for 'headphones' returns headphones rather than an error. `total` is Coolblue's own match count and is present on keyword result sets.","required_params":["query"],"optional_params":["market","filters","sort","page"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for, in English or Dutch. A product number (979101) or a manufacturer code (EP2-61329) also resolves to the single matching product.","on_invalid":"reject","example":"usb c cable"},{"name":"market","type":"enum","required":false,"description":"Which storefront to ask. Prices and stock genuinely differ between them (measured: 5 of 7 shared products had a different price on nl vs be) and each market lists products the others do not.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - coolblue.nl"},{"value":"be","label":"Belgium - coolblue.be"},{"value":"de","label":"Germany - coolblue.de"}],"default":"nl","example":"nl","aliases":["country"]},{"name":"filters","type":"array","required":false,"description":"Facet segments in 'key:value' form, for example 'merk:apple'. One value per key (the source answers a multi-value '+' form with 404). Call the 'filters' action to list what a category accepts, with the result count behind each value.","on_invalid":"reject","example":["merk:apple"]},{"name":"sort","type":"enum","required":false,"description":"Result order. All five were measured to genuinely reorder the grid. An unknown value is rejected rather than passed on, because the source accepts any string and silently ignores what it does not know.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Coolblue's own relevance order"},{"value":"lowest-price","label":"Cheapest first"},{"value":"highest-price","label":"Most expensive first"},{"value":"most-sold","label":"Best selling first"},{"value":"highest-rated","label":"Best reviewed first"}],"default":"relevance","example":"lowest-price"},{"name":"page","type":"integer","required":false,"description":"Page of results. Coolblue stops a keyword result set at page 20: page 21 returns HTTP 404, so at most 480 products of a larger set are reachable and `results_reachable` reports it. Narrow with `filters` to reach the rest.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":20}],"returns":"results[]{product_id, name, url, brand, price_eur, price_excl_vat_eur, price_display, rating_out_of_10, review_count, delivery_promise, delivery_state, availability, in_stock, second_chance_price_eur, highlights[], colour_variants[], image}, total, page, page_size, pages_available, results_reachable, resolved_as{kind, category}, market, dropped_tiles","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"browse","description":"Walk one of Coolblue's 403 categories — the catalogue view, and the richer of the two surfaces. Rows carry the typed delivery promise, the price with and without VAT, the review average, how many stores hold the item, the refurbished (Second Chance) price when there is one, and the colour variants. Use `categories` for the slugs and `filters` for the narrowing options.","required_params":["category"],"optional_params":["market","filters","sort","page"],"params":[{"name":"category","type":"string","required":true,"description":"A Coolblue category slug such as 'headphones', 'washing-machines' or 'laptops', or a category URL. The `categories` action lists all 403 of them.","on_invalid":"reject","example":"headphones","aliases":["slug","url"]},{"name":"market","type":"enum","required":false,"description":"Which storefront to ask. Prices and stock genuinely differ between them (measured: 5 of 7 shared products had a different price on nl vs be) and each market lists products the others do not.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - coolblue.nl"},{"value":"be","label":"Belgium - coolblue.be"},{"value":"de","label":"Germany - coolblue.de"}],"default":"nl","example":"nl","aliases":["country"]},{"name":"filters","type":"array","required":false,"description":"Facet segments in 'key:value' form, for example 'merk:apple'. One value per key (the source answers a multi-value '+' form with 404). Call the 'filters' action to list what a category accepts, with the result count behind each value.","on_invalid":"reject","example":["merk:apple"]},{"name":"sort","type":"enum","required":false,"description":"Result order. All five were measured to genuinely reorder the grid. An unknown value is rejected rather than passed on, because the source accepts any string and silently ignores what it does not know.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Coolblue's own relevance order"},{"value":"lowest-price","label":"Cheapest first"},{"value":"highest-price","label":"Most expensive first"},{"value":"most-sold","label":"Best selling first"},{"value":"highest-rated","label":"Best reviewed first"}],"default":"relevance","example":"lowest-price"},{"name":"page","type":"integer","required":false,"description":"Page of 22 results. A category publishes its own `total_pages`; asking past it returns NOT_FOUND.","on_invalid":"reject","default":1,"example":1,"minimum":1}],"returns":"results[] (same row shape as search), page, page_size, total_pages, category, filters, market","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"product/detail","description":"One full product record by id or Coolblue URL: price including and excluding VAT, stock state, how many of Coolblue's stores hold it and how many can hand it over, the complete manufacturer specification table, the review average with its 1-5 star distribution, Coolblue's own pros and cons, and every gallery image. The answer also carries `source_check`, which compares the price against the schema.org copy the same page publishes so you can see the two agree.","required_params":["product_id"],"optional_params":["market","include_specs"],"params":[{"name":"product_id","type":"string","required":true,"description":"The Coolblue product number (979101) or any Coolblue product URL. The id alone is enough — no slug needed.","on_invalid":"reject","example":"979101","aliases":["id","url","sku"]},{"name":"market","type":"enum","required":false,"description":"Which storefront to ask. Prices and stock genuinely differ between them (measured: 5 of 7 shared products had a different price on nl vs be) and each market lists products the others do not.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - coolblue.nl"},{"value":"be","label":"Belgium - coolblue.be"},{"value":"de","label":"Germany - coolblue.de"}],"default":"nl","example":"nl","aliases":["country"]},{"name":"include_specs","type":"boolean","required":false,"description":"Include the specification table. Turn it off for a smaller answer when you only want price and stock; it costs the same, because it is the same page.","on_invalid":"ignore","default":true}],"returns":"product{product_id, name, brand, url, price_eur, price_excl_vat_eur, list_price_eur, availability, in_stock, stores_listed, stores_with_stock, stores_available_for_pickup, rating_out_of_10, review_count, review_distribution_stars[], pros[], cons[], description, image, images[], specifications[]{group,name,value}, specification_groups[], specification_count, source_check{...}}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"products/batch","description":"Up to 10 products in ONE call — the shape a price tracker runs on. Each row carries price, stock, rating and the id, and any id this market does not sell is named in `missing` instead of being silently dropped. Specifications are off by default here to keep the answer readable.","required_params":["product_ids"],"optional_params":["market","include_specs"],"params":[{"name":"product_ids","type":"array","required":true,"description":"Between 1 and 10 Coolblue product numbers or product URLs.","on_invalid":"reject","example":["979101","947006","923419"],"aliases":["ids","product_id"]},{"name":"market","type":"enum","required":false,"description":"Which storefront to ask. Prices and stock genuinely differ between them (measured: 5 of 7 shared products had a different price on nl vs be) and each market lists products the others do not.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - coolblue.nl"},{"value":"be","label":"Belgium - coolblue.be"},{"value":"de","label":"Germany - coolblue.de"}],"default":"nl","example":"nl","aliases":["country"]},{"name":"include_specs","type":"boolean","required":false,"description":"Include each product's specification table. Off by default because ten full spec tables is a large answer.","on_invalid":"ignore","default":false}],"returns":"products[]{same shape as product/detail}, requested, returned, missing[], market","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":20},"example_params":null},{"name":"filters","description":"The filter vocabulary a category actually accepts: every facet key, its English title, and the values behind it — each with the exact `key:value` segment to pass back into `browse` or `search` AND the number of products behind it, so you can see a filter bite before spending a call on it. This exists because the facet keys are Dutch even on the English storefront (the brand filter is `merk`), so they cannot be guessed.","required_params":["category"],"optional_params":["filters","market"],"params":[{"name":"category","type":"string","required":true,"description":"The category whose filters to list, for example 'headphones'.","on_invalid":"reject","example":"headphones","aliases":["slug","url"]},{"name":"filters","type":"array","required":false,"description":"Show the filters still available after these segments are applied, with their updated counts — this is how you discover the narrowing options inside a selection.","on_invalid":"reject","example":["merk:sony"]},{"name":"market","type":"enum","required":false,"description":"Which storefront to ask. Prices and stock genuinely differ between them (measured: 5 of 7 shared products had a different price on nl vs be) and each market lists products the others do not.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - coolblue.nl"},{"value":"be","label":"Belgium - coolblue.be"},{"value":"de","label":"Germany - coolblue.de"}],"default":"nl","example":"nl","aliases":["country"]}],"returns":"filters[]{key, title, type, value_count, values[]{value, segment, label, result_count, selected}}, filter_count, category, market","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"categories","description":"Every Coolblue category, read from the sitemap it publishes for crawlers: the slug you pass to `browse` and `filters`, and its path on the site. One small request, and the slugs were verified against the live grid rather than assumed.","required_params":[],"optional_params":["market","contains"],"params":[{"name":"market","type":"enum","required":false,"description":"Which storefront to ask. Prices and stock genuinely differ between them (measured: 5 of 7 shared products had a different price on nl vs be) and each market lists products the others do not.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands - coolblue.nl"},{"value":"be","label":"Belgium - coolblue.be"},{"value":"de","label":"Germany - coolblue.de"}],"default":"nl","example":"nl","aliases":["country"]},{"name":"contains","type":"string","required":false,"description":"Only return categories whose slug contains this text.","on_invalid":"reject","example":"washing"}],"returns":"categories[]{category, url_path}, count, market","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"copart","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Copart API — salvage & insurance auto-auction scraper: search live Copart lots by make, model, year, damage, title type, odometer and location, then pull full lot detail (VIN, damage, title, odometer, estimated value, current bid, sale date) and hi-res auction photos. Largest US salvage / total-loss car auction. No API key, no login required.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/copart/v1","spec_available":true,"actions":[{"name":"search","description":"Search live Copart auction lots by free-text `query` and/or structured filters (make, model, year or year_min/year_max, title_type, vehicle_type, damage, condition, source, odometer_min/max, yard_number). Sortable + paginated. Returns rich lot cards with damage, title, odometer, estimated value, current bid, sale date, location and thumbnail.","required_params":[],"optional_params":["query","make","model","year","year_min","year_max","title_type","vehicle_type","damage","condition","source","odometer_min","odometer_max","yard_number","location","sort","page","size"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword to search lots (make, model, VIN fragment, anything). Leave empty to browse all lots and rely on filters.","on_invalid":"ignore","example":"honda civic","aliases":["q","keyword"]},{"name":"make","type":"string","required":false,"description":"Vehicle make to filter by (e.g. HONDA, FORD, BMW). Case-insensitive.","on_invalid":"ignore","example":"HONDA"},{"name":"model","type":"string","required":false,"description":"Vehicle model to filter by (e.g. CIVIC, F-150). Pair with `make`.","on_invalid":"ignore","example":"CIVIC"},{"name":"year","type":"integer","required":false,"description":"Exact model year. For a range use year_min / year_max instead.","on_invalid":"ignore","example":2020,"minimum":1900,"maximum":2030},{"name":"year_min","type":"integer","required":false,"description":"Minimum model year (inclusive). Combine with year_max.","on_invalid":"ignore","minimum":1900,"maximum":2030},{"name":"year_max","type":"integer","required":false,"description":"Maximum model year (inclusive). Combine with year_min.","on_invalid":"ignore","minimum":1900,"maximum":2030},{"name":"title_type","type":"enum","required":false,"description":"Filter by title brand.","on_invalid":"ignore","allowed_values":[{"value":"clean","label":"Clean title"},{"value":"salvage","label":"Salvage title"},{"value":"non_repairable","label":"Non-repairable / junk / cert of destruction"}]},{"name":"vehicle_type","type":"enum","required":false,"description":"Filter by vehicle category.","on_invalid":"ignore","allowed_values":[{"value":"automobile","label":"Automobiles"},{"value":"motorcycle","label":"Motorcycles"},{"value":"atv","label":"ATVs"},{"value":"boat","label":"Boats"},{"value":"bus","label":"Buses"},{"value":"construction","label":"Construction equipment"},{"value":"trailer","label":"Trailers"},{"value":"heavy_truck","label":"Heavy-duty trucks"},{"value":"rv","label":"Recreational vehicles"}]},{"name":"damage","type":"enum","required":false,"description":"Filter by primary damage type.","on_invalid":"ignore","allowed_values":[{"value":"front_end","label":"Front end"},{"value":"rear_end","label":"Rear end"},{"value":"side","label":"Side"},{"value":"all_over","label":"All over"},{"value":"rollover","label":"Rollover"},{"value":"top_roof","label":"Top/roof"},{"value":"undercarriage","label":"Undercarriage"},{"value":"water_flood","label":"Water/flood"},{"value":"hail","label":"Hail"},{"value":"burn","label":"Burn"},{"value":"burn_engine","label":"Burn — engine"},{"value":"burn_interior","label":"Burn — interior"},{"value":"vandalism","label":"Vandalism"},{"value":"mechanical","label":"Mechanical"},{"value":"normal_wear","label":"Normal wear"},{"value":"minor_dents","label":"Minor dents/scratches"},{"value":"stripped","label":"Stripped"},{"value":"biohazard","label":"Biohazard/chemical"},{"value":"damage_history","label":"Damage history"}]},{"name":"condition","type":"enum","required":false,"description":"Filter by lot condition / sale type.","on_invalid":"ignore","allowed_values":[{"value":"run_and_drive","label":"Run and Drive (CERT-D)"},{"value":"enhanced","label":"Enhanced vehicles"},{"value":"engine_start","label":"Engine Start Program"},{"value":"buy_it_now","label":"Buy It Now available"},{"value":"used","label":"Used vehicles"}]},{"name":"source","type":"enum","required":false,"description":"Filter by lot source / seller type.","on_invalid":"ignore","allowed_values":[{"value":"donations","label":"Donations"},{"value":"impound","label":"Impound vehicles"},{"value":"repossessions","label":"Repossessions"}]},{"name":"odometer_min","type":"integer","required":false,"description":"Minimum odometer reading (miles).","on_invalid":"ignore","minimum":0},{"name":"odometer_max","type":"integer","required":false,"description":"Maximum odometer reading (miles).","on_invalid":"ignore","minimum":0},{"name":"yard_number","type":"string","required":false,"description":"Restrict to one Copart yard/location by its yard number.","on_invalid":"ignore","example":"357"},{"name":"location","type":"string","required":false,"description":"Restrict to one Copart yard/location by name (e.g. 'TX - DALLAS', 'CA - VAN NUYS'). Get the exact names + lot counts from the `yards` action.","on_invalid":"ignore","example":"TX - DALLAS","aliases":["yard","yard_name"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"newest_listed","label":"Newly listed first"},{"value":"sale_date_asc","label":"Sale date: soonest first"},{"value":"sale_date_desc","label":"Sale date: latest first"},{"value":"year_desc","label":"Year: new to old"},{"value":"year_asc","label":"Year: old to new"},{"value":"odometer_asc","label":"Odometer: low to high"},{"value":"odometer_desc","label":"Odometer: high to low"},{"value":"make_az","label":"Make: A-Z"}],"default":"newest_listed"},{"name":"page","type":"integer","required":false,"description":"Page number (1-based; 1, 2, 3 …).","on_invalid":"ignore","default":1,"minimum":1},{"name":"size","type":"integer","required":false,"description":"Results per page (1–100). Defaults to 20.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100}],"returns":"lots[]{lot_number, vin(masked), year, make, model, trim, title, body_style, color, engine, cylinders, fuel_type, transmission, drive, primary_damage, secondary_damage, title_type, title_group, title_state, keys_available, highlights[], loss_type, odometer, odometer_brand, estimated_retail_value, current_bid, high_bid, buy_it_now_price, repair_cost, sale_status, currency, sale_date, sale_time, yard_name, yard_number, location_city, location_state, location_country, zip, latitude, longitude, thumbnail, vehicle_type, url} + meta{total_results, pagination}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"HONDA","size":20}},{"name":"lot_detail","description":"Full detail for one lot by `lot_number`: VIN (publicly masked by Copart), make, model, trim, year, primary/secondary damage, title type & group, odometer, color, engine, fuel, drive, transmission, estimated retail value, current/high bid, sale date & time, yard location (city/state/zip/lat/long) and keys availability.","required_params":["lot_number"],"optional_params":[],"params":[{"name":"lot_number","type":"string","required":true,"description":"Copart lot number — the digits in a copart.com/lot/ URL or a search result's lot_number.","on_invalid":"reject","example":"32754070","aliases":["lot","lot_id","ln"]}],"returns":"lot{lot_number, vin(masked), year, make, model, trim, title, body_style, color, engine, cylinders, fuel_type, transmission, drive, primary_damage, secondary_damage, title_type, title_group, title_state, keys_available, highlights[], loss_type, odometer, odometer_brand, estimated_retail_value, current_bid, high_bid, buy_it_now_price, repair_cost, sale_status, currency, sale_date, sale_time, yard_name, yard_number, location_city, location_state, location_country, zip, latitude, longitude, thumbnail, vehicle_type, url}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"lot_images","description":"All auction photos for one lot by `lot_number`: ordered full-size, hi-res and thumbnail image URLs for the vehicle (exterior, interior, damage, VIN plate, odometer).","required_params":["lot_number"],"optional_params":[],"params":[{"name":"lot_number","type":"string","required":true,"description":"Copart lot number to fetch photos for.","on_invalid":"reject","example":"32754070","aliases":["lot","lot_id","ln"]}],"returns":"images[]{sequence, full_url, high_res_url, thumbnail_url, type}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"yards","description":"Live list of Copart yards / locations you can filter `search` by, each with its yard_number and current lot count. Lifted from the live search facet taxonomy — use a yard_number with search's `yard_number` filter to scope to one location.","required_params":[],"optional_params":["query"],"params":[{"name":"query","type":"string","required":false,"description":"Optional name filter (case-insensitive substring) to find a yard, e.g. 'dallas', 'ca -', 'houston'.","on_invalid":"ignore","example":"dallas","aliases":["q"]}],"returns":"yards[]{name, location, lot_count}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"costco","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Costco API scraper — costco.com and costco.ca: search products, read the full item record with the price after instant savings and the regular price kept apart, savings validity dates, member-only and price-in-cart flags, order limits, ratings, specifications and variants; browse categories and search suggestions. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/costco/v1","spec_available":true,"actions":[{"name":"search","description":"Search Costco (United States or Canada) by keyword. Each product comes with the price after instant savings and, separately, the regular price and the saving, Costco's own savings text and the date the price is valid through, member-only and price-in-cart flags, rating and review count, availability, delivery programs, badges and the category pages it sits in. A keyword Costco answers with a category page is followed; unrelated padding for a keyword with no match is removed and counted. Sort by price, rating, newest or most viewed; filter by brand or in-stock.","required_params":["query"],"optional_params":["country","language","page","page_size","sort","brand","in_stock_only","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Words a shopper would type on Costco.","on_invalid":"reject","example":"coffee","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Costco store: us (costco.com, USD) or ca (costco.ca, CAD). A costco.ca URL sets it by itself. Costco's other countries run a different platform.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — costco.com (USD)"},{"value":"ca","label":"Canada — costco.ca (CAD, English or French)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of titles and texts. French exists only on costco.ca.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French (Canada only)"}],"default":"en","example":"en"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1.","on_invalid":"reject","default":1,"minimum":1,"maximum":400},{"name":"page_size","type":"integer","required":false,"description":"Products per page (Costco's own page shows 24).","on_invalid":"reject","default":24,"minimum":1,"maximum":96},{"name":"sort","type":"enum","required":false,"description":"Costco's own sort orders.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match"},{"value":"price_asc","label":"Price, low to high"},{"value":"price_desc","label":"Price, high to low"},{"value":"rating","label":"Highest rated"},{"value":"newest","label":"Newest"},{"value":"most_viewed","label":"Most viewed"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"Only one brand, spelled as `filters_available.brands` lists it.","on_invalid":"reject","example":"Kirkland Signature"},{"name":"in_stock_only","type":"boolean","required":false,"description":"true: hide products Costco marks unavailable (the site's 'Hide Unavailable Items').","on_invalid":"ignore","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When nothing matches, Costco fills the page with unrelated products. They are dropped and counted; true returns them separately in `fallback_results`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{item_number, product_id, title, brand, model, gtin, url, image, price, regular_price, instant_savings, savings_text, price_valid_through, marketing_statement, price_range{min, max}, currency, member_only, price_in_cart_only, price_display, rating, review_count, rating_scale, availability, delivery_status, programs[], online_only, warehouse_only, costco_direct, badges[], has_variants, max_order_quantity, fsa_eligible, category_paths[]}, count, total_results, page, page_size, has_more, fallback_results_dropped, sponsored_dropped, duplicates_dropped, filters_available{brands[], price_ranges[], ratings[], categories[] ({value, count})}, country, language, currency, query, matched_query, redirected_to, redirect_url, sort_applied","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"coffee"}},{"name":"product/detail","description":"The full Costco record by item number, product number or URL: title, brand, manufacturer, model, GTIN, the price after instant savings with the regular price and saving kept apart, savings text and validity date, promotions, member-only and price-in-cart flags, shipping note, rating and review count, description, feature bullets, specifications, badges, delivery programs, order limit, availability, category pages and every variant (size, colour) with its own price.","required_params":["item_number"],"optional_params":["country","language","max_rotations"],"params":[{"name":"item_number","type":"string","required":true,"description":"A Costco item number (1789247), a product number (the number in a product URL, 4000262621) or a costco.com / costco.ca product URL.","on_invalid":"reject","example":"1789247","aliases":["product_id","id","url"]},{"name":"country","type":"enum","required":false,"description":"Which Costco store: us (costco.com, USD) or ca (costco.ca, CAD). A costco.ca URL sets it by itself. Costco's other countries run a different platform.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — costco.com (USD)"},{"value":"ca","label":"Canada — costco.ca (CAD, English or French)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of titles and texts. French exists only on costco.ca.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French (Canada only)"}],"default":"en","example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id, item_number, title, brand, manufacturer, model, gtin, url, images[], price, regular_price, instant_savings, savings_text, price_valid_through, marketing_statement, promotions, savings_valid_from, savings_valid_through, price_range{min, max}, currency, member_only, price_in_cart_only, price_includes_shipping_handling, shipping_note, rating, review_count, rating_scale, description, features[], specifications{name: value}, badges[], programs[], online_only, costco_direct, buyable, published, max_order_quantity, fsa_eligible, variants[]{item_number, attributes{}, price, regular_price, instant_savings, member_only, price_in_cart_only, buyable, published, max_order_quantity, fsa_eligible}, variant_count, availability, delivery_status, category_paths[], start_date}, country, language","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"item_number":"1789247"}},{"name":"category","description":"Every product on one Costco category page (for example mattresses, televisions, kirkland-signature-groceries), paged, with the same rows, sorting and filters as search, plus the category's breadcrumb.","required_params":["category"],"optional_params":["country","language","page","page_size","sort","brand","in_stock_only","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A Costco category page: its name as in the URL (mattresses), its path (/mattresses.html) or the full URL. `category_paths` on any product lists them.","on_invalid":"reject","example":"mattresses","aliases":["category_url","category_path"]},{"name":"country","type":"enum","required":false,"description":"Which Costco store: us (costco.com, USD) or ca (costco.ca, CAD). A costco.ca URL sets it by itself. Costco's other countries run a different platform.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — costco.com (USD)"},{"value":"ca","label":"Canada — costco.ca (CAD, English or French)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of titles and texts. French exists only on costco.ca.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French (Canada only)"}],"default":"en","example":"en"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1.","on_invalid":"reject","default":1,"minimum":1,"maximum":400},{"name":"page_size","type":"integer","required":false,"description":"Products per page (Costco's own page shows 24).","on_invalid":"reject","default":24,"minimum":1,"maximum":96},{"name":"sort","type":"enum","required":false,"description":"Costco's own sort orders.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match"},{"value":"price_asc","label":"Price, low to high"},{"value":"price_desc","label":"Price, high to low"},{"value":"rating","label":"Highest rated"},{"value":"newest","label":"Newest"},{"value":"most_viewed","label":"Most viewed"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"Only one brand, spelled as `filters_available.brands` lists it.","on_invalid":"reject","example":"Kirkland Signature"},{"name":"in_stock_only","type":"boolean","required":false,"description":"true: hide products Costco marks unavailable (the site's 'Hide Unavailable Items').","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{item_number, product_id, title, brand, model, gtin, url, image, price, regular_price, instant_savings, savings_text, price_valid_through, marketing_statement, price_range{min, max}, currency, member_only, price_in_cart_only, price_display, rating, review_count, rating_scale, availability, delivery_status, programs[], online_only, warehouse_only, costco_direct, badges[], has_variants, max_order_quantity, fsa_eligible, category_paths[]}, count, total_results, page, page_size, has_more, fallback_results_dropped, sponsored_dropped, duplicates_dropped, filters_available{brands[], price_ranges[], ratings[], categories[] ({value, count})}, country, language, currency, category, breadcrumb[]{name, url}, sort_applied","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search/suggest","description":"Costco's search-box suggestions for what a shopper has typed: products (with item number and image), brands, categories, popular searches and warehouse locations.","required_params":["query"],"optional_params":["country","language","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper has typed so far (Costco suggests from 4 characters).","on_invalid":"reject","example":"kirkl","aliases":["q","prefix"]},{"name":"country","type":"enum","required":false,"description":"Which Costco store: us (costco.com, USD) or ca (costco.ca, CAD). A costco.ca URL sets it by itself. Costco's other countries run a different platform.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — costco.com (USD)"},{"value":"ca","label":"Canada — costco.ca (CAD, English or French)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of titles and texts. French exists only on costco.ca.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French (Canada only)"}],"default":"en","example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"suggestions[]{type, text, item_number, product_id, brand, image, url, address}, count, query, country, language","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"coffee"}}]},{"name":"coupang","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Coupang API scraper - live keyword search and product lookup for coupang.com, South Korea's largest e-commerce marketplace. Prices in KRW with the list price and discount behind them, rocket-delivery filter, ratings and review counts, delivery ETA. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/coupang/v1","spec_available":true,"actions":[{"name":"search","description":"Search Coupang by keyword, in Korean or English, optionally narrowed by price range and to Coupang's own rocket-delivery inventory, and sorted by price, recency or sales. Every row carries the item and product ids, the product url, the title, the price as a number in KRW with the formatted string beside it, the list price and the discount percentage where Coupang shows one, the rating and review count on almost every row (99.0% of 420 measured rows; a brand-new listing has neither), whether it is in stock, the promised delivery date, the shipping terms where Coupang states them (94.0% of the same 420 rows), and whether the row is a sponsored placement. 🔴 ONE PAGE ONLY: Coupang's search route serves up to 60 rows and its own pagination is broken (page 2 comes back empty and offset silently repeats page 1), so there is no page parameter and no way past 60 - narrow the keyword or the price range instead. 🔴 Coupang never answers a search with an empty page: a keyword it cannot match is answered with 60 unrelated recommendations, and it returns HTTP 200 while doing it. This endpoint detects that and reports it as `possible_no_match` - check it before trusting a result set. 🔴 One product id can appear on several rows: Coupang lists each sellable variant (pack size, colour) as its own row at its own price, so `item_id` is the unique key, not `product_id`.","required_params":["query"],"optional_params":["sort","price_min","price_max","rocket_delivery","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for. Korean or English both work — Coupang's own index does the matching, and an English brand term (`airpods`, `canon`, `lg gram`) returns Korean-titled Korean listings. 🔴 Coupang never returns an empty page: a keyword with no match comes back as 60 unrelated recommendations, so check `possible_no_match` in the response before trusting a result set.","on_invalid":"reject","example":"무선이어폰","aliases":["q","keyword","search"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Every value here was proven to change the result set against a 54-56/60 self-overlap noise floor. An unknown value is SILENTLY IGNORED by Coupang, so this parameter rejects one rather than pretending it applied.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Coupang's own ranking — the default"},{"value":"price_asc","label":"Cheapest first (12/60 overlap with the default page)"},{"value":"price_desc","label":"Most expensive first (5/60 overlap)"},{"value":"newest","label":"Most recently listed first (3/60 overlap)"},{"value":"best_selling","label":"Best-selling first (31/60 overlap)"}],"default":"relevance","example":"price_asc","aliases":["sorter","order_by"]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in KRW (whole won, no decimals). Coupang treats the bound as approximate: with 10 000-20 000 requested, 55 of 59 rows came back inside the band and the widest stray was 22 400.","on_invalid":"reject","example":10000,"minimum":0,"aliases":["min_price","minPrice"]},{"name":"price_max","type":"integer","required":false,"description":"Highest price in KRW (whole won, no decimals). Approximate — see `price_min`.","on_invalid":"reject","example":20000,"minimum":0,"aliases":["max_price","maxPrice"]},{"name":"rocket_delivery","type":"boolean","required":false,"description":"Return only Coupang's own rocket-delivery listings (로켓배송 / 로켓프레시 / 로켓설치 / 로켓판매자). 🔴 Coupang's search route no longer honours a rocket parameter - it accepts one and returns the same page - so this is applied to the page Coupang sends, using each row's own rocket flag (`is_rocket`). That means you get the rocket rows OUT OF the 60 that route returns, not 60 rocket rows: measured 2026-09-18, 32 to 58 of 60 rows were rocket depending on the keyword. The number removed is returned as `rocket_filtered_out`.","on_invalid":"reject","default":false,"example":true,"aliases":["rocket","fast_delivery"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many Korean exits to try before giving up. Every attempt leases a different one, so a single unlucky exit never decides the answer. Raise it only if you are seeing transient UPSTREAM_HTTP or TARGET_BLOCKED.","on_invalid":"reject","default":4,"example":4,"minimum":1,"maximum":6}],"returns":"items[]{item_id, product_id (NOT unique - Coupang lists each variant of a product as its own row), vendor_item_id, name, url, price (number, KRW), price_display, currency, list_price, discount_percent, in_stock, sold_out_text, low_stock, rating (number), review_count, rating_scale (null - Coupang publishes no scale), rating_ratio, seller (null - Coupang publishes no seller on the search surface), brand (null except on R.LUX luxury rows), shipping, is_rocket (boolean - the row's own rocket-delivery flag; the shipping text is NOT a reliable substitute), delivery_badges[] (ROCKET / ROCKET_MERCHANT / ROCKET_FRESH / ROCKET_INSTALL / TOMORROW / COUPANG_GLOBAL, verbatim), delivery_eta, cash_reward, is_sponsored, image, rank}, count, possible_no_match (boolean), page_limit_reached, rocket_filtered_out (how many rows the rocket filter removed, null when it was not asked for), filters{}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"무선이어폰"}},{"name":"product","description":"Look up ONE Coupang product by id - search-grade fields. 🔴 Read this before you call it: Coupang's product-detail page is closed to unauthenticated clients, so this action answers by asking Coupang's own search index for the id. That means you get exactly the fields a search card carries, complete and correct, and NOT a full product record. You DO get: the title, the price as a number in KRW, the list price and discount, the currency, whether it is in stock, the rating and review count, the thumbnail, the shipping terms and promised delivery date, and the item / vendor-item ids. You do NOT get: the product description, the specification table, the image gallery (one thumbnail only), the seller or vendor name, the option/variant attribute list, the stock quantity, the category path, or any review text - Coupang does not publish any of those on the surface that is open to us. 🔴 A Coupang product id covers several sellable items at DIFFERENT prices (one coffee product measured at 4 010 / 5 700 / 5 990 / 6 250 / 6 270 / 8 550 KRW for different pack sizes), so this action returns EVERY item Coupang lists under the id in `items[]` and names the one Coupang ranks first as `item` - use `items[]` if you need the cheapest or a specific pack. A dead or invented id returns NOT_FOUND rather than the recommendations Coupang backfills with.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"A Coupang product id (the digits in `coupang.com/vp/products/<id>`), an item id, or a full Coupang product url — all three are accepted. Every `search` row returns `product_id`, `item_id` and `url`.","on_invalid":"reject","example":"9034631075","aliases":["id","item_id","url","productId"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many Korean exits to try before giving up. Every attempt leases a different one, so a single unlucky exit never decides the answer. Raise it only if you are seeing transient UPSTREAM_HTTP or TARGET_BLOCKED.","on_invalid":"reject","default":4,"example":4,"minimum":1,"maximum":6}],"returns":"item{...the representative item, same shape as a search row...}, items[]{every item Coupang lists under this product id, same shape}, item_count, price_range{min, max, currency} when the items differ in price, product_id, url","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"9034631075"}}]},{"name":"coursera","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Coursera API scraper — search courses, specializations, professional certificates and guided projects by keyword, then pull full program detail (description, rating, enrollment count, difficulty, languages, skills, instructors, partners, what-you'll-learn and the courses inside a specialization), plus top student reviews, browse every university & company partner and the subject catalogue. Returns title, partner, rating, review count, enrollments, level, duration, price/free status, skills and instructors for any Coursera course or program. No API key required.","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/coursera/v1","spec_available":true,"actions":[{"name":"search","description":"Search Coursera by keyword (any topic, skill, tool or title). Returns a paginated list of result cards — name, url, type (course / specialization / professional certificate / guided project), partner, rating, review count, difficulty, duration, skills and free status — most-relevant first. Optional filters: level, type, language, sort. Feed a result's slug/url into the detail action. Page with `page`; meta.has_more / meta.total_count tell you how many.","required_params":["query"],"optional_params":["level","type","language","sort","page","subject"],"params":[{"name":"query","type":"string","required":true,"description":"What to search Coursera for — a topic, skill, tool or course/program title ('machine learning', 'python', 'excel', 'project management', 'aws'). Returns courses, specializations, professional certificates and guided projects, most-relevant first.","on_invalid":"reject","example":"machine learning","aliases":["q","keyword"]},{"name":"level","type":"string","required":false,"description":"Filter by difficulty. One of: Beginner, Intermediate, Advanced, Mixed.","on_invalid":"ignore","example":"Beginner","aliases":["difficulty"]},{"name":"type","type":"string","required":false,"description":"Filter by product type. One of: Courses, Specializations, Professional Certificates, Guided Projects, Degrees.","on_invalid":"ignore","example":"Courses","aliases":["product_type"]},{"name":"language","type":"string","required":false,"description":"Filter by course language (e.g. English, Spanish, French, Arabic).","on_invalid":"ignore","example":"English","aliases":["lang"]},{"name":"sort","type":"string","required":false,"description":"Result order: Relevance (default) or Newest.","on_invalid":"ignore","example":"Relevance"},{"name":"page","type":"integer","required":false,"description":"Result page (12 per page). Page until meta.has_more is false; meta.total_count / meta.total_pages tell you how many.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":80},{"name":"subject","type":"string","required":false,"description":"Optional subject/topic slug to bias the search (e.g. data-science, business, computer-science).","on_invalid":"ignore","example":"data-science","aliases":["topic"]}],"returns":"results[]{id, name, url, slug, type, difficulty, duration, rating, review_count, partners[], skills[], is_free, is_coursera_plus, image, tagline} + meta{page, has_more, next_page, total_count, total_pages}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"machine learning"}},{"name":"detail","description":"Full detail for one Coursera course OR program (specialization / professional certificate) by slug or URL. For a course: description, difficulty, estimated workload, rating (average, count, by-star), total enrollments, languages, certificates, what-you'll-learn, recommended background, skills, instructors and partners. For a program: the same plus the list of courses inside it. Pass a search result's url, or a slug with type='specialization' to force the program path.","required_params":[],"optional_params":["slug","url","type"],"params":[{"name":"slug","type":"string","required":false,"description":"The course/program slug (the last path segment of a Coursera URL, e.g. 'machine-learning' from /learn/machine-learning, or 'machine-learning-introduction' from /specializations/…). From a search result's slug.","on_invalid":"reject","example":"machine-learning","aliases":["course"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full Coursera course/specialization URL (a search result's `url`). The path selects course vs program automatically.","on_invalid":"ignore","example":"https://www.coursera.org/learn/machine-learning"},{"name":"type","type":"string","required":false,"description":"Optional, only when passing a bare slug: 'course' (default) or 'specialization' / 'professional certificate' to force the program path.","on_invalid":"ignore","example":"course"}],"returns":"course_or_program{id, type, name, slug, url, description, difficulty, estimated_workload, ratings{average, rating_count, comment_count}, ratings_by_star{...}, total_enrollments, primary_languages[], certificates[], what_you_will_learn[], recommended_background, skills[], instructors[]{id, name, title, courses_taught, learners_reached}, partners[]{id, name, logo}, courses[] (programs only)}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"machine-learning"}},{"name":"reviews","description":"Top public student reviews for a Coursera course or program by slug/url: star rating, review text, author and date. Returns the most-helpful reviews Coursera surfaces on the page (top reviews — Coursera does not expose deep review pagination without login). Use meta.review_count for the total number of ratings.","required_params":[],"optional_params":["slug","url","type"],"params":[{"name":"slug","type":"string","required":false,"description":"The course/program slug to pull top reviews for (from a search result's slug).","on_invalid":"reject","example":"machine-learning","aliases":["course"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full Coursera course/program URL.","on_invalid":"ignore","example":"https://www.coursera.org/learn/machine-learning"},{"name":"type","type":"string","required":false,"description":"Optional, only with a bare slug: 'course' (default) or 'specialization'.","on_invalid":"ignore","example":"course"}],"returns":"reviews[]{review_id, author, rating, comment, date} + meta{review_count, rating_average}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"machine-learning"}},{"name":"partners","description":"Browse the universities and companies that partner with Coursera (Stanford, University of Michigan, Google, IBM, …). Returns partner id, name and logo. Use it to map who publishes on Coursera.","required_params":[],"optional_params":[],"params":[],"returns":"partners[]{id, name, logo}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"subjects","description":"Browse Coursera's subject catalogue — the top-level domains (Data Science, Business, Computer Science, Arts & Humanities, …) with their slug and description. Use a subject slug as the search `subject` filter.","required_params":[],"optional_params":[],"params":[],"returns":"subjects[]{name, slug, description}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"currency","category":{"id":"finance","title":"Finance & Data"},"title":"Currency & Exchange Rates API — live and historical FX rates from the European Central Bank: latest rates, currency conversion, time-series and fluctuation","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/currency/v1","spec_available":true,"actions":[{"name":"latest","description":"latest reference rates for a base (default EUR) → all or selected target currencies (+ unix timestamp)","required_params":[],"optional_params":["base","symbols"],"params":[{"name":"base","type":"enum","required":false,"description":"Base currency the rates are expressed in (ISO-4217). Defaults to EUR. Retired codes (RUB/HRK/legacy euro-joiners) work only for historical dates that predate their discontinuation.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro"},{"value":"USD","label":"US Dollar"},{"value":"JPY","label":"Japanese Yen"},{"value":"GBP","label":"Pound Sterling"},{"value":"CHF","label":"Swiss Franc"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CNY","label":"Chinese Yuan Renminbi"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"NOK","label":"Norwegian Krone"},{"value":"DKK","label":"Danish Krone"},{"value":"CZK","label":"Czech Koruna"},{"value":"HUF","label":"Hungarian Forint"},{"value":"PLN","label":"Polish Zloty"},{"value":"RON","label":"Romanian Leu"},{"value":"BGN","label":"Bulgarian Lev"},{"value":"TRY","label":"Turkish Lira"},{"value":"ISK","label":"Icelandic Krona"},{"value":"ILS","label":"Israeli New Shekel"},{"value":"INR","label":"Indian Rupee"},{"value":"IDR","label":"Indonesian Rupiah"},{"value":"KRW","label":"South Korean Won"},{"value":"MYR","label":"Malaysian Ringgit"},{"value":"PHP","label":"Philippine Peso"},{"value":"SGD","label":"Singapore Dollar"},{"value":"THB","label":"Thai Baht"},{"value":"ZAR","label":"South African Rand"},{"value":"MXN","label":"Mexican Peso"},{"value":"BRL","label":"Brazilian Real"},{"value":"RUB","label":"Russian Rouble"},{"value":"HRK","label":"Croatian Kuna"},{"value":"GRD","label":"Greek Drachma"},{"value":"CYP","label":"Cyprus Pound"},{"value":"EEK","label":"Estonian Kroon"},{"value":"LTL","label":"Lithuanian Litas"},{"value":"LVL","label":"Latvian Lats"},{"value":"MTL","label":"Maltese Lira"},{"value":"SIT","label":"Slovenian Tolar"},{"value":"SKK","label":"Slovak Koruna"},{"value":"ROL","label":"Romanian Leu (old)"},{"value":"TRL","label":"Turkish Lira (old)"}],"default":"EUR","example":"USD","aliases":["from"]},{"name":"symbols","type":"string","required":false,"description":"Optional comma-separated target currencies to return (e.g. 'USD,GBP,JPY'). Omit to return every currency in the ECB set. Unknown codes are reported under 'unavailable', not rejected.","on_invalid":"reject","example":"USD,GBP,JPY","aliases":["to_symbols","targets"]}],"returns":"base, date, timestamp (ECB 16:00 CET/CEST unix), rates{CUR:val}, amount; unavailable[] for any unknown requested symbols","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"base":"EUR"}},{"name":"convert","description":"convert an amount from→to at the latest rate (or a given historical date); returns rate + result","required_params":["from","to"],"optional_params":["amount","date"],"params":[{"name":"from","type":"enum","required":true,"description":"Source currency to convert FROM (ISO-4217).","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro"},{"value":"USD","label":"US Dollar"},{"value":"JPY","label":"Japanese Yen"},{"value":"GBP","label":"Pound Sterling"},{"value":"CHF","label":"Swiss Franc"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CNY","label":"Chinese Yuan Renminbi"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"NOK","label":"Norwegian Krone"},{"value":"DKK","label":"Danish Krone"},{"value":"CZK","label":"Czech Koruna"},{"value":"HUF","label":"Hungarian Forint"},{"value":"PLN","label":"Polish Zloty"},{"value":"RON","label":"Romanian Leu"},{"value":"BGN","label":"Bulgarian Lev"},{"value":"TRY","label":"Turkish Lira"},{"value":"ISK","label":"Icelandic Krona"},{"value":"ILS","label":"Israeli New Shekel"},{"value":"INR","label":"Indian Rupee"},{"value":"IDR","label":"Indonesian Rupiah"},{"value":"KRW","label":"South Korean Won"},{"value":"MYR","label":"Malaysian Ringgit"},{"value":"PHP","label":"Philippine Peso"},{"value":"SGD","label":"Singapore Dollar"},{"value":"THB","label":"Thai Baht"},{"value":"ZAR","label":"South African Rand"},{"value":"MXN","label":"Mexican Peso"},{"value":"BRL","label":"Brazilian Real"},{"value":"RUB","label":"Russian Rouble"},{"value":"HRK","label":"Croatian Kuna"},{"value":"GRD","label":"Greek Drachma"},{"value":"CYP","label":"Cyprus Pound"},{"value":"EEK","label":"Estonian Kroon"},{"value":"LTL","label":"Lithuanian Litas"},{"value":"LVL","label":"Latvian Lats"},{"value":"MTL","label":"Maltese Lira"},{"value":"SIT","label":"Slovenian Tolar"},{"value":"SKK","label":"Slovak Koruna"},{"value":"ROL","label":"Romanian Leu (old)"},{"value":"TRL","label":"Turkish Lira (old)"}],"example":"USD","aliases":["from_currency","base"]},{"name":"to","type":"enum","required":true,"description":"Target currency to convert TO (ISO-4217).","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro"},{"value":"USD","label":"US Dollar"},{"value":"JPY","label":"Japanese Yen"},{"value":"GBP","label":"Pound Sterling"},{"value":"CHF","label":"Swiss Franc"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CNY","label":"Chinese Yuan Renminbi"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"NOK","label":"Norwegian Krone"},{"value":"DKK","label":"Danish Krone"},{"value":"CZK","label":"Czech Koruna"},{"value":"HUF","label":"Hungarian Forint"},{"value":"PLN","label":"Polish Zloty"},{"value":"RON","label":"Romanian Leu"},{"value":"BGN","label":"Bulgarian Lev"},{"value":"TRY","label":"Turkish Lira"},{"value":"ISK","label":"Icelandic Krona"},{"value":"ILS","label":"Israeli New Shekel"},{"value":"INR","label":"Indian Rupee"},{"value":"IDR","label":"Indonesian Rupiah"},{"value":"KRW","label":"South Korean Won"},{"value":"MYR","label":"Malaysian Ringgit"},{"value":"PHP","label":"Philippine Peso"},{"value":"SGD","label":"Singapore Dollar"},{"value":"THB","label":"Thai Baht"},{"value":"ZAR","label":"South African Rand"},{"value":"MXN","label":"Mexican Peso"},{"value":"BRL","label":"Brazilian Real"},{"value":"RUB","label":"Russian Rouble"},{"value":"HRK","label":"Croatian Kuna"},{"value":"GRD","label":"Greek Drachma"},{"value":"CYP","label":"Cyprus Pound"},{"value":"EEK","label":"Estonian Kroon"},{"value":"LTL","label":"Lithuanian Litas"},{"value":"LVL","label":"Latvian Lats"},{"value":"MTL","label":"Maltese Lira"},{"value":"SIT","label":"Slovenian Tolar"},{"value":"SKK","label":"Slovak Koruna"},{"value":"ROL","label":"Romanian Leu (old)"},{"value":"TRL","label":"Turkish Lira (old)"}],"example":"EUR","aliases":["to_currency"]},{"name":"amount","type":"number","required":false,"description":"Amount of the source currency to convert (default 1).","on_invalid":"ignore","default":1.0,"example":100,"minimum":0},{"name":"date","type":"string","required":false,"description":"Optional historical date (YYYY-MM-DD) to convert at; omit for the latest published rate.","on_invalid":"ignore","example":"2020-07-01"}],"returns":"from, to, amount, rate, result (amount*rate), date (+ requested_date if the date rolled back to a working day)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"from":"USD","to":"EUR","amount":100}},{"name":"historical","description":"reference rates on a past date (YYYY-MM-DD; weekend/holiday → last working day) since 1999-01-04","required_params":["date"],"optional_params":["base","symbols"],"params":[{"name":"date","type":"string","required":true,"description":"Reference date (YYYY-MM-DD), since 1999-01-04. A weekend/holiday resolves to the last working day (echoed as requested_date).","on_invalid":"ignore","example":"2020-07-01"},{"name":"base","type":"enum","required":false,"description":"Base currency the rates are expressed in (ISO-4217). Defaults to EUR. Retired codes (RUB/HRK/legacy euro-joiners) work only for historical dates that predate their discontinuation.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro"},{"value":"USD","label":"US Dollar"},{"value":"JPY","label":"Japanese Yen"},{"value":"GBP","label":"Pound Sterling"},{"value":"CHF","label":"Swiss Franc"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CNY","label":"Chinese Yuan Renminbi"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"NOK","label":"Norwegian Krone"},{"value":"DKK","label":"Danish Krone"},{"value":"CZK","label":"Czech Koruna"},{"value":"HUF","label":"Hungarian Forint"},{"value":"PLN","label":"Polish Zloty"},{"value":"RON","label":"Romanian Leu"},{"value":"BGN","label":"Bulgarian Lev"},{"value":"TRY","label":"Turkish Lira"},{"value":"ISK","label":"Icelandic Krona"},{"value":"ILS","label":"Israeli New Shekel"},{"value":"INR","label":"Indian Rupee"},{"value":"IDR","label":"Indonesian Rupiah"},{"value":"KRW","label":"South Korean Won"},{"value":"MYR","label":"Malaysian Ringgit"},{"value":"PHP","label":"Philippine Peso"},{"value":"SGD","label":"Singapore Dollar"},{"value":"THB","label":"Thai Baht"},{"value":"ZAR","label":"South African Rand"},{"value":"MXN","label":"Mexican Peso"},{"value":"BRL","label":"Brazilian Real"},{"value":"RUB","label":"Russian Rouble"},{"value":"HRK","label":"Croatian Kuna"},{"value":"GRD","label":"Greek Drachma"},{"value":"CYP","label":"Cyprus Pound"},{"value":"EEK","label":"Estonian Kroon"},{"value":"LTL","label":"Lithuanian Litas"},{"value":"LVL","label":"Latvian Lats"},{"value":"MTL","label":"Maltese Lira"},{"value":"SIT","label":"Slovenian Tolar"},{"value":"SKK","label":"Slovak Koruna"},{"value":"ROL","label":"Romanian Leu (old)"},{"value":"TRL","label":"Turkish Lira (old)"}],"default":"EUR","example":"USD","aliases":["from"]},{"name":"symbols","type":"string","required":false,"description":"Optional comma-separated target currencies to return (e.g. 'USD,GBP,JPY'). Omit to return every currency in the ECB set. Unknown codes are reported under 'unavailable', not rejected.","on_invalid":"reject","example":"USD,GBP,JPY","aliases":["to_symbols","targets"]}],"returns":"base, date (actual working day), rates{CUR:val} (+ requested_date if rolled back); unavailable[] if any","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"date":"2020-07-01","base":"USD","symbols":"EUR,GBP"}},{"name":"timeseries","description":"rates over a date range (working days) for a base → selected/all targets; {date:{CUR:val}}","required_params":["start","end"],"optional_params":["base","symbols"],"params":[{"name":"start","type":"string","required":true,"description":"Range start date (YYYY-MM-DD, inclusive). Only ECB working days inside the range are returned.","on_invalid":"ignore","example":"2024-01-02","aliases":["start_date"]},{"name":"end","type":"string","required":true,"description":"Range end date (YYYY-MM-DD, inclusive).","on_invalid":"ignore","example":"2024-01-31","aliases":["end_date"]},{"name":"base","type":"enum","required":false,"description":"Base currency the rates are expressed in (ISO-4217). Defaults to EUR. Retired codes (RUB/HRK/legacy euro-joiners) work only for historical dates that predate their discontinuation.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro"},{"value":"USD","label":"US Dollar"},{"value":"JPY","label":"Japanese Yen"},{"value":"GBP","label":"Pound Sterling"},{"value":"CHF","label":"Swiss Franc"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CNY","label":"Chinese Yuan Renminbi"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"NOK","label":"Norwegian Krone"},{"value":"DKK","label":"Danish Krone"},{"value":"CZK","label":"Czech Koruna"},{"value":"HUF","label":"Hungarian Forint"},{"value":"PLN","label":"Polish Zloty"},{"value":"RON","label":"Romanian Leu"},{"value":"BGN","label":"Bulgarian Lev"},{"value":"TRY","label":"Turkish Lira"},{"value":"ISK","label":"Icelandic Krona"},{"value":"ILS","label":"Israeli New Shekel"},{"value":"INR","label":"Indian Rupee"},{"value":"IDR","label":"Indonesian Rupiah"},{"value":"KRW","label":"South Korean Won"},{"value":"MYR","label":"Malaysian Ringgit"},{"value":"PHP","label":"Philippine Peso"},{"value":"SGD","label":"Singapore Dollar"},{"value":"THB","label":"Thai Baht"},{"value":"ZAR","label":"South African Rand"},{"value":"MXN","label":"Mexican Peso"},{"value":"BRL","label":"Brazilian Real"},{"value":"RUB","label":"Russian Rouble"},{"value":"HRK","label":"Croatian Kuna"},{"value":"GRD","label":"Greek Drachma"},{"value":"CYP","label":"Cyprus Pound"},{"value":"EEK","label":"Estonian Kroon"},{"value":"LTL","label":"Lithuanian Litas"},{"value":"LVL","label":"Latvian Lats"},{"value":"MTL","label":"Maltese Lira"},{"value":"SIT","label":"Slovenian Tolar"},{"value":"SKK","label":"Slovak Koruna"},{"value":"ROL","label":"Romanian Leu (old)"},{"value":"TRL","label":"Turkish Lira (old)"}],"default":"EUR","example":"USD","aliases":["from"]},{"name":"symbols","type":"string","required":false,"description":"Optional comma-separated target currencies to return (e.g. 'USD,GBP,JPY'). Omit to return every currency in the ECB set. Unknown codes are reported under 'unavailable', not rejected.","on_invalid":"reject","example":"USD,GBP,JPY","aliases":["to_symbols","targets"]}],"returns":"base, start, end, rates{date:{CUR:val}} per working day (+ stop_reason if the range was capped)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"start":"2024-01-02","end":"2024-01-05","base":"EUR","symbols":"USD"}},{"name":"fluctuation","description":"per-currency change over a date range: {CUR:{start_rate,end_rate,change,change_pct}} (derived from the range endpoints)","required_params":["start","end"],"optional_params":["base","symbols"],"params":[{"name":"start","type":"string","required":true,"description":"Range start date (YYYY-MM-DD, inclusive). Only ECB working days inside the range are returned.","on_invalid":"ignore","example":"2024-01-02","aliases":["start_date"]},{"name":"end","type":"string","required":true,"description":"Range end date (YYYY-MM-DD, inclusive).","on_invalid":"ignore","example":"2024-01-31","aliases":["end_date"]},{"name":"base","type":"enum","required":false,"description":"Base currency the rates are expressed in (ISO-4217). Defaults to EUR. Retired codes (RUB/HRK/legacy euro-joiners) work only for historical dates that predate their discontinuation.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"Euro"},{"value":"USD","label":"US Dollar"},{"value":"JPY","label":"Japanese Yen"},{"value":"GBP","label":"Pound Sterling"},{"value":"CHF","label":"Swiss Franc"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CNY","label":"Chinese Yuan Renminbi"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"NOK","label":"Norwegian Krone"},{"value":"DKK","label":"Danish Krone"},{"value":"CZK","label":"Czech Koruna"},{"value":"HUF","label":"Hungarian Forint"},{"value":"PLN","label":"Polish Zloty"},{"value":"RON","label":"Romanian Leu"},{"value":"BGN","label":"Bulgarian Lev"},{"value":"TRY","label":"Turkish Lira"},{"value":"ISK","label":"Icelandic Krona"},{"value":"ILS","label":"Israeli New Shekel"},{"value":"INR","label":"Indian Rupee"},{"value":"IDR","label":"Indonesian Rupiah"},{"value":"KRW","label":"South Korean Won"},{"value":"MYR","label":"Malaysian Ringgit"},{"value":"PHP","label":"Philippine Peso"},{"value":"SGD","label":"Singapore Dollar"},{"value":"THB","label":"Thai Baht"},{"value":"ZAR","label":"South African Rand"},{"value":"MXN","label":"Mexican Peso"},{"value":"BRL","label":"Brazilian Real"},{"value":"RUB","label":"Russian Rouble"},{"value":"HRK","label":"Croatian Kuna"},{"value":"GRD","label":"Greek Drachma"},{"value":"CYP","label":"Cyprus Pound"},{"value":"EEK","label":"Estonian Kroon"},{"value":"LTL","label":"Lithuanian Litas"},{"value":"LVL","label":"Latvian Lats"},{"value":"MTL","label":"Maltese Lira"},{"value":"SIT","label":"Slovenian Tolar"},{"value":"SKK","label":"Slovak Koruna"},{"value":"ROL","label":"Romanian Leu (old)"},{"value":"TRL","label":"Turkish Lira (old)"}],"default":"EUR","example":"USD","aliases":["from"]},{"name":"symbols","type":"string","required":false,"description":"Optional comma-separated target currencies to return (e.g. 'USD,GBP,JPY'). Omit to return every currency in the ECB set. Unknown codes are reported under 'unavailable', not rejected.","on_invalid":"reject","example":"USD,GBP,JPY","aliases":["to_symbols","targets"]}],"returns":"base, start, end, start_date, end_date, rates{CUR:{start_rate,end_rate,change,change_pct}}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"start":"2024-01-02","end":"2024-01-31","base":"EUR","symbols":"USD"}},{"name":"currencies","description":"the current ECB reference currency set (code → name)","required_params":[],"optional_params":[],"params":[],"returns":"date, count, base (EUR), currencies{CODE:name} for the current ECB reference set","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"dafiti","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Dafiti — Latin America's largest fashion marketplace (Brazil + Colombia), with size-level availability, brand, colour, discount and marketplace seller","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/dafiti/v1","spec_available":true,"actions":[{"name":"search","description":"Search Dafiti's fashion catalogue by keyword. Every row carries the brand, the colour, the seller, the cash price AND the struck-through list price, the discount, and whether the tile was a paid placement. A query that matches nothing returns an honest empty result rather than the padded grid the site shows in its place.","required_params":["query"],"optional_params":["country","page","sort","brand","color","size","seller","price_min","price_max","free_shipping","limit"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper would type, in the storefront's language: 'tenis nike', 'vestido longo', 'bolsa couro'.","on_invalid":"reject","example":"tenis nike","aliases":["q","keyword","term"]},{"name":"country","type":"enum","required":false,"description":"Which Dafiti storefront to read. Only two of the four historical storefronts are still shops: br (dafiti.com.br, prices in BRL) and co (dafiti.com.co, prices in COP). They are different front-ends with different field coverage — size-level stock exists on br only.","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — dafiti.com.br, BRL, size-level stock"},{"value":"co","label":"Colombia — dafiti.com.co, COP, variant prices, no stock"}],"default":"br","example":"br","aliases":["cc","market","storefront"]},{"name":"sort","type":"enum","required":false,"description":"Result order. Only the orders Dafiti actually applies are accepted — it also takes a 'popularity' order and then ignores it (measured: identical to the default), so that one is deliberately not offered.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Dafiti's own default order"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"discount","label":"Biggest discount first"},{"value":"newest","label":"Most recently listed first"}],"default":"relevance","example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"Result page. br serves ~58 products per page, co ~48. The source stops paging at its own last page, reported as meta.extra.last_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Cap the rows returned from the page (1-60). The source's page size is fixed, so this trims rather than fetching fewer.","on_invalid":"ignore","example":60,"minimum":1,"maximum":60},{"name":"brand","type":"string","required":false,"description":"Filter to one brand, spelled as `facets.brands` spells it (e.g. 'nike', 'adidas'). br only.","on_invalid":"ignore","example":"nike","aliases":["marca"]},{"name":"color","type":"string","required":false,"description":"Filter to one colour, spelled as `facets.colors` spells it ('Preto', 'Branco', 'Azul'). br only.","on_invalid":"ignore","example":"Preto","aliases":["colour","cor"]},{"name":"size","type":"string","required":false,"description":"Filter to products available in one size, as `facets.sizes` spells it ('40', 'M', 'PP'). br only.","on_invalid":"ignore","example":"40","aliases":["tamanho"]},{"name":"seller","type":"string","required":false,"description":"Filter to one marketplace seller, as `facets.sellers` spells it. 'Dafiti' means Dafiti's own stock. br only.","on_invalid":"ignore","example":"Dafiti","aliases":["vendedor"]},{"name":"price_min","type":"number","required":false,"description":"Lowest price to include, in the storefront's own currency.","on_invalid":"ignore","example":100,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price to include, in the storefront's own currency.","on_invalid":"ignore","example":300,"minimum":0},{"name":"free_shipping","type":"boolean","required":false,"description":"Only products Dafiti ships free. Measured to bite: 'tenis' goes from 34 667 to 9 779 results. br only.","on_invalid":"ignore","example":true,"aliases":["frete_gratis"]}],"returns":"products[]{sku, title, brand, color, sold_by_dafiti, seller, url, image, price_pix_brl|price_cop, price_card_brl, list_price_brl|list_price_cop, discount_pct, discount_pct_source, installments, category_path, sponsored, currency}, total_results, page, last_page, facets{brands,colors,sizes,sellers}, no_match, sponsored_count","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"tenis","country":"br"}},{"name":"category","description":"Browse a Dafiti category page (e.g. 'roupas-femininas/vestidos') with the same row shape and the same filters as search. Use it to walk a catalogue rather than guess keywords.","required_params":["category_path"],"optional_params":["country","page","sort","brand","color","size","seller","price_min","price_max","free_shipping","limit"],"params":[{"name":"category_path","type":"string","required":true,"description":"The category path exactly as it appears in a Dafiti URL, without the host and without leading or trailing slashes. A path the site does not have returns NOT_FOUND, not an empty page.","on_invalid":"reject","example":"roupas-femininas/vestidos","aliases":["path","category"]},{"name":"country","type":"enum","required":false,"description":"Which Dafiti storefront to read. Only two of the four historical storefronts are still shops: br (dafiti.com.br, prices in BRL) and co (dafiti.com.co, prices in COP). They are different front-ends with different field coverage — size-level stock exists on br only.","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — dafiti.com.br, BRL, size-level stock"},{"value":"co","label":"Colombia — dafiti.com.co, COP, variant prices, no stock"}],"default":"br","example":"br","aliases":["cc","market","storefront"]},{"name":"sort","type":"enum","required":false,"description":"Result order. Only the orders Dafiti actually applies are accepted — it also takes a 'popularity' order and then ignores it (measured: identical to the default), so that one is deliberately not offered.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Dafiti's own default order"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"discount","label":"Biggest discount first"},{"value":"newest","label":"Most recently listed first"}],"default":"relevance","example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"Result page. br serves ~58 products per page, co ~48. The source stops paging at its own last page, reported as meta.extra.last_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Cap the rows returned from the page (1-60). The source's page size is fixed, so this trims rather than fetching fewer.","on_invalid":"ignore","example":60,"minimum":1,"maximum":60},{"name":"brand","type":"string","required":false,"description":"Filter to one brand, spelled as `facets.brands` spells it (e.g. 'nike', 'adidas'). br only.","on_invalid":"ignore","example":"nike","aliases":["marca"]},{"name":"color","type":"string","required":false,"description":"Filter to one colour, spelled as `facets.colors` spells it ('Preto', 'Branco', 'Azul'). br only.","on_invalid":"ignore","example":"Preto","aliases":["colour","cor"]},{"name":"size","type":"string","required":false,"description":"Filter to products available in one size, as `facets.sizes` spells it ('40', 'M', 'PP'). br only.","on_invalid":"ignore","example":"40","aliases":["tamanho"]},{"name":"seller","type":"string","required":false,"description":"Filter to one marketplace seller, as `facets.sellers` spells it. 'Dafiti' means Dafiti's own stock. br only.","on_invalid":"ignore","example":"Dafiti","aliases":["vendedor"]},{"name":"price_min","type":"number","required":false,"description":"Lowest price to include, in the storefront's own currency.","on_invalid":"ignore","example":100,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price to include, in the storefront's own currency.","on_invalid":"ignore","example":300,"minimum":0},{"name":"free_shipping","type":"boolean","required":false,"description":"Only products Dafiti ships free. Measured to bite: 'tenis' goes from 34 667 to 9 779 results. br only.","on_invalid":"ignore","example":true,"aliases":["frete_gratis"]}],"returns":"same product rows as `search`, plus total_results, page, last_page, facets, category_path","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"product","description":"One product in full: prices (cash and card), the struck-through list price, the discount, brand, colour, marketplace seller, rating and review count, the attribute table, the images, the other colourways — and on br the full size list with a remaining-stock integer per size.","required_params":["sku"],"optional_params":["country"],"params":[{"name":"sku","type":"string","required":true,"description":"The Dafiti config SKU from a search row ('KO992SHF67UFS'). A variant SKU ending in '-53' is accepted and resolved to its parent.","on_invalid":"reject","example":"KO992SHF67UFS","aliases":["product_id","id","url"]},{"name":"country","type":"enum","required":false,"description":"Which Dafiti storefront to read. Only two of the four historical storefronts are still shops: br (dafiti.com.br, prices in BRL) and co (dafiti.com.co, prices in COP). They are different front-ends with different field coverage — size-level stock exists on br only.","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — dafiti.com.br, BRL, size-level stock"},{"value":"co","label":"Colombia — dafiti.com.co, COP, variant prices, no stock"}],"default":"br","example":"br","aliases":["cc","market","storefront"]}],"returns":"product{sku, title, brand, color, seller, url, currency, price_pix_brl|price_cop, price_card_brl, list_price_*, discount_pct, rating, review_count, description, category_path, images[], sizes[]{size, variant_sku, in_stock, stock_qty, stock_at_least, stock_capped, seller}, sizes_in_stock, sizes_total, stock_total, stock_total_at_least, other_colors[], attributes{}}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"availability","description":"SIZE-LEVEL STOCK for up to 10 products in ONE call, from the storefront's own 3.7 KB JSON: per size, the variant SKU, whether it is buyable, how many units remain, and who ships it. Brazil only — the Colombian storefront publishes no stock anywhere. This is the cheap call: use it to re-check stock, and `product` only when you need the full record.","required_params":["skus"],"optional_params":["country"],"params":[{"name":"skus","type":"array","required":true,"description":"1-10 Dafiti config SKUs. Ten SKUs in one call cost one credit, where ten `product` calls would cost more and move 78x the bytes.","on_invalid":"reject","example":["KO992SHF67UFS","AD464SCF97UDM"],"aliases":["sku","product_ids"]},{"name":"country","type":"enum","required":false,"description":"Brazil only: the Colombian storefront has no stock endpoint and no published size names.","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — dafiti.com.br"}],"default":"br","example":"br","aliases":["cc","market"]}],"returns":"items[]{sku, title, brand, url, price_pix_brl, list_price_brl, sizes[]{size, variant_sku, in_stock, stock_qty, seller}, sizes_in_stock, sizes_total, stock_total, stock_total_at_least}, requested, resolved, not_found[]","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"skus":["KO992SHF67UFS"]}}]},{"name":"daraz","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Daraz API — South Asia's biggest marketplace as JSON: product search across the Pakistan, Bangladesh, Sri Lanka and Nepal storefronts with the price actually charged in local currency, the strikethrough price and the real discount, rating, review count, units sold, the seller and the shipping location; full product records with every image, variant and SKU; and published customer reviews — from daraz.pk, daraz.com.bd, daraz.lk and daraz.com.np, no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/daraz/v1","spec_available":true,"actions":[{"name":"search","description":"Search one Daraz storefront and get the product grid: the price actually charged in local currency, the strikethrough price, the real discount, rating and review count, units sold, the seller's id and name, the shipping region, the brand and both ids needed to read the product. Narrow by price band, minimum rating or shipping region — every filter offered here was measured to bite. 🔴 Daraz matches the words in a product title and does not do fuzzy multi-word matching: measured, `Samsung Galaxy S23 Ultra 512GB` returns 4 results while `iPhone 15 Pro Max 256GB Natural Titanium` returns ZERO. Search the way a shopper types, in two or three words.","required_params":["query"],"optional_params":["country","page","price_min","price_max","min_rating","location","sort","include_facets"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper would type on Daraz. Two or three words work; long, fully-specified product names return zero rows (measured).","on_invalid":"reject","example":"rice cooker","aliases":["q","keyword","term","search"]},{"name":"country","type":"enum","required":false,"description":"Which Daraz storefront to read. 🔴 This is not a language switch: the four storefronts are SEPARATE catalogues priced in four different currencies, and the same search returns different products in each. Note that Pakistan, Sri Lanka and Nepal all print prices as \"Rs.\" while meaning PKR, LKR and NPR — the response always names the currency and the price field carries the currency in its name.","on_invalid":"reject","allowed_values":[{"value":"pk","label":"Pakistan (PKR) — daraz.pk"},{"value":"bd","label":"Bangladesh (BDT) — daraz.com.bd"},{"value":"lk","label":"Sri Lanka (LKR) — daraz.lk"},{"value":"np","label":"Nepal (NPR) — daraz.com.np"}],"default":"pk","example":"pk","aliases":["cc","market"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Daraz serves 40 products a page, and `last_page` in the response is the last page that holds real results. 🔴 Asking for a page beyond it does NOT return an error or an empty page: Daraz answers HTTP 200 with 40 unrelated products (measured — page 100 000 of a 3 164-result query returned a full page of toys and phone cases). This API drops those and says so in `page_note`, so a page past the end comes back empty rather than wrong.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"price_min","type":"integer","required":false,"description":"Lowest price, in the storefront's own currency and whole units. Measured on the query `phone` (PK): 4 080 matches unfiltered, 312 between 5 000 and 15 000 PKR, and 0 of the 40 returned rows fell outside the band.","on_invalid":"ignore","example":5000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price, in the storefront's own currency. Sent to Daraz as one band with `price_min`; this is the one filter that also corrects the reported total.","on_invalid":"ignore","example":15000,"minimum":1},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars. 🔴 It really does filter the ROWS (measured on `phone`: the unfiltered page carried 2 rows under 4.0, the filtered page 0) but Daraz does NOT recompute `total_results` for it — that figure stays at the unfiltered value. Trust the rows, not the total, when this is set.","on_invalid":"reject","example":4,"minimum":1,"maximum":5,"aliases":["rating"]},{"name":"location","type":"string","required":false,"description":"Only products shipped from this region, spelled as Daraz spells it. Turn `include_facets` on to see the regions a query actually offers. 🔴 Same caveat as `min_rating`: measured on `phone`, the unfiltered page was 17 Punjab / 23 Sindh and the filtered page 40/40 Punjab — but `total_results` did not change.","on_invalid":"ignore","example":"Punjab"},{"name":"sort","type":"enum","required":false,"description":"Result order, read off Daraz's own sort bar. 🔴 A price sort cannot be paged: measured, `price_asc` returns the identical 40 rows on pages 1, 2 and 10, so asking for page > 1 together with a price sort is rejected rather than served as duplicates. Daraz offers no 'newest' or 'best selling' order on this site.","on_invalid":"reject","allowed_values":[{"value":"popularity","label":"Daraz's own best-match ranking (its default)"},{"value":"price_asc","label":"Price, cheapest first (page 1 only)"},{"value":"price_desc","label":"Price, dearest first (page 1 only)"}],"example":"price_asc"},{"name":"include_facets","type":"boolean","required":false,"description":"Also return `facets`: the filter block Daraz itself shows for this query — categories, brands, shipping regions, services and the category-specific attributes, each with the value to pass back. Measured 13 facet groups on a `laptop` search. 🔴 Daraz does not publish a product COUNT beside its facet values, so `count` is null on every one; the values are real, the counts are not published. Costs no extra upstream request.","on_invalid":"ignore","default":false}],"returns":"products[]{item_id, sku_id, sku, cheapest_sku, url, title, currency, price_<cur>, list_price_<cur>, price_display, discount_percent, discount_percent_source, discount_display, rating, rating_scale, review_count, sold_count, sold_count_display, brand_id, brand_name, seller_id, seller_name, location, in_stock, image, sponsored, highlights[]}, count, total_results, total_results_capped, page, last_page, per_page, no_more_pages, currency, country, venture, non_product_tiles_dropped, filler_rows_dropped, facets[], breadcrumb[]","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"category","description":"Walk one Daraz category or tag page by page, with the same product rows and the same filters as `search`, plus an optional keyword applied INSIDE the category. Measured on PK: the whole `phone` search returns 4 080 matches and the `smartphones` category narrows it to 2 105. Category values come from the `category` facet — turn `include_facets` on in `search` to list them. A category Daraz does not publish returns NOT_FOUND rather than an empty success.","required_params":["category"],"optional_params":["country","query","page","price_min","price_max","min_rating","location","sort","include_facets"],"params":[{"name":"category","type":"string","required":true,"description":"A Daraz category slug (`smartphones`), a tag (`tag/iphone`) or a full Daraz category URL. 🔴 Daraz only honours a category as a URL PATH — passing it as a query parameter is silently ignored (measured: 4 080 -> 4 080, unchanged), which is why this is its own action.","on_invalid":"reject","example":"smartphones","aliases":["category_id","slug","tag","url"]},{"name":"query","type":"string","required":false,"description":"Optional keyword applied inside the category.","on_invalid":"ignore","example":"samsung","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Daraz storefront to read. 🔴 This is not a language switch: the four storefronts are SEPARATE catalogues priced in four different currencies, and the same search returns different products in each. Note that Pakistan, Sri Lanka and Nepal all print prices as \"Rs.\" while meaning PKR, LKR and NPR — the response always names the currency and the price field carries the currency in its name.","on_invalid":"reject","allowed_values":[{"value":"pk","label":"Pakistan (PKR) — daraz.pk"},{"value":"bd","label":"Bangladesh (BDT) — daraz.com.bd"},{"value":"lk","label":"Sri Lanka (LKR) — daraz.lk"},{"value":"np","label":"Nepal (NPR) — daraz.com.np"}],"default":"pk","example":"pk","aliases":["cc","market"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Daraz serves 40 products a page, and `last_page` in the response is the last page that holds real results. 🔴 Asking for a page beyond it does NOT return an error or an empty page: Daraz answers HTTP 200 with 40 unrelated products (measured — page 100 000 of a 3 164-result query returned a full page of toys and phone cases). This API drops those and says so in `page_note`, so a page past the end comes back empty rather than wrong.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"price_min","type":"integer","required":false,"description":"Lowest price, in the storefront's own currency and whole units. Measured on the query `phone` (PK): 4 080 matches unfiltered, 312 between 5 000 and 15 000 PKR, and 0 of the 40 returned rows fell outside the band.","on_invalid":"ignore","example":5000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price, in the storefront's own currency. Sent to Daraz as one band with `price_min`; this is the one filter that also corrects the reported total.","on_invalid":"ignore","example":15000,"minimum":1},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars. 🔴 It really does filter the ROWS (measured on `phone`: the unfiltered page carried 2 rows under 4.0, the filtered page 0) but Daraz does NOT recompute `total_results` for it — that figure stays at the unfiltered value. Trust the rows, not the total, when this is set.","on_invalid":"reject","example":4,"minimum":1,"maximum":5,"aliases":["rating"]},{"name":"location","type":"string","required":false,"description":"Only products shipped from this region, spelled as Daraz spells it. Turn `include_facets` on to see the regions a query actually offers. 🔴 Same caveat as `min_rating`: measured on `phone`, the unfiltered page was 17 Punjab / 23 Sindh and the filtered page 40/40 Punjab — but `total_results` did not change.","on_invalid":"ignore","example":"Punjab"},{"name":"sort","type":"enum","required":false,"description":"Result order, read off Daraz's own sort bar. 🔴 A price sort cannot be paged: measured, `price_asc` returns the identical 40 rows on pages 1, 2 and 10, so asking for page > 1 together with a price sort is rejected rather than served as duplicates. Daraz offers no 'newest' or 'best selling' order on this site.","on_invalid":"reject","allowed_values":[{"value":"popularity","label":"Daraz's own best-match ranking (its default)"},{"value":"price_asc","label":"Price, cheapest first (page 1 only)"},{"value":"price_desc","label":"Price, dearest first (page 1 only)"}],"example":"price_asc"},{"name":"include_facets","type":"boolean","required":false,"description":"Also return `facets`: the filter block Daraz itself shows for this query — categories, brands, shipping regions, services and the category-specific attributes, each with the value to pass back. Measured 13 facet groups on a `laptop` search. 🔴 Daraz does not publish a product COUNT beside its facet values, so `count` is null on every one; the values are real, the counts are not published. Costs no extra upstream request.","on_invalid":"ignore","default":false}],"returns":"same shape as `search`, plus category","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"browse","description":"Documented alias of `category` — identical parameters and identical response.","required_params":["category"],"optional_params":["country","query","page","price_min","price_max","min_rating","location","sort","include_facets"],"params":[{"name":"category","type":"string","required":true,"description":"See `category`.","on_invalid":"reject","example":"smartphones","aliases":["slug","tag","url"]},{"name":"country","type":"enum","required":false,"description":"Which Daraz storefront to read. 🔴 This is not a language switch: the four storefronts are SEPARATE catalogues priced in four different currencies, and the same search returns different products in each. Note that Pakistan, Sri Lanka and Nepal all print prices as \"Rs.\" while meaning PKR, LKR and NPR — the response always names the currency and the price field carries the currency in its name.","on_invalid":"reject","allowed_values":[{"value":"pk","label":"Pakistan (PKR) — daraz.pk"},{"value":"bd","label":"Bangladesh (BDT) — daraz.com.bd"},{"value":"lk","label":"Sri Lanka (LKR) — daraz.lk"},{"value":"np","label":"Nepal (NPR) — daraz.com.np"}],"default":"pk","example":"pk","aliases":["cc","market"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Daraz serves 40 products a page, and `last_page` in the response is the last page that holds real results. 🔴 Asking for a page beyond it does NOT return an error or an empty page: Daraz answers HTTP 200 with 40 unrelated products (measured — page 100 000 of a 3 164-result query returned a full page of toys and phone cases). This API drops those and says so in `page_note`, so a page past the end comes back empty rather than wrong.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"same shape as `category`","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"product","description":"The full record for one product: title, full description (as text and as the original HTML), brand, every image and video, the colour/size variant axes, the SKU table with per-order limits, the category path, availability and the return policy — plus the price actually charged, the strikethrough price, the real discount, rating, review count, units sold and the seller's name. 🔴 The last group does not exist on Daraz's product page at all (its ld+json offer carries no price key, and its only price string was measured to be the STRUCK-THROUGH price on 12 of 12 products where the two differ), so this action also reads Daraz's own catalogue entry for the same item and tags every field it took from there with `price_source: \"catalogue\"`. That is why it costs two upstream requests. If the catalogue has no live entry, the price fields are null and `price_source` says `unavailable` — nothing is guessed.","required_params":["item_id"],"optional_params":["country","sku_id"],"params":[{"name":"item_id","type":"string","required":true,"description":"The numeric Daraz item id or any Daraz product URL. Every `search` row carries both.","on_invalid":"reject","example":"1957775263","aliases":["product_id","id","url","product"]},{"name":"country","type":"enum","required":false,"description":"Which Daraz storefront to read. 🔴 This is not a language switch: the four storefronts are SEPARATE catalogues priced in four different currencies, and the same search returns different products in each. Note that Pakistan, Sri Lanka and Nepal all print prices as \"Rs.\" while meaning PKR, LKR and NPR — the response always names the currency and the price field carries the currency in its name.","on_invalid":"reject","allowed_values":[{"value":"pk","label":"Pakistan (PKR) — daraz.pk"},{"value":"bd","label":"Bangladesh (BDT) — daraz.com.bd"},{"value":"lk","label":"Sri Lanka (LKR) — daraz.lk"},{"value":"np","label":"Nepal (NPR) — daraz.com.np"}],"default":"pk","example":"pk","aliases":["cc","market"]},{"name":"sku_id","type":"string","required":false,"description":"Which variant to read. A Daraz item can hold several SKUs at different prices (measured: one rice cooker's two SKUs print 12 000 and 9 999), so pass the `sku_id` from the search row when you have it. Omitted, Daraz picks its own default.","on_invalid":"ignore","example":"14018953584","aliases":["skuId","sku"]}],"returns":"item_id, sku_id, sku, mpn, url, title, country, currency, price_<cur>, list_price_<cur>, price_display, list_price_display, price_source, discount_percent, discount_percent_source, brand{id,name,url}, seller{id,name,name_source}, category_path[], category_id, description, description_html, highlights[], images[], image, videos[], variants[]{property_id,name,values[]}, skus[]{sku_id,max_order_quantity,min_order_quantity}, sku_names[], availability, in_stock, return_policy, rating, review_count, rating_scale, sold_count, stock_quantity, location","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"product/reviews","description":"The published customer reviews for one product: the star rating, the text, the date, the buyer's display name, whether it is a verified purchase, the reviewer's photos, the helpful votes, Daraz's three per-purchase sub-scores and the seller's reply where there is one — with the aggregate 1-5 star histogram beside them. 🔴 The histogram deliberately does not sum to `total_reviews`: Daraz withholds some reviews from the public list and states how many in `hidden_review_count` (measured: 8 308 visible across the histogram against a stated 8 362, with 2 482 hidden). Reviews can be read at most 1 000 deep per product.","required_params":["item_id"],"optional_params":["country","page","limit","stars","sort"],"params":[{"name":"item_id","type":"string","required":true,"description":"The numeric Daraz item id or a Daraz product URL. 🔴 A SKU id is NOT accepted here — Daraz returns an empty list for one, because the two id spaces are different.","on_invalid":"reject","example":"930427363","aliases":["product_id","id","url"]},{"name":"country","type":"enum","required":false,"description":"Which Daraz storefront to read. 🔴 This is not a language switch: the four storefronts are SEPARATE catalogues priced in four different currencies, and the same search returns different products in each. Note that Pakistan, Sri Lanka and Nepal all print prices as \"Rs.\" while meaning PKR, LKR and NPR — the response always names the currency and the price field carries the currency in its name.","on_invalid":"reject","allowed_values":[{"value":"pk","label":"Pakistan (PKR) — daraz.pk"},{"value":"bd","label":"Bangladesh (BDT) — daraz.com.bd"},{"value":"lk","label":"Sri Lanka (LKR) — daraz.lk"},{"value":"np","label":"Nepal (NPR) — daraz.com.np"}],"default":"pk","example":"pk","aliases":["cc","market"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Daraz serves 40 products a page, and `last_page` in the response is the last page that holds real results. 🔴 Asking for a page beyond it does NOT return an error or an empty page: Daraz answers HTTP 200 with 40 unrelated products (measured — page 100 000 of a 3 164-result query returned a full page of toys and phone cases). This API drops those and says so in `page_note`, so a page past the end comes back empty rather than wrong.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Reviews per page, up to 50 (default 20: 119 KB a call against 308 KB at 50). 🔴 Daraz returns ZERO rows for a larger value rather than clamping it, so this API clamps it instead. `page x limit` may not exceed 1000, which is how deep Daraz serves reviews however many exist.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50},{"name":"stars","type":"integer","required":false,"description":"Only reviews with exactly this many stars. Verified against Daraz's own histogram: the 1-star filter returned 727 where the histogram says 727, the 5-star filter 6 300 where it says 6 300.","on_invalid":"reject","example":5,"minimum":1,"maximum":5,"aliases":["filter"]},{"name":"sort","type":"enum","required":false,"description":"Review order. Daraz accepts two further values and returns a byte-identical list for both, so they are not offered here.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Daraz's own ranking (default)"},{"value":"recent","label":"Newest first"}],"default":"relevance","example":"recent"}],"returns":"reviews[]{review_id, rating, text, date, bought_date, author, anonymous, verified_purchase, sku_info, images[], video_id, likes, up_votes, down_votes, sub_scores, seller_reply, seller_reply_date}, count, page, per_page, total_pages, total_reviews, average_rating, rating_histogram, hidden_review_count, reviews_with_images, reviews_with_video, item_id, country","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"decathlon","category":{"id":"other","title":"Other"},"title":"Decathlon API — search the decathlon.com (US) sporting-goods catalogue and pull a full product with every size/colour variant, its EAN-13 barcode, shipping weight in grams, live stock count, price and sale price, options, images and video — no API key, account or cookie required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/decathlon/v1","spec_available":true,"actions":[{"name":"search","description":"Search or browse the decathlon.com (US) catalogue. Give a free-text `query` ('hiking boots', 'bike helmet', 'kiprun'), a `collection` handle to browse (`running`, `womens`, `mens-hiking-boots`, `all`), or both to search inside one collection. Every result carries Decathlon's own product id and handle, the product title, house brand, product type, tags, image, price range, sale price, stock flag and — in catalogue and collection mode — the variant count, SKU list and shipping-weight range. Narrow with product_type, vendor, tag, min_price, max_price and available_only; sort by price, name or publish date; page through the whole match set. Live facet vocabularies with counts come back with every catalogue-mode response, so the filter values are never a guess. Feed a result's `handle` straight into `product_detail` for barcodes and per-variant weights.","required_params":[],"optional_params":["query","collection","mode","max_results","page","sort","product_type","vendor","tag","min_price","max_price","available_only"],"params":[{"name":"query","type":"string","required":false,"description":"What to look for in the decathlon.com (US) catalogue — a product name, category word or one of Decathlon's own brands ('hiking boots', 'kiprun running shoes', 'bike helmet', 'quechua tent'). Provide `query` OR `collection` (or both, to search inside one collection). NOTE decathlon.com is the **US** store and its catalogue is small (~500 products): a term the US store does not carry returns HTTP 200 with zero results, which is an honest empty and not an error. decathlon.com is a narrow US store (about 500 products, heavy in hiking, camping, cycling, running and apparel) — it really does not stock tennis rackets, swim goggles, helmets or dumbbells, and this API will tell you 0 rather than pad the answer. (decathlon.com's own search will happily answer 'racket' with 58 jackets; this API will not.)","on_invalid":"reject","example":"hiking boots","aliases":["q","keyword","text","search"]},{"name":"collection","type":"string","required":false,"description":"Browse one Decathlon collection instead of (or as well as) keyword searching. Use the handle exactly as it appears in a decathlon.com/collections/<handle> URL — e.g. `running`, `womens`, `mens-hiking-boots`, `womens-jackets`, `hiking-camp-accessories`. `all` browses the whole store. A handle that does not exist returns NOT_FOUND; a real collection the US store currently carries nothing in returns an honest empty result set.","on_invalid":"reject","example":"womens-hiking-boots","aliases":["collection_handle","category","c"]},{"name":"mode","type":"enum","required":false,"description":"Which route answers. Leave this alone unless you are building a type-ahead box. `catalog` (the default) searches Decathlon's complete US catalogue and returns every match with a real total, pagination, filters, sorting and live facet counts. `suggest` calls Shopify's autocomplete index instead: one small fast request, but it is a type-ahead index, not search — it is hard-capped at 10 results, publishes no total, cannot page, filter or sort, and it UNDER-REPORTS (measured: 0 results for 'tennis' where the store has 1, and 4 for 'swim' where the store has 7). `meta.search_mode` and `meta.ranking` always report what ran.","on_invalid":"reject","allowed_values":[{"value":"catalog","label":"Full-catalogue search (default) — every match, real total, pagination, filters, sorting, facets"},{"value":"suggest","label":"Shopify's type-ahead autocomplete — max 10, one page, no total, under-reports"}],"default":"catalog","example":"catalog"},{"name":"max_results","type":"integer","required":false,"description":"How many products to return (1-250). In `suggest` mode Shopify's own cap of 10 applies whatever you ask for.","on_invalid":"ignore","default":20,"minimum":1,"maximum":250,"aliases":["limit","max"]},{"name":"page","type":"integer","required":false,"description":"Which page of the matched result set to return (1-based, `max_results` per page). Paging is a catalogue-mode feature — Shopify's autocomplete index has a single page. Page until `meta.pagination.has_more` is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result ordering (catalogue and collection mode). Omit for relevance, which in collection browsing means Decathlon's own collection order. Any explicit sort forces catalogue mode so that the ordering covers the whole match set rather than one page.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match first (catalogue mode); collection order when browsing"},{"value":"price_asc","label":"Cheapest first (by the product's lowest variant price)"},{"value":"price_desc","label":"Most expensive first"},{"value":"title_asc","label":"Product name A-Z"},{"value":"title_desc","label":"Product name Z-A"},{"value":"newest","label":"Most recently published first"},{"value":"oldest","label":"Oldest published first"}],"example":"price_asc","aliases":["order","sort_by"]},{"name":"product_type","type":"string","required":false,"description":"Keep only products whose Shopify product type contains this text (case-insensitive). The values that actually exist for your query come back in `facets.product_type` with counts, so you never have to guess.","on_invalid":"ignore","example":"Athletic Shoes","aliases":["type"]},{"name":"vendor","type":"string","required":false,"description":"Keep only products from this Decathlon house brand (Kiprun, Quechua, Domyos, Rockrider, Forclaz, Nabaiji, Btwin…). Case-insensitive, substring match. Live values with counts are in `facets.vendor`.","on_invalid":"ignore","example":"Quechua","aliases":["brand"]},{"name":"tag","type":"string","required":false,"description":"Keep only products carrying this Shopify tag (exact, case-insensitive). Decathlon's tag list mixes merchandising tags ('hiking_boots', 'FW25') with internal bookkeeping tags ('FAMILY: 25126', stock flags) — they are returned verbatim, and `facets.tag` shows which ones your result set actually has.","on_invalid":"ignore","example":"hiking_boots"},{"name":"min_price","type":"number","required":false,"description":"Keep only products with at least one variant at or above this price, in USD.","on_invalid":"ignore","example":25,"minimum":0,"aliases":["price_min"]},{"name":"max_price","type":"number","required":false,"description":"Keep only products with at least one variant at or below this price, in USD.","on_invalid":"ignore","example":150,"minimum":0,"aliases":["price_max"]},{"name":"available_only","type":"boolean","required":false,"description":"Keep only products with at least one buyable variant. Works in every mode — in suggest mode it is passed to Shopify as its own `unavailable_products=hide` option (measured: 10 results become 7 on a query with sold-out items).","on_invalid":"ignore","default":false,"aliases":["in_stock","in_stock_only"]}],"returns":"products[]{product_id, handle, url, title, vendor, product_type, tags[], description, description_html, image, image_count, available, price_min, price_max, compare_at_price_min, compare_at_price_max, currency, on_sale, variant_count, in_stock_variant_count, grams_min, grams_max, skus[], options[], published_at, created_at, updated_at} + collection{handle, collection_id, title, description, products_count, products_published, url} (only when you browsed a collection; `products_count` is Decathlon's own declared figure and `products_published` is how many the collection actually serves — they disagree on about half of collections, so both are returned rather than one being quietly preferred) + facets{product_type[]{value,count}, vendor[]{value,count}, tag[]{value,count}, price{min,max}} (catalogue and collection mode). meta.search_mode says which route answered (`suggest` | `catalog` | `collection`), meta.ranking says whose ordering you are looking at (`shopify_suggest` | `engine_relevance` | `collection_order`), and meta.pagination{page, per_page, total_results, returned, has_more, next_page} carries the counts. meta.matching{all_terms, any_term} says how the result set was found: `all_terms` is the normal case (every search term matched the product), and `any_term` is a rescue that only ever runs when matching every term found nothing at all — a thin result set is never padded out with weaker matches. HONEST LIMITS: search cards never carry `barcode`, `weight` or per-variant stock counts, because Decathlon's list feeds do not publish them at all — `product_detail` is where those live. decathlon.com is the US store only, it lists about 500 products, and a term it does not stock returns 0 products with ok:true rather than a padded answer. `suggest` mode is a type-ahead index: max 10, one page, `total_results` null, and it misses products catalogue mode finds.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"hiking boots"}},{"name":"product_detail","description":"Get one Decathlon product in full, by handle, product id or decathlon.com URL — title, house brand, product type, tags, the marketing description in both plain text and its original HTML, every image with dimensions and the variants it belongs to, product video and 3D media, the option axes with their values, and one row per size x colour variant. Each variant row carries Decathlon's own variant id, the retail SKU, the **EAN-13 barcode**, the **shipping weight in grams** (plus the merchant's own weight + unit pair), the live **inventory quantity** as a real integer, the buyable flag, price, compare-at price, tax and shipping flags, and any volume-pricing rules. Built for shipping-cost and catalogue-matching work: barcode and grams are the two fields this endpoint exists for.","required_params":[],"optional_params":["handle","product_id","url"],"params":[{"name":"handle","type":"string","required":false,"description":"The product's Decathlon handle — the last path segment of a decathlon.com/products/<handle> URL, and the `handle` returned by `search`. This is the fast path: it is the only key Decathlon's own product route resolves, so it costs exactly one round trip. Provide `handle`, `product_id` or `url`.","on_invalid":"reject","example":"kiprun-kipride-mens-running-shoes-380020","aliases":["product_handle","slug","product"]},{"name":"product_id","type":"string","required":false,"description":"Shopify's numeric product id, exactly as `search` returns it. Accepted for convenience, but be aware decathlon.com does NOT serve a product by id (/products/<id>.json is a 404), so the id is resolved to its handle through this API's cached catalogue index — the first such call after the cache expires also pays for the catalogue read. Pass `handle` when you have it.","on_invalid":"reject","example":"8042533847102","aliases":["id","pid"]},{"name":"url","type":"string","required":false,"description":"A full decathlon.com product URL — an alternative to `handle`. A `?variant=<id>` suffix is accepted and ignored (every variant is returned anyway).","on_invalid":"ignore","example":"https://www.decathlon.com/products/kiprun-kipride-mens-running-shoes-380020","aliases":["product_url"]}],"returns":"product{product_id, handle, url, title, vendor, product_type, tags[], description, description_html, specifications[]{name, value}, available, price_min, price_max, price_varies, compare_at_price_min, compare_at_price_max, currency, on_sale, options[]{name, position, values[]}, images[]{image_id, src, alt, position, width, height, variant_ids[]}, image, media[]{media_id, media_type, position, alt, src, external_id, host}, variant_count, in_stock_variant_count, grams_min, grams_max, weight_units_seen[], weight_unit_varies, published_at, created_at, updated_at, variants[]{variant_id, sku, barcode, title, options{}, option1, option2, option3, position, price, compare_at_price, currency, available, inventory_quantity, inventory_policy, inventory_management, grams, weight, weight_unit, requires_shipping, taxable, quantity_rule, quantity_price_breaks, image, url}}. meta.coverage counts how many of this product's variants actually carry a barcode, a weight and a stock number, so you can see the completeness of the row you were given rather than trusting an average. FIELD NOTES: `grams` is the canonical shipping weight and is always in grams; `weight`+`weight_unit` are the merchant's own entry and Decathlon genuinely mixes kg and lb BETWEEN variants of the same product, which is why `weight_unit_varies` is flagged and no conversion is invented. `inventory_quantity` is null when the merchant does not track stock for that variant (`inventory_management` is then null too) — null means 'not published', never 'zero'. `description_html` is the raw HTML Decathlon publishes; `description` is the same copy with markup stripped and entities decoded. Decathlon publishes NO ratings, reviews, dimensions, colour swatches or per-store stock on these routes.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"handle":"decathlon-gift-card"}}]},{"name":"depop","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Depop API scraper — search fashion resale listings in nine Depop markets with item price, discount, condition, size, shipping and the buyer's fee and import tax, read a full listing with the seller's rating and items sold, a seller's for-sale and sold listings, reviews and profile, similar items and search suggestions. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/depop/v1","spec_available":true,"actions":[{"name":"search","description":"Search Depop listings by keyword, or browse a brand, department or category, in one of nine markets (US, UK, Australia, Canada, New Zealand, Germany, France, Italy, Ireland). Every row: listing id, slug and url, description, brand, category and subcategory, gender, condition, colours, sizes with quantities, the item price with the struck original price when reduced, shipping price, the price a buyer in that country is shown (buyer fee, import tax, national or international shipping), likes, the seller's country and whether the listing is boosted. Filter by brand, department, category, subcategory, condition, colour, price range and on-sale; sort by relevance or price; page with `next_cursor`.","required_params":[],"optional_params":["query","brand","department","category","subcategory","condition","colour","price_min","price_max","on_sale","sort","limit","cursor","country","region","include_sponsored","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keywords. Optional when a brand, department or category is given (browse).","on_invalid":"reject","example":"carhartt jacket","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Depop market. Search returns that market's listings; every price is also priced for a buyer in this country (`buyer_view`: buyer fee, import tax, national or international shipping).","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"ie","label":"Ireland (EUR)"}],"default":"us","example":"gb"},{"name":"region","type":"string","required":false,"description":"country=us only: the buyer's US state code (CA, NY, TX …). Depop's US buyer fee depends on the buyer's state — measured: CA and OR pay it, NY and TX do not. Without a state, US prices are shown with no state fee.","on_invalid":"reject","example":"CA","aliases":["state"]},{"name":"brand","type":"string","required":false,"description":"Brand name(s) as Depop lists them, comma-separated (up to 10): Nike, Levi's, The North Face — or Depop brand ids (`brand_id` on every row). An unknown brand is rejected, not ignored.","on_invalid":"reject","example":"Nike"},{"name":"department","type":"enum","required":false,"description":"Depop department.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Menswear"},{"value":"women","label":"Womenswear"},{"value":"kids","label":"Kidswear"},{"value":"everything_else","label":"Everything else (needs a category)"}],"example":"women"},{"name":"category","type":"string","required":false,"description":"Depop category id: tops, bottoms, dresses, coats-jackets, footwear, accessories, suits, jumpsuit-and-playsuit, nightwear, underwear, swim-beach-wear; everything_else: home, art, beauty, music, books-and-magazine, film, toys, sports-equipment-accesories … Rejected with the valid list when unknown or outside the department.","on_invalid":"reject","example":"coats-jackets"},{"name":"subcategory","type":"string","required":false,"description":"Subcategory id(s) inside the category, comma-separated: footwear → trainers, boots, loafers; tops → tshirts, hoodies, jumpers; bottoms → jeans, shorts, skirts. Needs `category`.","on_invalid":"reject","example":"jackets"},{"name":"condition","type":"string","required":false,"description":"Condition(s), comma-separated: brand_new, used_like_new, used_excellent, used_good, used_fair.","on_invalid":"reject","example":"used_like_new"},{"name":"colour","type":"string","required":false,"description":"Colour(s), comma-separated: black, grey, white, brown, tan, cream, yellow, red, burgundy, orange, pink, purple, blue, navy, green, khaki, multi, silver, gold.","on_invalid":"reject","example":"black","aliases":["color"]},{"name":"price_min","type":"number","required":false,"description":"Lowest item price, in the country's currency.","on_invalid":"reject","example":20,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest item price, in the country's currency.","on_invalid":"reject","example":120,"minimum":0},{"name":"on_sale","type":"boolean","required":false,"description":"Only listings the seller has reduced (each row then carries original_price).","on_invalid":"reject","default":false},{"name":"sort","type":"enum","required":false,"description":"Order of results. Unknown values are rejected (Depop itself would silently ignore them).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Depop's default ranking"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"}],"default":"relevance"},{"name":"limit","type":"integer","required":false,"description":"Listings per call, 1-100 (Depop's own page is 24).","on_invalid":"reject","default":24,"minimum":1,"maximum":100,"aliases":["page_size"]},{"name":"cursor","type":"string","required":false,"description":"Continue a previous call: pass back its `next_cursor`. `next_cursor: null` is the end.","on_invalid":"reject","aliases":["next_cursor","page_token"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Boosted (promoted) listings are left out by default and counted in `sponsored_dropped`; true returns them, each with `is_boosted: true`.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, slug, url, description, brand, brand_id, category, group, product_type, gender, is_kids, condition, condition_label, colours[], sizes[]{size, quantity, status}, quantity, status (on_sale|sold|reserved…), is_sold, price (number — the seller's item price now), currency (the listing's), original_price (the struck price when Depop marks the listing reduced, else null), discount_percent, is_discounted, shipping_price, buyer_view{country, us_state (country=us: the `region` used, null = no state fee), headline_price (what Depop shows a buyer in `country`), headline_currency, headline_includes{buyer_fee, tax, shipping}, buyer_fee, tax, tax_type, shipping_price, shipping_boundary (national|international)}, shipping_provider, shipping_payer, like_count, image, image_count, seller_id (seller rows and similar rows; null in search), seller_country, location, is_boosted, listed_at (seller rows and similar rows), updated_at}, count, next_cursor, has_more, total_results, sponsored_dropped, filters{}, query, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike"}},{"name":"product/detail","description":"One Depop listing in full, by slug, URL or id: Depop's product title, the description, brand, category path, gender, condition, colours, sizes (including sold-out sizes) with quantities, every photo, the item price with the original price when reduced, national and international shipping prices and whether shipping is free, what a buyer in `country` is shown (buyer fee, import tax, shipping), likes, sale status (sold listings still resolve), and the seller: username, shop url, verified flag, country, star rating and review count, items sold, last seen and average days to ship.","required_params":["listing"],"optional_params":["country","region","max_rotations"],"params":[{"name":"listing","type":"string","required":true,"description":"A Depop listing: its slug (the part after /products/ in the URL), the full listing URL, or the numeric listing id. Every search row returns `slug` and `listing_id`.","on_invalid":"reject","example":"harrietsa2ton-vintage-billabong-shorts-unisex-8888","aliases":["slug","listing_id","id","product_id","url"]},{"name":"country","type":"enum","required":false,"description":"Depop market. Search returns that market's listings; every price is also priced for a buyer in this country (`buyer_view`: buyer fee, import tax, national or international shipping).","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"ie","label":"Ireland (EUR)"}],"default":"us","example":"gb"},{"name":"region","type":"string","required":false,"description":"country=us only: the buyer's US state code (CA, NY, TX …). Depop's US buyer fee depends on the buyer's state — measured: CA and OR pay it, NY and TX do not. Without a state, US prices are shown with no state fee.","on_invalid":"reject","example":"CA","aliases":["state"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{listing_id, slug, url, description, brand, brand_id, category, group, product_type, gender, is_kids, condition, condition_label, colours[], sizes[]{size, quantity, status}, quantity, status (on_sale|sold|reserved…), is_sold, price (number — the seller's item price now), currency (the listing's), original_price (the struck price when Depop marks the listing reduced, else null), discount_percent, is_discounted, shipping_price, buyer_view{country, us_state (country=us: the `region` used, null = no state fee), headline_price (what Depop shows a buyer in `country`), headline_currency, headline_includes{buyer_fee, tax, shipping}, buyer_fee, tax, tax_type, shipping_price, shipping_boundary (national|international)}, shipping_provider, shipping_payer, like_count, image, image_count, seller_id (seller rows and similar rows; null in search), seller_country, location, is_boosted, listed_at (seller rows and similar rows), updated_at, title, group_name, colour_names[], images[], national_shipping_price, international_shipping_price, has_free_shipping, shipping_confidence, seller{id, username, url, verified, picture, country, rating, rating_scale, review_count, items_sold, last_seen, average_shipping_days}, country}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/similar","description":"The listings Depop shows as similar to one listing (up to 48), with the same row fields as `search` plus seller id and listing date. Works for sold listings too — similar items still for sale.","required_params":["listing"],"optional_params":["country","region","limit","include_sponsored","max_rotations"],"params":[{"name":"listing","type":"string","required":true,"description":"A Depop listing: its slug (the part after /products/ in the URL), the full listing URL, or the numeric listing id. Every search row returns `slug` and `listing_id`.","on_invalid":"reject","example":"harrietsa2ton-vintage-billabong-shorts-unisex-8888","aliases":["slug","listing_id","id","product_id","url"]},{"name":"country","type":"enum","required":false,"description":"Depop market. Search returns that market's listings; every price is also priced for a buyer in this country (`buyer_view`: buyer fee, import tax, national or international shipping).","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"ie","label":"Ireland (EUR)"}],"default":"us","example":"gb"},{"name":"region","type":"string","required":false,"description":"country=us only: the buyer's US state code (CA, NY, TX …). Depop's US buyer fee depends on the buyer's state — measured: CA and OR pay it, NY and TX do not. Without a state, US prices are shown with no state fee.","on_invalid":"reject","example":"CA","aliases":["state"]},{"name":"limit","type":"integer","required":false,"description":"Maximum similar listings, 1-48.","on_invalid":"reject","default":24,"minimum":1,"maximum":48},{"name":"include_sponsored","type":"boolean","required":false,"description":"Boosted (promoted) listings are left out by default and counted in `sponsored_dropped`; true returns them, each with `is_boosted: true`.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing_id, results[]{listing_id, slug, url, description, brand, brand_id, category, group, product_type, gender, is_kids, condition, condition_label, colours[], sizes[]{size, quantity, status}, quantity, status (on_sale|sold|reserved…), is_sold, price (number — the seller's item price now), currency (the listing's), original_price (the struck price when Depop marks the listing reduced, else null), discount_percent, is_discounted, shipping_price, buyer_view{country, us_state (country=us: the `region` used, null = no state fee), headline_price (what Depop shows a buyer in `country`), headline_currency, headline_includes{buyer_fee, tax, shipping}, buyer_fee, tax, tax_type, shipping_price, shipping_boundary (national|international)}, shipping_provider, shipping_payer, like_count, image, image_count, seller_id (seller rows and similar rows; null in search), seller_country, location, is_boosted, listed_at (seller rows and similar rows), updated_at}, count, sponsored_dropped, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller/listings","description":"One seller's shop: their for-sale listings (in their own order, newest, or by price) or their SOLD listings, newest sale first — each with the same row fields as `search` plus the listing date. Listings the seller has boosted are included and flagged `is_boosted`. Paged with `next_cursor`.","required_params":["seller"],"optional_params":["availability","sort","limit","cursor","country","region","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Seller username (depop.com/<username>), the shop URL, or the numeric seller id (`seller.id` / `seller_id`).","on_invalid":"reject","example":"mosse","aliases":["username","seller_id","shop","url"]},{"name":"availability","type":"enum","required":false,"description":"The seller's listings for sale, or the ones they have sold (newest sale first). Depop publishes no sale date; `updated_at` is when the listing last changed.","on_invalid":"reject","allowed_values":[{"value":"available","label":"For sale now"},{"value":"sold","label":"Sold listings"}],"default":"available"},{"name":"sort","type":"enum","required":false,"description":"Order of a seller's for-sale listings. Sold listings come newest first and take no sort.","on_invalid":"reject","allowed_values":[{"value":"default","label":"The seller's own shop order"},{"value":"newest","label":"Newest listings first"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"}],"default":"default"},{"name":"limit","type":"integer","required":false,"description":"Listings per call, 1-100.","on_invalid":"reject","default":24,"minimum":1,"maximum":100,"aliases":["page_size"]},{"name":"cursor","type":"string","required":false,"description":"Continue a previous call: pass back its `next_cursor`. `next_cursor: null` is the end.","on_invalid":"reject","aliases":["next_cursor","page_token"]},{"name":"country","type":"enum","required":false,"description":"Depop market. Search returns that market's listings; every price is also priced for a buyer in this country (`buyer_view`: buyer fee, import tax, national or international shipping).","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"ie","label":"Ireland (EUR)"}],"default":"us","example":"gb"},{"name":"region","type":"string","required":false,"description":"country=us only: the buyer's US state code (CA, NY, TX …). Depop's US buyer fee depends on the buyer's state — measured: CA and OR pay it, NY and TX do not. Without a state, US prices are shown with no state fee.","on_invalid":"reject","example":"CA","aliases":["state"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, slug, url, description, brand, brand_id, category, group, product_type, gender, is_kids, condition, condition_label, colours[], sizes[]{size, quantity, status}, quantity, status (on_sale|sold|reserved…), is_sold, price (number — the seller's item price now), currency (the listing's), original_price (the struck price when Depop marks the listing reduced, else null), discount_percent, is_discounted, shipping_price, buyer_view{country, us_state (country=us: the `region` used, null = no state fee), headline_price (what Depop shows a buyer in `country`), headline_currency, headline_includes{buyer_fee, tax, shipping}, buyer_fee, tax, tax_type, shipping_price, shipping_boundary (national|international)}, shipping_provider, shipping_payer, like_count, image, image_count, seller_id (seller rows and similar rows; null in search), seller_country, location, is_boosted, listed_at (seller rows and similar rows), updated_at}, count, next_cursor, has_more, seller{id, username}, availability, sort, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller/profile","description":"A seller's public Depop shop profile by username, id or shop URL: username, verified flag, bio, website, picture, followers and following, star rating with review count (split into reviews as seller and as buyer), items sold and when they were last seen.","required_params":["seller"],"optional_params":["max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Seller username (depop.com/<username>), the shop URL, or the numeric seller id (`seller.id` / `seller_id`).","on_invalid":"reject","example":"mosse","aliases":["username","seller_id","shop","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"seller{id, username, url, verified, bio, website, picture, followers, following, rating, rating_scale, review_count, reviews_as_seller, reviews_as_buyer, items_sold, last_seen}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller/reviews","description":"The public reviews on a seller's shop: star rating, text, date, the listing it was for, and the reviewer's username. role=seller for reviews buyers left for this seller (default), role=buyer for reviews sellers left for them as a buyer. Paged with `next_cursor`.","required_params":["seller"],"optional_params":["role","limit","cursor","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Seller username (depop.com/<username>), the shop URL, or the numeric seller id (`seller.id` / `seller_id`).","on_invalid":"reject","example":"mosse","aliases":["username","seller_id","shop","url"]},{"name":"role","type":"enum","required":false,"description":"Which reviews to return.","on_invalid":"reject","allowed_values":[{"value":"seller","label":"Reviews buyers left for this seller"},{"value":"buyer","label":"Reviews sellers left for this person as a buyer"}],"default":"seller"},{"name":"limit","type":"integer","required":false,"description":"Reviews per call, 1-50.","on_invalid":"reject","default":24,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"Continue a previous call: pass back its `next_cursor`. `next_cursor: null` is the end.","on_invalid":"reject","aliases":["next_cursor","page_token"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"reviews[]{rating, rating_scale, text, date, transaction_id, listing_id, listing_image, reviewer{id, username, verified}}, count, next_cursor, has_more, seller{id, username}, role","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"suggest","description":"Depop's search suggestions for a partial query — each with the category and gender it points at — or, with type=sellers, matching seller usernames.","required_params":["query"],"optional_params":["type","country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The start of a search, or of a username when type=sellers.","on_invalid":"reject","example":"vint","aliases":["q","keyword"]},{"name":"type","type":"enum","required":false,"description":"What to suggest.","on_invalid":"reject","allowed_values":[{"value":"keywords","label":"Search suggestions with the category they point at"},{"value":"sellers","label":"Seller usernames"}],"default":"keywords"},{"name":"country","type":"enum","required":false,"description":"Depop market. Search returns that market's listings; every price is also priced for a buyer in this country (`buyer_view`: buyer fee, import tax, national or international shipping).","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"ie","label":"Ireland (EUR)"}],"default":"us","example":"gb"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"suggestions[]{text, category, gender, label} | sellers[]{id, username, url, picture}, count, query, type, country","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike"}}]},{"name":"dev-utils","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Developer Utilities API — 20+ deterministic dev and AI-agent tools: hash, UUID, encode, JWT decode, cron, regex, format, data convert, color, mock data, diff, QR and more","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/dev-utils/v1","spec_available":true,"actions":[{"name":"hash","description":"Hash/checksum text or binary (base64/hex) input: md5…sha3·blake2·crc32·adler32, optional HMAC keying → hex + base64 digests.","required_params":["input"],"optional_params":["algo","hmac_key","input_encoding"],"params":[{"name":"input","type":"string","required":true,"description":"The data to hash. Plain text by default; set input_encoding=base64|hex to hash binary data.","on_invalid":"reject","example":"hello world","aliases":["text","value","data"]},{"name":"algo","type":"enum","required":false,"description":"Hash/checksum algorithm.","on_invalid":"reject","allowed_values":[{"value":"md5","label":"md5"},{"value":"sha1","label":"sha1"},{"value":"sha224","label":"sha224"},{"value":"sha256","label":"sha256"},{"value":"sha384","label":"sha384"},{"value":"sha512","label":"sha512"},{"value":"sha3-256","label":"sha3-256"},{"value":"sha3-512","label":"sha3-512"},{"value":"blake2b","label":"blake2b"},{"value":"blake2s","label":"blake2s"},{"value":"crc32","label":"crc32"},{"value":"adler32","label":"adler32"}],"default":"sha256","example":"sha256","aliases":["algorithm"]},{"name":"hmac_key","type":"string","required":false,"description":"Optional HMAC key — returns the keyed HMAC digest instead of the plain hash (not valid for crc32/adler32).","on_invalid":"ignore","example":"my-secret-key","aliases":["key","secret"]},{"name":"input_encoding","type":"enum","required":false,"description":"How to interpret `input`: utf-8 text, or base64/hex-encoded binary.","on_invalid":"reject","allowed_values":[{"value":"text","label":"text"},{"value":"base64","label":"base64"},{"value":"hex","label":"hex"}],"default":"text","example":"text"}],"returns":"algo, hex, base64, base64url, length_bits, hmac (crc32/adler32: hex, decimal)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"hello world","algo":"sha256"}},{"name":"uuid","description":"Generate ids: uuid v4/v7/v1(MAC-safe)/v3/v5, ULID, nanoid — up to 100.","required_params":[],"optional_params":["version","count","namespace","name","size"],"params":[{"name":"version","type":"enum","required":false,"description":"Id kind. v4=random · v7=time-ordered (RFC 9562) · v1=timestamp (random multicast node — host MAC never leaks) · v3/v5=deterministic namespace+name (md5/sha1) · ulid=Crockford-base32 sortable · nanoid=21-char URL-safe.","on_invalid":"reject","allowed_values":[{"value":"v4","label":"v4"},{"value":"v7","label":"v7"},{"value":"v1","label":"v1"},{"value":"v3","label":"v3"},{"value":"v5","label":"v5"},{"value":"ulid","label":"ulid"},{"value":"nanoid","label":"nanoid"}],"default":"v4","example":"v4","aliases":["type","kind"]},{"name":"count","type":"integer","required":false,"description":"How many ids to generate (v3/v5 always 1 — deterministic).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":100},{"name":"namespace","type":"string","required":false,"description":"v3/v5 namespace: dns|url|oid|x500 or a custom UUID.","on_invalid":"ignore","example":"dns"},{"name":"name","type":"string","required":false,"description":"v3/v5 name to hash into the namespace.","on_invalid":"ignore","example":"example.com"},{"name":"size","type":"integer","required":false,"description":"nanoid length (nanoid only).","on_invalid":"reject","default":21,"example":21,"minimum":8,"maximum":64}],"returns":"ids[], version, count, time_ordered (v7/ulid/v1), deterministic (v3/v5)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"version":"v4","count":3}},{"name":"encode","description":"Encode/decode: base64(+url-safe), hex, URL (path/component/form), HTML entities, unicode-escape, json-string.","required_params":["input","op"],"optional_params":["direction"],"params":[{"name":"input","type":"string","required":true,"description":"The string to encode or decode.","on_invalid":"reject","example":"hello world","aliases":["text","value","data"]},{"name":"op","type":"enum","required":true,"description":"Codec. url=path-safe quote · url-component=encode everything (JS encodeURIComponent) · url-form=+ for spaces · html=entities · json-string=JSON string-literal escaping.","on_invalid":"reject","allowed_values":[{"value":"base64","label":"base64"},{"value":"base64url","label":"base64url"},{"value":"hex","label":"hex"},{"value":"url","label":"url"},{"value":"url-component","label":"url-component"},{"value":"url-form","label":"url-form"},{"value":"html","label":"html"},{"value":"unicode-escape","label":"unicode-escape"},{"value":"json-string","label":"json-string"}],"example":"base64","aliases":["operation","codec"]},{"name":"direction","type":"enum","required":false,"description":"encode (default) or decode.","on_invalid":"reject","allowed_values":[{"value":"encode","label":"encode"},{"value":"decode","label":"decode"}],"default":"encode","example":"encode","aliases":["mode"]}],"returns":"output, op, direction, input_length, output_length","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"Merhaba Dünya! 👋","op":"base64"}},{"name":"jwt_decode","description":"Decode a JWT WITHOUT needing the key (header+payload+claims analysis); optionally verify the signature with a provided key. Decode-only — this API never signs tokens.","required_params":["token"],"optional_params":["verify_key"],"params":[{"name":"token","type":"string","required":true,"description":"The JWT to decode.","on_invalid":"reject","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","aliases":["jwt","input"]},{"name":"verify_key","type":"string","required":false,"description":"Optional verification key: the HMAC secret (HS*) or PEM public key (RS*/ES*/PS*). Algorithm is taken from the token header (whitelisted; alg=none always fails).","on_invalid":"ignore","example":"your-256-bit-secret","aliases":["key","secret","public_key"]}],"returns":"structure_valid, header{alg,typ}, payload, claims{exp/iat/nbf iso8601, expired, expires_in_seconds}, signature_checked, signature_valid, reason","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","verify_key":"your-256-bit-secret"}},{"name":"password","description":"Generate cryptographically-secure passwords (charset controls, ambiguity filter) + entropy strength score; or score a provided password with `check`.","required_params":[],"optional_params":["length","count","lowercase","uppercase","digits","symbols","exclude_ambiguous","check"],"params":[{"name":"length","type":"integer","required":false,"description":"Password length.","on_invalid":"reject","default":16,"example":16,"minimum":4,"maximum":128},{"name":"count","type":"integer","required":false,"description":"How many passwords.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":50},{"name":"lowercase","type":"boolean","required":false,"description":"Include a-z.","on_invalid":"ignore","default":true,"example":true},{"name":"uppercase","type":"boolean","required":false,"description":"Include A-Z.","on_invalid":"ignore","default":true,"example":true},{"name":"digits","type":"boolean","required":false,"description":"Include 0-9.","on_invalid":"ignore","default":true,"example":true},{"name":"symbols","type":"boolean","required":false,"description":"Include symbols (!@#$%^&*()-_=+[]{};:,.<>?/~).","on_invalid":"ignore","default":true,"example":true},{"name":"exclude_ambiguous","type":"boolean","required":false,"description":"Drop look-alikes (Il1O0o`'\"|).","on_invalid":"ignore","default":false,"example":false},{"name":"check","type":"string","required":false,"description":"Score THIS password instead of generating (entropy heuristic; the password is not stored or logged).","on_invalid":"ignore","example":"hunter2","aliases":["password"]}],"returns":"passwords[{password, strength{entropy_bits, score, verdict}}] — or with `check`: strength{} for the provided password","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"length":24,"count":2}},{"name":"cron","description":"Explain a cron expression in plain language (15 locales) + compute the next N run times in any IANA timezone (DST-correct).","required_params":["expression"],"optional_params":["runs","tz","locale","from_time"],"params":[{"name":"expression","type":"string","required":true,"description":"5-field cron (min hour dom month dow), @aliases (@daily, @hourly…), or 6-field with seconds first.","on_invalid":"reject","example":"*/15 9-17 * * 1-5","aliases":["expr","cron","input"]},{"name":"runs","type":"integer","required":false,"description":"How many upcoming run times to return.","on_invalid":"reject","default":5,"example":5,"minimum":1,"maximum":50},{"name":"tz","type":"string","required":false,"description":"IANA timezone for the run times (DST handled).","on_invalid":"ignore","default":"UTC","example":"Europe/Istanbul","aliases":["timezone"]},{"name":"locale","type":"enum","required":false,"description":"Language of the human explanation.","on_invalid":"reject","allowed_values":[{"value":"en","label":"en"},{"value":"de","label":"de"},{"value":"es","label":"es"},{"value":"fr","label":"fr"},{"value":"it","label":"it"},{"value":"nl","label":"nl"},{"value":"pl","label":"pl"},{"value":"pt","label":"pt"},{"value":"ro","label":"ro"},{"value":"ru","label":"ru"},{"value":"tr","label":"tr"},{"value":"uk","label":"uk"},{"value":"ja","label":"ja"},{"value":"ko","label":"ko"},{"value":"zh","label":"zh"}],"default":"en","example":"en"},{"name":"from_time","type":"string","required":false,"description":"Compute runs after this ISO-8601 instant (default now). Pin it for reproducible output.","on_invalid":"ignore","example":"2026-06-10T12:00:00+03:00","aliases":["start","after"]}],"returns":"valid, description (localized), next_runs[] (ISO-8601 with offset), tz, fields{minute,hour,day_of_month,month,day_of_week[,second]}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"expression":"*/15 9-17 * * 1-5","runs":3,"tz":"UTC","from_time":"2026-06-10T12:00:00+00:00"}},{"name":"slugify","description":"URL-safe slug from any-script text (CJK/Cyrillic/Arabic → ASCII via anyascii transliteration).","required_params":["input"],"optional_params":["separator","lowercase","max_length"],"params":[{"name":"input","type":"string","required":true,"description":"Text to slugify.","on_invalid":"reject","example":"Çok Güzel Bir Başlık — 2026!","aliases":["text","value","data"]},{"name":"separator","type":"string","required":false,"description":"Word separator (default '-').","on_invalid":"ignore","default":"-","example":"-"},{"name":"lowercase","type":"boolean","required":false,"description":"Lowercase the slug (default true).","on_invalid":"ignore","default":true,"example":true},{"name":"max_length","type":"integer","required":false,"description":"Truncate at a word boundary (0 = no limit).","on_invalid":"reject","default":0,"example":0,"minimum":0,"maximum":500}],"returns":"slug, original, transliterated, length","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"Çok Güzel Bir Başlık — 2026!"}},{"name":"regex_test","description":"Test a regex against text: matches + groups + named groups, optional replace. User patterns run with a hard 1s timeout (ReDoS-guarded) + size caps.","required_params":["pattern","input"],"optional_params":["flags","replacement","max_matches"],"params":[{"name":"pattern","type":"string","required":true,"description":"The regular expression (≤2000 chars; Python `regex` syntax — PCRE-compatible incl. \\p{...}).","on_invalid":"reject","example":"(\\w+)@(\\w+\\.\\w+)","aliases":["regex","re"]},{"name":"input","type":"string","required":true,"description":"The subject text to scan.","on_invalid":"reject","example":"mail me at jane@acme.com","aliases":["text","value","data"]},{"name":"flags","type":"string","required":false,"description":"Flag letters, any of: i (ignorecase), m (multiline), s (dotall), x (verbose). E.g. 'im'.","on_invalid":"ignore","example":"i"},{"name":"replacement","type":"string","required":false,"description":"Optional replacement template — when set, `replaced` holds the substituted text (backrefs \\1, \\g<name>).","on_invalid":"ignore","example":"<\\1>","aliases":["replace"]},{"name":"max_matches","type":"integer","required":false,"description":"Cap on returned matches.","on_invalid":"reject","default":100,"example":100,"minimum":1,"maximum":500}],"returns":"pattern_valid, match_count, matches[{match,start,end,groups[],named{}}], replaced (when replacement given), timed_out, truncated","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"pattern":"(\\w+)@([\\w.]+)","input":"mail jane@acme.com now"}},{"name":"format","description":"Pretty-print, minify or validate JSON / YAML / XML / SQL (string-level; file/data CONVERSION lives in the file-convert API).","required_params":["input","type"],"optional_params":["op","indent","sort_keys","keyword_case"],"params":[{"name":"input","type":"string","required":true,"description":"The document text.","on_invalid":"reject","example":"{\"b\":1,\"a\":[1,2]}","aliases":["text","value","data"]},{"name":"type","type":"enum","required":true,"description":"Document type.","on_invalid":"reject","allowed_values":[{"value":"json","label":"json"},{"value":"yaml","label":"yaml"},{"value":"xml","label":"xml"},{"value":"sql","label":"sql"}],"example":"json","aliases":["format","lang"]},{"name":"op","type":"enum","required":false,"description":"pretty | minify | validate (sql: pretty/minify only — sqlparse is non-validating).","on_invalid":"reject","allowed_values":[{"value":"pretty","label":"pretty"},{"value":"minify","label":"minify"},{"value":"validate","label":"validate"}],"default":"pretty","example":"pretty"},{"name":"indent","type":"integer","required":false,"description":"Indent width for pretty (json/yaml/xml).","on_invalid":"reject","default":2,"example":2,"minimum":1,"maximum":8},{"name":"sort_keys","type":"boolean","required":false,"description":"Sort object keys (json/yaml).","on_invalid":"ignore","default":false,"example":false},{"name":"keyword_case","type":"enum","required":false,"description":"SQL keyword casing (sql only).","on_invalid":"reject","allowed_values":[{"value":"upper","label":"upper"},{"value":"lower","label":"lower"},{"value":"capitalize","label":"capitalize"}],"default":"upper","example":"upper"}],"returns":"valid, output (pretty/minify), error{message,line,column} on invalid, statement_count (sql)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"{\"b\":1,\"a\":[1,2]}","type":"json","op":"pretty","sort_keys":true}},{"name":"convert","description":"Convert structured data between JSON / YAML / CSV / XML at the string level (paste-in, ≤512KB). CSV↔JSON is tabular (array of flat objects). For file/Excel/multi-MB conversion use the file-convert API.","required_params":["input","from","to"],"optional_params":["indent","sort_keys"],"params":[{"name":"input","type":"string","required":true,"description":"The source document text.","on_invalid":"reject","example":"[{\"id\":1,\"name\":\"a\"},{\"id\":2,\"name\":\"b\"}]","aliases":["text","value","data"]},{"name":"from","type":"enum","required":true,"description":"Source format.","on_invalid":"reject","allowed_values":[{"value":"json","label":"json"},{"value":"yaml","label":"yaml"},{"value":"csv","label":"csv"},{"value":"xml","label":"xml"}],"example":"json","aliases":["from_format","source"]},{"name":"to","type":"enum","required":true,"description":"Target format.","on_invalid":"reject","allowed_values":[{"value":"json","label":"json"},{"value":"yaml","label":"yaml"},{"value":"csv","label":"csv"},{"value":"xml","label":"xml"}],"example":"json","aliases":["to_format","target"]},{"name":"indent","type":"integer","required":false,"description":"Indent width for json/yaml/xml output (0=compact).","on_invalid":"reject","default":2,"example":2,"minimum":0,"maximum":8},{"name":"sort_keys","type":"boolean","required":false,"description":"Sort object keys (json/yaml).","on_invalid":"ignore","default":false,"example":false}],"returns":"output, from, to, valid, error{message} on invalid/non-tabular input","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"[{\"id\":1,\"name\":\"a\"},{\"id\":2,\"name\":\"b\"}]","from":"json","to":"csv"}},{"name":"qr","description":"Generate a QR code as SVG (text), base64-PNG (text data-URI), or terminal ASCII — all textual output, no binary asset. Up to QR version 40.","required_params":["input"],"optional_params":["kind","error_correction","scale","border"],"params":[{"name":"input","type":"string","required":true,"description":"The data to encode (URL, text, vCard, wifi string…).","on_invalid":"reject","example":"https://reefapi.com","aliases":["text","value","data"]},{"name":"kind","type":"enum","required":false,"description":"Output: svg (scalable vector text) · png_base64 (base64 + data-URI) · text (terminal ASCII art).","on_invalid":"reject","allowed_values":[{"value":"svg","label":"svg"},{"value":"png_base64","label":"png_base64"},{"value":"text","label":"text"}],"default":"svg","example":"svg","aliases":["format","output"]},{"name":"error_correction","type":"enum","required":false,"description":"Recovery level: l~7% · m~15% · q~25% · h~30%.","on_invalid":"reject","allowed_values":[{"value":"l","label":"l"},{"value":"m","label":"m"},{"value":"q","label":"q"},{"value":"h","label":"h"}],"default":"m","example":"m","aliases":["ec","error"]},{"name":"scale","type":"integer","required":false,"description":"Module pixel size (png/svg).","on_invalid":"reject","default":4,"example":4,"minimum":1,"maximum":20},{"name":"border","type":"integer","required":false,"description":"Quiet-zone width in modules (spec default 4).","on_invalid":"reject","default":4,"example":4,"minimum":0,"maximum":16}],"returns":"svg | png_base64+data_uri | text, version, error_correction, designator, modules, is_micro, mime","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"https://reefapi.com","kind":"svg"}},{"name":"color","description":"Parse any CSS color (hex/rgb()/hsl()/name) → every format + CSS3 name + luminance; optional second color → WCAG 2.x contrast ratio + AA/AAA.","required_params":["input"],"optional_params":["contrast_with"],"params":[{"name":"input","type":"string","required":true,"description":"The color: '#1a2b3c', '#abc', 'rgb(26,43,60)', 'hsl(210,40%,17%)' or a CSS3 name ('rebeccapurple').","on_invalid":"reject","example":"#1a2b3c","aliases":["text","value","data"]},{"name":"contrast_with","type":"string","required":false,"description":"Optional second color — returns the WCAG contrast ratio + AA/AAA pass flags for normal/large text.","on_invalid":"ignore","example":"#ffffff","aliases":["against","background"]}],"returns":"hex, rgb{}, hsl{}, hsv{}, cmyk{}, alpha, name, nearest_name, luminance, is_dark + contrast{ratio, aa_normal, aa_large, aaa_normal, aaa_large}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"#1a2b3c","contrast_with":"#ffffff"}},{"name":"mock_data","description":"Generate fake/test records (Faker, 70+ locales): preset bundles (person/address/company/internet/profile/product/lorem) or a custom field→type schema; seed for reproducible output.","required_params":[],"optional_params":["preset","schema","count","locale","seed"],"params":[{"name":"preset","type":"enum","required":false,"description":"Ready-made record shape (ignored when `schema` is given).","on_invalid":"reject","allowed_values":[{"value":"person","label":"person"},{"value":"address","label":"address"},{"value":"company","label":"company"},{"value":"internet","label":"internet"},{"value":"profile","label":"profile"},{"value":"product","label":"product"},{"value":"lorem","label":"lorem"}],"example":"person"},{"name":"schema","type":"object","required":false,"description":"Custom shape: {output_field: type}. Types: address, bool, catch_phrase, city, color_hex, color_name, company, company_email, country, country_code, credit_card_full, credit_card_number, currency_code, date, date_of_birth, domain, email, emoji, file_name, first_name, float, free_email, iban, int, ipv4, ipv6, iso8601, job, language_code, last_name, latitude, locale, longitude, mac, mime_type, name, paragraph, password, phone, sentence, slug, ssn, state, street, text, time, url, user_agent, username, uuid, word, zip.","on_invalid":"ignore","example":{"full_name":"name","mail":"email","age":"int"},"aliases":["fields"]},{"name":"count","type":"integer","required":false,"description":"How many records.","on_invalid":"reject","default":5,"example":5,"minimum":1,"maximum":100},{"name":"locale","type":"string","required":false,"description":"Faker locale (en_US, tr_TR, de_DE, ja_JP…). Unknown locales fall back to en_US.","on_invalid":"ignore","default":"en_US","example":"tr_TR"},{"name":"seed","type":"integer","required":false,"description":"Seed for deterministic output (same seed+schema+locale +count+faker-version → same records).","on_invalid":"ignore","example":42}],"returns":"rows[], count, locale (resolved), preset|schema, seeded","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"preset":"person","count":2,"seed":42}},{"name":"text_diff","description":"Unified diff between two texts + change stats + similarity ratio.","required_params":["a","b"],"optional_params":["context","label_a","label_b"],"params":[{"name":"a","type":"string","required":true,"description":"The original text.","on_invalid":"reject","example":"line one\nline two","aliases":["old","left","text1"]},{"name":"b","type":"string","required":true,"description":"The changed text.","on_invalid":"reject","example":"line one\nline 2","aliases":["new","right","text2"]},{"name":"context","type":"integer","required":false,"description":"Context lines around each hunk.","on_invalid":"reject","default":3,"example":3,"minimum":0,"maximum":20},{"name":"label_a","type":"string","required":false,"description":"Label for the original.","on_invalid":"ignore","default":"a","example":"before"},{"name":"label_b","type":"string","required":false,"description":"Label for the changed text.","on_invalid":"ignore","default":"b","example":"after"}],"returns":"diff (unified), identical, added_lines, removed_lines, hunks, similarity (0-1 SequenceMatcher ratio)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"a":"one\ntwo","b":"one\n2"}},{"name":"text_analyze","description":"Algorithmic text analysis (no LLM): language detect (97 langs) · readability (Flesch & co) · profanity flag/censor · keyword extraction · full stats. Pick checks or get all.","required_params":["input"],"optional_params":["checks","top_keywords"],"params":[{"name":"input","type":"string","required":true,"description":"The text to analyze.","on_invalid":"reject","example":"The quick brown fox jumps over the lazy dog. A truly remarkable fox.","aliases":["text","value","data"]},{"name":"checks","type":"array","required":false,"description":"Which analyses to run (default all): language, readability, profanity, keywords, stats.","on_invalid":"ignore","example":["language","stats"],"aliases":["include"]},{"name":"top_keywords","type":"integer","required":false,"description":"How many keywords to extract.","on_invalid":"reject","default":10,"example":10,"minimum":1,"maximum":50}],"returns":"language{language,confidence}, readability{flesch…, note}, profanity{contains_profanity,censored}, keywords[], stats{characters,words,sentences,…}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"input":"The quick brown fox jumps over the lazy dog. The fox is fast."}},{"name":"timestamp","description":"Parse/convert any timestamp ('now', unix s/ms/µs, ISO-8601, RFC-2822) → every format + timezone conversion + relative time.","required_params":[],"optional_params":["value","tz"],"params":[{"name":"value","type":"string","required":false,"description":"The timestamp. 'now' (default), unix seconds (≤10 digits), unix ms (12-14), unix µs (15-17), ISO 8601, or RFC 2822.","on_invalid":"reject","default":"now","example":"1718000000","aliases":["input","time","date"]},{"name":"tz","type":"string","required":false,"description":"IANA timezone for the local-time outputs.","on_invalid":"ignore","default":"UTC","example":"Europe/Istanbul","aliases":["timezone"]}],"returns":"detected_format, unix, unix_ms, iso8601_utc, iso8601_local, rfc2822, tz, utc_offset, weekday, day_of_year, iso_week, is_leap_year, is_dst, relative ('3 hours ago')","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"value":"1718000000","tz":"Europe/Istanbul"}},{"name":"case_convert","description":"Convert identifier/text casing: camel·pascal·snake·kebab·constant·dot·title·sentence·upper·lower (+ detected input case).","required_params":["input","target"],"optional_params":[],"params":[{"name":"input","type":"string","required":true,"description":"The text/identifier to convert.","on_invalid":"reject","example":"getUserProfileURL","aliases":["text","value","data"]},{"name":"target","type":"enum","required":true,"description":"Target case style.","on_invalid":"reject","allowed_values":[{"value":"camel","label":"camel"},{"value":"pascal","label":"pascal"},{"value":"snake","label":"snake"},{"value":"kebab","label":"kebab"},{"value":"constant","label":"constant"},{"value":"dot","label":"dot"},{"value":"title","label":"title"},{"value":"sentence","label":"sentence"},{"value":"upper","label":"upper"},{"value":"lower","label":"lower"}],"example":"camel","aliases":["to","case"]}],"returns":"output, target, detected_case, tokens[]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"getUserProfileURL","target":"snake"}},{"name":"base_convert","description":"Convert integers between bases 2-36 (arbitrary precision; 0x/0b/0o prefixes accepted).","required_params":["input"],"optional_params":["from_base","to_base"],"params":[{"name":"input","type":"string","required":true,"description":"The number (string). Prefixes 0x/0b/0o override from_base.","on_invalid":"reject","example":"0xff","aliases":["text","value","data"]},{"name":"from_base","type":"integer","required":false,"description":"Source base (ignored if input has a prefix).","on_invalid":"reject","default":10,"example":10,"minimum":2,"maximum":36},{"name":"to_base","type":"integer","required":false,"description":"Target base.","on_invalid":"reject","default":10,"example":10,"minimum":2,"maximum":36}],"returns":"output, decimal, binary, octal, hex, from_base, to_base, bits","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"ff","from_base":16,"to_base":10}},{"name":"markdown","description":"Render CommonMark+tables markdown → sanitized HTML (raw HTML escaped, XSS-safe) + heading TOC with slugs.","required_params":["input"],"optional_params":[],"params":[{"name":"input","type":"string","required":true,"description":"The markdown source.","on_invalid":"reject","example":"# Title\n\nSome **bold** text.","aliases":["text","value","data"]}],"returns":"html, toc[{level,text,slug}], html_sanitized, stats{headings,html_bytes}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"# Hello\n\nworld **bold**\n\n## Sub Title"}},{"name":"user_agent","description":"Parse a User-Agent string → browser/OS/device families + versions + bot flag (uap-core database).","required_params":["input"],"optional_params":[],"params":[{"name":"input","type":"string","required":true,"description":"The User-Agent header value.","on_invalid":"reject","example":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36","aliases":["text","value","data"]}],"returns":"browser{family,version}, os{family,version}, device{family,brand,model}, is_bot","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"input":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"}},{"name":"batch","description":"Run up to 100 mixed dev-utils calls in one request.","required_params":["items"],"optional_params":[],"params":[{"name":"items","type":"array","required":true,"description":"Up to 100 items, each {action, params}. Items run independently — a bad item yields its own error entry, never fails the batch.","on_invalid":"reject","example":[{"action":"hash","params":{"input":"abc","algo":"sha256"}},{"action":"uuid","params":{"version":"v7"}}],"aliases":["calls","requests","batch"]}],"returns":"count, ok_count, results[{action, ok, data|error}]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"items":[{"action":"hash","params":{"input":"abc","algo":"md5"}},{"action":"base_convert","params":{"input":"1010","from_base":2}},{"action":"encode","params":{"input":"x","op":"nope"}}]}}]},{"name":"discogs","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Discogs API — search the world's biggest database of physical music releases, read a pressing with its full tracklist and credits, and read the marketplace: live lowest asking price and every seller's offer with media and sleeve condition. No account.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/discogs/v1","spec_available":true,"actions":[{"name":"search","description":"Search Discogs for releases, master releases, artists or labels. Combine free text with artist, title, label, catalogue number, barcode, format, country, year, genre, style, track or credit filters.","required_params":[],"optional_params":["query","type","artist","release_title","label","catno","barcode","format","country","year","genre","style","track","credit","page","per_page","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text search across artist, title, label and catalogue number. Optional when you supply at least one of the field filters.","on_invalid":"reject","example":"nirvana nevermind","aliases":["q","keyword","search"]},{"name":"type","type":"enum","required":false,"description":"What kind of record to return: a pressing (release), a master release, an artist or a label.","on_invalid":"reject","allowed_values":[{"value":"release","label":"release"},{"value":"master","label":"master"},{"value":"artist","label":"artist"},{"value":"label","label":"label"}],"default":"release","example":"release"},{"name":"artist","type":"string","required":false,"description":"Artist name filter.","on_invalid":"reject","example":"Nirvana"},{"name":"release_title","type":"string","required":false,"description":"Release title filter.","on_invalid":"reject","example":"Nevermind","aliases":["title"]},{"name":"label","type":"string","required":false,"description":"Record label name filter.","on_invalid":"reject","example":"Sub Pop"},{"name":"catno","type":"string","required":false,"description":"Catalogue number printed on the release. Discogs matches this loosely, so it narrows rather than pins.","on_invalid":"reject","example":"DGC-24425","aliases":["catalogue_number","catalog_number"]},{"name":"barcode","type":"string","required":false,"description":"Barcode / UPC / EAN as printed on the sleeve.","on_invalid":"reject","example":"602537351169"},{"name":"format","type":"string","required":false,"description":"Format filter, Discogs' own spelling: Vinyl, CD, Cassette, LP, Album, Box Set, 7\", 12\" and so on.","on_invalid":"reject","example":"Vinyl"},{"name":"country","type":"string","required":false,"description":"Country of release, Discogs' own spelling (UK, US, Japan, Europe).","on_invalid":"reject","example":"UK"},{"name":"year","type":"string","required":false,"description":"Year of release. A range like 1991-1993 is accepted.","on_invalid":"reject","example":"1991"},{"name":"genre","type":"string","required":false,"description":"Discogs genre (Rock, Electronic, Jazz, Hip Hop, Classical, Funk / Soul, Pop, Reggae, Latin, Folk, World, & Country).","on_invalid":"reject","example":"Rock"},{"name":"style","type":"string","required":false,"description":"Discogs style, narrower than genre.","on_invalid":"reject","example":"Grunge"},{"name":"track","type":"string","required":false,"description":"Track title filter.","on_invalid":"reject","example":"Smells Like Teen Spirit"},{"name":"credit","type":"string","required":false,"description":"Credited person filter (producer, engineer, designer…).","on_invalid":"reject","example":"Butch Vig"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Discogs stops at page 100 whatever the total.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":100},{"name":"per_page","type":"integer","required":false,"description":"Rows per page. Discogs caps this at 100 and silently rewrites anything larger.","on_invalid":"reject","default":50,"example":50,"minimum":1,"maximum":100},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{id, type, title, year, country, formats, labels, catno, barcodes, genres, styles, master_id, community{have,want}, url}, count, total, pagination{page,per_page,pages,items}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nirvana nevermind","type":"release","per_page":10}},{"name":"release","description":"One pressing in full: tracklist with per-track credits, release credits, labels and catalogue numbers, formats, identifiers (barcode, matrix/runout), notes, images, videos, community have/want/rating, and live marketplace stats.","required_params":["release_id"],"optional_params":["include_marketplace","currency","max_rotations"],"params":[{"name":"release_id","type":"string","required":true,"description":"Numeric Discogs release id (one specific pressing). A full discogs.com release URL is accepted too.","on_invalid":"reject","example":249504,"aliases":["id"]},{"name":"include_marketplace","type":"boolean","required":false,"description":"Also fetch live marketplace stats (lowest asking price and how many copies are for sale) and attach them as `marketplace`. One extra, very small upstream call.","on_invalid":"ignore","default":true,"example":true},{"name":"currency","type":"enum","required":false,"description":"Currency the lowest asking price is converted into.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"USD"},{"value":"GBP","label":"GBP"},{"value":"EUR","label":"EUR"},{"value":"CAD","label":"CAD"},{"value":"AUD","label":"AUD"},{"value":"JPY","label":"JPY"},{"value":"CHF","label":"CHF"},{"value":"MXN","label":"MXN"},{"value":"BRL","label":"BRL"},{"value":"NZD","label":"NZD"},{"value":"SEK","label":"SEK"},{"value":"ZAR","label":"ZAR"},{"value":"DKK","label":"DKK"},{"value":"NOK","label":"NOK"},{"value":"PLN","label":"PLN"}],"default":"USD","example":"USD"},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"release{release_id, master_id, title, artists, artist_name, year, released, country, genres, styles, labels, companies, formats, tracklist, credits, identifiers, notes, images, videos, community{have,want,rating_average,rating_count}, num_for_sale, estimated_weight_grams, data_quality, url}, marketplace{num_for_sale,lowest_price,lowest_price_currency,blocked_from_sale}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"release_id":249504}},{"name":"master","description":"The master release — the work itself rather than one pressing — with its canonical tracklist, main release id and how many copies are for sale across all versions.","required_params":["master_id"],"optional_params":["max_rotations"],"params":[{"name":"master_id","type":"string","required":true,"description":"Numeric Discogs master-release id (the work, across pressings).","on_invalid":"reject","example":13814,"aliases":["id"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"master{master_id, title, artists, year, main_release_id, most_recent_release_id, genres, styles, tracklist, images, num_for_sale, url}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"master/versions","description":"Every pressing of a master release, with the format / label / country / year facets Discogs itself offers so you can see what exists before filtering.","required_params":["master_id"],"optional_params":["format","label","country","released","page","per_page","max_rotations"],"params":[{"name":"master_id","type":"string","required":true,"description":"Numeric Discogs master-release id (the work, across pressings).","on_invalid":"reject","example":13814,"aliases":["id"]},{"name":"format","type":"string","required":false,"description":"Keep only versions in this format. The unfiltered response lists every available value under `facets.format`.","on_invalid":"reject","example":"Vinyl"},{"name":"label","type":"string","required":false,"description":"Keep only versions on this label.","on_invalid":"reject","example":"Sub Pop"},{"name":"country","type":"string","required":false,"description":"Keep only versions pressed in this country.","on_invalid":"reject","example":"US"},{"name":"released","type":"string","required":false,"description":"Keep only versions released in this year.","on_invalid":"reject","example":"1991","aliases":["year"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Discogs stops at page 100 whatever the total.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":100},{"name":"per_page","type":"integer","required":false,"description":"Rows per page. Discogs caps this at 100 and silently rewrites anything larger.","on_invalid":"reject","default":50,"example":50,"minimum":1,"maximum":100},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"versions[]{release_id,title,format,label,catno,country,released,status,have,want,url}, count, total, facets{format,label,country,released}, pagination","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"artist","description":"An artist or group: profile, real name variations, aliases, band members, external links and images.","required_params":["artist_id"],"optional_params":["max_rotations"],"params":[{"name":"artist_id","type":"string","required":true,"description":"Numeric Discogs artist id.","on_invalid":"reject","example":125246,"aliases":["id"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"artist{artist_id, name, profile, name_variations, aliases, members, groups, urls, images, data_quality, url}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"artist/releases","description":"An artist's discography — every release and master release they are credited on, sortable by year, title or format.","required_params":["artist_id"],"optional_params":["sort","sort_order","page","per_page","max_rotations"],"params":[{"name":"artist_id","type":"string","required":true,"description":"Numeric Discogs artist id.","on_invalid":"reject","example":125246,"aliases":["id"]},{"name":"sort","type":"enum","required":false,"description":"Order the discography by year, title or format.","on_invalid":"reject","allowed_values":[{"value":"year","label":"year"},{"value":"title","label":"title"},{"value":"format","label":"format"}],"example":"year"},{"name":"sort_order","type":"enum","required":false,"description":"Ascending or descending. Only applies with `sort`.","on_invalid":"reject","allowed_values":[{"value":"asc","label":"asc"},{"value":"desc","label":"desc"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Discogs stops at page 100 whatever the total.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":100},{"name":"per_page","type":"integer","required":false,"description":"Rows per page. Discogs caps this at 100 and silently rewrites anything larger.","on_invalid":"reject","default":50,"example":50,"minimum":1,"maximum":100},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"releases[]{id,type,title,artist_name,role,year,format,label,catno,main_release_id,have,want}, count, total, pagination","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"label","description":"A record label: profile, contact information the label itself publishes, sublabels, external links and images.","required_params":["label_id"],"optional_params":["max_rotations"],"params":[{"name":"label_id","type":"string","required":true,"description":"Numeric Discogs label id.","on_invalid":"reject","example":1,"aliases":["id"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"label{label_id, name, profile, contact_info, sublabels, urls, images, data_quality, url}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"label/releases","description":"A label's catalogue — every release Discogs files under it, with catalogue numbers.","required_params":["label_id"],"optional_params":["page","per_page","max_rotations"],"params":[{"name":"label_id","type":"string","required":true,"description":"Numeric Discogs label id.","on_invalid":"reject","example":1,"aliases":["id"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Discogs stops at page 100 whatever the total.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":100},{"name":"per_page","type":"integer","required":false,"description":"Rows per page. Discogs caps this at 100 and silently rewrites anything larger.","on_invalid":"reject","default":50,"example":50,"minimum":1,"maximum":100},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"releases[]{id,type,title,artist_name,year,format,catno,status,thumbnail_url}, count, total, pagination","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"marketplace/stats","description":"Live marketplace figures for up to 20 releases in ONE call: how many copies are for sale and the lowest asking price, converted into the currency you ask for.","required_params":["release_ids"],"optional_params":["currency","max_rotations"],"params":[{"name":"release_ids","type":"array","required":true,"description":"Up to 20 numeric release ids. One call replaces up to 20 single calls and costs far less per release.","on_invalid":"reject","example":[249504,1122001,8434],"aliases":["ids"]},{"name":"currency","type":"enum","required":false,"description":"Currency the lowest asking price is converted into.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"USD"},{"value":"GBP","label":"GBP"},{"value":"EUR","label":"EUR"},{"value":"CAD","label":"CAD"},{"value":"AUD","label":"AUD"},{"value":"JPY","label":"JPY"},{"value":"CHF","label":"CHF"},{"value":"MXN","label":"MXN"},{"value":"BRL","label":"BRL"},{"value":"NZD","label":"NZD"},{"value":"SEK","label":"SEK"},{"value":"ZAR","label":"ZAR"},{"value":"DKK","label":"DKK"},{"value":"NOK","label":"NOK"},{"value":"PLN","label":"PLN"}],"default":"USD","example":"USD"},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"stats[]{release_id,num_for_sale,lowest_price,lowest_price_currency,blocked_from_sale}, count, not_found[]","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"marketplace/listings","description":"Every copy of a release that is actually for sale right now: asking price in the seller's own currency, shipping, media AND sleeve condition, the seller's public handle, feedback score and the country it ships from.","required_params":["release_id"],"optional_params":["sort","limit","page","media_condition","ships_from","price_currency","accepts_offers","max_rotations"],"params":[{"name":"release_id","type":"string","required":true,"description":"Numeric Discogs release id (one specific pressing). A full discogs.com release URL is accepted too.","on_invalid":"reject","example":249504,"aliases":["id"]},{"name":"sort","type":"enum","required":false,"description":"Order the listings: price,asc · price,desc · condition,desc · condition,asc · seller,asc · seller,desc · listed,desc · listed,asc.","on_invalid":"reject","allowed_values":[{"value":"listed,desc","label":"listed,desc"},{"value":"listed,asc","label":"listed,asc"},{"value":"condition,desc","label":"condition,desc"},{"value":"condition,asc","label":"condition,asc"},{"value":"seller,asc","label":"seller,asc"},{"value":"seller,desc","label":"seller,desc"},{"value":"price,asc","label":"price,asc"},{"value":"price,desc","label":"price,desc"}],"default":"listed,desc","example":"price,asc"},{"name":"limit","type":"integer","required":false,"description":"Listings per page. Discogs offers exactly 25, 50, 100 or 250 and rounds anything else down to the next offered size.","on_invalid":"reject","default":25,"example":25,"minimum":25,"maximum":250},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Discogs stops at page 100 whatever the total.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":100},{"name":"media_condition","type":"array","required":false,"description":"Keep only listings whose MEDIA grade is one of these. Short codes (M, NM, VG+, VG, G+, G, F, P) are accepted.","on_invalid":"reject","allowed_values":[{"value":"Near Mint (NM or M-)","label":"Near Mint (NM or M-)"},{"value":"Very Good Plus (VG+)","label":"Very Good Plus (VG+)"},{"value":"Very Good (VG)","label":"Very Good (VG)"},{"value":"Good Plus (G+)","label":"Good Plus (G+)"},{"value":"Mint (M)","label":"Mint (M)"},{"value":"Good (G)","label":"Good (G)"},{"value":"Fair (F)","label":"Fair (F)"},{"value":"Poor (P)","label":"Poor (P)"}],"example":["VG+"]},{"name":"ships_from","type":"string","required":false,"description":"Keep only listings shipping from this country, spelled as Discogs spells it (United Kingdom, Italy, Germany…).","on_invalid":"reject","example":"United Kingdom"},{"name":"price_currency","type":"enum","required":false,"description":"🔴 A FILTER, not a display setting: keeps only listings the seller priced natively in this currency, which can cut the total sharply. Leave it unset to see every listing.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"USD"},{"value":"GBP","label":"GBP"},{"value":"EUR","label":"EUR"},{"value":"CAD","label":"CAD"},{"value":"AUD","label":"AUD"},{"value":"JPY","label":"JPY"},{"value":"CHF","label":"CHF"},{"value":"MXN","label":"MXN"},{"value":"BRL","label":"BRL"},{"value":"NZD","label":"NZD"},{"value":"SEK","label":"SEK"},{"value":"ZAR","label":"ZAR"},{"value":"DKK","label":"DKK"},{"value":"NOK","label":"NOK"},{"value":"PLN","label":"PLN"}],"example":"USD"},{"name":"accepts_offers","type":"boolean","required":false,"description":"Keep only listings whose seller accepts offers.","on_invalid":"ignore","default":false,"example":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to start over on a fresh connection after a failed attempt.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{listing_id, release_id, title, label, catno, media_condition, media_condition_code, media_condition_rank, sleeve_condition, sleeve_condition_code, price, currency, shipping, total_converted, total_converted_currency, comments, seller{username,rating_pct,ratings_count,stars,ships_from}, url}, count, total, page, rows_dropped, filters_applied","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":{"release_id":249504,"limit":25}}]},{"name":"dm","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"dm API scraper — dm-drogerie markt (dm.de …), Europe's largest drugstore chain: search 13 countries, read the full product (price, net/excl-VAT price, price per unit, was-price, EU 30-day lowest price, dm own-brand flag, Payback, GTIN, ingredients, images, rating), plus reviews, online + in-store availability, store finder and autocomplete. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/dm/v1","spec_available":true,"actions":[{"name":"search","description":"Search a dm storefront by keyword and/or category, with the site's own sorts and filters (brand, feature, popular filter, price range). Each row: dm article number (DAN), GTIN, brand, name, the shopper price + currency, the struck was-price + discount, the excl-VAT net price, the price per unit, the EU 30-day lowest price when shown, rating + count, dm own-brand/online-only/new/sale flags, pharmacy flag, variant axis and images. Ingredients and the full description are on product/detail. A no-result search returns an empty list (dm's own signal — no padding); a partly-matching multi-word query keeps the matched rows and reports the unmatched words as modified_query.","required_params":[],"optional_params":["country","query","category","sort","page","page_size","brand","feature","popular_filter","price_min","price_max","include_facets","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"dm online storefront. All 13 run on one platform; currency + language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — dm.de (EUR)"},{"value":"at","label":"Austria — dm.at (EUR)"},{"value":"cz","label":"Czechia — dm.cz (CZK)"},{"value":"sk","label":"Slovakia — mojadm.sk (EUR)"},{"value":"hu","label":"Hungary — dm.hu (HUF)"},{"value":"si","label":"Slovenia — dm.si (EUR)"},{"value":"hr","label":"Croatia — dm.hr (EUR)"},{"value":"ro","label":"Romania — dm.ro (RON)"},{"value":"bg","label":"Bulgaria — dm-drogeriemarkt.bg (EUR)"},{"value":"rs","label":"Serbia — dm.rs (RSD)"},{"value":"ba","label":"Bosnia & Herzegovina — dm-drogeriemarkt.ba (BAM)"},{"value":"it","label":"Italy — dm-drogeriemarkt.it (EUR)"},{"value":"pl","label":"Poland — dm.pl (PLN)"}],"default":"de"},{"name":"query","type":"string","required":false,"description":"Keyword to search (brand, product or product-type word). Optional when `category` is given (category browse). A GTIN/EAN or a dm article number also resolves to its product.","on_invalid":"reject","example":"shampoo","aliases":["q","keyword"]},{"name":"category","type":"string","required":false,"description":"dm category code (allCategories.id, e.g. '110101'), from a detail's category_codes. Browse it alone, or narrow a keyword with it.","on_invalid":"ignore","example":"110101"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match"},{"value":"price_asc","label":"Price ascending"},{"value":"price_desc","label":"Price descending"},{"value":"newest","label":"Newest first"},{"value":"top_rated","label":"Highest rated"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"1-based page.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Products per page (dm default 30, max honoured here 100).","on_invalid":"reject","default":30,"minimum":1,"maximum":100},{"name":"brand","type":"string","required":false,"description":"Brand name filter (exact dm brand name; comma-separate several = any-of).","on_invalid":"ignore","example":"Balea"},{"name":"feature","type":"string","required":false,"description":"Product-feature filter (a productFeatures facet value, e.g. 'Vegan', 'Ohne Silikone'). Comma-separate several = all-of.","on_invalid":"ignore","example":"Vegan"},{"name":"popular_filter","type":"string","required":false,"description":"A popular filter facet value (e.g. 'Lieferbar', 'Marke von dm', 'Neu').","on_invalid":"ignore","example":"Lieferbar"},{"name":"price_min","type":"number","required":false,"description":"Minimum price in the country currency.","on_invalid":"reject","example":2,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in the country currency.","on_invalid":"reject","example":10,"minimum":0},{"name":"include_facets","type":"boolean","required":false,"description":"Also return the filter facets (brands, categories, features) with counts.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Max datacentre exits to try on a transient throttle.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"results[]{dan, gtin, product_name, brand, url, price, currency, was_price, discount_percent, net_price, lowest_price_30d, base_price{amount,unit,per_amount,per_unit,text}, price_notes, rating, rating_count, rating_scale, is_dm_brand, is_pharmacy, online_only, is_new, on_sale, flags, categories, variant_count, variants[{dan,label,hex,url}], image, images}, count, total_results, total_pages, page, page_size, sort, query, country, currency, predicted_category, modified_query, unmatched_terms, facets (with include_facets)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"de","query":"shampoo"}},{"name":"product/detail","description":"The full dm product by article number, GTIN or URL: name, brand, GTIN, the shopper price with was-price/discount, the excl-VAT net price, the price per unit, the EU 30-day lowest price, the dm-Dauerpreis 'not raised since' date, the Payback line, availability of ratings, the category breadcrumb + codes, the description with bullet points, the ingredient list, the usage text, pills/seals, images, and every size/shade variant.","required_params":[],"optional_params":["country","product_id","gtin","url","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"dm online storefront. All 13 run on one platform; currency + language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — dm.de (EUR)"},{"value":"at","label":"Austria — dm.at (EUR)"},{"value":"cz","label":"Czechia — dm.cz (CZK)"},{"value":"sk","label":"Slovakia — mojadm.sk (EUR)"},{"value":"hu","label":"Hungary — dm.hu (HUF)"},{"value":"si","label":"Slovenia — dm.si (EUR)"},{"value":"hr","label":"Croatia — dm.hr (EUR)"},{"value":"ro","label":"Romania — dm.ro (RON)"},{"value":"bg","label":"Bulgaria — dm-drogeriemarkt.bg (EUR)"},{"value":"rs","label":"Serbia — dm.rs (RSD)"},{"value":"ba","label":"Bosnia & Herzegovina — dm-drogeriemarkt.ba (BAM)"},{"value":"it","label":"Italy — dm-drogeriemarkt.it (EUR)"},{"value":"pl","label":"Poland — dm.pl (PLN)"}],"default":"de"},{"name":"product_id","type":"string","required":false,"description":"dm article number (DAN), e.g. '1569035'. A GTIN/EAN or a dm product URL also works via `gtin`/`url`.","on_invalid":"reject","example":"1569035","aliases":["dan","code","sku"]},{"name":"gtin","type":"string","required":false,"description":"GTIN/EAN instead of product_id (resolved to the dm article number).","on_invalid":"reject","example":"4066447966008","aliases":["ean"]},{"name":"url","type":"string","required":false,"description":"A dm.* product URL (…/p/d/<dan>/…) instead of product_id.","on_invalid":"reject","aliases":["product_url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Max datacentre exits to try on a transient throttle.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"product{dan, gtin, product_name, brand, url, price, currency, was_price, discount_percent, net_price, lowest_price_30d, base_price, price_notes, price_stable_since, payback{text,earns_points}, rating, rating_count, is_pharmacy, breadcrumb, category_path, category_codes, description, bullet_points, ingredients, usage, sections[{header,text,bullets}], pills, seals, flags, images, variants[{dan,label,hex,url,selected}], variant_count}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"de","product_id":"1569035"}},{"name":"reviews","description":"Ratings and reviews for a dm product: the average rating and count, the 1–5 star distribution and the 'would recommend' share (per country), plus the full review text — title, body, rating, nickname, date, recommend flag, photos — from the German (dm-de) review deployment.","required_params":["product_id"],"optional_params":["country","limit","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"dm article number (DAN), e.g. '1569035'. A GTIN/EAN or a dm product URL also works via `gtin`/`url`.","on_invalid":"reject","example":"1569035","aliases":["dan","code","sku"]},{"name":"country","type":"enum","required":false,"description":"dm online storefront. All 13 run on one platform; currency + language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — dm.de (EUR)"},{"value":"at","label":"Austria — dm.at (EUR)"},{"value":"cz","label":"Czechia — dm.cz (CZK)"},{"value":"sk","label":"Slovakia — mojadm.sk (EUR)"},{"value":"hu","label":"Hungary — dm.hu (HUF)"},{"value":"si","label":"Slovenia — dm.si (EUR)"},{"value":"hr","label":"Croatia — dm.hr (EUR)"},{"value":"ro","label":"Romania — dm.ro (RON)"},{"value":"bg","label":"Bulgaria — dm-drogeriemarkt.bg (EUR)"},{"value":"rs","label":"Serbia — dm.rs (RSD)"},{"value":"ba","label":"Bosnia & Herzegovina — dm-drogeriemarkt.ba (BAM)"},{"value":"it","label":"Italy — dm-drogeriemarkt.it (EUR)"},{"value":"pl","label":"Poland — dm.pl (PLN)"}],"default":"de"},{"name":"limit","type":"integer","required":false,"description":"Max review texts to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"max_rotations","type":"integer","required":false,"description":"Max datacentre exits to try on a transient throttle.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"dan, country, rating, rating_count, rating_scale, recommend_percent, distribution{1..5:{count,percent}}, reviews[{id,rating,title,text,nickname,submitted_at,recommended,syndicated,photos}], reviews_count, reviews_locale, reviews_note","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"de","product_id":"1569035"}},{"name":"availability","description":"Online deliverability for dm products by article number, and per-store stock when a store id is given. Returns whether each product is purchasable online and, with store_id, the in-store availability status for that dm market.","required_params":["product_ids"],"optional_params":["country","store_id","max_rotations"],"params":[{"name":"product_ids","type":"string","required":false,"description":"One or more dm article numbers (comma-separated).","on_invalid":"reject","example":"1569035,3061034","aliases":["dans"]},{"name":"country","type":"enum","required":false,"description":"dm online storefront. All 13 run on one platform; currency + language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — dm.de (EUR)"},{"value":"at","label":"Austria — dm.at (EUR)"},{"value":"cz","label":"Czechia — dm.cz (CZK)"},{"value":"sk","label":"Slovakia — mojadm.sk (EUR)"},{"value":"hu","label":"Hungary — dm.hu (HUF)"},{"value":"si","label":"Slovenia — dm.si (EUR)"},{"value":"hr","label":"Croatia — dm.hr (EUR)"},{"value":"ro","label":"Romania — dm.ro (RON)"},{"value":"bg","label":"Bulgaria — dm-drogeriemarkt.bg (EUR)"},{"value":"rs","label":"Serbia — dm.rs (RSD)"},{"value":"ba","label":"Bosnia & Herzegovina — dm-drogeriemarkt.ba (BAM)"},{"value":"it","label":"Italy — dm-drogeriemarkt.it (EUR)"},{"value":"pl","label":"Poland — dm.pl (PLN)"}],"default":"de"},{"name":"store_id","type":"string","required":false,"description":"A dm store id (from `stores`); returns per-store stock for the products.","on_invalid":"reject","example":"D42K"},{"name":"max_rotations","type":"integer","required":false,"description":"Max datacentre exits to try on a transient throttle.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"items[{dan, purchasable, online_status, store_status, express_delivery_area}], count, store_id, country","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"stores","description":"The dm store finder: list dm markets near a latitude/longitude (or in a bounding box) for a country, or fetch one store by id. Each store: id, number, address, coordinates, phone, opening hours, services, express-pickup flag and popular-times.","required_params":[],"optional_params":["country","lat","lon","min_results","bbox","store_id","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"dm online storefront. All 13 run on one platform; currency + language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — dm.de (EUR)"},{"value":"at","label":"Austria — dm.at (EUR)"},{"value":"cz","label":"Czechia — dm.cz (CZK)"},{"value":"sk","label":"Slovakia — mojadm.sk (EUR)"},{"value":"hu","label":"Hungary — dm.hu (HUF)"},{"value":"si","label":"Slovenia — dm.si (EUR)"},{"value":"hr","label":"Croatia — dm.hr (EUR)"},{"value":"ro","label":"Romania — dm.ro (RON)"},{"value":"bg","label":"Bulgaria — dm-drogeriemarkt.bg (EUR)"},{"value":"rs","label":"Serbia — dm.rs (RSD)"},{"value":"ba","label":"Bosnia & Herzegovina — dm-drogeriemarkt.ba (BAM)"},{"value":"it","label":"Italy — dm-drogeriemarkt.it (EUR)"},{"value":"pl","label":"Poland — dm.pl (PLN)"}],"default":"de"},{"name":"lat","type":"number","required":false,"description":"Latitude to search dm stores near.","on_invalid":"reject","example":48.1374},{"name":"lon","type":"number","required":false,"description":"Longitude to search dm stores near.","on_invalid":"reject","example":11.5755},{"name":"min_results","type":"integer","required":false,"description":"Minimum number of nearby stores to return.","on_invalid":"ignore","default":10,"minimum":1,"maximum":50},{"name":"bbox","type":"string","required":false,"description":"Bounding box 'latMax,lonMin,latMin,lonMax' to list dm stores in an area.","on_invalid":"reject","example":"48.20,11.50,48.10,11.65"},{"name":"store_id","type":"string","required":false,"description":"A dm store id (from `stores`); returns per-store stock for the products.","on_invalid":"reject","example":"D42K"},{"name":"max_rotations","type":"integer","required":false,"description":"Max datacentre exits to try on a transient throttle.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"stores[{store_id, store_number, name, address{street,zip,city,region}, lat, lon, phone, url, express_pickup, services, opening_hours[], popular_times}], count, total, country (single store under `store`)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"dm search autocomplete for a partial query: the ranked keyword suggestions.","required_params":["query"],"optional_params":["country","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to search (brand, product or product-type word). Optional when `category` is given (category browse). A GTIN/EAN or a dm article number also resolves to its product.","on_invalid":"reject","example":"shampoo","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"dm online storefront. All 13 run on one platform; currency + language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — dm.de (EUR)"},{"value":"at","label":"Austria — dm.at (EUR)"},{"value":"cz","label":"Czechia — dm.cz (CZK)"},{"value":"sk","label":"Slovakia — mojadm.sk (EUR)"},{"value":"hu","label":"Hungary — dm.hu (HUF)"},{"value":"si","label":"Slovenia — dm.si (EUR)"},{"value":"hr","label":"Croatia — dm.hr (EUR)"},{"value":"ro","label":"Romania — dm.ro (RON)"},{"value":"bg","label":"Bulgaria — dm-drogeriemarkt.bg (EUR)"},{"value":"rs","label":"Serbia — dm.rs (RSD)"},{"value":"ba","label":"Bosnia & Herzegovina — dm-drogeriemarkt.ba (BAM)"},{"value":"it","label":"Italy — dm-drogeriemarkt.it (EUR)"},{"value":"pl","label":"Poland — dm.pl (PLN)"}],"default":"de"},{"name":"max_rotations","type":"integer","required":false,"description":"Max datacentre exits to try on a transient throttle.","on_invalid":"ignore","default":4,"minimum":1,"maximum":10}],"returns":"suggestions[{term, rank}], count, query, country","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"de","query":"bal"}}]},{"name":"domain-availability","category":{"id":"utilities","title":"Utilities & AI"},"title":"Domain & App-Name Availability API — check if a domain or brand name is free across TLDs, with WHOIS/RDAP records, name suggestions and bulk lookups","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/domain-availability/v1","spec_available":true,"actions":[{"name":"check","description":"Is one domain available? Combined RDAP and DNS verdict with confidence + Domainr-style status tokens + a register_url when free. Accepts domain OR name+tld.","required_params":["domain"],"optional_params":["name","tld","signal","whois","include_pii"],"params":[{"name":"domain","type":"string","required":true,"description":"A full domain to check (e.g. myapp.com, my-startup.io). A bare host, a full URL, or a leading www. are all accepted and normalized.","on_invalid":"reject","example":"myapp.com","aliases":["url"]},{"name":"name","type":"string","required":false,"description":"A bare app/brand name label (e.g. 'myapp', 'My Startup' → 'my-startup'). Spaces/underscores become hyphens; the TLD is added separately via 'tlds'.","on_invalid":"reject","example":"myapp","aliases":["query","keyword"]},{"name":"tld","type":"string","required":false,"description":"TLD to combine with 'name' if no full 'domain' is given.","on_invalid":"ignore","example":"com"},{"name":"signal","type":"enum","required":false,"description":"Which availability signal(s) to use. 'both' (default) is the most accurate: RDAP for registrar-grade facts + DNS to disambiguate TLDs that have no RDAP server (io/co/me).","on_invalid":"ignore","allowed_values":[{"value":"both","label":"RDAP + DNS (default; most accurate, DNS disambiguates no-RDAP TLDs)"},{"value":"rdap","label":"RDAP only (fast; inconclusive for io/co/me and other no-RDAP TLDs)"},{"value":"dns","label":"DNS/DoH only (NS+SOA presence; no registrar data, no RDAP hop)"}],"default":"both","example":"both"},{"name":"whois","type":"boolean","required":false,"description":"If true and the domain is registered, also attach the full WHOIS/RDAP record (registrar, dates, nameservers, status) inline.","on_invalid":"ignore","default":false,"example":false,"aliases":["include_whois"]},{"name":"include_pii","type":"boolean","required":false,"description":"If true, return the full RDAP registrant contact. Default false → personal data dropped (GDPR), organization kept.","on_invalid":"ignore","default":false,"example":false}],"returns":"domain, available (bool|null), registered (bool|null), confidence (high|medium|low), method, status[] (Domainr-style tokens), note, register_url (when free), rdap_status, tld_has_rdap, dns{}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"google.com"}},{"name":"bulk_check","description":"One NAME across many TLDs → availability map (which of name.com/.io/.ai/… are free).","required_params":["name"],"optional_params":["tlds","signal"],"params":[{"name":"name","type":"string","required":true,"description":"A bare app/brand name label (e.g. 'myapp', 'My Startup' → 'my-startup'). Spaces/underscores become hyphens; the TLD is added separately via 'tlds'.","on_invalid":"reject","example":"myapp","aliases":["query","keyword"]},{"name":"tlds","type":"array","required":false,"description":"TLDs to check (comma-separated string or array, with or without a dot). Defaults to com,net,org,io,co,app,dev,ai,me,xyz. Any valid TLD label is accepted (not just the suggested list); capped at 60.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"com"},{"value":"net","label":"net"},{"value":"org","label":"org"},{"value":"io","label":"io"},{"value":"co","label":"co"},{"value":"app","label":"app"},{"value":"dev","label":"dev"},{"value":"ai","label":"ai"},{"value":"me","label":"me"},{"value":"xyz","label":"xyz"},{"value":"tech","label":"tech"},{"value":"io","label":"io"}],"example":"com,io,ai,app","aliases":["tld_list"]},{"name":"signal","type":"enum","required":false,"description":"Which availability signal(s) to use. 'both' (default) is the most accurate: RDAP for registrar-grade facts + DNS to disambiguate TLDs that have no RDAP server (io/co/me).","on_invalid":"ignore","allowed_values":[{"value":"both","label":"RDAP + DNS (default; most accurate, DNS disambiguates no-RDAP TLDs)"},{"value":"rdap","label":"RDAP only (fast; inconclusive for io/co/me and other no-RDAP TLDs)"},{"value":"dns","label":"DNS/DoH only (NS+SOA presence; no registrar data, no RDAP hop)"}],"default":"both","example":"both"}],"returns":"name, results[] (per-TLD verdict), available[] (free domains), available_count, checked","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"google","tlds":"com,net,org"}},{"name":"rdap","description":"Full WHOIS via RDAP for a registered domain (registrar, created/expires, status, nameservers, dnssec, abuse). A 404 is returned cleanly (available on RDAP-served TLDs; null + a pointer to 'check' on TLDs with no RDAP server), not an error.","required_params":["domain"],"optional_params":["raw","include_pii"],"params":[{"name":"domain","type":"string","required":true,"description":"A full domain to check (e.g. myapp.com, my-startup.io). A bare host, a full URL, or a leading www. are all accepted and normalized.","on_invalid":"reject","example":"myapp.com","aliases":["url"]},{"name":"raw","type":"boolean","required":false,"description":"If true, also attach the raw upstream RDAP JSON under whois.raw_rdap.","on_invalid":"ignore","default":false,"example":false},{"name":"include_pii","type":"boolean","required":false,"description":"If true, return the full RDAP registrant contact. Default false → personal data dropped (GDPR), organization kept.","on_invalid":"ignore","default":false,"example":false}],"returns":"domain, registered, available, whois{} (registrar(+iana_id), status[], created/updated/expires, nameservers[], dnssec, abuse_contact, registrant org-only unless include_pii)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"suggest","description":"Name variations (prefix/suffix/TLD permutations, deterministic — no LLM) each with a live availability verdict; available ones surfaced first.","required_params":["name"],"optional_params":["tlds","signal"],"params":[{"name":"name","type":"string","required":true,"description":"A bare app/brand name label (e.g. 'myapp', 'My Startup' → 'my-startup'). Spaces/underscores become hyphens; the TLD is added separately via 'tlds'.","on_invalid":"reject","example":"myapp","aliases":["query","keyword"]},{"name":"tlds","type":"array","required":false,"description":"TLDs to check (comma-separated string or array, with or without a dot). Defaults to com,io,ai,app,dev,co. Any valid TLD label is accepted (not just the suggested list); capped at 60.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"com"},{"value":"net","label":"net"},{"value":"org","label":"org"},{"value":"io","label":"io"},{"value":"co","label":"co"},{"value":"app","label":"app"},{"value":"dev","label":"dev"},{"value":"ai","label":"ai"},{"value":"me","label":"me"},{"value":"xyz","label":"xyz"},{"value":"tech","label":"tech"},{"value":"io","label":"io"}],"example":"com,io,ai,app","aliases":["tld_list"]},{"name":"signal","type":"enum","required":false,"description":"Which availability signal(s) to use. 'both' (default) is the most accurate: RDAP for registrar-grade facts + DNS to disambiguate TLDs that have no RDAP server (io/co/me).","on_invalid":"ignore","allowed_values":[{"value":"both","label":"RDAP + DNS (default; most accurate, DNS disambiguates no-RDAP TLDs)"},{"value":"rdap","label":"RDAP only (fast; inconclusive for io/co/me and other no-RDAP TLDs)"},{"value":"dns","label":"DNS/DoH only (NS+SOA presence; no registrar data, no RDAP hop)"}],"default":"both","example":"both"}],"returns":"query, suggestions[] (domain + full verdict, available-first), available[], available_count, generated","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"reefapi","tlds":"com,io,ai"}},{"name":"batch","description":"Many DIFFERENT full domains in one call → availability for each (bulk check).","required_params":["domains"],"optional_params":["signal"],"params":[{"name":"domains","type":"array","required":true,"description":"A list of FULL domains to check at once (comma-separated string or array). Capped at 100 per call; invalid entries are reported under 'invalid'.","on_invalid":"reject","example":"myapp.com,myapp.io,getmyapp.co"},{"name":"signal","type":"enum","required":false,"description":"Which availability signal(s) to use. 'both' (default) is the most accurate: RDAP for registrar-grade facts + DNS to disambiguate TLDs that have no RDAP server (io/co/me).","on_invalid":"ignore","allowed_values":[{"value":"both","label":"RDAP + DNS (default; most accurate, DNS disambiguates no-RDAP TLDs)"},{"value":"rdap","label":"RDAP only (fast; inconclusive for io/co/me and other no-RDAP TLDs)"},{"value":"dns","label":"DNS/DoH only (NS+SOA presence; no registrar data, no RDAP hop)"}],"default":"both","example":"both"}],"returns":"results[] (per-domain verdict), available[], available_count, checked, invalid[] (rejected inputs)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"domains":"google.com,this-name-is-surely-free-9z8x7q.com"}}]},{"name":"domain-intel","category":{"id":"utilities","title":"Utilities & AI"},"title":"Domain Intelligence API — WHOIS/RDAP records, DNS lookups (all record types), reverse DNS, hosting/ASN/IP-owner, DNSSEC, SSL certificates, subdomain discovery and tech-stack detection for any domain","version":"2.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/domain-intel/v1","spec_available":true,"actions":[{"name":"whois","description":"Domain registration (WHOIS) via RDAP: registrar (+ IANA id), reseller, status flags, created/updated/expires dates, nameservers, DNSSEC flag, abuse contact, and registrant (org-only unless include_pii). Legacy-WHOIS-only TLDs (.io/.de) return NOT_FOUND — see tld_detail.","required_params":["domain"],"optional_params":["raw","include_pii"],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]},{"name":"raw","type":"boolean","required":false,"description":"If true, also attach the raw upstream RDAP JSON under whois.raw_rdap.","on_invalid":"ignore","default":false,"example":false},{"name":"include_pii","type":"boolean","required":false,"description":"If true, return the full WHOIS/RDAP registrant contact (vCard). Default false → personal data is dropped (GDPR), organization kept.","on_invalid":"ignore","default":false,"example":false}],"returns":"whois{}: domain, registrar(+iana_id), reseller, status[], created/updated/expires, nameservers[], dnssec, abuse_contact, registrant (org-only unless include_pii)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"dns","description":"DNS records over DNS-over-HTTPS: A/AAAA/MX/TXT/NS/CNAME/SOA/CAA by default; PTR/SRV/DS/DNSKEY/TLSA and any RR type on request via the 'types' param.","required_params":["domain"],"optional_params":["types"],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]},{"name":"types","type":"array","required":false,"description":"Which DNS record types to query (comma-separated string or array). Defaults to A,AAAA,MX,TXT,NS,CNAME,SOA,CAA. PTR/SRV/DS/DNSKEY/TLSA and any other RR type are accepted and passed through to the resolver.","on_invalid":"ignore","allowed_values":[{"value":"A","label":"IPv4 address"},{"value":"AAAA","label":"IPv6 address"},{"value":"MX","label":"Mail exchanger"},{"value":"TXT","label":"Text (SPF/DKIM/verification)"},{"value":"NS","label":"Name server"},{"value":"CNAME","label":"Canonical name"},{"value":"SOA","label":"Start of authority"},{"value":"CAA","label":"Cert-authority authorization"},{"value":"PTR","label":"Reverse pointer"},{"value":"SRV","label":"Service locator"},{"value":"DS","label":"Delegation signer"},{"value":"DNSKEY","label":"DNSSEC key"},{"value":"TLSA","label":"DANE TLS anchor"}],"example":"A,AAAA,MX,TXT"}],"returns":"domain, records{} keyed by RR type → [{value, ttl}]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"reverse_dns","description":"Reverse DNS (PTR): the hostname each of the domain's A/AAAA IPs resolves back to, or pass an explicit IPv4/IPv6 to PTR that single address. Missing PTR is a common mail-rejection cause.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"A domain (PTR each of its A/AAAA IPs) OR an explicit IPv4/IPv6 address (PTR that single address).","on_invalid":"reject","example":"github.com","aliases":["query","name","ip"]}],"returns":"domain, records[] (ip, ptr), count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"hosting","description":"Hosting / ASN / IP-owner: resolves the domain's A+AAAA IPs and looks up each via Team Cymru — ASN, announced prefix, country, RIR, AS-name (network owner) + reverse DNS. Tells you who hosts a domain and on what network.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, ipv4[], ipv6[], hosts[] (ip, asn, as_name, prefix, country, rir, allocated, ptr), asns[] (asn, as_name, country, rir)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"dnssec","description":"DNSSEC signing status: the DoH AD (Authenticated-Data) flag (the resolver cryptographically validated the answer), the DS record at the parent (delegation signed), and DNSKEY presence — plus a broken-chain warning (DS without DNSKEY).","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, signed, validated_ad_flag, has_ds_record, ds_records[], has_dnskey, dnskey_count, issues[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"cloudflare.com"}},{"name":"ssl_certs","description":"SSL/TLS certificates from Certificate Transparency (CT) logs (certspotter primary, crt.sh deep fallback): issuer, common name, SANs, validity window, serial, expired flag.","required_params":["domain"],"optional_params":["limit","deep"],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]},{"name":"limit","type":"integer","required":false,"description":"Max certificates to return (newest first). Default 50.","on_invalid":"ignore","default":50,"example":50,"minimum":1},{"name":"deep","type":"boolean","required":false,"description":"If true, query the full crt.sh CT-log history first (slower, deeper, more subdomains) instead of the fast certspotter source.","on_invalid":"ignore","default":false,"example":false}],"returns":"domain, certificates[] (issuer, issuer_friendly, common_name, sans[], not_before/after, serial_number, ct_id, is_expired), active_count, total_seen","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"subdomains","description":"Subdomain discovery via Certificate-Transparency-log cert SANs (the standard passive method; pass deep=true for full crt.sh history = more results).","required_params":["domain"],"optional_params":["deep"],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]},{"name":"deep","type":"boolean","required":false,"description":"If true, query the full crt.sh CT-log history first (slower, deeper, more subdomains) instead of the fast certspotter source.","on_invalid":"ignore","default":false,"example":false}],"returns":"domain, subdomains[] (sorted unique), count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"availability","description":"Domain registration availability via RDAP (registered ⇔ an RDAP record exists). Caveat: legacy-WHOIS-only TLDs report 'available' falsely — surfaced in the note.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, available (bool), registered (bool), method, note","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"tld_list","description":"The IANA list of all delegated top-level domains (optionally substring-filtered).","required_params":[],"optional_params":["search","limit"],"params":[{"name":"search","type":"string","required":false,"description":"Case-insensitive substring filter over the IANA TLD list (e.g. 'shop' → shop, shopping).","on_invalid":"ignore","example":"shop"},{"name":"limit","type":"integer","required":false,"description":"Max TLDs to return (0/unset = all ~1450).","on_invalid":"ignore","example":100,"minimum":1}],"returns":"tlds[] (lowercased), count, total","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"tld_detail","description":"Per-TLD metadata: ccTLD vs gTLD and its IANA RDAP server(s) (or a note that it is legacy-WHOIS-only, which explains why whois/availability 404 for that TLD).","required_params":["tld"],"optional_params":[],"params":[{"name":"tld","type":"string","required":true,"description":"A top-level domain, with or without a leading dot (e.g. com, io, co.uk). Returns its type + IANA RDAP server(s).","on_invalid":"reject","example":"com"}],"returns":"tld, type (ccTLD/gTLD), has_rdap, rdap_servers[], note","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"tld":"com"}},{"name":"tech_detect","description":"Tech-stack fingerprint from the homepage response headers + HTML: web server, CDN/WAF, and frameworks/CMS/analytics (WordPress, Next.js, Shopify, React, Bitrix, Tilda, Yandex.Metrica, …). Tries https, then plain http, then the www host, so HTTP-only and www-only-certificate sites are fingerprinted instead of reported as blocked; `https_available` tells you which it was.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, url, scheme, https_available, tls_certificate_valid, http_status, server, powered_by, generator, cdn[], technologies[] (+ blocked/note when only an edge/WAF answered)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"full_report","description":"One-call merge: whois + dns + dnssec + ssl_certs + subdomains (and optionally tech + hosting). meta.sections shows per-part status.","required_params":["domain"],"optional_params":["include_tech","include_hosting","include_pii","deep"],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]},{"name":"include_tech","type":"boolean","required":false,"description":"If true, also run the tech-stack fingerprint section in full_report.","on_invalid":"ignore","default":false,"example":false},{"name":"include_hosting","type":"boolean","required":false,"description":"If true, also run the hosting/ASN/IP-owner section in full_report.","on_invalid":"ignore","default":false,"example":false},{"name":"include_pii","type":"boolean","required":false,"description":"If true, return the full WHOIS/RDAP registrant contact (vCard). Default false → personal data is dropped (GDPR), organization kept.","on_invalid":"ignore","default":false,"example":false},{"name":"deep","type":"boolean","required":false,"description":"If true, query the full crt.sh CT-log history first (slower, deeper, more subdomains) instead of the fast certspotter source.","on_invalid":"ignore","default":false,"example":false}],"returns":"domain + whois{} + dns{} + dnssec{} + ssl_certs{} + subdomains{} (+ tech{}/hosting{} when requested); meta.sections shows per-part status","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"domain":"github.com"}}]},{"name":"domain-risk","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Domain Risk API — fraud and brand-protection intelligence: 0-100 risk score, domain age and expiry lifecycle, parked/for-sale detection, typosquat and lookalike generation with registration checks, registrar, nameserver and email reputation (RDAP + DNS + Certificate Transparency, no API key required)","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/domain-risk/v1","spec_available":true,"actions":[{"name":"assess","description":"Comprehensive fraud and security risk report for one domain: a 0-100 risk score, human-readable reasons, and a risk level (low / medium / elevated / high). Combines domain age, expiry status, parked/for-sale detection, TLS certificate presence, hostname structure, brand impersonation signals, and email/DNSSEC legitimacy into a single verdict. The primary action for phishing detection and brand protection.","required_params":["domain"],"optional_params":["check_parked","include_pii"],"params":[{"name":"domain","type":"string","required":true,"description":"A full domain to evaluate (e.g. example.com, secure-login.io). A bare host, full URL, leading www., or an IDN (münchen.de) are accepted and normalized to its registrable form.","on_invalid":"reject","example":"example-login.com","aliases":["url","host"]},{"name":"check_parked","type":"boolean","required":false,"description":"If true (default), also fetch the domain's root page to detect a parked or for-sale landing page. A failed page probe never fails the overall risk assessment — only the parking signal is omitted.","on_invalid":"ignore","default":true,"example":true},{"name":"include_pii","type":"boolean","required":false,"description":"If true, return the full RDAP registrant contact. Default false → personal data dropped (GDPR), organization kept.","on_invalid":"ignore","default":false,"example":false}],"returns":"domain, registered, risk_score (0-100), risk_level (low|medium|elevated|high), reasons[] (plain-English explanation of each risk signal), lifecycle{age_days, age_band, days_to_expiry, expiry_risk, recently_registered, renewal_status}, signals{registrar, nameserver_provider, dnssec, has_certificate, mail{mx,spf,dmarc}, structural_flags[], impersonation}, parked{}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"google.com","check_parked":false}},{"name":"age","description":"Domain age + expiry-risk band + renewal status (lifecycle synthesis from RDAP dates — NOT a raw whois dump; use domain-intel.whois for that).","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"A full domain to evaluate (e.g. example.com, secure-login.io). A bare host, full URL, leading www., or an IDN (münchen.de) are accepted and normalized to its registrable form.","on_invalid":"reject","example":"example-login.com","aliases":["url","host"]}],"returns":"domain, registered, created/expires/updated, age_days, age_years, age_band (very_new|new|young|established|mature), days_to_expiry, expiry_risk (expired|imminent|soon|ok), recently_registered, renewal_status","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"parked","description":"Detect whether a domain is parked or listed for sale. Checks parking nameserver signals and the domain's root page for for-sale phrases and marketplace redirect hosts (Sedo, Afternic, GoDaddy, etc.). Returns a confidence-scored verdict: parked, for_sale, or actively in use. Returns 'unknown' when the page cannot be read.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"A full domain to evaluate (e.g. example.com, secure-login.io). A bare host, full URL, leading www., or an IDN (münchen.de) are accepted and normalized to its registrable form.","on_invalid":"reject","example":"example-login.com","aliases":["url","host"]}],"returns":"domain, parked (bool|null), for_sale (bool), confidence (high|medium|low), signals[] (each parking signal found), http_status, note","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"google.com"}},{"name":"typosquat","description":"Generate a brand's lookalike domains across 16 permutation families (meets/exceeds dnstwist; incl IDN homoglyph/homograph) then report which are ACTUALLY REGISTERED + their risk — the brand-protection product.","required_params":["domain"],"optional_params":["families","keywords","check_registered"],"params":[{"name":"domain","type":"string","required":true,"description":"A full domain to evaluate (e.g. example.com, secure-login.io). A bare host, full URL, leading www., or an IDN (münchen.de) are accepted and normalized to its registrable form.","on_invalid":"reject","example":"example-login.com","aliases":["url","host"]},{"name":"families","type":"array","required":false,"description":"Which typosquat permutation families to generate (comma-separated or array). Defaults to ALL 16 (meets/exceeds dnstwist): omission, repetition, transposition, replacement, insertion, vowel_swap, homoglyph, bitsquatting, hyphenation, addition, subdomain, tld_swap, combosquat, plural, homophones, various. Unknown names are ignored.","on_invalid":"ignore","allowed_values":[{"value":"omission","label":"omission"},{"value":"repetition","label":"repetition"},{"value":"transposition","label":"transposition"},{"value":"replacement","label":"replacement"},{"value":"insertion","label":"insertion"},{"value":"vowel_swap","label":"vowel_swap"},{"value":"homoglyph","label":"homoglyph"},{"value":"bitsquatting","label":"bitsquatting"},{"value":"hyphenation","label":"hyphenation"},{"value":"addition","label":"addition"},{"value":"subdomain","label":"subdomain"},{"value":"tld_swap","label":"tld_swap"},{"value":"combosquat","label":"combosquat"},{"value":"plural","label":"plural"},{"value":"homophones","label":"homophones"},{"value":"various","label":"various"}],"example":"homoglyph,replacement,tld_swap"},{"name":"keywords","type":"array","required":false,"description":"Additional keywords to include in the combosquat permutation family (e.g. your product name or campaign terms like 'checkout', 'wallet'). Combined with the built-in phishing keyword set (login, secure, verify…).","on_invalid":"ignore","example":"login,verify,wallet"},{"name":"check_registered","type":"boolean","required":false,"description":"If true (default), RDAP/DoH-check which generated lookalikes are actually registered (capped at 120 checks). False → return candidates only.","on_invalid":"ignore","default":true,"example":true}],"returns":"brand, generated, checked, registered_count, high_risk_count, registered[] (domain, family, risk, method; high-risk first), by_family{}, families[], note","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"paypal.com","families":"homoglyph,replacement,omission"}},{"name":"reputation","description":"Registrar / nameserver / age / mail-hygiene (SPF·DMARC·DNSSEC) trust signals → a 0-100 reputation_score + trust_level. Reputation is a positive-trust lens (vs assess's risk lens).","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"A full domain to evaluate (e.g. example.com, secure-login.io). A bare host, full URL, leading www., or an IDN (münchen.de) are accepted and normalized to its registrable form.","on_invalid":"reject","example":"example-login.com","aliases":["url","host"]}],"returns":"domain, registered, reputation_score (0-100), trust_level (high|medium|low), registrar, nameserver_provider, dnssec, age_years, mail{mx,spf,dmarc}, impersonation, signals[]","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"batch","description":"Risk-assess up to 50 domains in one call (RDAP + DNS + email hygiene scoring, no per-domain parked-page probe). Returns a risk verdict per domain plus a combined high-risk list — ideal for bulk fraud screening.","required_params":["domains"],"optional_params":[],"params":[{"name":"domains","type":"array","required":true,"description":"A list of full domains to risk-assess at once (comma-separated string or array). Capped at 50; invalid entries reported under 'invalid'.","on_invalid":"reject","example":"example.com,secure-paypa1.com,g00gle.com"}],"returns":"results[] (per-domain risk verdict), high_risk[], high_risk_count, checked, invalid[] (rejected inputs)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"domains":"google.com,g00gle.com"}}]},{"name":"donanimhaber","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"DonanımHaber Forum API — search, read and monitor Turkey's largest technology forum (forum.donanimhaber.com, active since 2001, ~700 sections). Keyword search across every post, full topic detail (opening post, author, dates, view/reply counts and replies), paginated section listings, and the section directory — clean JSON, Turkish text intact, no login.","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/donanimhaber/v1","spec_available":true,"actions":[{"name":"search","description":"Keyword-search every post on DonanımHaber Forum — the site's own search index, not a page scrape. Returns the matching post's title, excerpt, section, author-visible timestamp and a deep link to the exact message. Filter to opening posts only (topic search), to one section, or to one thread; sort by recency or relevance. Ideal for Turkish-market demand signals, product mentions and support chatter.","required_params":["query"],"optional_params":["search_in","match","sort","first_post_only","section","topic","posted_within","limit","page"],"params":[{"name":"query","type":"string","required":true,"description":"Turkish (or English) keyword(s) to find in DonanımHaber Forum posts — e.g. 'veri çekme', 'ekran kartı', 'RTX 5090'. Turkish characters (ı ş ğ ç ö ü) are sent through unchanged.","on_invalid":"ignore","example":"veri çekme programı","aliases":["q","keyword","search","term"]},{"name":"search_in","type":"enum","required":false,"description":"Where to look. 'all' searches title AND body and is very broad (the site stems Turkish words, so 'veri' also matches 'verimli'). Use 'title' when you want precision — measured 204 title hits vs 19 541 all-field hits for the same query.","on_invalid":"ignore","allowed_values":[{"value":"all","label":"Title and post body (default)"},{"value":"title","label":"Topic title only — far more precise"},{"value":"body","label":"Post body only"}],"default":"all","example":"title","aliases":["in","field"]},{"name":"match","type":"enum","required":false,"description":"How the words are combined: 'both' = every word (any order), 'any' = at least one word, 'exact' = the phrase as typed.","on_invalid":"ignore","allowed_values":[{"value":"both","label":"All words, in any order (default)"},{"value":"any","label":"Any of the words"},{"value":"exact","label":"The exact phrase"}],"default":"both","example":"exact","aliases":["type","match_mode"]},{"name":"sort","type":"enum","required":false,"description":"Result order. 'date' (newest first) is the freshness feed; 'rank' is best-match first.","on_invalid":"ignore","allowed_values":[{"value":"date","label":"Newest first (default)"},{"value":"date_asc","label":"Oldest first"},{"value":"rank","label":"Best relevance match first"}],"default":"date","example":"rank","aliases":["order","order_by"]},{"name":"first_post_only","type":"boolean","required":false,"description":"Match only the OPENING post of each thread instead of every reply. Turns a noisy message search into a topic search — good for lead/demand hunting ('who is ASKING for this?').","on_invalid":"ignore","default":false,"example":true,"aliases":["opening_posts_only","scope"]},{"name":"section","type":"string","required":false,"description":"A forum section: the numeric id (2770), 'f2770', the section URL, or the '<slug>--f2770' slug. Use the `sections` action to find ids by name, or read `section_id` off any `search` hit.","on_invalid":"ignore","example":"2770","aliases":["section_id","forum","forum_id","f"]},{"name":"topic","type":"string","required":false,"description":"The topic: numeric topic id (163852334), the full topic URL, or the '<slug>--<id>' slug. All three resolve to the same thread.","on_invalid":"ignore","example":"163852334","aliases":["topic_id","id","url"]},{"name":"posted_within","type":"enum","required":false,"description":"Keep only posts newer than this. NOTE: the upstream search's own date-range field is a no-op (measured: identical totals for every value), so this filter is applied by us over a newest-first result stream — `total_matches` still reports the unfiltered upstream total, and `returned` reports what survived.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"Last 24 hours"},{"value":"3d","label":"Last 3 days"},{"value":"7d","label":"Last 7 days"},{"value":"30d","label":"Last 30 days"},{"value":"90d","label":"Last 90 days"},{"value":"365d","label":"Last year"}],"example":"7d","aliases":["freshness","since"]},{"name":"limit","type":"integer","required":false,"description":"How many posts to return (1–100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["max_results","count"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (1–1000).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000,"aliases":["sayfa","p","offset_page"]},{"name":"search_offline","type":"boolean","required":false,"description":"Skip the site's search host (which is crawler-disallowed by its own robots.txt) and keyword-filter a robots-ALLOWED section listing instead. Requires `section`. Narrower coverage, fully robots-clean.","on_invalid":"ignore","default":false,"example":true}],"returns":"results[]{message_id, topic_id, is_opening_post, title, excerpt, matched_words[], section, section_id, posted_at, posted_label, url, topic_url, other_matches_in_topic[]}, total_matches, returned, page, pages_available, did_you_mean","cacheable":true,"cache_ttl_seconds":180,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"ekran kartı","search_in":"title","limit":10}},{"name":"topic","description":"Full detail for one DonanımHaber Forum thread: title, the complete opening post as clean text, the author (public handle, profile, staff title, lifetime post count), published/last-updated timestamps, the section it lives in, view / post / like counts, and the replies on the requested page with their own authors, timestamps and like counts.","required_params":["topic"],"optional_params":["page"],"params":[{"name":"topic","type":"string","required":true,"description":"The topic: numeric topic id (163852334), the full topic URL, or the '<slug>--<id>' slug. All three resolve to the same thread.","on_invalid":"ignore","example":"163852334","aliases":["topic_id","id","url"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (1–5000).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":5000,"aliases":["sayfa","p","offset_page"]}],"returns":"topic{topic_id, title, body, author{name,profile_url,title,total_posts}, posted_at, updated_at, section, section_id, breadcrumb[], view_count, post_count, reply_count, like_count, page, pages_available, language, url}, replies[]{message_id, author, posted_at, text, likes, url}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"topic":"163852334"}},{"name":"section","description":"List the topics in one DonanımHaber Forum section, newest activity first, with pagination (65 topics per page). Each row carries the title, the site's own opening-post teaser, the thread starter, reply and view counts, and the last-post timestamp — enough to monitor a section without opening a single thread.","required_params":["section"],"optional_params":["page","limit","query","posted_within","include_sticky"],"params":[{"name":"section","type":"string","required":true,"description":"A forum section: the numeric id (2770), 'f2770', the section URL, or the '<slug>--f2770' slug. Use the `sections` action to find ids by name, or read `section_id` off any `search` hit.","on_invalid":"ignore","example":"2770","aliases":["section_id","forum","forum_id","f"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (1–5000).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":5000,"aliases":["sayfa","p","offset_page"]},{"name":"limit","type":"integer","required":false,"description":"How many topics to return (1–65, default 65).","on_invalid":"ignore","default":65,"example":65,"minimum":1,"maximum":65,"aliases":["max_results","count"]},{"name":"query","type":"string","required":false,"description":"Optional client-side keyword filter over the titles/teasers on this page.","on_invalid":"ignore","example":"python","aliases":["q","filter"]},{"name":"posted_within","type":"enum","required":false,"description":"Keep only posts newer than this. NOTE: the upstream search's own date-range field is a no-op (measured: identical totals for every value), so this filter is applied by us over a newest-first result stream — `total_matches` still reports the unfiltered upstream total, and `returned` reports what survived.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"Last 24 hours"},{"value":"3d","label":"Last 3 days"},{"value":"7d","label":"Last 7 days"},{"value":"30d","label":"Last 30 days"},{"value":"90d","label":"Last 90 days"},{"value":"365d","label":"Last year"}],"example":"7d","aliases":["freshness","since"]},{"name":"include_sticky","type":"boolean","required":false,"description":"Include the section's pinned/announcement topics (they are not sorted by recency).","on_invalid":"ignore","default":true,"example":false}],"returns":"topics[]{topic_id, title, preview, author{name,profile_url}, reply_count, view_count, last_post_at, last_post_label, last_post_author, sticky, url}, section{id, name, description, breadcrumb[]}, returned, page, has_next_page","cacheable":true,"cache_ttl_seconds":180,"pricing":{"mode":"flat","credits":1},"example_params":{"section":"2770","limit":20}},{"name":"sections","description":"The DonanımHaber Forum section directory — every public section with its numeric id, name and URL, optionally filtered by name. Use it to resolve a topic area ('SEO', 'yazılım', 'ekran kartı') to the `section` id that `search` and `section` take.","required_params":[],"optional_params":["query","limit"],"params":[{"name":"query","type":"string","required":false,"description":"Filter sections whose name or slug contains this text (accent/case-insensitive). Omit for the full directory.","on_invalid":"ignore","example":"seo","aliases":["q","name","filter"]},{"name":"limit","type":"integer","required":false,"description":"How many sections to return (1–800, default 120).","on_invalid":"ignore","default":120,"example":120,"minimum":1,"maximum":800,"aliases":["max_results","count"]}],"returns":"sections[]{id, name, slug, description, url}, returned, total_available","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"seo","limit":20}}]},{"name":"douglas","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Douglas API scraper — Europe's largest beauty & perfume retailer (douglas.*): search 13 countries, read the full product (variants/sizes, price per 100 ml, was-price, EU 30-day lowest price, EAN, ingredients, specs, rating, images), and autocomplete. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/douglas/v1","spec_available":true,"actions":[{"name":"search","description":"Search a Douglas storefront by keyword and/or category, with the site's own sorts and filters (brand, category, price range, on-sale). Each row: product + variant code, name, brand, the logged-out price, the struck was-price + discount, the EU 30-day lowest price, the per-100 ml/per-litre base price, rating + count, availability/stock, sale/new/exclusive flags, marketplace seller, images and images. EAN and ingredients are on product/detail. No-result searches return empty (the site's own 204); a keyword→category/brand redirect is reported and the real rows are kept.","required_params":[],"optional_params":["country","query","language","sort","page","brand","category","price_min","price_max","on_sale","include_facets","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Douglas storefront. All 13 run on one platform; currency + language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — douglas.de (EUR)"},{"value":"at","label":"Austria — douglas.at (EUR)"},{"value":"ch","label":"Switzerland — douglas.ch (CHF; de/fr/it)"},{"value":"nl","label":"Netherlands — douglas.nl (EUR)"},{"value":"be","label":"Belgium — douglas.be (EUR; nl/fr)"},{"value":"pl","label":"Poland — douglas.pl (PLN)"},{"value":"it","label":"Italy — douglas.it (EUR)"},{"value":"es","label":"Spain — douglas.es (EUR)"},{"value":"cz","label":"Czechia — douglas.cz (CZK)"},{"value":"sk","label":"Slovakia — douglas.sk (EUR)"},{"value":"hu","label":"Hungary — douglas.hu (HUF)"},{"value":"ro","label":"Romania — douglas.ro (RON)"},{"value":"lt","label":"Lithuania — douglas.lt (EUR)"}],"default":"de"},{"name":"query","type":"string","required":false,"description":"Keyword to search (brand, product or product-type words). Optional when `category` is given (category browse).","on_invalid":"reject","example":"dior sauvage","aliases":["q","keyword"]},{"name":"language","type":"string","required":false,"description":"Interface language for multi-language countries (ch: de/fr/it, be: nl/fr). Ignored elsewhere; defaults to the country's primary language.","on_invalid":"ignore"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match"},{"value":"price_asc","label":"Price ascending"},{"value":"price_desc","label":"Price descending"},{"value":"top_rated","label":"Top rated"},{"value":"newest","label":"Newest first"},{"value":"best_discount","label":"Biggest discount"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"1-based page; 48 products per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"brand","type":"string","required":false,"description":"Brand facet code (from a search response's facets, e.g. 'b0102' for Hugo Boss).","on_invalid":"ignore","example":"b0102"},{"name":"category","type":"string","required":false,"description":"Category code (allCategories facet, e.g. '0301'). Browse it alone, or narrow a keyword with it.","on_invalid":"ignore","example":"0301"},{"name":"price_min","type":"number","required":false,"description":"Minimum price in the country currency.","on_invalid":"reject","example":20,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in the country currency.","on_invalid":"reject","example":60,"minimum":0},{"name":"on_sale","type":"boolean","required":false,"description":"Only discounted products.","on_invalid":"ignore","default":false},{"name":"include_facets","type":"boolean","required":false,"description":"Also return the filter facets (brands, categories, properties) with their codes.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Max proxy attempts on hardened storefronts (DE/PL/IT). Ignored elsewhere.","on_invalid":"ignore","default":6,"minimum":1,"maximum":10}],"returns":"results[]{product_code, base_product_code, variant_name, product_name, brand, brand_code, brand_line, url, price, currency, was_price, discount_percent, lowest_price_30d, lowest_price_30d_discount_percent, store_price, member_price, base_price{value, per_amount, per_unit, content_amount, content_unit}, rating, rating_count, rating_scale, availability{code, message, stock_status}, product_type, is_new, on_sale, flags[{code,label}], seller{marketplace,name,partner_id,fulfilled_by_douglas}, image, images}, count, total_results, total_pages, page, page_size, sort, query, country, currency, redirect_to, did_you_mean, corrected_from, search_mode ('search'|'suggest_index'), partial, facets (with include_facets)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"at","query":"dior sauvage"}},{"name":"product/detail","description":"The full Douglas product by code or URL: title, brand, price with was-price/discount and the EU 30-day lowest price, per-100 ml base price, the Douglas coupon/deal price when one runs, availability, rating, images, EAN, ingredients, application, bullet points, the specification table, the category breadcrumb, marketplace seller, and every size/colour variant each with its own price and base price. (On DE, when the full route is Akamai-gated, a listing-mode record is returned with ean/ingredients/specs null and partial=true.)","required_params":[],"optional_params":["country","product_id","url","language","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Douglas storefront. All 13 run on one platform; currency + language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — douglas.de (EUR)"},{"value":"at","label":"Austria — douglas.at (EUR)"},{"value":"ch","label":"Switzerland — douglas.ch (CHF; de/fr/it)"},{"value":"nl","label":"Netherlands — douglas.nl (EUR)"},{"value":"be","label":"Belgium — douglas.be (EUR; nl/fr)"},{"value":"pl","label":"Poland — douglas.pl (PLN)"},{"value":"it","label":"Italy — douglas.it (EUR)"},{"value":"es","label":"Spain — douglas.es (EUR)"},{"value":"cz","label":"Czechia — douglas.cz (CZK)"},{"value":"sk","label":"Slovakia — douglas.sk (EUR)"},{"value":"hu","label":"Hungary — douglas.hu (HUF)"},{"value":"ro","label":"Romania — douglas.ro (RON)"},{"value":"lt","label":"Lithuania — douglas.lt (EUR)"}],"default":"de"},{"name":"product_id","type":"string","required":false,"description":"Douglas product code (a variant code like '1298545' or a base code like '5012091068').","on_invalid":"reject","example":"1298545","aliases":["code","product_code","sku"]},{"name":"url","type":"string","required":false,"description":"A douglas.* product URL (…/p/<code>) instead of product_id.","on_invalid":"reject","aliases":["product_url"]},{"name":"language","type":"string","required":false,"description":"Interface language for multi-language countries (ch: de/fr/it, be: nl/fr). Ignored elsewhere; defaults to the country's primary language.","on_invalid":"ignore"},{"name":"max_rotations","type":"integer","required":false,"description":"Max proxy attempts on hardened storefronts (DE/PL/IT). Ignored elsewhere.","on_invalid":"ignore","default":6,"minimum":1,"maximum":10}],"returns":"product{...all search-row fields..., ean, ingredients, application, bullet_points, specs[{group,name,value}], breadcrumb[{name,code,url}], coupon{code,price,base_price,discount_percent,starts_at,ends_at}, variant_display_type, variant_count, variants[{product_code,name,url,price,was_price,discount_percent,lowest_price_30d,store_price,base_price,availability,coupon,images}], max_order_quantity, mode, partial}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"at","product_id":"1078984"}},{"name":"suggest","description":"Douglas autocomplete for a partial query: product suggestions (code, variant name, product name, brand, url, image) and the ranked keyword/brand suggestions.","required_params":["query"],"optional_params":["country","language","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to search (brand, product or product-type words). Optional when `category` is given (category browse).","on_invalid":"reject","example":"dior sauvage","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Douglas storefront. All 13 run on one platform; currency + language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — douglas.de (EUR)"},{"value":"at","label":"Austria — douglas.at (EUR)"},{"value":"ch","label":"Switzerland — douglas.ch (CHF; de/fr/it)"},{"value":"nl","label":"Netherlands — douglas.nl (EUR)"},{"value":"be","label":"Belgium — douglas.be (EUR; nl/fr)"},{"value":"pl","label":"Poland — douglas.pl (PLN)"},{"value":"it","label":"Italy — douglas.it (EUR)"},{"value":"es","label":"Spain — douglas.es (EUR)"},{"value":"cz","label":"Czechia — douglas.cz (CZK)"},{"value":"sk","label":"Slovakia — douglas.sk (EUR)"},{"value":"hu","label":"Hungary — douglas.hu (HUF)"},{"value":"ro","label":"Romania — douglas.ro (RON)"},{"value":"lt","label":"Lithuania — douglas.lt (EUR)"}],"default":"de"},{"name":"language","type":"string","required":false,"description":"Interface language for multi-language countries (ch: de/fr/it, be: nl/fr). Ignored elsewhere; defaults to the country's primary language.","on_invalid":"ignore"},{"name":"max_rotations","type":"integer","required":false,"description":"Max proxy attempts on hardened storefronts (DE/PL/IT). Ignored elsewhere.","on_invalid":"ignore","default":6,"minimum":1,"maximum":10}],"returns":"suggestions[{product_code, variant_name, product_name, brand, url, image}], keyword_suggestions[{term, url}], count, country","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"at","query":"chanel"}}]},{"name":"dubizzle","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"dubizzle API — UAE classifieds: used and rental cars, property for sale and rent, and general classifieds from dubizzle.com, in AED, across all emirates. No account, no browser.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/dubizzle/v1","spec_available":true,"actions":[{"name":"search","description":"Search dubizzle's general classifieds (furniture, electronics, phones, fashion …) and the non-car Motors sections (number plates, motorcycles, boats, heavy vehicles, parts) by keyword, category and emirate: listing id, title, price in AED, condition, private or business seller, verified flags, premium/featured flags, location and dates, with the true total and category and emirate counts.","required_params":[],"optional_params":["query","category","emirate","price_min","price_max","seller_type","condition","sort","page","limit","language","country","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword. dubizzle's search is typo-tolerant ('iphnoe' finds iPhones).","on_invalid":"reject","example":"iphone 15","aliases":["q","keyword"]},{"name":"category","type":"string","required":false,"description":"Category slug path from `categories` or a search's category_facets, e.g. classified/furniture-home-garden or motors/number-plates. Use cars/search for used or rental cars and real_estate/search for property.","on_invalid":"reject","example":"classified/mobile-phones-pdas"},{"name":"emirate","type":"enum","required":false,"description":"One emirate, or all. Al Ain is listed on its own on dubizzle, separately from Abu Dhabi.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All emirates"},{"value":"dubai","label":"Dubai"},{"value":"abu-dhabi","label":"Abu Dhabi"},{"value":"sharjah","label":"Sharjah"},{"value":"ajman","label":"Ajman"},{"value":"ras-al-khaimah","label":"Ras Al Khaimah"},{"value":"umm-al-quwain","label":"Umm Al Quwain"},{"value":"fujairah","label":"Fujairah"},{"value":"al-ain","label":"Al Ain"}],"default":"all","example":"dubai","aliases":["city"]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in AED.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in AED.","on_invalid":"reject","minimum":0},{"name":"seller_type","type":"enum","required":false,"description":"Only private sellers or only verified businesses (Classifieds only).","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private individuals"},{"value":"business","label":"Verified businesses"}]},{"name":"condition","type":"enum","required":false,"description":"Item condition as dubizzle's sellers declare it (Classifieds only).","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"flawless","label":"Flawless"},{"value":"excellent","label":"Excellent"},{"value":"good","label":"Good"},{"value":"average","label":"Average"},{"value":"pre_owned","label":"Pre Owned"}]},{"name":"sort","type":"enum","required":false,"description":"Order of results. newest = strictly by date (paid ads at their real date); featured = dubizzle's own order, premium ads first. Anything else is rejected.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"featured","label":"dubizzle's default order (premium ads first)"},{"value":"oldest","label":"Oldest first"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). dubizzle serves at most 10,000 results per search, so page × limit must stay within 10,000.","on_invalid":"reject","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100.","on_invalid":"reject","default":25,"minimum":1,"maximum":100},{"name":"language","type":"enum","required":false,"description":"Language of titles, category names and attribute labels where dubizzle publishes both.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"ar","label":"Arabic"}],"default":"en"},{"name":"country","type":"enum","required":false,"description":"dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates — dubizzle.com (AED)"}],"default":"ae","example":"ae"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, uuid, vertical, title, url, short_url, price (AED, null when not published), currency, price_type (fixed|on_request|no_price), was_price, category, category_slug, location{emirate, emirate_slug, emirate_id, area, area_id, path[], building, lat, lng (businesses/agents, or include_pii)}, listed_at, listed_date, refreshed_at (last bump), seller_type, seller_type_code, seller_name (businesses only), is_premium, is_featured, is_promoted, is_highlighted, image, image_count, discount_percent, verified_user, verified_business, has_phone, has_whatsapp, business_id, condition, condition_label, brand, attributes[]{key, label, value, group}}, count, total_results, reachable_results, page, limit, total_pages, has_more, featured_count, premium_count, category_facets[]{category, count}, emirate_facets[]{emirate, emirate_slug, emirate_id, count}, vertical, currency, query, sort_applied, filters_applied","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"sofa"}},{"name":"cars/search","description":"Search used cars (or rental cars) on dubizzle Motors: make, model, trim, year, kilometres, price in AED, regional specs (GCC, American, European …), body type, transmission, fuel, colour, cylinders, horsepower, warranty, export-only flag, dealer or private seller and dealer name, emirate and area, premium/featured flags and dates. Rental cars add daily, weekly and monthly rates with km allowances. Sort by newest, price, kilometres or model year.","required_params":[],"optional_params":["section","make","model","query","emirate","year_min","year_max","km_min","km_max","price_min","price_max","regional_specs","body_type","transmission","fuel_type","cylinders","exterior_color","steering_side","warranty","target_market","seller_type","sort","page","limit","language","country","max_rotations"],"params":[{"name":"section","type":"enum","required":false,"description":"Used cars for sale (default) or rental cars.","on_invalid":"reject","allowed_values":[{"value":"used","label":"Used cars for sale"},{"value":"rental","label":"Cars for rent"}],"default":"used"},{"name":"make","type":"string","required":false,"description":"Make slug as dubizzle writes it (nissan, mercedes-benz, land-rover). `categories` with vertical motors lists every make and model with counts.","on_invalid":"reject","example":"nissan"},{"name":"model","type":"string","required":false,"description":"Model slug (patrol, land-cruiser); needs make.","on_invalid":"reject","example":"patrol"},{"name":"query","type":"string","required":false,"description":"Keyword. dubizzle's search is typo-tolerant ('iphnoe' finds iPhones).","on_invalid":"reject","example":"iphone 15","aliases":["q","keyword"]},{"name":"emirate","type":"enum","required":false,"description":"One emirate, or all. Al Ain is listed on its own on dubizzle, separately from Abu Dhabi.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All emirates"},{"value":"dubai","label":"Dubai"},{"value":"abu-dhabi","label":"Abu Dhabi"},{"value":"sharjah","label":"Sharjah"},{"value":"ajman","label":"Ajman"},{"value":"ras-al-khaimah","label":"Ras Al Khaimah"},{"value":"umm-al-quwain","label":"Umm Al Quwain"},{"value":"fujairah","label":"Fujairah"},{"value":"al-ain","label":"Al Ain"}],"default":"all","example":"dubai","aliases":["city"]},{"name":"year_min","type":"integer","required":false,"description":"Earliest model year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest model year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"km_min","type":"integer","required":false,"description":"Lowest kilometres.","on_invalid":"reject","minimum":0},{"name":"km_max","type":"integer","required":false,"description":"Highest kilometres.","on_invalid":"reject","minimum":0},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in AED.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in AED.","on_invalid":"reject","minimum":0},{"name":"regional_specs","type":"enum","required":false,"description":"The market the car was built for (GCC specs are the UAE's own).","on_invalid":"reject","allowed_values":[{"value":"gcc","label":"GCC Specs"},{"value":"american","label":"American Specs"},{"value":"european","label":"European Specs"},{"value":"japanese","label":"Japanese Specs"},{"value":"chinese","label":"Chinese Specs"},{"value":"korean","label":"Korean Specs"},{"value":"canadian","label":"Canadian Specs"},{"value":"other","label":"Other"}]},{"name":"body_type","type":"enum","required":false,"description":"Body type.","on_invalid":"reject","allowed_values":[{"value":"suv","label":"SUV"},{"value":"sedan","label":"Sedan"},{"value":"coupe","label":"Coupe"},{"value":"hatchback","label":"Hatchback"},{"value":"pickup_truck","label":"Pick Up Truck"},{"value":"van","label":"Van"},{"value":"soft_top_convertible","label":"Soft Top Convertible"},{"value":"hard_top_convertible","label":"Hard Top Convertible"},{"value":"crossover","label":"Crossover"},{"value":"sports_car","label":"Sports Car"},{"value":"wagon","label":"Wagon"},{"value":"utility_truck","label":"Utility Truck"},{"value":"other","label":"Other"}]},{"name":"transmission","type":"enum","required":false,"description":"Gearbox.","on_invalid":"reject","allowed_values":[{"value":"automatic","label":"Automatic Transmission"},{"value":"manual","label":"Manual Transmission"}]},{"name":"fuel_type","type":"enum","required":false,"description":"Fuel.","on_invalid":"reject","allowed_values":[{"value":"petrol","label":"Petrol"},{"value":"diesel","label":"Diesel"},{"value":"hybrid","label":"Hybrid"},{"value":"plug_in_hybrid","label":"Plug-in Hybrid"},{"value":"electric","label":"Electric"}]},{"name":"cylinders","type":"enum","required":false,"description":"Number of cylinders.","on_invalid":"reject","allowed_values":[{"value":"3","label":"3"},{"value":"4","label":"4"},{"value":"5","label":"5"},{"value":"6","label":"6"},{"value":"8","label":"8"},{"value":"10","label":"10"},{"value":"12","label":"12"}]},{"name":"exterior_color","type":"enum","required":false,"description":"Exterior colour.","on_invalid":"reject","allowed_values":[{"value":"white","label":"White"},{"value":"black","label":"Black"},{"value":"grey","label":"Grey"},{"value":"silver","label":"Silver"},{"value":"blue","label":"Blue"},{"value":"red","label":"Red"},{"value":"green","label":"Green"},{"value":"gold","label":"Gold"},{"value":"brown","label":"Brown"},{"value":"maroon","label":"Maroon"},{"value":"beige","label":"Beige"},{"value":"orange","label":"Orange"},{"value":"yellow","label":"Yellow"},{"value":"burgundy","label":"Burgundy"},{"value":"bronze","label":"Bronze"},{"value":"purple","label":"Purple"},{"value":"pink","label":"Pink"},{"value":"teal","label":"Teal"},{"value":"other","label":"Other Color"}]},{"name":"steering_side","type":"enum","required":false,"description":"Left- or right-hand drive.","on_invalid":"reject","allowed_values":[{"value":"left","label":"Left Hand"},{"value":"right","label":"Right Hand"}]},{"name":"warranty","type":"enum","required":false,"description":"Whether the car is sold with a warranty.","on_invalid":"reject","allowed_values":[{"value":"yes","label":"Yes"},{"value":"no","label":"No"},{"value":"does_not_apply","label":"Does not apply"}]},{"name":"target_market","type":"enum","required":false,"description":"Export-only cars cannot be registered in the UAE.","on_invalid":"reject","allowed_values":[{"value":"uae","label":"UAE (can be exported)"},{"value":"export_only","label":"Export only"}]},{"name":"seller_type","type":"enum","required":false,"description":"Dealers or private owners.","on_invalid":"reject","allowed_values":[{"value":"dealer","label":"Dealers and showrooms"},{"value":"private","label":"Private owners"}]},{"name":"sort","type":"enum","required":false,"description":"Order of results. newest = strictly by date (paid ads at their real date); featured = dubizzle's own order, premium ads first. Anything else is rejected.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"featured","label":"dubizzle's default order (premium ads first)"},{"value":"oldest","label":"Oldest first"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"km_asc","label":"Lowest kilometres first"},{"value":"km_desc","label":"Highest kilometres first"},{"value":"year_desc","label":"Newest model year first"},{"value":"year_asc","label":"Oldest model year first"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). dubizzle serves at most 10,000 results per search, so page × limit must stay within 10,000.","on_invalid":"reject","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100.","on_invalid":"reject","default":25,"minimum":1,"maximum":100},{"name":"language","type":"enum","required":false,"description":"Language of titles, category names and attribute labels where dubizzle publishes both.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"ar","label":"Arabic"}],"default":"en"},{"name":"country","type":"enum","required":false,"description":"dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates — dubizzle.com (AED)"}],"default":"ae","example":"ae"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, uuid, vertical, title, url, short_url, price (AED, null when not published), currency, price_type (fixed|on_request|no_price), was_price, category, category_slug, location{emirate, emirate_slug, emirate_id, area, area_id, path[], building, lat, lng (businesses/agents, or include_pii)}, listed_at, listed_date, refreshed_at (last bump), seller_type, seller_type_code, seller_name (businesses only), is_premium, is_featured, is_promoted, is_highlighted, image, image_count, price_period (day for rentals), discount_percent, section, make, model, trim, year, kilometers, regional_specs, body_type, transmission, fuel_type, exterior_color, interior_color, doors, seating_capacity, cylinders, horsepower, engine_capacity, steering_side, warranty, target_market, rental_prices[]{period, price, allowed_km, extra_km_charge}, verified_user, verified_business, has_phone, has_whatsapp, business_id, attributes[]}, count, total_results, reachable_results, page, limit, total_pages, has_more, featured_count, premium_count, category_facets[], emirate_facets[], vertical, currency, query, sort_applied, filters_applied","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"nissan","model":"patrol"}},{"name":"real_estate/search","description":"Search property for sale or for rent on dubizzle: residential, commercial, land, multiple units, rooms and short-term rentals. Price in AED with the rent period normalised (per year and per month) and the cheque schedule kept apart, bedrooms (studio flagged), bathrooms, size in sqft and sqm, furnishing, ready or off-plan, agency and agent, verification state, featured/premium flags, emirate, community, sub-community, building and coordinates.","required_params":[],"optional_params":["purpose","property_type","unit_type","category","query","emirate","price_min","price_max","bedrooms_min","bedrooms_max","bathrooms_min","bathrooms_max","size_min","size_max","furnished","completion_status","listed_by","verified_only","area_id","building_id","sort","page","limit","language","country","max_rotations"],"params":[{"name":"purpose","type":"enum","required":false,"description":"For rent (default) or for sale.","on_invalid":"reject","allowed_values":[{"value":"rent","label":"For rent"},{"value":"sale","label":"For sale"}],"default":"rent"},{"name":"property_type","type":"enum","required":false,"description":"Property type. land and multiple_units exist for sale only; rooms and short_term for rent only.","on_invalid":"reject","allowed_values":[{"value":"residential","label":"Residential"},{"value":"commercial","label":"Commercial"},{"value":"land","label":"Land (sale)"},{"value":"multiple_units","label":"Multiple units (sale)"},{"value":"rooms","label":"Rooms for rent / flatmates (rent)"},{"value":"short_term","label":"Short-term daily rentals (rent)"}],"default":"residential"},{"name":"unit_type","type":"enum","required":false,"description":"Residential unit type.","on_invalid":"reject","allowed_values":[{"value":"apartment","label":"Apartment"},{"value":"villa","label":"Villa"},{"value":"townhouse","label":"Townhouse"},{"value":"penthouse","label":"Penthouse"},{"value":"hotel_apartment","label":"Hotel Apartment"},{"value":"villa_compound","label":"Villa Compound"},{"value":"residential_building","label":"Residential Building"},{"value":"residential_floor","label":"Residential Floor"}]},{"name":"category","type":"string","required":false,"description":"Any property category slug path from `categories` (overrides unit_type).","on_invalid":"reject","example":"property-for-rent/commercial/office"},{"name":"query","type":"string","required":false,"description":"Keyword. dubizzle's search is typo-tolerant ('iphnoe' finds iPhones).","on_invalid":"reject","example":"iphone 15","aliases":["q","keyword"]},{"name":"emirate","type":"enum","required":false,"description":"One emirate, or all. Al Ain is listed on its own on dubizzle, separately from Abu Dhabi.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All emirates"},{"value":"dubai","label":"Dubai"},{"value":"abu-dhabi","label":"Abu Dhabi"},{"value":"sharjah","label":"Sharjah"},{"value":"ajman","label":"Ajman"},{"value":"ras-al-khaimah","label":"Ras Al Khaimah"},{"value":"umm-al-quwain","label":"Umm Al Quwain"},{"value":"fujairah","label":"Fujairah"},{"value":"al-ain","label":"Al Ain"}],"default":"all","example":"dubai","aliases":["city"]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in AED.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in AED.","on_invalid":"reject","minimum":0},{"name":"bedrooms_min","type":"integer","required":false,"description":"Fewest bedrooms (0 = studio).","on_invalid":"reject","minimum":0,"maximum":20},{"name":"bedrooms_max","type":"integer","required":false,"description":"Most bedrooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"bathrooms_min","type":"integer","required":false,"description":"Fewest bathrooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"bathrooms_max","type":"integer","required":false,"description":"Most bathrooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"size_min","type":"integer","required":false,"description":"Smallest size, sqft.","on_invalid":"reject","minimum":0},{"name":"size_max","type":"integer","required":false,"description":"Largest size, sqft.","on_invalid":"reject","minimum":0},{"name":"furnished","type":"boolean","required":false,"description":"Only furnished (true) or unfurnished (false).","on_invalid":"reject"},{"name":"completion_status","type":"enum","required":false,"description":"Ready or off-plan (sale only).","on_invalid":"reject","allowed_values":[{"value":"ready","label":"Ready / completed"},{"value":"off_plan","label":"Off-plan"}]},{"name":"listed_by","type":"enum","required":false,"description":"Listed by an agent or directly by the landlord.","on_invalid":"reject","allowed_values":[{"value":"agent","label":"Agents"},{"value":"landlord","label":"Landlords / owners"}]},{"name":"verified_only","type":"boolean","required":false,"description":"Only listings dubizzle marks as verified.","on_invalid":"reject"},{"name":"area_id","type":"integer","required":false,"description":"Community id from a row's location.area_id or sub_area_id.","on_invalid":"reject","minimum":1},{"name":"building_id","type":"integer","required":false,"description":"Building id from a row's location.building_id.","on_invalid":"reject","minimum":1},{"name":"sort","type":"enum","required":false,"description":"Order of results. newest = strictly by date (paid ads at their real date); featured = dubizzle's own order, premium ads first. Anything else is rejected.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"verified_first","label":"Verified listings first"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). dubizzle serves at most 10,000 results per search, so page × limit must stay within 10,000.","on_invalid":"reject","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Results per page, 1-100.","on_invalid":"reject","default":25,"minimum":1,"maximum":100},{"name":"language","type":"enum","required":false,"description":"Language of titles, category names and attribute labels where dubizzle publishes both.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"ar","label":"Arabic"}],"default":"en"},{"name":"country","type":"enum","required":false,"description":"dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates — dubizzle.com (AED)"}],"default":"ae","example":"ae"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, uuid, vertical, title, url, short_url, price (AED, null when not published), currency, price_type (fixed|on_request|no_price), was_price, category, category_slug, location{emirate, emirate_slug, emirate_id, area, area_id, path[], building, lat, lng (businesses/agents, or include_pii)}, listed_at, listed_date, refreshed_at (last bump), seller_type, seller_type_code, seller_name (businesses only), is_premium, is_featured, is_promoted, is_highlighted, image, image_count, purpose, property_type, rent_frequency (yearly|monthly|daily), price_per_year, price_per_month, rent_payment_schedule (cheques: yearly|quarterly|monthly|bi_yearly), bedrooms, is_studio, bathrooms, size_sqft, size_sqm, plot_area_sqft, furnished, completion_status (ready|off_plan), agency{id, name, tier}, agent{id, name}, reference, verification, is_verified, has_whatsapp, location{…, sub_area, sub_area_id, building_id}}, count, total_results, reachable_results, page, limit, total_pages, has_more, featured_count, premium_count, category_facets[], emirate_facets[], vertical, currency, query, sort_applied, filters_applied","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"purpose":"rent","emirate":"dubai"}},{"name":"listing","description":"The full dubizzle listing by uuid, URL, or numeric id with its vertical: every search field plus the description, every image, all attributes, the seller (dealer, business or agency name, verified flags, member since, active listings; private sellers stay anonymous), expiry date, variants for shop listings; property adds amenities, developer, handover year, agency fee and community fee.","required_params":[],"optional_params":["listing_id","uuid","url","vertical","include_description","language","country","max_rotations"],"params":[{"name":"listing_id","type":"string","required":false,"description":"Numeric listing id from a search row. Ids repeat across dubizzle sections, so pass vertical with it.","on_invalid":"reject","example":"16978413","aliases":["id"]},{"name":"uuid","type":"string","required":false,"description":"The row's uuid.","on_invalid":"reject","example":"c1176220504d44869d6b4ba8157b71db"},{"name":"url","type":"string","required":false,"description":"A dubizzle listing URL (any emirate subdomain, English or Arabic).","on_invalid":"reject"},{"name":"vertical","type":"enum","required":false,"description":"The row's vertical; needed with a numeric listing_id.","on_invalid":"reject","allowed_values":[{"value":"motors","label":"Motors"},{"value":"classified","label":"Classifieds"},{"value":"property","label":"Property"}]},{"name":"include_description","type":"boolean","required":false,"description":"Motors and Classifieds descriptions need one extra request; set false to skip it.","on_invalid":"reject","default":true},{"name":"language","type":"enum","required":false,"description":"Language of titles, category names and attribute labels where dubizzle publishes both.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"ar","label":"Arabic"}],"default":"en"},{"name":"country","type":"enum","required":false,"description":"dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates — dubizzle.com (AED)"}],"default":"ae","example":"ae"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{…every search row field, description, description_status (ok|not_published|not_requested|unavailable|gone), images[], attributes[], seller{type, code, name, business_id, logo_url, verified_business, verified_user, phone_verified, member_since, active_listings, rating, review_count} (property: seller{type, code, name, agency, agent}), expires_at, variants[]{attribute, value, listing_id, price}, amenities[], handover_year, developer, agency_fee, annual_community_fee, updated_at, has_video, has_virtual_tour}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"categories","description":"dubizzle's live category tree for one vertical with listing counts: Motors down to make and model, Classifieds down to sub-category, Property for sale or rent by type. Each node carries the slug path to pass as category (or make/model) to search. Optionally counted for one emirate or keyword.","required_params":["vertical"],"optional_params":["vertical","emirate","query","country","max_rotations"],"params":[{"name":"vertical","type":"enum","required":true,"description":"Which part of dubizzle.","on_invalid":"reject","allowed_values":[{"value":"motors","label":"Motors"},{"value":"classified","label":"Classifieds"},{"value":"property-for-sale","label":"Property for sale"},{"value":"property-for-rent","label":"Property for rent"}],"example":"motors"},{"name":"emirate","type":"enum","required":false,"description":"One emirate, or all. Al Ain is listed on its own on dubizzle, separately from Abu Dhabi.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All emirates"},{"value":"dubai","label":"Dubai"},{"value":"abu-dhabi","label":"Abu Dhabi"},{"value":"sharjah","label":"Sharjah"},{"value":"ajman","label":"Ajman"},{"value":"ras-al-khaimah","label":"Ras Al Khaimah"},{"value":"umm-al-quwain","label":"Umm Al Quwain"},{"value":"fujairah","label":"Fujairah"},{"value":"al-ain","label":"Al Ain"}],"default":"all","example":"dubai","aliases":["city"]},{"name":"query","type":"string","required":false,"description":"Optional keyword: counts are then for it.","on_invalid":"reject","aliases":["q"]},{"name":"country","type":"enum","required":false,"description":"dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates — dubizzle.com (AED)"}],"default":"ae","example":"ae"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"categories[]{category, count, level, children[]}, count, total_results, vertical, emirate, query","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"suggest","description":"dubizzle's own search suggestions for what a buyer has typed, most popular first, each with how many live listings match and in which section and category.","required_params":["query"],"optional_params":["query","limit","country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the buyer typed.","on_invalid":"reject","example":"iph","aliases":["q"]},{"name":"limit","type":"integer","required":false,"description":"How many suggestions (1-50).","on_invalid":"reject","default":10,"minimum":1,"maximum":50},{"name":"country","type":"enum","required":false,"description":"dubizzle.com serves the UAE only. dubizzle Egypt, Saudi Arabia, Qatar, Bahrain, Kuwait, Oman and Lebanon are a different platform and are not served.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates — dubizzle.com (AED)"}],"default":"ae","example":"ae"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"suggestions[]{query, popularity, listings_count, sections[]{section, count}, category}, count, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"sofa"}}]},{"name":"ebay","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"eBay API — search active listings, research sold prices, and fetch full item detail across 13 eBay marketplaces (no account required)","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/ebay/v1","spec_available":true,"actions":[{"name":"search","description":"active-listing search by `query` -> results[]{item_id,title,price{value,currency},condition,buying_format,shipping,location,image,url,in_stock,stock_hint?,sold_count?,catalog_rating?}. Filters: domain(com/co.uk/de/...), page, max_results(<=240/page), sort(best_match|newly_listed|ending_soonest|price_low|price_high), condition(new|used|refurbished|open_box|for_parts), category, buy_it_now, auction. seller is item-page-only.","required_params":["query"],"optional_params":["domain","page","max_results","sort","condition","category","buy_it_now","auction","price_min","price_max","free_shipping","returns_accepted","best_offer","location","pickup_postcode","pickup_distance"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for (item keywords).","on_invalid":"reject","example":"iphone 13 pro","aliases":["q"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"reject","allowed_values":[{"value":"best_match","label":"Best match"},{"value":"newly_listed","label":"Newly listed"},{"value":"ending_soonest","label":"Ending soonest"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"price_asc","label":"Price: low to high (alias)"},{"value":"price_desc","label":"Price: high to low (alias)"}],"default":"best_match"},{"name":"condition","type":"enum","required":false,"description":"Only items in this condition (empty = all conditions).","on_invalid":"reject","allowed_values":[{"value":"new","label":"Brand new"},{"value":"open_box","label":"Open box"},{"value":"refurbished","label":"Refurbished"},{"value":"used","label":"Used / pre-owned"},{"value":"for_parts","label":"For parts or not working"}]},{"name":"category","type":"string","required":false,"description":"eBay category ID to narrow results — the number in an eBay category URL (e.g. 9355 = Cell Phones & Smartphones). Use the `categories` action to look an ID up by name. Empty = all.","on_invalid":"ignore","example":"9355","aliases":["category_id"]},{"name":"buy_it_now","type":"boolean","required":false,"description":"Only fixed-price (Buy It Now) listings.","on_invalid":"ignore","default":false},{"name":"auction","type":"boolean","required":false,"description":"Only auction listings.","on_invalid":"ignore","default":false},{"name":"price_min","type":"number","required":false,"description":"Minimum price (eBay _udlo), in the marketplace's currency.","on_invalid":"ignore","example":"100","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price (eBay _udhi), in the marketplace's currency.","on_invalid":"ignore","example":"500","minimum":0},{"name":"free_shipping","type":"boolean","required":false,"description":"Only listings with free shipping.","on_invalid":"ignore","default":false},{"name":"returns_accepted","type":"boolean","required":false,"description":"Only listings that accept returns.","on_invalid":"ignore","default":false},{"name":"best_offer","type":"boolean","required":false,"description":"Only listings that accept Best Offers.","on_invalid":"ignore","default":false},{"name":"location","type":"enum","required":false,"description":"Restrict by where the item is located. The choices follow the site's own Item location filter, so they depend on `domain`: `domestic` keeps only items in the site's home country (US Only on ebay.com, UK Only on ebay.co.uk). `uk` is the same as domestic and needs domain co.uk. The regional choice is North America on ebay.com and European Union on ebay.co.uk.","on_invalid":"ignore","allowed_values":[{"value":"domestic","label":"Home country of this eBay site only (US on ebay.com, UK on ebay.co.uk)"},{"value":"us","label":"Same as domestic (US Only on ebay.com)"},{"value":"uk","label":"UK Only (domain co.uk)"},{"value":"worldwide","label":"Available worldwide"},{"value":"north_america","label":"Regional: North America on ebay.com"},{"value":"european_union","label":"Regional: European Union on ebay.co.uk"}],"aliases":["item_location"]},{"name":"pickup_postcode","type":"string","required":false,"description":"Only listings available for collection in person near this UK postcode (eBay's 'Collection in person within' filter). Needs domain co.uk. Combine with pickup_distance.","on_invalid":"reject","example":"SW1A 1AA","aliases":["postcode"]},{"name":"pickup_distance","type":"integer","required":false,"description":"Collection radius in miles around pickup_postcode (default 25). eBay offers 10, 25, 50, 100, 200 and 500; other values act as the next option up (7 returned exactly the 10-mile results). Only used together with pickup_postcode.","on_invalid":"reject","example":25,"minimum":1,"maximum":500},{"name":"domain","type":"enum","required":false,"description":"Which eBay site to query (sets currency and local listings). Dropdown = the 13 live-verified sites; other eBay country sites (e.g. com.sg, com.hk) are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"ebay.com — United States"},{"value":"co.uk","label":"ebay.co.uk — United Kingdom"},{"value":"de","label":"ebay.de — Germany"},{"value":"com.au","label":"ebay.com.au — Australia"},{"value":"ca","label":"ebay.ca — Canada"},{"value":"fr","label":"ebay.fr — France"},{"value":"it","label":"ebay.it — Italy"},{"value":"es","label":"ebay.es — Spain"},{"value":"nl","label":"ebay.nl — Netherlands"},{"value":"at","label":"ebay.at — Austria"},{"value":"ch","label":"ebay.ch — Switzerland"},{"value":"ie","label":"ebay.ie — Ireland"},{"value":"pl","label":"ebay.pl — Poland"}],"default":"com","aliases":["marketplace"]},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3…). Measured ceiling (2026-08-07, `iphone 13 pro`): pages 1–450 each return a full page of distinct items — no page repeats an earlier one — and page 470 returns nothing. At 240 results per page that is roughly 108,000 results deep, far more than any single query needs. Page until `meta.pagination.has_more` is false rather than probing for the end.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":450},{"name":"max_results","type":"integer","required":false,"description":"How many results to return per page (1–240). 240 is eBay's own hard ceiling, measured: 60/120/200/240 are all served exactly, and asking for 300 or 500 does NOT get you more — eBay serves about 250 and stops. Use `page` to go beyond 240; larger values are capped at 240.","on_invalid":"ignore","default":60,"example":60,"minimum":1,"maximum":240}],"returns":"results[]{item_id, title, price{value,currency}, condition, buying_format, shipping, location, image, url, in_stock (true on every active card: eBay search lists only buyable listings), stock_hint? ('Last one', '3 left')} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone 13 pro"}},{"name":"item_detail","description":"Full eBay item detail by item_id or listing URL: title, price, list price, currency, condition, availability, brand, model, MPN, images, category path, item specifics, seller (name, feedback score, review count), shipping terms, return policy, PLUS auction fields (bids, current_bid, time_left, end_time), watchers, quantity_available/quantity_sold, best_offer flag, and multi-variation SKUs (variations[]{dimension, values[]{value, out_of_stock}}). Set include_description=1 to inline the full seller description text.","required_params":[],"optional_params":["item_id","url","domain","include_description"],"params":[{"name":"item_id","type":"string","required":false,"description":"eBay item number — the digits in the listing URL after /itm/. Provide item_id OR url (one of the two is required).","on_invalid":"reject","example":"287070621317","aliases":["id","itemId"]},{"name":"url","type":"string","required":false,"description":"Full eBay listing URL — alternative to item_id.","on_invalid":"reject","example":"https://www.ebay.com/itm/287070621317","aliases":["item_url"]},{"name":"include_description","type":"boolean","required":false,"description":"Also fetch and inline the full seller description text (one extra request; off by default for speed).","on_invalid":"ignore","default":false},{"name":"domain","type":"enum","required":false,"description":"Which eBay site to query (sets currency and local listings). Dropdown = the 13 live-verified sites; other eBay country sites (e.g. com.sg, com.hk) are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"ebay.com — United States"},{"value":"co.uk","label":"ebay.co.uk — United Kingdom"},{"value":"de","label":"ebay.de — Germany"},{"value":"com.au","label":"ebay.com.au — Australia"},{"value":"ca","label":"ebay.ca — Canada"},{"value":"fr","label":"ebay.fr — France"},{"value":"it","label":"ebay.it — Italy"},{"value":"es","label":"ebay.es — Spain"},{"value":"nl","label":"ebay.nl — Netherlands"},{"value":"at","label":"ebay.at — Austria"},{"value":"ch","label":"ebay.ch — Switzerland"},{"value":"ie","label":"ebay.ie — Ireland"},{"value":"pl","label":"ebay.pl — Poland"}],"default":"com","aliases":["marketplace"]}],"returns":"item{item_id, title, price{value,currency}, list_price, condition, availability, brand, model, mpn, images[], category_path[], item_specifics{}, seller{name, feedback_pct, feedback_count}, shipping, return_policy, url, bids?, current_bid?, time_left?, end_time?, watchers?, quantity_available?, quantity_sold?, best_offer, variations?[], description?}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"item_id":"287070621317"}},{"name":"items_batch","description":"Look up MANY eBay listings in ONE call by item number — up to 40 per request → the same full record `item_detail` returns for each one (title, price, condition, brand/model/MPN, images, category path, item specifics, seller reputation, shipping terms, return policy, auction fields, quantities). Built for enriching a price list or a competitor's catalogue in one round trip instead of one item at a time. COST, stated plainly so you can budget it: eBay publishes no batched item endpoint — every listing is its own page — so this costs ONE UPSTREAM REQUEST PER ITEM ID, exactly as if you had called item_detail N times, and it is priced that way. What you save is wall-clock, not requests: the fetches run concurrently, measured at 25.6s sequential vs 4.1s for 8 ids (6.2x). `meta.upstream_calls` always reports the true number. Anything eBay does not resolve comes back in `not_found` rather than being silently dropped, so a batch of 40 can never hide which one went missing. If you only need card-level fields (item_id, title, price, condition, shipping, image, url) there is a genuinely cheaper route that costs ONE upstream call: `search` with query `(id1,id2,id3)` — eBay's own OR syntax — measured to resolve 6 ids per call (a 7th is dropped) and to return no item specifics, seller or return policy.","required_params":["item_ids"],"optional_params":["domain"],"params":[{"name":"item_ids","type":"array","required":true,"description":"eBay item numbers to look up — up to 15 per call. The digits in a listing URL after /itm/. Accepts a list or a comma-separated string. Each id costs one upstream request. Ids eBay does not resolve are returned in `not_found` rather than dropped.","on_invalid":"reject","example":["287070621317","356789012345","195432109876"],"aliases":["item_id","ids","items"]},{"name":"domain","type":"enum","required":false,"description":"Which eBay site to query (sets currency and local listings). Dropdown = the 13 live-verified sites; other eBay country sites (e.g. com.sg, com.hk) are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"ebay.com — United States"},{"value":"co.uk","label":"ebay.co.uk — United Kingdom"},{"value":"de","label":"ebay.de — Germany"},{"value":"com.au","label":"ebay.com.au — Australia"},{"value":"ca","label":"ebay.ca — Canada"},{"value":"fr","label":"ebay.fr — France"},{"value":"it","label":"ebay.it — Italy"},{"value":"es","label":"ebay.es — Spain"},{"value":"nl","label":"ebay.nl — Netherlands"},{"value":"at","label":"ebay.at — Austria"},{"value":"ch","label":"ebay.ch — Switzerland"},{"value":"ie","label":"ebay.ie — Ireland"},{"value":"pl","label":"ebay.pl — Poland"}],"default":"com","aliases":["marketplace"]}],"returns":"items[]{item_id, title, price{value,currency}, list_price, condition, availability, brand, model, mpn, images[], category_path[], item_specifics{}, seller{name, feedback_pct, feedback_count}, shipping, return_policy, url, bids?, current_bid?, end_time?, watchers?, quantity_available?, quantity_sold?, best_offer, description_url} + not_found[] (item ids eBay did not resolve — ended, removed or invalid) + meta.upstream_calls (= the number of ids you sent; this action is billed per id, not per call)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"per_unit","credits":2,"per":1,"min":2},"example_params":null},{"name":"seller_items","description":"All active listings in a seller's storefront by `seller` username (eBay _ssn) -> results[]{item_id,title,price{value,currency},condition,buying_format,shipping,location,image,url}. Same card shape + filters/pagination as `search`. Use to scan a competitor's full catalog. Page-native paging via meta.pagination.","required_params":["seller"],"optional_params":["domain","page","max_results","sort","condition","category","price_min","price_max","free_shipping","returns_accepted","best_offer","location","pickup_postcode","pickup_distance","buy_it_now","auction"],"params":[{"name":"seller","type":"string","required":true,"description":"eBay seller username (store/usr name) — the handle in /usr/{seller} or the 'Sold by' link on a listing.","on_invalid":"reject","example":"musicmagpie","aliases":["seller_name","_ssn"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"best_match","label":"Best match"},{"value":"newly_listed","label":"Newly listed"},{"value":"ending_soonest","label":"Ending soonest"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"}],"default":"best_match"},{"name":"condition","type":"enum","required":false,"description":"Only items in this condition (empty = all conditions).","on_invalid":"reject","allowed_values":[{"value":"new","label":"Brand new"},{"value":"open_box","label":"Open box"},{"value":"refurbished","label":"Refurbished"},{"value":"used","label":"Used / pre-owned"},{"value":"for_parts","label":"For parts or not working"}]},{"name":"category","type":"string","required":false,"description":"eBay category ID to narrow results — the number in an eBay category URL (e.g. 9355 = Cell Phones & Smartphones). Use the `categories` action to look an ID up by name. Empty = all.","on_invalid":"ignore","example":"9355","aliases":["category_id"]},{"name":"price_min","type":"number","required":false,"description":"Minimum price (eBay _udlo), in the marketplace's currency.","on_invalid":"ignore","example":"100","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price (eBay _udhi), in the marketplace's currency.","on_invalid":"ignore","example":"500","minimum":0},{"name":"free_shipping","type":"boolean","required":false,"description":"Only listings with free shipping.","on_invalid":"ignore","default":false},{"name":"returns_accepted","type":"boolean","required":false,"description":"Only listings that accept returns.","on_invalid":"ignore","default":false},{"name":"best_offer","type":"boolean","required":false,"description":"Only listings that accept Best Offers.","on_invalid":"ignore","default":false},{"name":"location","type":"enum","required":false,"description":"Restrict by where the item is located. The choices follow the site's own Item location filter, so they depend on `domain`: `domestic` keeps only items in the site's home country (US Only on ebay.com, UK Only on ebay.co.uk). `uk` is the same as domestic and needs domain co.uk. The regional choice is North America on ebay.com and European Union on ebay.co.uk.","on_invalid":"ignore","allowed_values":[{"value":"domestic","label":"Home country of this eBay site only (US on ebay.com, UK on ebay.co.uk)"},{"value":"us","label":"Same as domestic (US Only on ebay.com)"},{"value":"uk","label":"UK Only (domain co.uk)"},{"value":"worldwide","label":"Available worldwide"},{"value":"north_america","label":"Regional: North America on ebay.com"},{"value":"european_union","label":"Regional: European Union on ebay.co.uk"}],"aliases":["item_location"]},{"name":"pickup_postcode","type":"string","required":false,"description":"Only listings available for collection in person near this UK postcode (eBay's 'Collection in person within' filter). Needs domain co.uk. Combine with pickup_distance.","on_invalid":"reject","example":"SW1A 1AA","aliases":["postcode"]},{"name":"pickup_distance","type":"integer","required":false,"description":"Collection radius in miles around pickup_postcode (default 25). eBay offers 10, 25, 50, 100, 200 and 500; other values act as the next option up (7 returned exactly the 10-mile results). Only used together with pickup_postcode.","on_invalid":"reject","example":25,"minimum":1,"maximum":500},{"name":"domain","type":"enum","required":false,"description":"Which eBay site to query (sets currency and local listings). Dropdown = the 13 live-verified sites; other eBay country sites (e.g. com.sg, com.hk) are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"ebay.com — United States"},{"value":"co.uk","label":"ebay.co.uk — United Kingdom"},{"value":"de","label":"ebay.de — Germany"},{"value":"com.au","label":"ebay.com.au — Australia"},{"value":"ca","label":"ebay.ca — Canada"},{"value":"fr","label":"ebay.fr — France"},{"value":"it","label":"ebay.it — Italy"},{"value":"es","label":"ebay.es — Spain"},{"value":"nl","label":"ebay.nl — Netherlands"},{"value":"at","label":"ebay.at — Austria"},{"value":"ch","label":"ebay.ch — Switzerland"},{"value":"ie","label":"ebay.ie — Ireland"},{"value":"pl","label":"ebay.pl — Poland"}],"default":"com","aliases":["marketplace"]},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3…). Measured ceiling (2026-08-07, `iphone 13 pro`): pages 1–450 each return a full page of distinct items — no page repeats an earlier one — and page 470 returns nothing. At 240 results per page that is roughly 108,000 results deep, far more than any single query needs. Page until `meta.pagination.has_more` is false rather than probing for the end.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":450},{"name":"max_results","type":"integer","required":false,"description":"How many results to return per page (1–240). 240 is eBay's own hard ceiling, measured: 60/120/200/240 are all served exactly, and asking for 300 or 500 does NOT get you more — eBay serves about 250 and stops. Use `page` to go beyond 240; larger values are capped at 240.","on_invalid":"ignore","default":60,"example":60,"minimum":1,"maximum":240}],"returns":"results[]{item_id, title, price{value,currency}, condition, buying_format, shipping, location, image, url, in_stock (true on every active card: eBay search lists only buyable listings), stock_hint? ('Last one', '3 left')} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"seller_profile","description":"Seller reputation by `seller` username -> seller_profile{store_name, feedback_score, feedback_positive_pct, positive_pct_12mo, items_sold_display, followers_display, member_since, location, business_seller, top_rated, feedback_ratings{positive/neutral/negative:{m1,m6,m12}}}. From the public storefront + feedback pages (logged-out, no account).","required_params":["seller"],"optional_params":["domain"],"params":[{"name":"seller","type":"string","required":true,"description":"eBay seller username (store/usr name) — the handle in /usr/{seller} or the 'Sold by' link on a listing.","on_invalid":"reject","example":"musicmagpie","aliases":["seller_name","_ssn"]},{"name":"domain","type":"enum","required":false,"description":"Which eBay site to query (sets currency and local listings). Dropdown = the 13 live-verified sites; other eBay country sites (e.g. com.sg, com.hk) are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"ebay.com — United States"},{"value":"co.uk","label":"ebay.co.uk — United Kingdom"},{"value":"de","label":"ebay.de — Germany"},{"value":"com.au","label":"ebay.com.au — Australia"},{"value":"ca","label":"ebay.ca — Canada"},{"value":"fr","label":"ebay.fr — France"},{"value":"it","label":"ebay.it — Italy"},{"value":"es","label":"ebay.es — Spain"},{"value":"nl","label":"ebay.nl — Netherlands"},{"value":"at","label":"ebay.at — Austria"},{"value":"ch","label":"ebay.ch — Switzerland"},{"value":"ie","label":"ebay.ie — Ireland"},{"value":"pl","label":"ebay.pl — Poland"}],"default":"com","aliases":["marketplace"]}],"returns":"seller_profile{store_name, feedback_score, feedback_positive_pct, positive_pct_12mo, items_sold_display, followers_display, member_since, location, business_seller, top_rated, feedback_ratings{}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"deals","description":"eBay Daily Deals grid (/deals) -> results[]{item_id,title,price{value,currency},was_price{value,currency},shipping,deal_badge,image,url}. Current promoted discounts site-wide for the marketplace. No query needed.","required_params":[],"optional_params":["domain","max_results"],"params":[{"name":"domain","type":"enum","required":false,"description":"Which eBay site to query (sets currency and local listings). Dropdown = the 13 live-verified sites; other eBay country sites (e.g. com.sg, com.hk) are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"ebay.com — United States"},{"value":"co.uk","label":"ebay.co.uk — United Kingdom"},{"value":"de","label":"ebay.de — Germany"},{"value":"com.au","label":"ebay.com.au — Australia"},{"value":"ca","label":"ebay.ca — Canada"},{"value":"fr","label":"ebay.fr — France"},{"value":"it","label":"ebay.it — Italy"},{"value":"es","label":"ebay.es — Spain"},{"value":"nl","label":"ebay.nl — Netherlands"},{"value":"at","label":"ebay.at — Austria"},{"value":"ch","label":"ebay.ch — Switzerland"},{"value":"ie","label":"ebay.ie — Ireland"},{"value":"pl","label":"ebay.pl — Poland"}],"default":"com","aliases":["marketplace"]},{"name":"max_results","type":"integer","required":false,"description":"How many results to return per page (1–240). 240 is eBay's own hard ceiling, measured: 60/120/200/240 are all served exactly, and asking for 300 or 500 does NOT get you more — eBay serves about 250 and stops. Use `page` to go beyond 240; larger values are capped at 240.","on_invalid":"ignore","default":60,"example":60,"minimum":1,"maximum":240}],"returns":"results[]{item_id, title, price{value,currency}, was_price{value,currency}, shipping, deal_badge, image, url}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"categories","description":"eBay category tree / ID lookup (/n/all-categories) -> categories[]{category_id,name,slug} + groups[] (top-level departments). Pass `query` to filter by name so you can resolve a category name (e.g. 'cell phones') to the numeric ID used by search's `category` param — no need to know '9355' in advance.","required_params":[],"optional_params":["query","domain","max_results"],"params":[{"name":"query","type":"string","required":false,"description":"Filter categories by name/slug substring (case-insensitive). Empty = the full top-level tree.","on_invalid":"ignore","example":"cell phones","aliases":["q","name"]},{"name":"domain","type":"enum","required":false,"description":"Which eBay site to query (sets currency and local listings). Dropdown = the 13 live-verified sites; other eBay country sites (e.g. com.sg, com.hk) are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"com","label":"ebay.com — United States"},{"value":"co.uk","label":"ebay.co.uk — United Kingdom"},{"value":"de","label":"ebay.de — Germany"},{"value":"com.au","label":"ebay.com.au — Australia"},{"value":"ca","label":"ebay.ca — Canada"},{"value":"fr","label":"ebay.fr — France"},{"value":"it","label":"ebay.it — Italy"},{"value":"es","label":"ebay.es — Spain"},{"value":"nl","label":"ebay.nl — Netherlands"},{"value":"at","label":"ebay.at — Austria"},{"value":"ch","label":"ebay.ch — Switzerland"},{"value":"ie","label":"ebay.ie — Ireland"},{"value":"pl","label":"ebay.pl — Poland"}],"default":"com","aliases":["marketplace"]},{"name":"max_results","type":"integer","required":false,"description":"How many results to return per page (1–240). 240 is eBay's own hard ceiling, measured: 60/120/200/240 are all served exactly, and asking for 300 or 500 does NOT get you more — eBay serves about 250 and stops. Use `page` to go beyond 240; larger values are capped at 240.","on_invalid":"ignore","default":60,"example":60,"minimum":1,"maximum":240}],"returns":"categories[]{category_id, name, slug}, groups[]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"edx","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"edX API scraper — search the edX online-course catalogue by keyword and pull full course/program detail. Search 6,000+ university and industry courses, professional certificates, MicroMasters, XSeries and online degrees from Harvard, MIT, IBM, Google, Stanford and 250+ partners — filter by level, subject, language, partner and product type. Returns title, partner/university, level, languages, duration, effort, price/free-audit status, skills, enrollment count and the full description, what-you'll-learn, prerequisites, syllabus, instructors and the courses inside a program. Browse every partner school and subject. No API key required.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/edx/v1","spec_available":true,"actions":[{"name":"search","description":"Search the edX catalogue by keyword (any topic, skill, tool or course/program title — 'python', 'machine learning', 'data science', 'cybersecurity', 'finance'). Returns a paginated list of result cards: name, url, type (course / program / executive education / degree), partner, level, languages, subjects, duration, effort, price, skills and enrollment. Optional filters: level, type, program_type, language, subject, partner, availability. Page with `page` (20 per page); meta.has_more / meta.total_count tell you how many. Feed a result's slug/url into the detail action.","required_params":["query"],"optional_params":["level","type","program_type","language","subject","partner","availability","page"],"params":[{"name":"query","type":"string","required":true,"description":"What to search edX for — a topic, skill, tool or course/program title ('python', 'machine learning', 'excel', 'cybersecurity', 'project management').","on_invalid":"reject","example":"machine learning","aliases":["q","keyword"]},{"name":"level","type":"string","required":false,"description":"Filter by difficulty: Introductory, Intermediate or Advanced.","on_invalid":"ignore","allowed_values":[{"value":"Introductory","label":"Introductory (beginner)"},{"value":"Intermediate","label":"Intermediate"},{"value":"Advanced","label":"Advanced"}],"example":"Introductory","aliases":["difficulty"]},{"name":"type","type":"string","required":false,"description":"Filter by product type: Course, Program, Executive Education or 2U Degree.","on_invalid":"ignore","allowed_values":[{"value":"Course","label":"Course"},{"value":"Program","label":"Program"},{"value":"Executive Education","label":"Executive Education"},{"value":"2U Degree","label":"Degree"}],"example":"Course","aliases":["product_type"]},{"name":"program_type","type":"string","required":false,"description":"For programs, filter by program type: Professional Certificate, MicroMasters, XSeries, MicroBachelors, Bachelors, Masters, Doctorate, Certificate.","on_invalid":"ignore","allowed_values":[{"value":"Professional Certificate","label":"Professional Certificate"},{"value":"MicroMasters","label":"MicroMasters"},{"value":"XSeries","label":"XSeries"},{"value":"MicroBachelors","label":"MicroBachelors"},{"value":"Bachelors","label":"Bachelors"},{"value":"Masters","label":"Masters"},{"value":"Doctorate","label":"Doctorate"},{"value":"Certificate","label":"Certificate"}],"example":"Professional Certificate"},{"name":"language","type":"string","required":false,"description":"Filter by course language (English, Spanish, French, Italian, Arabic, Portuguese, German, …). Use the subjects/partners-style facet names exactly.","on_invalid":"ignore","example":"English","aliases":["lang"]},{"name":"subject","type":"string","required":false,"description":"Filter by subject area (Computer Science, Business & Management, Data Analysis & Statistics, Engineering, Economics & Finance, …). See the subjects action.","on_invalid":"ignore","example":"Computer Science","aliases":["topic"]},{"name":"partner","type":"string","required":false,"description":"Filter by partner school/company exactly as named (Harvard University, MIT, IBM, Google Cloud, …). See the partners action.","on_invalid":"ignore","example":"Harvard University","aliases":["school"]},{"name":"availability","type":"string","required":false,"description":"Filter by availability: Available now, Upcoming or Archived.","on_invalid":"ignore","allowed_values":[{"value":"Available now","label":"Available now / current"},{"value":"Upcoming","label":"Upcoming"},{"value":"Archived","label":"Archived"}],"example":"Available now"},{"name":"page","type":"integer","required":false,"description":"Result page (20 per page). Page until meta.has_more is false; meta.total_count / meta.total_pages tell you how many.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200}],"returns":"results[]{id, object_id, name, url, slug, type, program_type, partner, partners[], level, languages[], subjects[], availability, weeks_to_complete, min_effort, max_effort, subscription_eligible, recent_enrollment_count, skills[], image, short_description} + meta{page, has_more, next_page, total_count, total_pages}. (Price is on the detail action — edX's catalogue index does not carry per-result prices; audit/free-track status is per course run.)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"python"}},{"name":"detail","description":"Full detail for one edX course OR program by slug or URL. For a course: level, languages, duration, effort, price, enrollment count, full description, what-you'll-learn, overview, prerequisites, syllabus, skills, subjects, partners, instructors (faculty) and course runs (sessions). For a program (professional certificate / MicroMasters / XSeries / degree): the same plus the list of courses inside it. Pass a search result's url or slug.","required_params":[],"optional_params":["slug","url"],"params":[{"name":"slug","type":"string","required":false,"description":"The course/program slug — the path of an edX URL after the domain (a search result's `slug`, e.g. 'learn/python/harvard-university-cs50-s-introduction-to-programming-with-python').","on_invalid":"reject","example":"learn/python/harvard-university-cs50-s-introduction-to-programming-with-python","aliases":["course"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full edX course/program URL (a search result's `url`).","on_invalid":"ignore","example":"https://www.edx.org/learn/python/harvard-university-cs50-s-introduction-to-programming-with-python"}],"returns":"course_or_program{id, name, type, slug, url, level, availability, price{price, currency, free_audit_available, offer_categories[]}, enrollment_count, recent_enrollment_count, weeks_to_complete, description, what_you_will_learn[], overview[], prerequisites[], syllabus, skills[], subjects[], partners[]{name, key, slug, logo}, staff[], course_runs[], courses[] (programs only), programs[], image, video}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"learn/python/harvard-university-cs50-s-introduction-to-programming-with-python"}},{"name":"partners","description":"Browse every school, university and company that publishes on edX (Harvard, MIT, IBM, Google Cloud, Stanford, Delft, …) with the number of courses/programs each offers. Use a partner name as the search `partner` filter.","required_params":[],"optional_params":[],"params":[],"returns":"partners[]{name, course_count}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"subjects","description":"Browse edX's subject areas (Computer Science, Business & Management, Data Analysis & Statistics, Engineering, Economics & Finance, …) with the number of courses in each. Use a subject name as the search `subject` filter.","required_params":[],"optional_params":[],"params":[],"returns":"subjects[]{name, course_count}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"elcorteingles","category":{"id":"other","title":"Other"},"title":"El Corte Inglés API — search Spain's biggest department store (elcorteingles.es) and pull one product in full: every image, the complete colour x size matrix with a stable variant id, EAN-13, price and stock on every row, the specification table, brand, availability, star rating and top customer reviews — no account, no cookies, no browser","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/elcorteingles/v1","spec_available":true,"actions":[{"name":"search","description":"Search or browse elcorteingles.es. Give a Spanish free-text `query` ('zapatillas running', 'movil samsung', 'lavadora'), an El Corte Inglés product code or a bare EAN-13, or a `category` path to browse ('electronica/moviles-y-smartphones', 'moda-mujer/zapatos'). Every row carries El Corte Inglés' own product code, the product URL to feed straight into `product_detail`, the name, brand, EAN-13, price range across colours, the colour list, the variant count, how many of those variants are actually buyable, the image, the category hierarchy and whether the listing is a marketplace seller's. Sort by price, discount, rating, newness, name or stock; page through the whole result set. `category` browsing is the route El Corte Inglés' robots.txt allows and `meta.robots` reports which route answered.","required_params":[],"optional_params":["query","category","page","max_results","sort"],"params":[{"name":"query","type":"string","required":false,"description":"What to look for, in Spanish, across the whole elcorteingles.es catalogue ('zapatillas running', 'movil samsung', 'lavadora bosch', 'perfume mujer'). You may also pass an El Corte Inglés product code ('A56390869') or a bare EAN-13 ('8806097643135') — the site resolves both to the single matching product. Give `query` OR `category` (or both — `category` then scopes nothing, the keyword route wins and `meta.search_mode` says so). NOTE: keyword search uses elcorteingles.es' /search-nwx/ path, which their robots.txt disallows for crawlers; `category` browsing is the robots-clean route to the same rows and `meta.robots` reports which one answered your call.","on_invalid":"reject","example":"zapatillas running","aliases":["q","s","keyword","text","search"]},{"name":"category","type":"string","required":false,"description":"Browse one El Corte Inglés category instead of keyword searching — the path between elcorteingles.es/ and the trailing slash. A department on its own works (`electronica`, `deportes`, `libros`, `juguetes`, `hogar`, `moda-mujer`, `perfumeria`, `bebes`) and so does a real sub-category (`electronica/moviles-y-smartphones`, `electrodomesticos/lavadoras`, `moda-mujer/zapatos`, `deportes/ciclismo`, `libros/booktok`). Returns the same product rows, the same 12-per-page pagination and the same sorting as keyword search, and it is the route El Corte Inglés' robots.txt ALLOWS. ⚠ A sub-category they do not have does NOT 404 on their side — they quietly serve the parent department's page instead, with the site-wide 10,004 total and rows that have nothing to do with what you asked for. This API detects that (their page states which category it really served) and returns NOT_FOUND naming the fallback, rather than handing you a plausible wrong answer.","on_invalid":"reject","example":"electronica/moviles-y-smartphones","aliases":["category_path","c","browse"]},{"name":"page","type":"integer","required":false,"description":"Which page of results to start from (1-834). El Corte Inglés serves 12 tiles per page and publishes no way to ask for more — page size is fixed at their end (`itemsPerPage`, `size` and `limit` are all silently ignored, measured). Their result set is capped at 10,004 products, i.e. 834 pages. Page until `meta.pagination.has_more` is false — asking for a page past the end returns NOT_FOUND naming the real last page, never an empty list.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":834},{"name":"max_results","type":"integer","required":false,"description":"How many products to return (1-60). Because El Corte Inglés fixes its own page at 12, asking for more fetches more of their pages — one upstream page request per 12 results, up to 5 pages per call. Each of those pages is roughly half a megabyte to a megabyte and a half of HTML, so this is the single biggest cost lever on this endpoint: `meta.pages_fetched` and `meta.bytes` report exactly what your call spent.","on_invalid":"ignore","default":12,"example":12,"minimum":1,"maximum":60,"aliases":["limit","max"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering. These are El Corte Inglés' OWN sort keys, taken verbatim from the sort menu their pages publish — not invented, and each one measurably changes the result order. Omit for their recommended order. An unknown value is rejected here rather than sent: elcorteingles.es answers an unknown sort key with HTTP 503, not with an ignored parameter.","on_invalid":"reject","allowed_values":[{"value":"featuredDesc","label":"El Corte Inglés' own recommended order (the site default)"},{"value":"priceAsc","label":"Cheapest first"},{"value":"priceDesc","label":"Most expensive first"},{"value":"bestSellerQtyDesc","label":"Best sellers first"},{"value":"newInAsc","label":"Newest arrivals first"},{"value":"stockDesc","label":"Widest availability first"},{"value":"nameAsc","label":"Product name A-Z"},{"value":"nameDesc","label":"Product name Z-A"},{"value":"discountPerDesc","label":"Biggest discount first"},{"value":"ratingDesc","label":"Best rated first"}],"example":"priceAsc","aliases":["sorting","order","sort_by"]}],"returns":"products[]{product_id, product_type, url, path, name, brand, brand_slug, gtin13, categories[], hierarchy[], image, colour_count, colours[], variant_count, in_stock_variant_count, price, price_min, price_max, currency, availability, in_stock, is_marketplace, sellers[], is_gift_card, is_collection, size_guide, group_by}. `in_stock` is a boolean: true when at least one colour x size variant is buyable right now (El Corte Inglés' own buy flag), false when none is, null only when the row published no stock signal at all. meta.pagination{page, per_page, pages_fetched, total_results, total_pages, returned, has_more, next_page} — `total_results` is El Corte Inglés' OWN published figure for the query, and it is hard-capped by them at 10,004; `total_pages` is the last page that has products, so page until `has_more` is false rather than guessing. meta.search_mode is `query` | `category` | `id_lookup`; meta.sort echoes the ordering the site confirmed it applied; meta.robots says `allowed` or `disallowed_by_robots` for the path that answered. meta.tiles_seen / sponsored_slots / rejected_rows reconcile against El Corte Inglés' own 12-tile grid: `sponsored_slots` are paid placements carrying no product data (4 per unsorted keyword page, 0 on category pages) and `rejected_rows` are rows that did not look like products at all — that one is normally 0, and a non-zero value is your signal that their layout moved. A sponsored slot can never appear in `products[]`. NO SILENT EMPTIES: this endpoint returns ok:true with an empty `products[]` in exactly ONE situation — a keyword search where El Corte Inglés itself publishes a result count of 0. Paging past the end returns NOT_FOUND naming the real last page; a path that is not a product listing returns NOT_FOUND; and a page where the site claims results but publishes no readable rows returns a retryable PARSE_ERROR rather than an empty list. HONEST LIMITS: El Corte Inglés serves exactly 12 tiles per page and publishes NO page-size parameter, so a bigger `max_results` costs one extra page fetch per 12 rows. Some of those 12 tiles are paid placements carrying no product data, so an organic page is 8-12 rows and `returned` can legitimately be under 12. Search rows carry the colour/price/stock summary but NOT the specification table, the full image gallery, per-variant EANs or reviews — that is `product_detail`. The supermarket catalogue (/supermercado/) is NOT searchable here: it is a separate application whose result page is a 5-7 MB document that renders its rows client-side; `product_detail` does support supermarket products by URL or by their B-code.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":1,"per":1,"min":2},"example_params":{"query":"zapatillas running","max_results":12}},{"name":"product_detail","description":"Get one El Corte Inglés product in full, by URL, product code or EAN-13. ONE call returns the complete image gallery, the full colour x size variant matrix with a stable native variant id, an EAN-13, a price, a strike-through price and a live buyable flag on EVERY row, the specification table as El Corte Inglés publishes it (grouped, with their own glossary text), the brand, the availability, the star rating and the top customer reviews inline, plus the seller behind each variant (El Corte Inglés itself or a marketplace merchant), the active promotions and the EU-Omnibus 30-day lowest price. Supermarket products are supported too and return their EAN, gallery and full nutrition panel instead of a size matrix. A product El Corte Inglés has WITHDRAWN answers `NOT_FOUND` with `meta.withdrawn: true` and `meta.withdrawn_product` naming the product it was — their server keeps the page online for search engines but pulls every price, so there is no offer left to return. That verdict is permanent and `retryable: false`: it is the signal to drop the SKU from a monitoring list, not a transient failure to retry.","required_params":[],"optional_params":["url","product_id","ean","include_reviews","max_reviews"],"params":[{"name":"url","type":"string","required":false,"description":"The product's elcorteingles.es URL, exactly as `search` returns it in `products[].url`. This is the ZERO-EXTRA-COST path: the URL is the only key El Corte Inglés' product page resolves, because it embeds a category and a slug that cannot be derived from an id. Give `url`, `product_id` or `ean`.","on_invalid":"reject","example":"https://www.elcorteingles.es/electronica/A56390869-8806097643135-pr-samsung-galaxy-a17-5g-8gb-256gb-movil-libre-negro-256-gb-8-gb-ram/","aliases":["product_url","link"]},{"name":"product_id","type":"string","required":false,"description":"El Corte Inglés' own product code — `A56390869` for their catalogue, `MP_0623819_261BZ152012640` for a marketplace listing, `B001018009401193` for a supermarket item. Accepted for convenience, but be aware it costs ONE EXTRA upstream call: elcorteingles.es serves no product-by-id route, so the code is resolved through their own search first (measured: 1 result, every time). Pass `url` when you already have it.","on_invalid":"reject","example":"A56390869","aliases":["id","pid","code","code_a"]},{"name":"ean","type":"string","required":false,"description":"A bare EAN-13 / GTIN barcode. Resolved through El Corte Inglés' own search the same way `product_id` is (one extra call), which makes this endpoint usable for catalogue matching straight from a barcode. Returns NOT_FOUND if El Corte Inglés does not carry that barcode.","on_invalid":"reject","example":"8806097643135","aliases":["gtin","gtin13","barcode"]},{"name":"include_reviews","type":"boolean","required":false,"description":"Fetch the star rating and the top customer reviews (default true). El Corte Inglés does not publish either on its own product page — they come from Bazaarvoice, the review platform their page loads, in one extra ~2 KB request. Measured coverage is 27 of 48 live products across 9 categories: home, appliances and toys are well covered, books and fashion carry none at all. Set false to skip the call entirely.","on_invalid":"ignore","default":true,"aliases":["reviews","with_reviews"]},{"name":"max_reviews","type":"integer","required":false,"description":"How many reviews to return (1-8). Bazaarvoice's feed publishes at most 8 per page and this endpoint deliberately does not page through them — `rating.count` tells you the true total, which is frequently far larger (110 on one measured product).","on_invalid":"ignore","default":8,"example":8,"minimum":1,"maximum":8}],"returns":"product{product_id, product_type, url, path, name, full_name, brand, brand_slug, gtin13, description, categories[], breadcrumb[], category_path, price, price_min, price_max, list_price, currency, discount_percent, availability, in_stock, gallery[], videos[], colours[]{name, sku, image, thumbnail, images[], videos[], available, preselected}, variant_axes[], variant_count, in_stock_variant_count, variants[]{variant_id, gtin13, eci_reference, object_id, colour, axis, size, size_manufacturer, title, price, list_price, discount_percent, currency, lowest_recent_price, availability, in_stock, status, stock_reference, seller_id, is_marketplace, origin, offer_type, sellers[], images[], url, promotions[], nutrition}, specifications[]{group, attributes[]{name, values[], labels[], value, glossary[]}}, is_marketplace, sellers[], is_gift_card, is_digital, size_guide, promotions[], shipping, rating{value, best, count, source}, reviews[]{review_id, rating, title, text, author, date}}. meta.sources says, for THIS product, where each of gallery / variants / specifications / brand / availability actually came from, and meta.coverage counts how many of its variants carry an EAN, a price and a stock flag — so you see the completeness of the row you were given rather than trusting an average. FIELD NOTES: `variant_id` is the variant's own `sku` and `gtin13` its own EAN-13, both verbatim strings — a marketplace variant's sku is the merchant's offer id, which is why both are returned. `price` is what you pay today and `list_price` the struck-through price, null when there is no discount. `lowest_recent_price` is El Corte Inglés' own EU-Omnibus 30-day-lowest disclosure. `rating` and `reviews` come from Bazaarvoice, NOT from El Corte Inglés, and are null / empty for the many products with no reviews (measured 27 of 48 across 9 categories carry a rating; books and fashion carry none). El Corte Inglés publishes NO stock QUANTITY anywhere — only a buyable / not-buyable flag per variant — and no dimensions, weight or per-store stock.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"ean":"8806097643135","include_reviews":true}},{"name":"price","description":"Cheap price + stock refresh for ONE El Corte Inglés product, by URL, product code or EAN-13 — for re-checking products you already track, instead of paying for a full `product_detail`. Returns the current price (what you pay today), the strike-through price, the discount, the EU-Omnibus 30-day lowest price, the buyable flag for the product AND for every colour x size variant, and each variant's own EAN, price and seller. It reads El Corte Inglés' own JSON product feed (the one their storefront renders from) in ONE upstream call, about 2.5-6x fewer bytes than the product page; `url`, `product_id` and `ean` cost the same. It does NOT return the gallery, description, specifications or reviews — that is `product_detail`. Supermarket (B-code) items are not covered here; use `product_detail`. A code or barcode El Corte Inglés no longer lists returns NOT_FOUND, retryable:false.","required_params":[],"optional_params":["url","product_id","ean"],"params":[{"name":"url","type":"string","required":false,"description":"The product's elcorteingles.es URL, exactly as `search` returns it in `products[].url`. This is the ZERO-EXTRA-COST path: the URL is the only key El Corte Inglés' product page resolves, because it embeds a category and a slug that cannot be derived from an id. Give `url`, `product_id` or `ean`.","on_invalid":"reject","example":"https://www.elcorteingles.es/electronica/A56390869-8806097643135-pr-samsung-galaxy-a17-5g-8gb-256gb-movil-libre-negro-256-gb-8-gb-ram/","aliases":["product_url","link"]},{"name":"product_id","type":"string","required":false,"description":"El Corte Inglés' own product code — `A56390869` for their catalogue, `MP_0623819_261BZ152012640` for a marketplace listing, `B001018009401193` for a supermarket item. Accepted for convenience, but be aware it costs ONE EXTRA upstream call: elcorteingles.es serves no product-by-id route, so the code is resolved through their own search first (measured: 1 result, every time). Pass `url` when you already have it.","on_invalid":"reject","example":"A56390869","aliases":["id","pid","code","code_a"]},{"name":"ean","type":"string","required":false,"description":"A bare EAN-13 / GTIN barcode. Resolved through El Corte Inglés' own search the same way `product_id` is (one extra call), which makes this endpoint usable for catalogue matching straight from a barcode. Returns NOT_FOUND if El Corte Inglés does not carry that barcode.","on_invalid":"reject","example":"8806097643135","aliases":["gtin","gtin13","barcode"]}],"returns":"product{product_id, url, name, brand, gtin13, price, price_min, price_max, list_price, discount_percent, lowest_recent_price, currency, availability, in_stock, variant_count, in_stock_variant_count, is_marketplace, sellers[], variants[]{variant_id, gtin13, colour, size, price, list_price, discount_percent, currency, lowest_recent_price, availability, in_stock, status, seller_id, is_marketplace}}. Same price and stock fields, read from the same El Corte Inglés product service, as `product_detail` (measured 4/4 identical, 2026-09-18).","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"emag","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"eMAG API scraper — search, category browse, product detail & competing-merchant offers for eMAG, the leading marketplace in Romania (emag.ro), Bulgaria (emag.bg) and Hungary (emag.hu). Prices in RON/EUR/HUF, merchant names, ratings, stock. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/emag/v1","spec_available":true,"actions":[{"name":"search","description":"Search eMAG by keyword — paginated, sortable, and filterable by price range, brand, in-stock and minimum star rating. Every row carries the eMAG product code, title, current price with its own currency, the EU 'lowest price in the last 30 days' when eMAG publishes it, the MERCHANT selling it, stock state, rating and review count, and how many competing offers exist for the same product. `total` is eMAG's own result count for the filtered set. If eMAG redirects a keyword to one of its categories (it sends 'laptop' to its Laptops category, for example), you get that category's products and `redirected_to` tells you where it went.","required_params":["query"],"optional_params":["market","page","sort","price_min","price_max","brand","in_stock","min_rating","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for. Use the market's own language — Romanian on `ro` ('casti bluetooth', 'aspirator'), Bulgarian on `bg`, Hungarian on `hu`. English brand and model names work everywhere.","on_invalid":"reject","example":"casti bluetooth","aliases":["q","keyword"]},{"name":"market","type":"enum","required":false,"description":"Which eMAG storefront to read: `ro` (emag.ro, Romania — the default and by far the largest), `bg` (emag.bg, Bulgaria) or `hu` (emag.hu, Hungary). Product codes, category slugs and keywords are per-market — a code from emag.ro will not resolve on emag.hu. The currency is read from the page, so rows come back in RON, EUR and HUF respectively.","on_invalid":"reject","allowed_values":[{"value":"ro","label":"Romania — emag.ro (prices in RON)"},{"value":"bg","label":"Bulgaria — emag.bg (prices in EUR)"},{"value":"hu","label":"Hungary — emag.hu (prices in HUF)"}],"default":"ro","example":"ro","aliases":["country","site"]},{"name":"page","type":"integer","required":false,"description":"Result page — 1-based, 60 products per page. eMAG stops at page 100 regardless of how many results it claims; narrow with `category` filters rather than paging past that.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result ordering. These are eMAG's own seven orderings, taken from the sort menu it publishes with every listing; anything else is rejected rather than passed through, because eMAG answers an unknown sort token with a generic no-results page instead of an error.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"eMAG's own default ordering"},{"value":"popular","label":"Most popular"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"reviews","label":"Most reviewed"},{"value":"discount","label":"Biggest discount"},{"value":"newest","label":"Newest first"}],"default":"relevance","example":"price_asc","aliases":["order"]},{"name":"price_min","type":"integer","required":false,"description":"Minimum price, in the market's own currency (RON on ro, EUR on bg, HUF on hu). Whole numbers only — that is the granularity eMAG's own price filter accepts.","on_invalid":"ignore","example":100,"minimum":0,"aliases":["min_price"]},{"name":"price_max","type":"integer","required":false,"description":"Maximum price, in the market's own currency. Give either bound on its own and the other end is left open.","on_invalid":"ignore","example":500,"minimum":0,"aliases":["max_price"]},{"name":"brand","type":"string","required":false,"description":"Brand filter — eMAG's brand slug, lowercase with dashes ('apple', 'jbl', 'blue-star'). Take it from a product's brand link (/brands/brand/<slug>).","on_invalid":"ignore","example":"apple"},{"name":"in_stock","type":"boolean","required":false,"description":"true = only products eMAG currently has in stock. false (default) returns the category as eMAG orders it, out-of-stock rows included.","on_invalid":"ignore","default":false,"aliases":["stock"]},{"name":"min_rating","type":"integer","required":false,"description":"Only products whose customer rating is at least this many stars (1-5). Products with no rating yet are excluded by eMAG when this is set.","on_invalid":"ignore","example":4,"minimum":1,"maximum":5,"aliases":["rating"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many datacentre exits to try before giving up (1-14, default 6). About one exit in ten is pre-flagged by eMAG's WAF and is skipped automatically at a cost of ~0.2 s; the default already makes that vanishingly unlikely to surface. Leave it alone for typical use.","on_invalid":"ignore","default":6,"minimum":1,"maximum":14}],"returns":"products[]{product_id, product_code, offer_id, title, url, price, currency, lowest_price_30_days, recommended_retail_price, discount_percent, in_stock, availability, delivery_days_estimate, seller{id, name, slug, url, type (emag|marketplace), rating, rating_count (null — eMAG publishes a positive-feedback share, not a count), positive_feedback_percent, fulfilled_by_emag}, rating, review_count, question_count, image, other_offers_count, total_offers_count, campaigns[], super_category (eMAG's merchandising super-category), category (the leaf category name — null on the JSON listing route, which does not carry it; product/detail returns the full breadcrumb)}, count, total (eMAG's own result count), total_pages, reachable_pages (eMAG stops at 100), page, market, redirected_to (the eMAG path actually served when it redirects a keyword to a category, else null) (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"casti bluetooth"}},{"name":"category","description":"Browse an eMAG category by its slug, with the same filters as `search` — price range, brand, in-stock only, minimum star rating — plus sorting and pagination. Same row shape as `search`. This is the enumeration workhorse: use it when you want everything in a category rather than what a keyword happens to match, and `total` tells you how big the filtered set is before you page through it.","required_params":["category"],"optional_params":["market","page","sort","price_min","price_max","brand","in_stock","min_rating","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"eMAG category slug — the part before `/c` in a category URL (https://www.emag.ro/casti-bluetooth-telefoane/c → `casti-bluetooth-telefoane`). A full category URL is also accepted. Other live examples: telefoane-mobile · laptopuri · televizoare · aspiratoare · ceasuri-smartwatch.","on_invalid":"reject","example":"casti-bluetooth-telefoane","aliases":["slug","category_slug","category_url"]},{"name":"market","type":"enum","required":false,"description":"Which eMAG storefront to read: `ro` (emag.ro, Romania — the default and by far the largest), `bg` (emag.bg, Bulgaria) or `hu` (emag.hu, Hungary). Product codes, category slugs and keywords are per-market — a code from emag.ro will not resolve on emag.hu. The currency is read from the page, so rows come back in RON, EUR and HUF respectively.","on_invalid":"reject","allowed_values":[{"value":"ro","label":"Romania — emag.ro (prices in RON)"},{"value":"bg","label":"Bulgaria — emag.bg (prices in EUR)"},{"value":"hu","label":"Hungary — emag.hu (prices in HUF)"}],"default":"ro","example":"ro","aliases":["country","site"]},{"name":"page","type":"integer","required":false,"description":"Result page — 1-based, 60 products per page. eMAG stops at page 100 regardless of how many results it claims; narrow with `category` filters rather than paging past that.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result ordering. These are eMAG's own seven orderings, taken from the sort menu it publishes with every listing; anything else is rejected rather than passed through, because eMAG answers an unknown sort token with a generic no-results page instead of an error.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"eMAG's own default ordering"},{"value":"popular","label":"Most popular"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"reviews","label":"Most reviewed"},{"value":"discount","label":"Biggest discount"},{"value":"newest","label":"Newest first"}],"default":"relevance","example":"price_asc","aliases":["order"]},{"name":"price_min","type":"integer","required":false,"description":"Minimum price, in the market's own currency (RON on ro, EUR on bg, HUF on hu). Whole numbers only — that is the granularity eMAG's own price filter accepts.","on_invalid":"ignore","example":100,"minimum":0,"aliases":["min_price"]},{"name":"price_max","type":"integer","required":false,"description":"Maximum price, in the market's own currency. Give either bound on its own and the other end is left open.","on_invalid":"ignore","example":500,"minimum":0,"aliases":["max_price"]},{"name":"brand","type":"string","required":false,"description":"Brand filter — eMAG's brand slug, lowercase with dashes ('apple', 'jbl', 'blue-star'). Take it from a product's brand link (/brands/brand/<slug>).","on_invalid":"ignore","example":"apple"},{"name":"in_stock","type":"boolean","required":false,"description":"true = only products eMAG currently has in stock. false (default) returns the category as eMAG orders it, out-of-stock rows included.","on_invalid":"ignore","default":false,"aliases":["stock"]},{"name":"min_rating","type":"integer","required":false,"description":"Only products whose customer rating is at least this many stars (1-5). Products with no rating yet are excluded by eMAG when this is set.","on_invalid":"ignore","example":4,"minimum":1,"maximum":5,"aliases":["rating"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many datacentre exits to try before giving up (1-14, default 6). About one exit in ten is pre-flagged by eMAG's WAF and is skipped automatically at a cost of ~0.2 s; the default already makes that vanishingly unlikely to surface. Leave it alone for typical use.","on_invalid":"ignore","default":6,"minimum":1,"maximum":14}],"returns":"products[]{…same row as search}, count, total, total_pages, reachable_pages, page, title (eMAG's own name for the filtered listing), market, redirected_to","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"category":"casti-bluetooth-telefoane","sort":"price_desc"}},{"name":"product/detail","description":"Full eMAG product by `code` or `url`: title, brand, manufacturer part number, current price and currency, the EU-mandated lowest price of the last 30 days and the manufacturer's RRP when eMAG publishes them, the discount computed from those rather than guessed, the merchant with its own rating and positive-feedback share, stock and delivery estimate, warranty and return period, the full image gallery, the description, the breadcrumb, the complete grouped specification table, and how many competing offers exist. Fields eMAG does not publish come back as null — nothing here is inferred.","required_params":[],"optional_params":["code","url","market","max_rotations"],"params":[{"name":"code","type":"string","required":false,"description":"The eMAG product code — the token after `/pd/` in a product URL (…/pd/DBFC7LYBM/). Every row `search` and `category` return carries it as `product_code`. Give `code` OR `url`.","on_invalid":"reject","example":"DBFC7LYBM","aliases":["product_code","pnk","part_number_key","id","sku"]},{"name":"url","type":"string","required":false,"description":"Full eMAG product URL — the alternative to `code`. The market is taken from the URL's own domain when you pass one.","on_invalid":"reject","example":"https://www.emag.ro/casti-apple-airpods-4-mxp63zm-a/pd/DBFC7LYBM/","aliases":["product_url"]},{"name":"market","type":"enum","required":false,"description":"Which eMAG storefront to read: `ro` (emag.ro, Romania — the default and by far the largest), `bg` (emag.bg, Bulgaria) or `hu` (emag.hu, Hungary). Product codes, category slugs and keywords are per-market — a code from emag.ro will not resolve on emag.hu. The currency is read from the page, so rows come back in RON, EUR and HUF respectively.","on_invalid":"reject","allowed_values":[{"value":"ro","label":"Romania — emag.ro (prices in RON)"},{"value":"bg","label":"Bulgaria — emag.bg (prices in EUR)"},{"value":"hu","label":"Hungary — emag.hu (prices in HUF)"}],"default":"ro","example":"ro","aliases":["country","site"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many datacentre exits to try before giving up (1-14, default 6). About one exit in ten is pre-flagged by eMAG's WAF and is skipped automatically at a cost of ~0.2 s; the default already makes that vanishingly unlikely to surface. Leave it alone for typical use.","on_invalid":"ignore","default":6,"minimum":1,"maximum":14}],"returns":"product{product_id, product_code, offer_id, title, brand, brand_url, manufacturer_part_number, url, market, price, currency, lowest_price_30_days, recommended_retail_price, discount_percent, promotion_note, in_stock, availability, delivery_days_estimate, free_delivery, fulfilled_by_emag, genius_eligible, warranty_months, return_period_days, condition, seller{id, name, slug, url, type, rating, positive_feedback_percent, fulfilled_by_emag}, rating, review_count, rating_scale (5 — eMAG publishes it in its ld+json AggregateRating), rating_worst, question_count, recommend_percent, images[], description, category, breadcrumb[], specs[]{group, name, value}, other_offers_count, other_offers_min_price}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"code":"DBFC7LYBM"}},{"name":"product/offers","description":"Every merchant selling the same product on eMAG, by `code` or `url` — the buybox offer plus each competing marketplace seller, with that seller's price. eMAG is a marketplace and publishes this set on the product page itself, so one call gives you the whole merchant table for price comparison. The buybox row is complete (seller rating, stock, delivery, warranty, return period); the competing rows carry what eMAG publishes for them — merchant name, offer id and price — and their remaining fields are null rather than filled in with the buybox's values.","required_params":[],"optional_params":["code","url","market","max_rotations"],"params":[{"name":"code","type":"string","required":false,"description":"The eMAG product code — the token after `/pd/` in a product URL (…/pd/DBFC7LYBM/). Every row `search` and `category` return carries it as `product_code`. Give `code` OR `url`.","on_invalid":"reject","example":"DBFC7LYBM","aliases":["product_code","pnk","part_number_key","id","sku"]},{"name":"url","type":"string","required":false,"description":"Full eMAG product URL — the alternative to `code`. The market is taken from the URL's own domain when you pass one.","on_invalid":"reject","example":"https://www.emag.ro/casti-apple-airpods-4-mxp63zm-a/pd/DBFC7LYBM/","aliases":["product_url"]},{"name":"market","type":"enum","required":false,"description":"Which eMAG storefront to read: `ro` (emag.ro, Romania — the default and by far the largest), `bg` (emag.bg, Bulgaria) or `hu` (emag.hu, Hungary). Product codes, category slugs and keywords are per-market — a code from emag.ro will not resolve on emag.hu. The currency is read from the page, so rows come back in RON, EUR and HUF respectively.","on_invalid":"reject","allowed_values":[{"value":"ro","label":"Romania — emag.ro (prices in RON)"},{"value":"bg","label":"Bulgaria — emag.bg (prices in EUR)"},{"value":"hu","label":"Hungary — emag.hu (prices in HUF)"}],"default":"ro","example":"ro","aliases":["country","site"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many datacentre exits to try before giving up (1-14, default 6). About one exit in ten is pre-flagged by eMAG's WAF and is skipped automatically at a cost of ~0.2 s; the default already makes that vanishingly unlikely to surface. Leave it alone for typical use.","on_invalid":"ignore","default":6,"minimum":1,"maximum":14}],"returns":"offers[]{offer_id, is_buybox, seller{…}, price, currency, lowest_price_30_days, recommended_retail_price, discount_percent, in_stock, availability, delivery_days_estimate, free_delivery, fulfilled_by_emag, genius_eligible, is_resealed, is_used, has_warranty, warranty_months, return_period_days, unit} sorted by price, plus offer_count, min_price, max_price, currency, product{product_code, title, url}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"code":"DBFC7LYBM"}}]},{"name":"email-health","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Email Deliverability & DNS Health API — check SPF, DKIM, DMARC, MX, BIMI, MTA-STS, TLS-RPT, DNSSEC, DANE and blacklist status with a 0-100 deliverability score","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/email-health/v1","spec_available":true,"actions":[{"name":"check","description":"Full email-health audit: SPF + DKIM + DMARC + MX + BIMI + MTA-STS + TLS-RPT + DNSSEC + blacklist, plus a 0-100 deliverability score and letter grade.","required_params":["domain"],"optional_params":["selector","selectors","bimi_selector","skip_blacklist"],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]},{"name":"selector","type":"string","required":false,"description":"DKIM selector (the label before ._domainkey, e.g. 'google', 'selector1', 'k1'). Omit to autoscan ~30 common ESP selectors. DKIM selectors are provider-specific — pass the exact one if you know it.","on_invalid":"ignore","example":"google","aliases":["s"]},{"name":"selectors","type":"array","required":false,"description":"Optional comma-separated list (or array) of DKIM selectors to test instead of the common-selector autoscan.","on_invalid":"ignore","example":"google,selector1"},{"name":"bimi_selector","type":"string","required":false,"description":"BIMI selector (default per the BIMI spec is 'default').","on_invalid":"ignore","default":"default","example":"default"},{"name":"skip_blacklist","type":"boolean","required":false,"description":"If true, skip the DNSBL reputation lookups in 'check' (faster; blacklist is the slowest section — many IP×zone DoH queries).","on_invalid":"ignore","default":false,"example":false}],"returns":"domain, score{score,grade,breakdown}, spf{}, dkim{}, dmarc{}, mx{}, bimi{}, mta_sts{}, tls_rpt{}, dnssec{}, dane{} (informational, unscored), blacklist{}, issues[] (merged), summary{}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"google.com"}},{"name":"spf","description":"Parse + validate the SPF record: follow include:/redirect=, count the ≤10 DNS-lookup mechanisms, flag +all and void lookups, report the all-qualifier policy.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, found, record, valid, dns_lookups, void_lookups, all_qualifier, policy, mechanisms[], includes[], include_tree[], issues[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"google.com"}},{"name":"dmarc","description":"Parse the DMARC policy at _dmarc.<domain>: p/sp/pct/rua/ruf/adkim/aspf/fo + enforcement verdict.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, found, record, valid, policy, subdomain_policy, pct, rua[], ruf[], adkim, aspf, fo, enforced, tags{}, issues[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"paypal.com"}},{"name":"dkim","description":"DKIM selector lookup (<selector>._domainkey.<domain>): key type, public-key presence, RSA key-bit estimate, revocation. Autoscans ~30 common selectors if none given.","required_params":["domain"],"optional_params":["selector","selectors"],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]},{"name":"selector","type":"string","required":false,"description":"DKIM selector (the label before ._domainkey, e.g. 'google', 'selector1', 'k1'). Omit to autoscan ~30 common ESP selectors. DKIM selectors are provider-specific — pass the exact one if you know it.","on_invalid":"ignore","example":"google","aliases":["s"]},{"name":"selectors","type":"array","required":false,"description":"Optional comma-separated list (or array) of DKIM selectors to test instead of the common-selector autoscan.","on_invalid":"ignore","example":"google,selector1"}],"returns":"domain, found, selectors_tested[], selectors_found[], records[] (selector, record, key_type, key_bits, public_key_present, revoked), issues[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"paypal.com","selector":"pp2"}},{"name":"mx","description":"MX records (sorted by preference) + a mail-provider guess from the exchange hostnames.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, found, count, records[] (preference, exchange), hosts[], provider, issues[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"blacklist","description":"DNSBL reputation: reverse the domain's A + MX-host IPs against live-proven public DNSBLs (SpamCop, Barracuda, UCEPROTECT, PSBL, Mailspike, GBUdb, DroneBL, s5h). Spamhaus/CBL are flagged as paid-key-required (public-resolver refused), not queried.","required_params":["domain"],"optional_params":["ips"],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]},{"name":"ips","type":"array","required":false,"description":"Optional explicit IPv4 list (comma-separated or array) to check against the DNSBLs. Omit to auto-resolve the domain's A + MX-host IPs.","on_invalid":"ignore","example":"140.82.121.4"}],"returns":"domain, checked_ips[], ptr_records{ip:hostname}, listings[] (ip, zone, blacklist, return_codes), listed_count, clean, zones_checked[], paid_key_zones[], issues[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"mta_sts","description":"MTA-STS: the _mta-sts.<domain> TXT (id) plus the fetched https://mta-sts.<domain>/.well-known/mta-sts.txt policy (mode, mx[], max_age).","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, found, record, id, policy_fetched, mode, mx[], max_age, enforced, issues[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"google.com"}},{"name":"bimi","description":"BIMI brand-logo record at <selector>._bimi.<domain>: the published logo (SVG) URL and the VMC (Verified Mark Certificate) URL, plus whether a VMC is present. Standalone lookup (MXToolbox SuperTool exposes BIMI on its own — no full audit needed).","required_params":["domain"],"optional_params":["selector"],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]},{"name":"selector","type":"string","required":false,"description":"BIMI selector — the label before ._bimi (default per the BIMI spec is 'default'; large senders sometimes publish per-brand selectors).","on_invalid":"ignore","default":"default","example":"default","aliases":["bimi_selector"]}],"returns":"domain, found, record, selector, logo_url, vmc_url, has_vmc","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"cnn.com"}},{"name":"tls_rpt","description":"SMTP TLS Reporting (RFC 8460) record at _smtp._tls.<domain>: the rua= report destination(s) that receive aggregate TLS-negotiation failure reports. Standalone lookup.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, found, record, rua[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"google.com"}},{"name":"dnssec","description":"DNSSEC signing status: the DoH AD (Authenticated-Data) flag = the resolver cryptographically validated the answer, plus a DS record at the parent = the delegation is signed. Standalone lookup.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, signed, validated_ad_flag, has_ds_record","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"cloudflare.com"}},{"name":"dane","description":"DANE for SMTP (RFC 7672): TLSA records at _25._tcp.<mx-host> for every MX host, with per-host DNSSEC validation (DANE is only effective on a signed TLSA RRset). Value-add: MXToolbox has NO TLSA/DANE lookup.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The domain to inspect (a bare host like github.com; a full URL, a leading www., or a full email address are accepted and normalized to the registrable domain).","on_invalid":"reject","example":"github.com","aliases":["query","name"]}],"returns":"domain, found, mx_hosts_checked[], hosts[] (mx_host, found, records[] (usage, usage_label, selector, matching_type, association_data), dnssec_validated), record_count, issues[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"internet.nl"}},{"name":"batch","description":"Run the full 'check' audit on up to 25 domains in one call (each with score + grade).","required_params":["domains"],"optional_params":["skip_blacklist"],"params":[{"name":"domains","type":"array","required":true,"description":"Comma-separated list (or array) of up to 25 domains to run a full health check on in one call.","on_invalid":"reject","example":"github.com,paypal.com","aliases":["domain_list"]},{"name":"skip_blacklist","type":"boolean","required":false,"description":"If true, skip the DNSBL reputation lookups in 'check' (faster; blacklist is the slowest section — many IP×zone DoH queries).","on_invalid":"ignore","default":false,"example":false}],"returns":"results[] (domain, score, grade, found-summary), count, average_score","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"email-preflight","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Email Preflight API — pre-send QA for HTML email: structure and accessibility lint, client CSS compatibility, spam-signal score, link and image checks, sender DNS auth and preview","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/email-preflight/v1","spec_available":true,"actions":[{"name":"audit_html","description":"Full pre-send structure + accessibility + deliverability lint of an HTML email: missing alt text, broken structure, mobile-width risks, dark-mode hints, tracking pixels, external assets, List-Unsubscribe check, Gmail-clip size budget, and prioritized recommendations. Pure local compute (no network).","required_params":["html"],"optional_params":["text_part","base_url","subject","check_links"],"params":[{"name":"html","type":"string","required":true,"description":"The full HTML of the email you are about to send (paste the source). Parsed read-only in a no-network, no-script sandbox.","on_invalid":"reject","example":"<html><body><h1>Hi</h1><img src=\"https://x.test/a.png\"></body></html>","aliases":["body","source","input"]},{"name":"text_part","type":"string","required":false,"description":"Optional plain-text alternative of the email. If omitted, the audit flags the missing multipart/alternative text part.","on_invalid":"ignore","example":"Hi — view this email in a browser at https://...","aliases":["plain_text","text"]},{"name":"base_url","type":"string","required":false,"description":"Optional base URL: relative links/images in the HTML are resolved against it before checking.","on_invalid":"ignore","example":"https://newsletter.acme.com/campaign/42","aliases":["base"]},{"name":"subject","type":"string","required":false,"description":"Optional subject line — included in the spam-signal analysis.","on_invalid":"ignore","example":"Your June statement is ready"},{"name":"check_links","type":"boolean","required":false,"description":"If true, audit_html ALSO resolves every link via url-resolver (adds latency + a sub-call per link). Default false = static lint only.","on_invalid":"ignore","default":false,"example":false}],"returns":"html_validity{parse_ok,warnings[]}, size{bytes,gmail_clip_risk,limit}, accessibility{missing_alt,images_total,issues[]}, structure{has_doctype,has_table_layout,uses_div_layout,heading_count}, mobile_width_risks[], dark_mode{has_meta_color_scheme,hints[]}, tracking_pixels[], external_assets[], unsubscribe{list_unsubscribe_header_present,has_unsubscribe_link,has_unsubscribe_text}, text_part{present,recommended}, recommendations[{severity,code,message}], score{0-100,grade}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"html":"<html><body><img src='https://x.test/a.png'><a href='https://x.test'>hi</a></body></html>"}},{"name":"css_support","description":"Email-client CSS/HTML compatibility map for the template (Can-I-Email data, MIT): which CSS features used in the HTML break or degrade in Outlook/Gmail/Apple Mail/Yahoo and friends. Pure local compute (offline snapshot).","required_params":["html"],"optional_params":[],"params":[{"name":"html","type":"string","required":true,"description":"The full HTML of the email you are about to send (paste the source). Parsed read-only in a no-network, no-script sandbox.","on_invalid":"reject","example":"<html><body><h1>Hi</h1><img src=\"https://x.test/a.png\"></body></html>","aliases":["body","source","input"]}],"returns":"features_detected[{feature,title,category,unsupported_in[],partial_in[],high_risk,support_map{}}], high_risk_count, clients_considered[], data_source (bundled-snapshot|curated-fallback), data_version, summary","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"html":"<div style='display:flex'>x</div>"}},{"name":"spam_score","description":"Deterministic spam-SIGNAL score for the email content (caps ratio, image-to-text ratio, spam phrases, missing unsubscribe, raw-IP links…). HONEST: a content signal score, NOT an inbox-placement prediction; SpamAssassin/Rspamd sidecar = the calibrated upgrade (see docs). Pure local compute.","required_params":["html"],"optional_params":["subject","text_part"],"params":[{"name":"html","type":"string","required":true,"description":"The full HTML of the email you are about to send (paste the source). Parsed read-only in a no-network, no-script sandbox.","on_invalid":"reject","example":"<html><body><h1>Hi</h1><img src=\"https://x.test/a.png\"></body></html>","aliases":["body","source","input"]},{"name":"subject","type":"string","required":false,"description":"Optional subject line — included in the spam-signal analysis.","on_invalid":"ignore","example":"Your June statement is ready"},{"name":"text_part","type":"string","required":false,"description":"Optional plain-text alternative of the email. If omitted, the audit flags the missing multipart/alternative text part.","on_invalid":"ignore","example":"Hi — view this email in a browser at https://...","aliases":["plain_text","text"]}],"returns":"score (>=5 ~ likely spam), verdict (clean_signal|suspicious|likely_spam), triggered_rules[{rule,score,description}], rule_count, metrics{words,caps_ratio,image_count,link_count,has_unsubscribe_text}, threshold_note, engine","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"html":"<p>100% FREE!!! ACT NOW — WIN CASH PRIZE</p>","subject":"FREE MONEY"}},{"name":"check_links","description":"Resolve every link in the email through url-resolver (SSRF-guarded): final URL, redirect chain, status, final domain. Bot-403/429 = `unverifiable` (honest — not marked broken). Inner-calls url-resolver per link.","required_params":["html"],"optional_params":["base_url"],"params":[{"name":"html","type":"string","required":true,"description":"The full HTML of the email you are about to send (paste the source). Parsed read-only in a no-network, no-script sandbox.","on_invalid":"reject","example":"<html><body><h1>Hi</h1><img src=\"https://x.test/a.png\"></body></html>","aliases":["body","source","input"]},{"name":"base_url","type":"string","required":false,"description":"Optional base URL: relative links/images in the HTML are resolved against it before checking.","on_invalid":"ignore","example":"https://newsletter.acme.com/campaign/42","aliases":["base"]}],"returns":"links[{url,final_url,final_domain,status,redirect_count,verdict: ok|broken|redirect|unverifiable|blocked|skipped}], counts{total,checked,ok,broken,redirect,unverifiable}, unique_domains[]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"html":"<a href='https://github.com'>a</a><a href='https://example.com'>b</a>"}},{"name":"check_images","description":"Audit every <img> in the email: alt text presence, dimensions declared, src scheme/format, http-vs-https, and (best-effort) reachability via url-resolver. Pure-compute by default; reachability adds sub-calls.","required_params":["html"],"optional_params":["base_url","check_reachable"],"params":[{"name":"html","type":"string","required":true,"description":"The full HTML of the email you are about to send (paste the source). Parsed read-only in a no-network, no-script sandbox.","on_invalid":"reject","example":"<html><body><h1>Hi</h1><img src=\"https://x.test/a.png\"></body></html>","aliases":["body","source","input"]},{"name":"base_url","type":"string","required":false,"description":"Optional base URL: relative links/images in the HTML are resolved against it before checking.","on_invalid":"ignore","example":"https://newsletter.acme.com/campaign/42","aliases":["base"]},{"name":"check_reachable","type":"boolean","required":false,"description":"If true, HEAD/GET each image via url-resolver to confirm it loads (adds latency + sub-calls).","on_invalid":"ignore","default":false,"example":false}],"returns":"images[{src,alt,has_alt,width,height,dimensions_declared,scheme,format,is_https,reachable}], counts{total,missing_alt,insecure_http,no_dimensions}, issues[]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"html":"<img src='https://x.test/a.png'><img src='b.png' alt='ok'>"}},{"name":"dns_auth","description":"Sender-domain email-authentication summary (SPF/DKIM/DMARC/MX + deliverability grade) via an inner-call to the email-health engine — REUSE, not re-implemented here (email-health owns DNS auth; this is a thin preflight wrapper).","required_params":["domain"],"optional_params":["dkim_selector","include_blacklist"],"params":[{"name":"domain","type":"string","required":true,"description":"The sending domain (the From: address domain). Its email authentication (SPF/DKIM/DMARC/MX) is summarized via email-health.","on_invalid":"reject","example":"acme.com","aliases":["sender_domain","d"]},{"name":"dkim_selector","type":"string","required":false,"description":"Optional DKIM selector to look up (e.g. 'google', 's1'). If omitted, email-health autoscans common selectors.","on_invalid":"ignore","example":"s1","aliases":["selector"]},{"name":"include_blacklist","type":"boolean","required":false,"description":"Also run the slower DNSBL reputation pass (email-health blacklist). Default false = auth-only (SPF/DKIM/DMARC/MX), the fast pre-send check.","on_invalid":"ignore","default":false,"example":false}],"returns":"domain, score{score,grade}, spf{found,policy}, dkim{found,selectors_found}, dmarc{found,policy,enforced}, mx{found,provider}, summary, source ('email-health inner-call'), reused_engine","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"preview_basic","description":"Basic visual preview: render the HTML to a PNG via web-capture's browser sandbox. HONEST: a browser render, NOT a real email-client render (no Outlook/Word engine). Degrades gracefully if web-capture is not deployed.","required_params":["html"],"optional_params":["width"],"params":[{"name":"html","type":"string","required":true,"description":"The full HTML of the email you are about to send (paste the source). Parsed read-only in a no-network, no-script sandbox.","on_invalid":"reject","example":"<html><body><h1>Hi</h1><img src=\"https://x.test/a.png\"></body></html>","aliases":["body","source","input"]},{"name":"width","type":"integer","required":false,"description":"Viewport width in px (typical email width = 600).","on_invalid":"ignore","default":600,"example":600,"minimum":320,"maximum":1200}],"returns":"image_b64 (PNG) or unavailable status, width, rendered_by ('web-capture'), disclaimer (browser != email-client render)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"html":"<h1>hi</h1>"}}]},{"name":"empik","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Empik API scraper — Poland's largest books and media retailer plus its marketplace: search products, read the full product record (author, publisher, ISBN for books) and get EVERY merchant's offer for one product — price, condition, seller rating. Prices in PLN. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/empik/v1","spec_available":true,"actions":[{"name":"search","description":"Search empik.com by keyword and get the matching products: Empik product id, title, brand, image, the price actually charged, the list price and discount, the marketplace seller holding the buybox, category path, rating and delivery line. Filter by brand, seller, price band, condition, free delivery or (for books) author. Use the returned `product_id` with `product/offers` to get every seller's price for that product.","required_params":["query"],"optional_params":["page","sort","brand","seller_id","price_min","price_max","condition","free_delivery","author","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for on empik.com. Polish keywords match best; brand and model names ('iphone 16', 'lego speed champions') work directly. Empik matches LOOSELY — a search for 'iphone' returns 212 021 products because phone cases match too. Use `price_min` or `brand` to cut accessories out.","on_invalid":"reject","example":"wiedźmin","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-BASED. 60 products per page. Empik stops at page 80 (4 800 products) however large `total_results` is, and past that it silently re-serves page 1 — this endpoint refuses instead of handing you duplicates. `meta.pagination.last_page` is the real last page for your query.","on_invalid":"ignore","default":1,"minimum":1,"maximum":80},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Only orderings empik.com actually honours are accepted — an unknown value is rejected here rather than passed on, because the site silently ignores one it does not know.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Empik's own default ordering"},{"value":"popularity","label":"Most popular first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"discount_pct","label":"Biggest percentage discount first"},{"value":"discount_amount","label":"Biggest cash saving first"},{"value":"newest","label":"Most recently published first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Restrict to one brand, using Empik's own lower-case brand slug as it appears in its filters ('apple', 'spigen', 'lego'). Measured: 'iphone' 212 021 → 'iphone'+apple 12 267.","on_invalid":"ignore","example":"apple","aliases":["brand_facet"]},{"name":"seller_id","type":"string","required":false,"description":"Restrict to ONE marketplace seller, by the numeric Empik shop id that `product/offers` and `search` return as `seller.id` (0 = Empik itself). Measured: 'iphone' 212 021 → seller 3531 returns 40 products, all from that seller.","on_invalid":"ignore","example":"3531","aliases":["shop_id","merchant_id"]},{"name":"price_min","type":"number","required":false,"description":"Lowest price in PLN, inclusive.","on_invalid":"ignore","example":2000,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in PLN, inclusive. Measured: 'iphone' 212 021 → price 2000-5000 leaves 293.","on_invalid":"ignore","example":5000,"minimum":0},{"name":"condition","type":"enum","required":false,"description":"Restrict by item condition. Empik's marketplace carries a real second-hand tier: 'iphone' 212 021 → used_good leaves 265.","on_invalid":"reject","allowed_values":[{"value":"new","label":"Brand new"},{"value":"used_as_new","label":"Used, as new"},{"value":"used_good","label":"Used, good"},{"value":"used_acceptable","label":"Used, acceptable"},{"value":"damaged_packaging","label":"New, damaged packaging"}]},{"name":"free_delivery","type":"boolean","required":false,"description":"true keeps only offers Empik marks as free marketplace delivery. Measured: 'iphone' 212 021 → 31 008.","on_invalid":"ignore"},{"name":"author","type":"string","required":false,"description":"Books only: restrict to one author, using Empik's own 'Surname Firstname' spelling. Measured: 'wiedzmin' 1 803 → author='sapkowski andrzej' 524.","on_invalid":"ignore","example":"sapkowski andrzej"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{product_id, title, url, image, brand (null in categories where Empik files the creator instead — 1/71 on vinyl, 17/60 on books), price_pln (what you pay), list_price_pln (ALWAYS null on a search row — the grid publishes no list price and the tile's rounded percentage cannot rebuild one accurately; call product/detail for it), discount_pct (Empik's own tile figure, integer-rounded, and it under-reports — absent on 8 of 18 products product/detail shows as discounted), currency=PLN, seller{id, name, is_empik}, category, category_path[], delivery, rating, promoted}, count, promoted_count (sponsored tiles inside the grid — returned, flagged, and repeated on every page by the source), total_results (Empik's own printed match count), page, sort (meta.pagination carries last_page)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"wiedźmin"}},{"name":"product/detail","description":"The full Empik product record by `product_id` (or product URL): title, category breadcrumb, description, image gallery, rating, format/variant, the complete attribute table exactly as Empik groups it, and the creator block — author and publisher for books, performer and label for music, brand and producer for goods. For books it also returns ISBN-13 and EAN.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Empik product id — the code in the product URL (…/ostatnie-zyczenie…,p1102239921,ksiazka-p → p1102239921). A full product URL is also accepted. Empik uses three id shapes and all work: 'p1102239921', 'prod58904739' and a bare legacy number like '7291'. Every `search` row returns `product_id`.","on_invalid":"reject","example":"p1102239921","aliases":["id","pid","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, title, url, category, breadcrumb[], category_id, product_type, format, variant_name, release_date, rating, rating_count, image, images[], description, tags[], available_in_store, creators{brand, series, license, line, author[], publisher[], producer[], performer[], director[]}, isbn (books only), ean (books only), empik_index, pages, cover_type, language, original_language, edition_year, publication_date, specs[]{label, values[]}, price_pln, list_price_pln, currency=PLN, seller{…}, best_offer{…}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"p1102239921"}},{"name":"product/offers","description":"Every seller offer for one product — the price comparison itself. One row per merchant: seller name, Empik shop id, shop page, super-seller flag, seller rating and how many ratings it rests on, the price actually charged and the list price, whether the discount needs an Empik membership, the item condition (new, used as-new/good/acceptable, damaged packaging), declared dispatch window and the delivery line. Rows keep Empik's own ordering; `cheapest` is computed separately because that ordering is NOT purely by price.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Empik product id — the code in the product URL (…/ostatnie-zyczenie…,p1102239921,ksiazka-p → p1102239921). A full product URL is also accepted. Empik uses three id shapes and all work: 'p1102239921', 'prod58904739' and a bare legacy number like '7291'. Every `search` row returns `product_id`.","on_invalid":"reject","example":"p1102239921","aliases":["id","pid","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id} + offers[]{position, offer_id, seller{id, name, url, logo_url, super_seller, is_foreign, rating, rating_count, is_empik}, price_pln, list_price_pln, discount_pct (computed), discount_pct_source, discount_amount_pln, discount_type, membership_price, currency=PLN, unit_price_pln, min_price_pln, price_type, condition, condition_note, availability, availability_label, stock_level (null — Empik does not publish it logged-out), delivery, delivery_options[]} + count, seller_count, cheapest, most_expensive, cheapest_new, has_used, sort_info (Empik's own printed explanation of the ordering)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"p1102239921"}},{"name":"products/batch","description":"Up to 30 products in ONE request — id, title, url, category, rating, cover, creators and the current buybox offer (price, list price, seller) for each. This is the cheap way to refresh a watchlist: 30 products for the price of one call instead of 30 separate `product/detail` calls.","required_params":["product_ids"],"optional_params":["max_rotations"],"params":[{"name":"product_ids","type":"array","required":true,"description":"Up to 30 Empik product ids in one call. Above 30 the source returns only the first 30, so this endpoint rejects a longer list instead of silently dropping the rest.","on_invalid":"reject","example":["p1102239921","p1538551909"],"aliases":["ids"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{product_id, title, url, category, rating, rating_count, image, creators{brand, author[], publisher[], performer[]}, price_pln, list_price_pln, currency=PLN, seller{…}, best_offer{…}}, count, requested, missing[] (ids Empik returned nothing for)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"product_ids":["p1102239921","p1538551909"]}},{"name":"product/reviews","description":"Customer reviews for one product, 30 per page: author name, date, the 1-5 score, title and body, how many readers found it useful, whether Empik marks the purchase as verified. Also returns the full star histogram (how many votes at each score) and Empik's own AI summary of the reviews with its keyword list.","required_params":["product_id"],"optional_params":["page","sort","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Empik product id — the code in the product URL (…/ostatnie-zyczenie…,p1102239921,ksiazka-p → p1102239921). A full product URL is also accepted. Empik uses three id shapes and all work: 'p1102239921', 'prod58904739' and a bare legacy number like '7291'. Every `search` row returns `product_id`.","on_invalid":"reject","example":"p1102239921","aliases":["id","pid","url"]},{"name":"page","type":"integer","required":false,"description":"Review page, 1-BASED, 30 reviews per page. `total_reviews` and `pages` tell you how far you can go.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Review ordering. These are the six orderings empik.com itself publishes for its review list.","on_invalid":"reject","allowed_values":[{"value":"default","label":"Empik's own 'most valuable' order"},{"value":"popular","label":"Most helpful first"},{"value":"highest_rate","label":"Highest rating first"},{"value":"lowest_rate","label":"Lowest rating first"},{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"}],"default":"default"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"reviews[]{review_id, author, created_at, score, title, content, useful_votes, useless_votes, verified_purchase, commercial, status}, count, total_reviews, pages, page, hidden_count, rating_histogram[]{score, votes}, total_votes, ai_summary{date, content, keywords[]} (null when Empik has not generated one)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"p1102239921"}},{"name":"product/variants","description":"The other editions of the same title — for a book: paperback, hardcover, ebook EPUB/MOBI, audiobook, foreign-language printing; for music: the other formats. Each variant returns its own resolvable Empik product id and URL, so you can feed it straight back into `product/offers`.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Empik product id — the code in the product URL (…/ostatnie-zyczenie…,p1102239921,ksiazka-p → p1102239921). A full product URL is also accepted. Empik uses three id shapes and all work: 'p1102239921', 'prod58904739' and a bare legacy number like '7291'. Every `search` row returns `product_id`.","on_invalid":"reject","example":"p1102239921","aliases":["id","pid","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"variants[]{product_id, name, url, price_pln (null — Empik leaves the price out of the variant list; call product/offers for it), release_date, sub_variants[]}, count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"p1102239921"}}]},{"name":"encar","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Encar API — South Korea's #1 used-car marketplace scraper: search live Encar listings by make, model, year, price, mileage, fuel, transmission and region, then pull full car detail (price in KRW, year, mileage, fuel, transmission, color, options, inspection & accident-record status, warranty, photos and dealer firm) and browse all Korean & imported makes with live counts. No API key, no login required.","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/encar/v1","spec_available":true,"actions":[{"name":"search","description":"Search live Encar used-car listings by structured filters: make, model, trim, car_type (domestic/imported), fuel, transmission, region, price_min/max (in 만원 = 10,000 KRW), year_min/max and mileage_min/max. Sortable + paginated. Returns rich cards with price (native 만원 + KRW), year, mileage, fuel, transmission, region, trust/condition flags, thumbnail and photos.","required_params":[],"optional_params":["make","model","trim","car_type","fuel","transmission","region","price_min","price_max","year_min","year_max","mileage_min","mileage_max","sort","page","size"],"params":[{"name":"make","type":"string","required":false,"description":"Vehicle make. English names (Hyundai, Kia, BMW, Mercedes-Benz, Audi, Toyota, Tesla, Genesis…) are auto-translated to Encar's Korean brand; you may also pass the exact Korean name from a search result.","on_invalid":"ignore","example":"Hyundai","aliases":["manufacturer","brand"]},{"name":"model","type":"string","required":false,"description":"Model name — use the EXACT model string returned by `search` (Korean, e.g. '더 뉴 아반떼'). Pair with `make`.","on_invalid":"ignore","example":"아반떼"},{"name":"trim","type":"string","required":false,"description":"Trim / badge — the exact value from a search result's `trim`.","on_invalid":"ignore","example":"시그니처","aliases":["badge","grade"]},{"name":"car_type","type":"enum","required":false,"description":"Limit to domestic Korean or imported cars. Omit for both.","on_invalid":"ignore","allowed_values":[{"value":"domestic","label":"Domestic Korean brands"},{"value":"imported","label":"Imported / foreign brands"}]},{"name":"fuel","type":"enum","required":false,"description":"Fuel / powertrain type.","on_invalid":"ignore","allowed_values":[{"value":"gasoline","label":"Gasoline"},{"value":"diesel","label":"Diesel"},{"value":"lpg","label":"LPG"},{"value":"hybrid","label":"Hybrid"},{"value":"electric","label":"Electric (EV)"},{"value":"hydrogen","label":"Hydrogen"},{"value":"gasoline_hybrid","label":"Gasoline + electric"},{"value":"cng","label":"CNG"}]},{"name":"transmission","type":"enum","required":false,"description":"Transmission type.","on_invalid":"ignore","allowed_values":[{"value":"automatic","label":"Automatic"},{"value":"manual","label":"Manual"}]},{"name":"region","type":"string","required":false,"description":"Dealer region (Korean province/city: 서울 Seoul, 경기 Gyeonggi, 부산 Busan, 인천 Incheon, 대구 Daegu…).","on_invalid":"ignore","example":"서울"},{"name":"price_min","type":"integer","required":false,"description":"Minimum price in 만원 (10,000 KRW). 1000 = ₩10,000,000.","on_invalid":"ignore","example":1000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum price in 만원 (10,000 KRW). 4000 = ₩40,000,000.","on_invalid":"ignore","example":4000,"minimum":0},{"name":"year_min","type":"integer","required":false,"description":"Minimum model year (e.g. 2020). YYYYMM also accepted (202006).","on_invalid":"ignore","minimum":1980,"maximum":2030},{"name":"year_max","type":"integer","required":false,"description":"Maximum model year (e.g. 2024). YYYYMM also accepted (202412).","on_invalid":"ignore","minimum":1980,"maximum":2030},{"name":"mileage_min","type":"integer","required":false,"description":"Minimum odometer reading in kilometres.","on_invalid":"ignore","minimum":0},{"name":"mileage_max","type":"integer","required":false,"description":"Maximum odometer reading in kilometres.","on_invalid":"ignore","example":50000,"minimum":0},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Recently listed first"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"mileage_asc","label":"Mileage: low to high"},{"value":"mileage_desc","label":"Mileage: high to low"},{"value":"year_desc","label":"Year: new to old"},{"value":"year_asc","label":"Year: old to new"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Page number (1-based).","on_invalid":"ignore","default":1,"minimum":1},{"name":"size","type":"integer","required":false,"description":"Results per page (1–50). Defaults to 20.","on_invalid":"ignore","default":20,"minimum":1,"maximum":50}],"returns":"cars[]{id, make, model, trim, year, year_month, form_year, mileage_km, price_manwon, price_krw, fuel_type, transmission, ev_type, region, sell_type, trust_flags[], condition_flags[], thumbnail, photos[], url} + meta{total_results, pagination}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"Hyundai","size":20}},{"name":"detail","description":"Full detail for one car by `id`: price (만원 + KRW), make/model/grade (Korean + English), year, mileage, displacement, transmission, fuel, color, seats, body type, options, warranty, inspection & accident-record availability, seizing/pledge counts, VIN (when public), all photos, view count, free-text description and the selling dealer's firm. Dealer personal data (name/phone/id/address) is redacted unless include_pii is set.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"Encar car id — the number in a dc_cardetailview carid= URL or a search result's `id`.","on_invalid":"reject","example":"41866115","aliases":["car_id","carid","vehicle_id"]}],"returns":"car{id, vehicle_no, vin, make, make_en, model, model_group, grade, grade_en, year, year_month, domestic, import_type, mileage_km, displacement_cc, transmission, fuel_type, color, seat_count, body_type, price_manwon, price_krw, status, trust_flags[], home_service, warranty_body_months, accident_record_available, accident_resume_available, inspection_available, seizing_count, pledge_count, photos[], option_codes[], view_count, first_advertised_at, description, dealer{firm_name, firm_code, user_type}, url}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"makes","description":"Browse all Korean (domestic) and imported makes available on Encar, each with its live listing count. Use a returned make name with `search`'s `make` filter. Counts are pulled live from the search API (not a stale list).","required_params":[],"optional_params":["car_type"],"params":[{"name":"car_type","type":"enum","required":false,"description":"Limit to domestic Korean or imported cars. Omit for both.","on_invalid":"ignore","allowed_values":[{"value":"domestic","label":"Domestic Korean brands"},{"value":"imported","label":"Imported / foreign brands"}]}],"returns":"makes[]{make, make_en, car_type, count}, missing_makes[] (makes whose count did not arrive in time)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"enjoei","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Enjoei API — Brazil's biggest second-hand fashion & lifestyle marketplace","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/enjoei/v1","spec_available":true,"actions":[{"name":"search","description":"Search Enjoei's live second-hand catalogue by keyword, brand, department, size, price, condition, discount or seller location. Returns the asking price and the seller's struck-through reference price on every row.","required_params":[],"optional_params":["query","department","subcategory","brand","price_min","price_max","condition","size_clothes","size_shoes","size_waist","sort","shipping_range","city","state","published_within","discount_min","discount_max","store_kind","per_page","cursor","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text search, in Portuguese as the site indexes it (`tênis nike`, `vestido zara`). Optional when you are browsing a department, category or brand instead.","on_invalid":"reject","example":"nike","aliases":["q","term","keyword"]},{"name":"department","type":"string","required":false,"description":"Department slug, e.g. `mocas`, `rapazes`, `kids`, `casa`, `infoeletro`. Take the exact slug from a search row's `department`.","on_invalid":"reject","example":"rapazes"},{"name":"subcategory","type":"array","required":false,"description":"One or more sub-category slugs as they appear in a row's `subcategory` (`rapazes-roupas-bermudas`). Comma-separated is accepted.","on_invalid":"reject","example":"rapazes-roupas-bermudas"},{"name":"brand","type":"array","required":false,"description":"One or more brand slugs, exactly as `filters` returns them (`nike`, `zara`, `off-white`).","on_invalid":"reject","example":"nike"},{"name":"price_min","type":"number","required":false,"description":"Lowest listing price, in BRL.","on_invalid":"reject","example":50,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest listing price, in BRL.","on_invalid":"reject","example":300,"minimum":0},{"name":"condition","type":"enum","required":false,"description":"Restrict to second-hand or to unused stock.","on_invalid":"reject","allowed_values":[{"value":"used","label":"used — worn/second-hand"},{"value":"new","label":"new — never used"}],"example":"used"},{"name":"size_clothes","type":"array","required":false,"description":"Clothing sizes (`p`, `m`, `g`, `gg`) — shirts, tops, dresses.","on_invalid":"reject","example":"m"},{"name":"size_shoes","type":"array","required":false,"description":"Shoe sizes, Brazilian numbering (`38`, `40`).","on_invalid":"reject","example":"40"},{"name":"size_waist","type":"array","required":false,"description":"Waist sizes for trousers, shorts and skirts (`38`, `40`, `42`).","on_invalid":"reject","example":"40"},{"name":"sort","type":"enum","required":false,"description":"Result order. Only the four orders Enjoei itself applies are offered — every other value the API accepts is ignored upstream and would silently not sort.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Enjoei's own relevance (default)"},{"value":"price_asc","label":"cheapest first"},{"value":"price_desc","label":"most expensive first"},{"value":"discount_desc","label":"biggest discount first"}],"default":"relevance","example":"price_asc"},{"name":"shipping_range","type":"enum","required":false,"description":"Limit to sellers near a place. Anything other than `same_country` needs `city` and/or `state`.","on_invalid":"reject","allowed_values":[{"value":"same_city","label":"same city"},{"value":"same_state","label":"same state"},{"value":"near_regions","label":"neighbouring regions"},{"value":"same_country","label":"anywhere in Brazil — no restriction, identical to leaving this out"}],"example":"same_state"},{"name":"city","type":"string","required":false,"description":"City the `shipping_range` is measured from.","on_invalid":"reject","example":"São Paulo"},{"name":"state","type":"string","required":false,"description":"Two-letter Brazilian state the `shipping_range` is measured from.","on_invalid":"reject","example":"SP"},{"name":"published_within","type":"enum","required":false,"description":"Only listings published in this window.","on_invalid":"reject","allowed_values":[{"value":"24h","label":"last 24 hours"},{"value":"7d","label":"last 7 days"},{"value":"14d","label":"last 14 days"},{"value":"30d","label":"last 30 days"}],"example":"7d"},{"name":"discount_min","type":"integer","required":false,"description":"Only listings discounted by at least this percentage.","on_invalid":"reject","example":30,"minimum":0,"maximum":100},{"name":"discount_max","type":"integer","required":false,"description":"Only listings discounted by at most this percentage.","on_invalid":"reject","example":90,"minimum":0,"maximum":100},{"name":"store_kind","type":"enum","required":false,"description":"Restrict to a kind of shop. These are the only two kinds Enjoei tags, and both are small slices of the catalogue (measured on `nike`: pro 190, celebrity 33).","on_invalid":"reject","allowed_values":[{"value":"pro","label":"enjoei pro — professional/high-volume sellers"},{"value":"celebrity","label":"famosas — celebrity shops"}],"example":"pro"},{"name":"per_page","type":"integer","required":false,"description":"Rows per page. Enjoei clamps this at 50 — a larger number is silently reduced, so the engine caps it too.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"`next_cursor` from the previous page. Enjoei pages by cursor, not by page number.","on_invalid":"reject","aliases":["after"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to retry a failed upstream attempt before giving up.","on_invalid":"reject","default":3,"minimum":1,"maximum":5}],"returns":"results[] with listing_id, slug, url, title, price, original_price, discount_percent, currency, condition, size, sizes[], variants[], brand, department, category, subcategory, image, free_shipping, shipping_type, bundle_allowed, promo_tags[], seller{username,display_name,url,avatar}; plus count, total_results, total_results_capped, next_cursor, has_more, filters{}, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike","per_page":30}},{"name":"product/detail","description":"One listing in full: the LIVE price (read from Enjoei's own pricing route, not the search index), description, every photo, weight, size, brand, category path, the offer range the seller will consider, and whether it is still on sale.","required_params":["listing"],"optional_params":["max_rotations"],"params":[{"name":"listing","type":"string","required":true,"description":"Listing id, slug or full product URL — `151426712`, `shorts-nike-nba-chicago-bulls-151426712` or the whole `/p/...` link.","on_invalid":"reject","example":"151426712","aliases":["id","listing_id","product","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to retry a failed upstream attempt before giving up.","on_invalid":"reject","default":3,"minimum":1,"maximum":5}],"returns":"listing{listing_id, url, title, description, price, original_price, discount_percent, currency, status, is_sold, condition, size, variants[], brand, brand_verified, category_path[], google_product_category, weight_kg, images[], image_count, offer{accepted,min_price,max_price}, payment{}, seller_id, similar_query}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"listing":"151426712"}},{"name":"product/similar","description":"Listings comparable to a given one — same sub-category, same brand and a price band around it, which is the recipe Enjoei's own page uses. Useful for pricing a second-hand item against live competition.","required_params":["listing"],"optional_params":["per_page","sort","condition","max_rotations"],"params":[{"name":"listing","type":"string","required":true,"description":"Listing id, slug or full product URL — `151426712`, `shorts-nike-nba-chicago-bulls-151426712` or the whole `/p/...` link.","on_invalid":"reject","example":"151426712","aliases":["id","listing_id","product","url"]},{"name":"per_page","type":"integer","required":false,"description":"Rows per page. Enjoei clamps this at 50 — a larger number is silently reduced, so the engine caps it too.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Result order. Only the four orders Enjoei itself applies are offered — every other value the API accepts is ignored upstream and would silently not sort.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Enjoei's own relevance (default)"},{"value":"price_asc","label":"cheapest first"},{"value":"price_desc","label":"most expensive first"},{"value":"discount_desc","label":"biggest discount first"}],"default":"relevance","example":"price_asc"},{"name":"condition","type":"enum","required":false,"description":"Restrict to second-hand or to unused stock.","on_invalid":"reject","allowed_values":[{"value":"used","label":"used — worn/second-hand"},{"value":"new","label":"new — never used"}],"example":"used"},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to retry a failed upstream attempt before giving up.","on_invalid":"reject","default":3,"minimum":1,"maximum":5}],"returns":"results[] with listing_id, slug, url, title, price, original_price, discount_percent, currency, condition, size, sizes[], variants[], brand, department, category, subcategory, image, free_shipping, shipping_type, bundle_allowed, promo_tags[], seller{username,display_name,url,avatar}; plus count, total_results, source_listing_id, filters{}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"listing":"151426712"}},{"name":"seller/listings","description":"Everything a shop currently has for sale, with the same row shape as search and the same filters.","required_params":[],"optional_params":["seller","seller_id","query","brand","subcategory","price_min","price_max","condition","sort","per_page","cursor","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Shop handle (`@diego-a02c80` or `diego-a02c80`) or the shop URL.","on_invalid":"reject","example":"diego-a02c80","aliases":["shop","store","username","nickname"]},{"name":"seller_id","type":"string","required":false,"description":"Numeric shop id, as `seller_id` on a listing detail. Faster than the handle because it needs no lookup.","on_invalid":"reject","example":"42068502"},{"name":"query","type":"string","required":false,"description":"Free-text search, in Portuguese as the site indexes it (`tênis nike`, `vestido zara`). Optional when you are browsing a department, category or brand instead.","on_invalid":"reject","example":"nike","aliases":["q","term","keyword"]},{"name":"brand","type":"array","required":false,"description":"One or more brand slugs, exactly as `filters` returns them (`nike`, `zara`, `off-white`).","on_invalid":"reject","example":"nike"},{"name":"subcategory","type":"array","required":false,"description":"One or more sub-category slugs as they appear in a row's `subcategory` (`rapazes-roupas-bermudas`). Comma-separated is accepted.","on_invalid":"reject","example":"rapazes-roupas-bermudas"},{"name":"price_min","type":"number","required":false,"description":"Lowest listing price, in BRL.","on_invalid":"reject","example":50,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest listing price, in BRL.","on_invalid":"reject","example":300,"minimum":0},{"name":"condition","type":"enum","required":false,"description":"Restrict to second-hand or to unused stock.","on_invalid":"reject","allowed_values":[{"value":"used","label":"used — worn/second-hand"},{"value":"new","label":"new — never used"}],"example":"used"},{"name":"sort","type":"enum","required":false,"description":"Result order. Only the four orders Enjoei itself applies are offered — every other value the API accepts is ignored upstream and would silently not sort.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Enjoei's own relevance (default)"},{"value":"price_asc","label":"cheapest first"},{"value":"price_desc","label":"most expensive first"},{"value":"discount_desc","label":"biggest discount first"}],"default":"relevance","example":"price_asc"},{"name":"per_page","type":"integer","required":false,"description":"Rows per page. Enjoei clamps this at 50 — a larger number is silently reduced, so the engine caps it too.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"`next_cursor` from the previous page. Enjoei pages by cursor, not by page number.","on_invalid":"reject","aliases":["after"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to retry a failed upstream attempt before giving up.","on_invalid":"reject","default":3,"minimum":1,"maximum":5}],"returns":"results[] with listing_id, slug, url, title, price, original_price, discount_percent, currency, condition, size, sizes[], variants[], brand, department, category, subcategory, image, free_shipping, shipping_type, bundle_allowed, promo_tags[], seller{username,display_name,url,avatar}; plus count, total_results, next_cursor, has_more, seller{}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"seller/sold","description":"A shop's completed sales: what the item was listed at AND what it actually sold for. Enjoei publishes both, which makes this the price-comparison surface for second-hand goods in Brazil.","required_params":["seller"],"optional_params":["page","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Shop handle (`@diego-a02c80` or `diego-a02c80`) or the shop URL.","on_invalid":"reject","example":"diego-a02c80","aliases":["shop","store","username","nickname"]},{"name":"page","type":"integer","required":false,"description":"1-based page of the sold shelf (40 rows per page).","on_invalid":"reject","default":1,"example":1,"minimum":1},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to retry a failed upstream attempt before giving up.","on_invalid":"reject","default":3,"minimum":1,"maximum":5}],"returns":"results[] with listing_id, slug, url, title, price, sold_price, discount_percent, currency, is_sold, image; plus count, total_results, page, page_size, has_more, seller","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller/profile","description":"A shop's public page: handle, display name, city/state, bio, avatar, the date it joined, and its public counters — items for sale, items sold, likes received, followers and following.","required_params":["seller"],"optional_params":["max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Shop handle (`@diego-a02c80` or `diego-a02c80`) or the shop URL.","on_invalid":"reject","example":"diego-a02c80","aliases":["shop","store","username","nickname"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to retry a failed upstream attempt before giving up.","on_invalid":"reject","default":3,"minimum":1,"maximum":5}],"returns":"seller{seller_id, username, display_name, url, location, badge, description, avatar, cover_image, member_since, is_business, on_vacation, listings_count, sold_count, liked_count, followers, following}. `location` is 'City, UF' and is null on a shop whose display line carries a merchandising badge instead (8 of 25 measured); that badge is returned as `badge`.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"filters","description":"The brand and sub-category facets Enjoei itself offers for a query, each with its live listing count — the slugs you feed back into `search`.","required_params":[],"optional_params":["query","department","subcategory","brand","price_min","price_max","condition","size_clothes","size_shoes","size_waist","sort","shipping_range","city","state","published_within","discount_min","discount_max","store_kind","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text search, in Portuguese as the site indexes it (`tênis nike`, `vestido zara`). Optional when you are browsing a department, category or brand instead.","on_invalid":"reject","example":"nike","aliases":["q","term","keyword"]},{"name":"department","type":"string","required":false,"description":"Department slug, e.g. `mocas`, `rapazes`, `kids`, `casa`, `infoeletro`. Take the exact slug from a search row's `department`.","on_invalid":"reject","example":"rapazes"},{"name":"subcategory","type":"array","required":false,"description":"One or more sub-category slugs as they appear in a row's `subcategory` (`rapazes-roupas-bermudas`). Comma-separated is accepted.","on_invalid":"reject","example":"rapazes-roupas-bermudas"},{"name":"brand","type":"array","required":false,"description":"One or more brand slugs, exactly as `filters` returns them (`nike`, `zara`, `off-white`).","on_invalid":"reject","example":"nike"},{"name":"price_min","type":"number","required":false,"description":"Lowest listing price, in BRL.","on_invalid":"reject","example":50,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest listing price, in BRL.","on_invalid":"reject","example":300,"minimum":0},{"name":"condition","type":"enum","required":false,"description":"Restrict to second-hand or to unused stock.","on_invalid":"reject","allowed_values":[{"value":"used","label":"used — worn/second-hand"},{"value":"new","label":"new — never used"}],"example":"used"},{"name":"size_clothes","type":"array","required":false,"description":"Clothing sizes (`p`, `m`, `g`, `gg`) — shirts, tops, dresses.","on_invalid":"reject","example":"m"},{"name":"size_shoes","type":"array","required":false,"description":"Shoe sizes, Brazilian numbering (`38`, `40`).","on_invalid":"reject","example":"40"},{"name":"size_waist","type":"array","required":false,"description":"Waist sizes for trousers, shorts and skirts (`38`, `40`, `42`).","on_invalid":"reject","example":"40"},{"name":"sort","type":"enum","required":false,"description":"Result order. Only the four orders Enjoei itself applies are offered — every other value the API accepts is ignored upstream and would silently not sort.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Enjoei's own relevance (default)"},{"value":"price_asc","label":"cheapest first"},{"value":"price_desc","label":"most expensive first"},{"value":"discount_desc","label":"biggest discount first"}],"default":"relevance","example":"price_asc"},{"name":"shipping_range","type":"enum","required":false,"description":"Limit to sellers near a place. Anything other than `same_country` needs `city` and/or `state`.","on_invalid":"reject","allowed_values":[{"value":"same_city","label":"same city"},{"value":"same_state","label":"same state"},{"value":"near_regions","label":"neighbouring regions"},{"value":"same_country","label":"anywhere in Brazil — no restriction, identical to leaving this out"}],"example":"same_state"},{"name":"city","type":"string","required":false,"description":"City the `shipping_range` is measured from.","on_invalid":"reject","example":"São Paulo"},{"name":"state","type":"string","required":false,"description":"Two-letter Brazilian state the `shipping_range` is measured from.","on_invalid":"reject","example":"SP"},{"name":"published_within","type":"enum","required":false,"description":"Only listings published in this window.","on_invalid":"reject","allowed_values":[{"value":"24h","label":"last 24 hours"},{"value":"7d","label":"last 7 days"},{"value":"14d","label":"last 14 days"},{"value":"30d","label":"last 30 days"}],"example":"7d"},{"name":"discount_min","type":"integer","required":false,"description":"Only listings discounted by at least this percentage.","on_invalid":"reject","example":30,"minimum":0,"maximum":100},{"name":"discount_max","type":"integer","required":false,"description":"Only listings discounted by at most this percentage.","on_invalid":"reject","example":90,"minimum":0,"maximum":100},{"name":"store_kind","type":"enum","required":false,"description":"Restrict to a kind of shop. These are the only two kinds Enjoei tags, and both are small slices of the catalogue (measured on `nike`: pro 190, celebrity 33).","on_invalid":"reject","allowed_values":[{"value":"pro","label":"enjoei pro — professional/high-volume sellers"},{"value":"celebrity","label":"famosas — celebrity shops"}],"example":"pro"},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to retry a failed upstream attempt before giving up.","on_invalid":"reject","default":3,"minimum":1,"maximum":5}],"returns":"brands[]{name,slug,count}, subcategories[]{name,slug,count}, store_kinds[]{name,slug,count}, query. No result count: Enjoei zeroes `total` on any query that asks for facets, so ask `search` for the count.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike"}},{"name":"suggest","description":"Enjoei's own search typeahead: completed search terms and matching shops.","required_params":["term"],"optional_params":["max_rotations"],"params":[{"name":"term","type":"string","required":true,"description":"Partial search text to complete, as typed into Enjoei's search box.","on_invalid":"reject","example":"nik","aliases":["query","q","prefix"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to retry a failed upstream attempt before giving up.","on_invalid":"reject","default":3,"minimum":1,"maximum":5}],"returns":"terms[]{text}, shops[]{text,username,url}, term","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":{"term":"nik"}}]},{"name":"enrich-app","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"App & SaaS Reputation API — resolve an app by name, store URL or domain into a fused reputation profile (store ratings, Trustpilot, TrustRadius, GitHub, Product Hunt, live status and news)","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/enrich-app/v1","spec_available":true,"actions":[{"name":"app_reputation","description":"name|store-URL|domain → entity-resolved app/SaaS reputation: store ratings + Trustpilot + GitHub + Product Hunt (basic) — see app_reputation_rich for the full fan-out (review samples + TrustRadius + status + news)","required_params":["query"],"optional_params":["country","stores","include","exclude","trustradius_slug"],"params":[{"name":"query","type":"string","required":true,"description":"App name, store URL/id, OR SaaS domain. PREFER a store URL or app id (apps.apple.com/.../id1232780281 or play.google.com/store/apps/details?id=notion.id) — it resolves the EXACT app deterministically. A SaaS domain (notion.so) is next-best (anchors Trustpilot/TrustRadius/GitHub). A bare name ('Notion') triggers a search + fuzzy match with a match_confidence score and surfaces same-name rivals in entity.candidates.","on_invalid":"reject","example":"https://apps.apple.com/us/app/notion/id1232780281","aliases":["q","app","name","url","store_url","domain"]},{"name":"country","type":"string","required":false,"description":"Store region (ISO-2) for Apple/Play ratings & reviews. Defaults to us. Use tr/jp/de/… for regional store data.","on_invalid":"reject","default":"us","example":"us"},{"name":"stores","type":"array","required":false,"description":"Which app stores to query. Default: both.","on_invalid":"reject","allowed_values":[{"value":"apple","label":"Apple App Store"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]},{"name":"include","type":"array","required":false,"description":"Run ONLY these field groups (cost control). `entity` is always computed. Default: all groups of this action.","on_invalid":"reject","allowed_values":[{"value":"stores","label":"Apple App Store + Google Play ratings/metadata"},{"value":"reviews_sample","label":"A small sample of recent store reviews (rich)"},{"value":"trust","label":"Trustpilot match (+ TrustRadius B2B-software reviews)"},{"value":"developer","label":"GitHub org / developer-repository signal"},{"value":"status","label":"Vendor live status / incident signal (rich)"},{"value":"news","label":"Recent news mentions of the app/vendor (rich)"},{"value":"launch","label":"Product Hunt launch signal"}],"example":["stores","trust"]},{"name":"exclude","type":"array","required":false,"description":"Drop these field groups from this action's default set.","on_invalid":"reject","allowed_values":[{"value":"stores","label":"Apple App Store + Google Play ratings/metadata"},{"value":"reviews_sample","label":"A small sample of recent store reviews (rich)"},{"value":"trust","label":"Trustpilot match (+ TrustRadius B2B-software reviews)"},{"value":"developer","label":"GitHub org / developer-repository signal"},{"value":"status","label":"Vendor live status / incident signal (rich)"},{"value":"news","label":"Recent news mentions of the app/vendor (rich)"},{"value":"launch","label":"Product Hunt launch signal"}],"example":["news"]},{"name":"trustradius_slug","type":"string","required":false,"description":"Optional explicit TrustRadius product slug. When omitted it is derived from the brand; provide it when the brand stem differs from the TrustRadius URL slug.","on_invalid":"reject","example":"notion"}],"returns":"entity{query,input_kind,resolved_name,match,match_confidence,domain,store_refs[],developer,candidates[] (same-name rivals)}, stores{apple{app_id,name,developer,rating,rating_count,...},google_play{}}, trust{trustpilot{found,name,domain,trust_score,stars,reviews_count,categories}}, developer{github_org|top_repos}, launch{product_hunt}, summary{reputation_index,signals[]}; provenance{per-group status + engine + coverage_note (B2C store-rich/Trustpilot-thin vs B2B SaaS the reverse; G2/Capterra explicitly out of scope)}; meta.extra.subcalls[]","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":5},"example_params":{"query":"https://apps.apple.com/us/app/notion/id1232780281","include":["stores"]}},{"name":"app_reputation_rich","description":"everything in app_reputation + a recent store-review sample + TrustRadius B2B reviews + vendor live status/incidents + recent news mentions","required_params":["query"],"optional_params":["country","stores","include","exclude","trustradius_slug"],"params":[{"name":"query","type":"string","required":true,"description":"App name, store URL/id, OR SaaS domain. PREFER a store URL or app id (apps.apple.com/.../id1232780281 or play.google.com/store/apps/details?id=notion.id) — it resolves the EXACT app deterministically. A SaaS domain (notion.so) is next-best (anchors Trustpilot/TrustRadius/GitHub). A bare name ('Notion') triggers a search + fuzzy match with a match_confidence score and surfaces same-name rivals in entity.candidates.","on_invalid":"reject","example":"https://apps.apple.com/us/app/notion/id1232780281","aliases":["q","app","name","url","store_url","domain"]},{"name":"country","type":"string","required":false,"description":"Store region (ISO-2) for Apple/Play ratings & reviews. Defaults to us. Use tr/jp/de/… for regional store data.","on_invalid":"reject","default":"us","example":"us"},{"name":"stores","type":"array","required":false,"description":"Which app stores to query. Default: both.","on_invalid":"reject","allowed_values":[{"value":"apple","label":"Apple App Store"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]},{"name":"include","type":"array","required":false,"description":"Run ONLY these field groups (cost control). `entity` is always computed. Default: all groups of this action.","on_invalid":"reject","allowed_values":[{"value":"stores","label":"Apple App Store + Google Play ratings/metadata"},{"value":"reviews_sample","label":"A small sample of recent store reviews (rich)"},{"value":"trust","label":"Trustpilot match (+ TrustRadius B2B-software reviews)"},{"value":"developer","label":"GitHub org / developer-repository signal"},{"value":"status","label":"Vendor live status / incident signal (rich)"},{"value":"news","label":"Recent news mentions of the app/vendor (rich)"},{"value":"launch","label":"Product Hunt launch signal"}],"example":["stores","trust"]},{"name":"exclude","type":"array","required":false,"description":"Drop these field groups from this action's default set.","on_invalid":"reject","allowed_values":[{"value":"stores","label":"Apple App Store + Google Play ratings/metadata"},{"value":"reviews_sample","label":"A small sample of recent store reviews (rich)"},{"value":"trust","label":"Trustpilot match (+ TrustRadius B2B-software reviews)"},{"value":"developer","label":"GitHub org / developer-repository signal"},{"value":"status","label":"Vendor live status / incident signal (rich)"},{"value":"news","label":"Recent news mentions of the app/vendor (rich)"},{"value":"launch","label":"Product Hunt launch signal"}],"example":["news"]},{"name":"trustradius_slug","type":"string","required":false,"description":"Optional explicit TrustRadius product slug. When omitted it is derived from the brand; provide it when the brand stem differs from the TrustRadius URL slug.","on_invalid":"reject","example":"notion"}],"returns":"app_reputation payload + reviews_sample{apple[],google_play[]}, trust.trustradius{found,name,rating_avg,review_count,sample[]}, status{vendor,indicator,is_operational,active_incidents}, news{articles[],count}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":10},"example_params":{"query":"https://apps.apple.com/us/app/notion/id1232780281"}},{"name":"batch","description":"reputation for up to 10 apps/domains in one call (basic groups, cache-first, per-item ok/error)","required_params":["queries"],"optional_params":["country","stores","include","exclude"],"params":[{"name":"queries","type":"array","required":true,"description":"Up to 10 app names / store URLs / domains (array or comma-separated). Each is enriched like app_reputation (basic groups, cache-first), with per-item ok/error.","on_invalid":"reject","example":["Notion","Spotify","https://notion.so"]},{"name":"country","type":"string","required":false,"description":"Store region (ISO-2) for Apple/Play ratings & reviews. Defaults to us. Use tr/jp/de/… for regional store data.","on_invalid":"reject","default":"us","example":"us"},{"name":"stores","type":"array","required":false,"description":"Which app stores to query. Default: both.","on_invalid":"reject","allowed_values":[{"value":"apple","label":"Apple App Store"},{"value":"google_play","label":"Google Play"}],"example":["apple","google_play"]},{"name":"include","type":"array","required":false,"description":"Run ONLY these field groups (cost control). `entity` is always computed. Default: all groups of this action.","on_invalid":"reject","allowed_values":[{"value":"stores","label":"Apple App Store + Google Play ratings/metadata"},{"value":"reviews_sample","label":"A small sample of recent store reviews (rich)"},{"value":"trust","label":"Trustpilot match (+ TrustRadius B2B-software reviews)"},{"value":"developer","label":"GitHub org / developer-repository signal"},{"value":"status","label":"Vendor live status / incident signal (rich)"},{"value":"news","label":"Recent news mentions of the app/vendor (rich)"},{"value":"launch","label":"Product Hunt launch signal"}],"example":["stores","trust"]},{"name":"exclude","type":"array","required":false,"description":"Drop these field groups from this action's default set.","on_invalid":"reject","allowed_values":[{"value":"stores","label":"Apple App Store + Google Play ratings/metadata"},{"value":"reviews_sample","label":"A small sample of recent store reviews (rich)"},{"value":"trust","label":"Trustpilot match (+ TrustRadius B2B-software reviews)"},{"value":"developer","label":"GitHub org / developer-repository signal"},{"value":"status","label":"Vendor live status / incident signal (rich)"},{"value":"news","label":"Recent news mentions of the app/vendor (rich)"},{"value":"launch","label":"Product Hunt launch signal"}],"example":["news"]}],"returns":"results[] (one app_reputation payload or {ok:false,error} per input), count, ok_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":4},"example_params":null}]},{"name":"enrich-company","category":{"id":"utilities","title":"Utilities & AI"},"title":"Company Intelligence API — turn a domain into an enriched company profile: firmographics, reviews, local presence, brand trends, funding signals and tech footprint","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/enrich-company/v1","spec_available":true,"actions":[{"name":"company_domain","description":"domain → entity-resolved company profile (core groups) with per-field provenance","required_params":["domain"],"optional_params":["include","exclude"],"params":[{"name":"domain","type":"string","required":true,"description":"Company website domain to enrich (bare host like stripe.com; a full URL or leading www. is accepted and normalized).","on_invalid":"reject","example":"stripe.com"},{"name":"include","type":"array","required":false,"description":"Run ONLY these field groups (cost control). Default: all groups of this action. `entity` + `company` are always computed from whatever ran.","on_invalid":"reject","allowed_values":[{"value":"domain","label":"WHOIS/DNS/SSL/subdomains + domain age"},{"value":"tech","label":"Technology fingerprint (CMS/CDN/server)"},{"value":"presence","label":"Search presence, og profile, social links, redirect"},{"value":"news","label":"Recent news mentions"},{"value":"developer","label":"GitHub org/repos (+ packages in rich)"},{"value":"hiring","label":"ATS job board + open roles (+ employer firmographics in rich)"},{"value":"reputation","label":"Trustpilot match (+ reviews & Google Maps in rich)"}],"example":["domain","presence"]},{"name":"exclude","type":"array","required":false,"description":"Drop these field groups from this action's default set.","on_invalid":"reject","allowed_values":[{"value":"domain","label":"WHOIS/DNS/SSL/subdomains + domain age"},{"value":"tech","label":"Technology fingerprint (CMS/CDN/server)"},{"value":"presence","label":"Search presence, og profile, social links, redirect"},{"value":"news","label":"Recent news mentions"},{"value":"developer","label":"GitHub org/repos (+ packages in rich)"},{"value":"hiring","label":"ATS job board + open roles (+ employer firmographics in rich)"},{"value":"reputation","label":"Trustpilot match (+ reviews & Google Maps in rich)"}],"example":["apps"]}],"returns":"entity{input_domain,final_domain,match: exact-domain|redirected|brand-name|fuzzy, confidence, canonical_name, evidence[]}, company{name,name_latin,legal_name,description,logo_hint,phone,site_title — each {value,source,confidence,last_checked}}, domain{whois/dns/ssl/subdomains summary}, tech{technologies[],categories{cms/ecommerce/analytics/framework/cdn_hosting/payments/marketing_automation/chat_support/crm/email_provider}}, presence{search,og,social_links,redirect,website_alive,site_signals{has_contact_page,has_about_page,has_phone,has_quote_cta,has_service_keywords}}, news{articles[]}, developer{github_org,top_repos}, hiring{ats,jobs_count,by_department,sample_jobs}, reputation{trustpilot}; provenance{per-group status+engine+missing_reason: not_found|blocked|timeout|budget|unsupported|error|skipped}; meta.extra.subcalls[] (contributing sources, customer-safe)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":6},"example_params":{"domain":"github.com","include":["domain","presence"]}},{"name":"company_domain_rich","description":"everything in company_domain + firmographics (LinkedIn/Indeed/Glassdoor), review depth, local/maps match, brand trends, app/package presence, registry funding signals (Wikidata), traffic rank","required_params":["domain"],"optional_params":["include","exclude"],"params":[{"name":"domain","type":"string","required":true,"description":"Company website domain to enrich (bare host like stripe.com; a full URL or leading www. is accepted and normalized).","on_invalid":"reject","example":"stripe.com"},{"name":"include","type":"array","required":false,"description":"Run ONLY these field groups (cost control). Default: all groups of this action. `entity` + `company` are always computed from whatever ran.","on_invalid":"reject","allowed_values":[{"value":"domain","label":"WHOIS/DNS/SSL/subdomains + domain age"},{"value":"tech","label":"Technology fingerprint (CMS/CDN/server)"},{"value":"presence","label":"Search presence, og profile, social links, redirect"},{"value":"news","label":"Recent news mentions"},{"value":"developer","label":"GitHub org/repos (+ packages in rich)"},{"value":"hiring","label":"ATS job board + open roles (+ employer firmographics in rich)"},{"value":"reputation","label":"Trustpilot match (+ reviews & Google Maps in rich)"},{"value":"trends","label":"Google Trends brand interest (rich)"},{"value":"apps","label":"App Store / Google Play presence (rich)"},{"value":"funding","label":"Registry firmographics (Wikidata, notable cos) + funding press (rich)"},{"value":"traffic","label":"Domain popularity rank (Tranco; rank, not visits) (rich)"}],"example":["domain","presence"]},{"name":"exclude","type":"array","required":false,"description":"Drop these field groups from this action's default set.","on_invalid":"reject","allowed_values":[{"value":"domain","label":"WHOIS/DNS/SSL/subdomains + domain age"},{"value":"tech","label":"Technology fingerprint (CMS/CDN/server)"},{"value":"presence","label":"Search presence, og profile, social links, redirect"},{"value":"news","label":"Recent news mentions"},{"value":"developer","label":"GitHub org/repos (+ packages in rich)"},{"value":"hiring","label":"ATS job board + open roles (+ employer firmographics in rich)"},{"value":"reputation","label":"Trustpilot match (+ reviews & Google Maps in rich)"},{"value":"trends","label":"Google Trends brand interest (rich)"},{"value":"apps","label":"App Store / Google Play presence (rich)"},{"value":"funding","label":"Registry firmographics (Wikidata, notable cos) + funding press (rich)"},{"value":"traffic","label":"Domain popularity rank (Tranco; rank, not visits) (rich)"}],"example":["apps"]}],"returns":"company_domain payload + company{industry,founded,employees,headquarters{raw,city,region,country,country_code},revenue_range,specialties,parent,ticker}, hiring.employer{linkedin,indeed,glassdoor}, reputation{trustpilot deep,maps}, trends{}, apps{}, funding{registry(Wikidata),recent_funding_news[],total_raised:null-if-unknown}, traffic{tranco rank+tier — rank not visits}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":14},"example_params":{"domain":"github.com"}},{"name":"batch","description":"enrich up to 10 domains in one call (core groups, cache-first, per-domain ok/error)","required_params":["domains"],"optional_params":["include","exclude"],"params":[{"name":"domains","type":"array","required":true,"description":"Up to 10 domains (array or comma-separated). Each is enriched like company_domain; per-domain ok/error, cache-first.","on_invalid":"reject","example":["stripe.com","shopify.com"]},{"name":"include","type":"array","required":false,"description":"Run ONLY these field groups (cost control). Default: all groups of this action. `entity` + `company` are always computed from whatever ran.","on_invalid":"reject","allowed_values":[{"value":"domain","label":"WHOIS/DNS/SSL/subdomains + domain age"},{"value":"tech","label":"Technology fingerprint (CMS/CDN/server)"},{"value":"presence","label":"Search presence, og profile, social links, redirect"},{"value":"news","label":"Recent news mentions"},{"value":"developer","label":"GitHub org/repos (+ packages in rich)"},{"value":"hiring","label":"ATS job board + open roles (+ employer firmographics in rich)"},{"value":"reputation","label":"Trustpilot match (+ reviews & Google Maps in rich)"}],"example":["domain","presence"]},{"name":"exclude","type":"array","required":false,"description":"Drop these field groups from this action's default set.","on_invalid":"reject","allowed_values":[{"value":"domain","label":"WHOIS/DNS/SSL/subdomains + domain age"},{"value":"tech","label":"Technology fingerprint (CMS/CDN/server)"},{"value":"presence","label":"Search presence, og profile, social links, redirect"},{"value":"news","label":"Recent news mentions"},{"value":"developer","label":"GitHub org/repos (+ packages in rich)"},{"value":"hiring","label":"ATS job board + open roles (+ employer firmographics in rich)"},{"value":"reputation","label":"Trustpilot match (+ reviews & Google Maps in rich)"}],"example":["apps"]}],"returns":"results[] (one company_domain payload or {ok:false,error} per input), count, ok_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":24},"example_params":null}]},{"name":"enrich-hiring","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Hiring Signals API — turn a company domain into a hiring snapshot: ATS provider, open-role counts, departments, seniority, remote ratio and tech-stack signals","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/enrich-hiring/v1","spec_available":true,"actions":[{"name":"hiring_signal","description":"domain → company hiring snapshot: ATS provider + direct open-roles count, per-source counts (deduped), departments/seniority/remote-ratio/tech-signals, entity-confirm, honest snapshot intensity","required_params":[],"optional_params":["domain","company_name","ats_slug","ats_provider","countries"],"params":[{"name":"domain","type":"string","required":false,"description":"Company website domain (bare host like stripe.com; a full URL or leading www. is accepted and normalized). The ATS board slug is derived from the domain stem. Provide `domain` OR `company_name` (domain gives the strongest entity anchor).","on_invalid":"reject","example":"stripe.com","aliases":["company_domain"]},{"name":"company_name","type":"string","required":false,"description":"Company name, used when no domain is available (entity-match is weaker without a domain). Also seeds the ATS slug guess.","on_invalid":"reject","example":"Stripe","aliases":["company","name"]},{"name":"ats_slug","type":"string","required":false,"description":"Advanced: force the ATS board token/subdomain (skips slug auto-detect). Use when the board slug differs from the domain stem (e.g. a parent-company board).","on_invalid":"reject","example":"stripe"},{"name":"ats_provider","type":"enum","required":false,"description":"Advanced: force the ATS provider (skips the parallel probe). One of greenhouse / lever / ashby / workable.","on_invalid":"ignore","allowed_values":[{"value":"greenhouse","label":"Greenhouse"},{"value":"lever","label":"Lever"},{"value":"ashby","label":"Ashby"},{"value":"workable","label":"Workable"}],"example":"greenhouse"},{"name":"countries","type":"array","required":false,"description":"Optional country hints for the keyword job sources (best-effort location filter; ATS count is global).","on_invalid":"reject","example":["US","GB"]}],"returns":"entity{input, resolved_name, confidence, match: ats-board|name-only, evidence[]}, ats{provider, slug, direct_jobs_count, matched}, jobs{count_by_source{ats,linkedin,indeed}, dedup_count, deduplicated_total, sample[]{title,location,department,seniority,remote,source,url,posted}}, departments[]{name,count,pct}, seniority_mix[]{level,count,pct}, remote_ratio, tech_signals[]{name,count}, current_hiring_intensity{level,basis,open_jobs}, coverage[]{source,status,count,note}, freshness; meta.extra.subcalls[] (contributing sources, customer-safe)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":6},"example_params":{"domain":"stripe.com"}},{"name":"hiring_signal_rich","description":"everything in hiring_signal + employer firmographics (linkedin company / glassdoor employer: industry, employee_count, HQ, founded, rating) which anchor a headcount-relative intensity (open-roles-to-headcount ratio)","required_params":[],"optional_params":["domain","company_name","ats_slug","ats_provider","countries"],"params":[{"name":"domain","type":"string","required":false,"description":"Company website domain (bare host like stripe.com; a full URL or leading www. is accepted and normalized). The ATS board slug is derived from the domain stem. Provide `domain` OR `company_name` (domain gives the strongest entity anchor).","on_invalid":"reject","example":"stripe.com","aliases":["company_domain"]},{"name":"company_name","type":"string","required":false,"description":"Company name, used when no domain is available (entity-match is weaker without a domain). Also seeds the ATS slug guess.","on_invalid":"reject","example":"Stripe","aliases":["company","name"]},{"name":"ats_slug","type":"string","required":false,"description":"Advanced: force the ATS board token/subdomain (skips slug auto-detect). Use when the board slug differs from the domain stem (e.g. a parent-company board).","on_invalid":"reject","example":"stripe"},{"name":"ats_provider","type":"enum","required":false,"description":"Advanced: force the ATS provider (skips the parallel probe). One of greenhouse / lever / ashby / workable.","on_invalid":"ignore","allowed_values":[{"value":"greenhouse","label":"Greenhouse"},{"value":"lever","label":"Lever"},{"value":"ashby","label":"Ashby"},{"value":"workable","label":"Workable"}],"example":"greenhouse"},{"name":"countries","type":"array","required":false,"description":"Optional country hints for the keyword job sources (best-effort location filter; ATS count is global).","on_invalid":"reject","example":["US","GB"]}],"returns":"hiring_signal payload + employer{linkedin{industry,employee_count,company_size,headquarters,founded,specialties}, glassdoor{industry,size,overall_rating,review_count}}; current_hiring_intensity gains open_to_headcount_ratio when a headcount is known","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":10},"example_params":{"domain":"stripe.com"}},{"name":"batch","description":"hiring_signal for up to 10 domains in one call (cache-first, per-item ok/error)","required_params":["domains"],"optional_params":[],"params":[{"name":"domains","type":"array","required":true,"description":"Up to 10 domains (array or comma-separated). Each gets a hiring_signal snapshot; per-item ok/error, cache-first.","on_invalid":"reject","example":["stripe.com","shopify.com"]}],"returns":"results[] (one hiring_signal payload or {ok:false,error} per input), count, ok_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":5},"example_params":null}]},{"name":"enrich-local","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Local Business Intelligence API — turn a business name and location into a place profile with multi-source reviews, website health and legitimacy signals","version":"1.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/enrich-local/v1","spec_available":true,"actions":[{"name":"business_lookup","description":"name+location ‖ place_query → matched place (Google Maps) + multi-source review presence + website health + indexed presence + negative-news + legitimacy signal list, with an honest coverage_note + per-group provenance.","required_params":[],"optional_params":["name","location","place_query","lat","lng","country","yelp_enc_biz_id","include","exclude"],"params":[{"name":"name","type":"string","required":false,"description":"Business name to look up. Pair with `location` (or lat/lng) for accurate chain-branch matching. Provide this+location OR `place_query`.","on_invalid":"reject","example":"Katz's Delicatessen"},{"name":"location","type":"string","required":false,"description":"City / neighborhood / address the business is in. Disambiguates same-named branches (used with `name`).","on_invalid":"reject","example":"Manhattan, New York"},{"name":"place_query","type":"string","required":false,"description":"Free-text place query (name + place hint in one string). Alternative to name+location.","on_invalid":"reject","example":"Blue Bottle Coffee Williamsburg"},{"name":"lat","type":"number","required":false,"description":"Latitude to geo-bias the match around — strongest branch disambiguator (pair with lng).","on_invalid":"ignore","example":40.7223,"minimum":-90,"maximum":90},{"name":"lng","type":"number","required":false,"description":"Longitude to geo-bias the match around (pair with lat).","on_invalid":"ignore","example":-73.9874,"minimum":-180,"maximum":180},{"name":"country","type":"string","required":false,"description":"ISO-3166 country hint (us, gb, tr…) — improves region-source routing (Yelp=US/CA, Tripadvisor=travel) and the coverage_note.","on_invalid":"ignore","example":"US"},{"name":"yelp_enc_biz_id","type":"string","required":false,"description":"Optional Yelp business identifier (the encrypted ID, not the URL slug). This is a shortcut: the engine already resolves a business name to its Yelp ID automatically — pass this only when you already have it and want to skip the lookup step.","on_invalid":"ignore","example":"gZz9A8k8ORC_xl0aHxtY4w"},{"name":"include","type":"array","required":false,"description":"Run ONLY these enrichment groups (cost control). Default: all. `place` (Google Maps) is always resolved — it is the anchor.","on_invalid":"reject","allowed_values":[{"value":"reviews","label":"Multi-source review presence (Yelp/Tripadvisor/Trustpilot) + sample"},{"value":"website","label":"Website/domain health (domain-intel: age, SSL, DNS)"},{"value":"presence","label":"Indexed web-presence signal (google-search)"},{"value":"news","label":"Negative-news signal scan (news-intel)"},{"value":"legitimacy","label":"Legitimacy signal list (built from the above — R17 signal-only)"}],"example":["reviews","website"]},{"name":"exclude","type":"array","required":false,"description":"Drop these enrichment groups from the default set.","on_invalid":"reject","allowed_values":[{"value":"reviews","label":"Multi-source review presence (Yelp/Tripadvisor/Trustpilot) + sample"},{"value":"website","label":"Website/domain health (domain-intel: age, SSL, DNS)"},{"value":"presence","label":"Indexed web-presence signal (google-search)"},{"value":"news","label":"Negative-news signal scan (news-intel)"},{"value":"legitimacy","label":"Legitimacy signal list (built from the above — R17 signal-only)"}],"example":["news"]}],"returns":"place{name,address,phone,phone_display,website,domain,category,categories,rating,review_count,latitude,longitude,maps_url,hours_today}, match{match_confidence,name_similarity,distance_km,geo_validated,alternatives_considered,runner_up}, review_presence{google,yelp,tripadvisor,trustpilot — each {found, rating, review_count, sample[]}}, website{domain,domain_age_days,ssl_active,registrar,dns_summary,website_alive}, presence{indexed,top_results[]}, negative_news{found,articles[]}, legitimacy{signals[],unknowns[],coverage_note,disclaimer}, freshness; provenance{per-group status+engine+missing_reason}; meta.extra.subcalls[] (contributing sources)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":8},"example_params":{"name":"Katz's Delicatessen","location":"Manhattan","lat":40.7223,"lng":-73.9874,"include":["website"]}},{"name":"batch","description":"enrich up to 10 businesses in one call (lead-list use-case; per-item ok/error, cache-first).","required_params":["businesses"],"optional_params":["include","exclude"],"params":[{"name":"businesses","type":"array","required":true,"description":"Up to 10 businesses (each {name,location} / {place_query} / {name,lat,lng}). Lead-list enrichment; per-item ok/error, cache-first.","on_invalid":"reject","example":[{"name":"Katz's Delicatessen","location":"Manhattan"},{"place_query":"Noma Copenhagen"}]},{"name":"include","type":"array","required":false,"description":"Run ONLY these enrichment groups (cost control). Default: all. `place` (Google Maps) is always resolved — it is the anchor.","on_invalid":"reject","allowed_values":[{"value":"reviews","label":"Multi-source review presence (Yelp/Tripadvisor/Trustpilot) + sample"},{"value":"website","label":"Website/domain health (domain-intel: age, SSL, DNS)"},{"value":"presence","label":"Indexed web-presence signal (google-search)"},{"value":"news","label":"Negative-news signal scan (news-intel)"},{"value":"legitimacy","label":"Legitimacy signal list (built from the above — R17 signal-only)"}],"example":["reviews","website"]},{"name":"exclude","type":"array","required":false,"description":"Drop these enrichment groups from the default set.","on_invalid":"reject","allowed_values":[{"value":"reviews","label":"Multi-source review presence (Yelp/Tripadvisor/Trustpilot) + sample"},{"value":"website","label":"Website/domain health (domain-intel: age, SSL, DNS)"},{"value":"presence","label":"Indexed web-presence signal (google-search)"},{"value":"news","label":"Negative-news signal scan (news-intel)"},{"value":"legitimacy","label":"Legitimacy signal list (built from the above — R17 signal-only)"}],"example":["news"]}],"returns":"results[] (one business_lookup payload or {ok:false,error} per input), count, ok_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":8},"example_params":null}]},{"name":"enrich-package","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Package & Dependency Trust API — score an open-source package or repository (npm, PyPI, Go, Cargo, RubyGems): downloads, maintainers, license, repo health and vulnerabilities, plus lockfile scanning","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/enrich-package/v1","spec_available":true,"actions":[{"name":"package_trust","description":"ecosystem+package → registry metadata + downloads + maintainers + license + resolved repository health + vulnerabilities + partial trust score (with per-sub-score inputs)","required_params":["ecosystem","package"],"optional_params":["version","mode"],"params":[{"name":"ecosystem","type":"enum","required":true,"description":"Package ecosystem. npm/pypi get full registry metadata + downloads; maven/rubygems/crates/go get vulnerabilities + declared-repository health (the wider OSV ecosystem set).","on_invalid":"reject","allowed_values":[{"value":"npm","label":"npm (Node.js) — full metadata + downloads + vuln"},{"value":"pypi","label":"PyPI (Python) — full metadata + downloads + vuln"},{"value":"maven","label":"Maven (Java) — vuln + declared-repo health (registry metadata via repo)"},{"value":"rubygems","label":"RubyGems (Ruby) — vuln + declared-repo health"},{"value":"crates","label":"crates.io (Rust) — vuln + declared-repo health"},{"value":"go","label":"Go modules — vuln + declared-repo health"}],"example":"npm","aliases":["registry"]},{"name":"package","type":"string","required":true,"description":"Package name as published in its registry (npm 'lodash', PyPI 'requests', Maven 'group:artifact', Go import path). Scoped npm names like '@scope/pkg' are supported.","on_invalid":"reject","example":"lodash","aliases":["name","pkg"]},{"name":"version","type":"string","required":false,"description":"Exact installed version to assess for vulnerabilities. Omit to assess the latest published version + ALL known vulns of the package.","on_invalid":"ignore","example":"4.17.15"},{"name":"mode","type":"enum","required":false,"description":"basic = registry metadata + license + repo health + score; rich (default) adds the full vulnerability scan, release cadence, contributor bus-factor and a stackoverflow community signal.","on_invalid":"ignore","allowed_values":[{"value":"basic","label":"registry + license + repo + score (no vuln deep / SO)"},{"value":"rich","label":"everything: vulns + contributors + releases + stackoverflow signal"}],"default":"rich","example":"rich"}],"returns":"package{name,ecosystem,version,description,homepage}, metadata{license{value,spdx,tier,risk_note}, maintainers[], keywords, version_count, latest}, downloads{monthly|recent}, repo{found,host,owner,repo,repo_url,match{confidence,class,source_field,name_similarity,evidence[],reason}, health{stars,forks,open_issues,archived,pushed_at,last_release,releases_12mo,contributors,bus_factor}}, vulnerabilities{count,highest_severity,by_severity,items[]}, dependencies{direct_count,sample}, community{stackoverflow}, score{popularity,maintenance,security,license,dependency_risk — each {score|'unknown',inputs,method,flags?}, overall{trust_score,grade,scored_components,unknown_components}}; provenance{per-group status+engine+missing_reason}; meta.extra.subcalls[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"ecosystem":"npm","package":"lodash","version":"4.17.15","mode":"rich"}},{"name":"repo_trust","description":"owner/repo → repository health + release cadence + bus-factor signal + repo-anchored trust sub-scores (popularity/maintenance), independent of any registry","required_params":["owner","repo"],"optional_params":[],"params":[{"name":"owner","type":"string","required":true,"description":"GitHub repository owner / org (e.g. 'facebook').","on_invalid":"reject","example":"lodash"},{"name":"repo","type":"string","required":true,"description":"GitHub repository name (e.g. 'react').","on_invalid":"reject","example":"lodash"}],"returns":"repo{owner,repo,repo_url,health{stars,forks,watchers,open_issues,archived,license,pushed_at,created_at,last_release,releases_12mo,contributors,bus_factor,top_languages}}, score{popularity,maintenance,license,overall}; provenance; meta.extra.subcalls[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"owner":"facebook","repo":"react"}},{"name":"lockfile_scan","description":"manifest/lockfile text → dependency list + each dep's vuln/risk summary via one batched vuln scan (BOUNDED: direct + lockfile-pinned deps, max 100; truncated:true when capped). package.json/lock, requirements.txt, go.sum/mod, Cargo.lock, Gemfile.lock","required_params":["content"],"optional_params":["filename","ecosystem"],"params":[{"name":"content","type":"string","required":true,"description":"Raw manifest/lockfile text: package.json, package-lock.json, requirements.txt, go.sum/go.mod, Cargo.lock, or Gemfile.lock. Direct (+ lockfile-pinned) deps are scanned; bounded to 100 deps.","on_invalid":"reject","example":"lodash==4.17.15\nrequests>=2.0\nflask==2.0.0"},{"name":"filename","type":"string","required":false,"description":"Optional filename hint to disambiguate the manifest format (e.g. 'package-lock.json', 'go.sum'). Auto-detected if omitted.","on_invalid":"ignore","example":"requirements.txt"},{"name":"ecosystem","type":"enum","required":false,"description":"Optional ecosystem hint when the manifest format is ambiguous.","on_invalid":"ignore","allowed_values":[{"value":"npm","label":"npm (Node.js) — full metadata + downloads + vuln"},{"value":"pypi","label":"PyPI (Python) — full metadata + downloads + vuln"},{"value":"maven","label":"Maven (Java) — vuln + declared-repo health (registry metadata via repo)"},{"value":"rubygems","label":"RubyGems (Ruby) — vuln + declared-repo health"},{"value":"crates","label":"crates.io (Rust) — vuln + declared-repo health"},{"value":"go","label":"Go modules — vuln + declared-repo health"}],"example":"npm"}],"returns":"manifest{ecosystem,format,dependency_count,truncated,parsed_count}, summary{vulnerable_deps,total_vulns,highest_severity,by_severity,clean_deps}, dependencies[] (ecosystem,name,version,vuln_count,highest_severity,vulns[]); meta.extra.subcalls[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":5},"example_params":{"content":"lodash\nflask==2.0.0\nrequests==2.20.0","filename":"requirements.txt"}},{"name":"batch","description":"trust-score up to 10 packages in one call (basic depth, per-item ok/error)","required_params":["items"],"optional_params":[],"params":[{"name":"items","type":"array","required":true,"description":"Up to 10 {ecosystem, package, version?} objects. Each is trust-scored like package_trust (basic depth); per-item ok/error.","on_invalid":"reject","example":[{"ecosystem":"npm","package":"lodash","version":"4.17.15"},{"ecosystem":"pypi","package":"requests"}]}],"returns":"results[] (one package_trust basic payload or {ok:false,error} per item), count, ok_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"enrich-property","category":{"id":"real-estate","title":"Real Estate"},"title":"Property Snapshot API — turn an address or listing URL into one normalized property record: status, price, sold history, key facts and valuation across the US, UK and more","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/enrich-property/v1","spec_available":true,"actions":[{"name":"snapshot","description":"address OR listing_url → one normalized property snapshot: status, price, sold-history, core facts, valuation (where available), per-field provenance + a match block (how the address was resolved + match_confidence).","required_params":[],"optional_params":["address","listing_url","country","mode"],"params":[{"name":"address","type":"string","required":false,"description":"Free-text property address (street + city + state/postcode). Provide this OR listing_url. For the most reliable match include the unit/apt and the postcode. Supported countries: US, UK, Japan.","on_invalid":"reject","example":"1444 Fairmont St NW #4, Washington, DC 20009","aliases":["query","q"]},{"name":"listing_url","type":"string","required":false,"description":"A copied listing URL — routed to the right source automatically (zillow.com, redfin.com, realtor.com, rightmove.co.uk, suumo.jp). Provide this OR address.","on_invalid":"reject","example":"https://www.zillow.com/homedetails/.../117892026_zpid/","aliases":["url"]},{"name":"country","type":"enum","required":false,"description":"Optional ISO country hint to skip auto-detection (US/GB/JP). Recommended when an address is ambiguous (e.g. a bare ZIP/outcode).","on_invalid":"ignore","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"JP","label":"Japan"}],"example":"US"},{"name":"mode","type":"enum","required":false,"description":"Depth of the snapshot. rich adds area market_context; cross_validated (US) reconciles facts across all 3 US sources.","on_invalid":"ignore","allowed_values":[{"value":"standard","label":"Snapshot: status + price + facts + history"},{"value":"rich","label":"+ local market context (medians/DOM) for the area"},{"value":"cross_validated","label":"US only: query all of zillow+redfin+realtor and reconcile price/facts across sources (most expensive)"}],"default":"standard","example":"standard"}],"returns":"property{address_normalized,country,source_engine,source_id,listing_url}, match{mode: url|address-search, confidence, reasons[], candidates_considered, unit_disambiguated}, status (active|for_rent|sold|off_market|unknown), price{list:{value,currency,source}, rent, sold_history[]{price,date,source}, price_per_area}, valuation{estimate,source} (null for UK — no AVM), facts{beds,baths,area{value,unit},year_built,property_type,lot_area — each {value,source,confidence}}, market_context? (rich), photos[] (refs), cross_validation? (cross_validated mode), coverage{supported,note}, provenance{per-source status+engine+missing_reason}; meta.extra.subcalls[] (contributing sources, customer-safe)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":5},"example_params":{"listing_url":"https://www.zillow.com/homedetails/x/117892026_zpid/"}},{"name":"resolve","description":"address → ranked candidate listings[] (id + source + match_confidence) so the customer picks the exact property (apartment-unit / stale-listing disambiguation). The false-match-reducing flow — call this when a snapshot returns low confidence.","required_params":["address"],"optional_params":["country","limit"],"params":[{"name":"address","type":"string","required":false,"description":"Free-text property address (street + city + state/postcode). Provide this OR listing_url. For the most reliable match include the unit/apt and the postcode. Supported countries: US, UK, Japan.","on_invalid":"reject","example":"1444 Fairmont St NW #4, Washington, DC 20009","aliases":["query","q"]},{"name":"country","type":"enum","required":false,"description":"Optional ISO country hint to skip auto-detection (US/GB/JP). Recommended when an address is ambiguous (e.g. a bare ZIP/outcode).","on_invalid":"ignore","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"JP","label":"Japan"}],"example":"US"},{"name":"limit","type":"integer","required":false,"description":"Max candidate listings to return (resolve action).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":25}],"returns":"query, country, candidates[]{source_engine, source_id, listing_url, address_line, match_confidence, match_reasons[], list_price, beds, baths, status, latitude, longitude}, count, best{...}, coverage{...}, provenance{...}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"address":"137 Mellison Road, Tooting, London, SW17"}},{"name":"batch","description":"snapshot up to 10 addresses/listing-URLs in one call (standard mode, cache-first, per-item ok/error).","required_params":["items"],"optional_params":["country"],"params":[{"name":"items","type":"array","required":true,"description":"Up to 10 addresses and/or listing URLs (array). Each is snapshotted independently; per-item ok/error.","on_invalid":"reject","example":["1600 Amphitheatre Pkwy, Mountain View, CA","https://www.rightmove.co.uk/properties/148711631"],"aliases":["addresses","queries"]},{"name":"country","type":"enum","required":false,"description":"Optional ISO country hint to skip auto-detection (US/GB/JP). Recommended when an address is ambiguous (e.g. a bare ZIP/outcode).","on_invalid":"ignore","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"JP","label":"Japan"}],"example":"US"}],"returns":"results[] (one snapshot payload or {ok:false,error} per input), count, ok_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":5},"example_params":null},{"name":"coverage","description":"Static capability map: which countries/sources are supported, per-country source set, and the documented gaps (UK has no AVM; JP only 4 prefectures). No sub-calls.","required_params":[],"optional_params":[],"params":[],"returns":"countries{US,GB,JP}{sources[], valuation, notes}, url_routing{domain→engine}, unsupported_policy","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"enrich-recall","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Product Safety & Recall Match API — match a product by barcode or title+brand against US FDA and EU recalls, with confidence scoring and brand recall watch","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/enrich-recall/v1","spec_available":true,"actions":[{"name":"product_match","description":"Resolve a product (GTIN ‖ title+brand ‖ listing_url) and match it against FDA + EU recalls with transparent confidence. recalls[] = high-confidence (brand independently matched); possible[] = lower-confidence candidates.","required_params":[],"optional_params":["gtin","title","brand","category","listing_url","max_results"],"params":[{"name":"gtin","type":"string","required":false,"description":"Product barcode (GTIN-8/12/13/14, UPC, EAN or ISBN). The engine resolves it to {title, brand, category} via the barcode engine, then matches recalls. Provide this OR (title + brand) OR listing_url.","on_invalid":"reject","example":"0860007279478","aliases":["barcode","upc","ean","isbn"]},{"name":"title","type":"string","required":false,"description":"Product title/name. Use with `brand` when you have no barcode. Ignored if `gtin` resolves a product.","on_invalid":"reject","example":"Sichuan Chili Crisp"},{"name":"brand","type":"string","required":false,"description":"Product brand / manufacturer. STRONGLY recommended with `title` — brand is the independent false-match guard (a title match with a different brand is never asserted).","on_invalid":"reject","example":"Fly By Jing"},{"name":"category","type":"string","required":false,"description":"Optional product category hint (food / drug / device / toy / apparel …) — improves category-fit scoring. Auto-derived from the barcode when available.","on_invalid":"reject","example":"food"},{"name":"listing_url","type":"string","required":false,"description":"A marketplace product URL (amazon/ebay/…). MINIMUM support: the host is recorded and you must still pass title (+brand) for matching. Full URL→product resolution is the enrich-url engine's job.","on_invalid":"reject","example":"https://www.amazon.com/dp/B0..."},{"name":"max_results","type":"integer","required":false,"description":"Max recalls[] + max possible[] returned (each list capped at this).","on_invalid":"reject","default":25,"example":25,"minimum":1,"maximum":50}],"returns":"identity{resolved_title,brand,category,gtin,source,resolved:bool}, recalls[]{match_confidence,matched_on[],components{brand,title,category,exact_id},agency,recall_id,classification,severity_score,recalling_firm,product,hazard,remedy,status,date,url}, possible[] (same shape, lower confidence), counts{recalls,possible,candidates_scored}, sources_searched[], coverage_gaps[], no_match_note","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":3},"example_params":{"gtin":"0860007279478"}},{"name":"brand_check","description":"All recalls for a brand / recalling-firm (normalized passthrough of the recall engine's by_company), newest first — the seller-watch / due-diligence use case.","required_params":["brand"],"optional_params":["category","date_from","date_to","limit"],"params":[{"name":"brand","type":"string","required":true,"description":"Brand / recalling-firm name to list recalls for.","on_invalid":"reject","example":"Peloton"},{"name":"category","type":"string","required":false,"description":"FDA recall category scope (passed through to the recall engine). Default all.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All FDA categories (food+drug+device)"},{"value":"food","label":"Food"},{"value":"drug","label":"Drug"},{"value":"device","label":"Device"}],"example":"food"},{"name":"date_from","type":"string","required":false,"description":"Filter recalls with report date from this YYYY-MM-DD.","on_invalid":"reject","example":"2023-01-01"},{"name":"date_to","type":"string","required":false,"description":"Filter recalls with report date to this YYYY-MM-DD.","on_invalid":"reject","example":"2023-01-01"},{"name":"limit","type":"integer","required":false,"description":"Max recalls to return for the brand.","on_invalid":"reject","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"brand, recalls[] (normalized FDA recall records, newest first), total, has_more, sources_searched[], no_match_note","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"brand":"Pfizer","category":"drug","limit":3}},{"name":"batch","description":"Scan up to 25 catalog products in one call (seller pre-listing audit). Each item is product_match'd; per-item ok/error + a roll-up summary.","required_params":["items"],"optional_params":["max_results"],"params":[{"name":"items","type":"array","required":true,"description":"Up to 25 products (seller-catalog scan). Each item = a {gtin} OR {title, brand[, category]} object (or a bare barcode string). Per-item ok/error; one bad item never sinks the batch.","on_invalid":"reject","example":[{"gtin":"0860007279478"},{"title":"Magnetic Toy Balls","brand":"ACME"}]},{"name":"max_results","type":"integer","required":false,"description":"Max recalls[] + max possible[] returned (each list capped at this).","on_invalid":"reject","default":25,"example":25,"minimum":1,"maximum":50}],"returns":"results[] (one product_match payload per item, with input echoed), count, ok_count, flagged_count (items with >=1 recalls[] hit), no_match_note","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"enrich-store","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Online Store Intelligence API — turn a store domain into a profile: e-commerce platform (Shopify, WooCommerce, Magento and more), catalog sample, tech stack and reputation","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/enrich-store/v1","spec_available":true,"actions":[{"name":"store_lookup","description":"store domain → platform verdict + store metadata + tech-stack + catalog sample (price/discount/stock signals) + reputation (mode-scaled depth)","required_params":["store"],"optional_params":["mode","max_items","include_marketplace"],"params":[{"name":"store","type":"string","required":true,"description":"Store domain or URL (e.g. allbirds.com or https://shop.example.com). A leading www. / scheme / path is accepted and normalized.","on_invalid":"reject","example":"allbirds.com"},{"name":"mode","type":"enum","required":false,"description":"Depth of the lookup. Default basic. catalog scales credits with max_items; rich adds reputation/SERP depth.","on_invalid":"ignore","allowed_values":[{"value":"basic","label":"Platform + store metadata + tech + a first-page catalog sample + reputation lite (cheapest)."},{"value":"catalog","label":"Basic + a budgeted multi-page catalog harvest (max_items-capped) for price/discount/stock distribution over a larger sample."},{"value":"rich","label":"Basic + deep reputation (Trustpilot reviews + Google Maps) + SERP presence + optional marketplace presence."}],"default":"basic","example":"basic"},{"name":"max_items","type":"integer","required":false,"description":"catalog mode only: walk store pages until this many products are sampled (hard-capped at 1000; for a FULL product harvest use the shopify engine directly — this is enrichment, not bulk export).","on_invalid":"ignore","default":250,"example":250,"minimum":1,"maximum":1000},{"name":"include_marketplace","type":"boolean","required":false,"description":"rich mode only: also probe Amazon/Etsy presence for the brand (OPTIONAL — false-match risk; every hit carries a confidence score, none is asserted as definitive).","on_invalid":"ignore","default":false,"example":false}],"returns":"platform{name,confidence,ecommerce_confirmed,supported,partial,evidence,technologies[]}, store_info{name,domain,currency,description,country,myshopify_domain,...}, catalog{catalog_sample{size,products[],price_range{min,max,median,avg,currency},discount_ratio,avg_discount_percent,in_stock_ratio,stock_signals,top_vendors[],top_product_types[]},catalog_estimate{total_products_estimate,estimate_source,collections_count}} — catalog_sample (fetched+analysed) is NET-separate from catalog_estimate (size hint); NO revenue/sales estimation, tech{technologies[],cdn,server}, reputation{trustpilot{found,trust_score,stars,reviews_count,categories,sample_reviews[]},maps{found,rating,review_count,address,...}}, presence{serp[],social_links,policies}, marketplace{amazon,etsy — optional+confidence}; provenance{per-group status+engine+missing_reason: not_found|blocked|timeout|budget|unsupported|error|skipped}; meta.extra.subcalls[] (contributing sources)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":8},"example_params":{"store":"allbirds.com"}},{"name":"platform_detect","description":"store domain → ecommerce platform verdict (shopify|woocommerce|magento|bigcommerce|prestashop|custom_or_unknown) from the store's own public JSON capability test + technographic fingerprint — fast, no catalog fetch","required_params":["store"],"optional_params":[],"params":[{"name":"store","type":"string","required":true,"description":"Store domain or URL (e.g. allbirds.com or https://shop.example.com). A leading www. / scheme / path is accepted and normalized.","on_invalid":"reject","example":"allbirds.com"}],"returns":"platform{name,confidence,ecommerce_confirmed,supported,partial,evidence,technologies[],note}, store_info{name,domain} (when shopify), provenance{platform}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"store":"allbirds.com"}},{"name":"batch","description":"look up to 5 stores in one call (basic mode, cache-first, per-store ok/error)","required_params":["stores"],"optional_params":[],"params":[{"name":"stores","type":"array","required":true,"description":"Up to 5 store domains (array or comma-separated). Each is looked up in basic mode, cache-first, per-store ok/error.","on_invalid":"reject","example":["allbirds.com","gymshark.com"]}],"returns":"results[] (one store_lookup-basic payload or {ok:false,error} per input), count, ok_count","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":20},"example_params":null}]},{"name":"enrich-trust","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Business Trust API — public trust and reputation signals for any domain or company","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/enrich-trust/v1","spec_available":true,"actions":[{"name":"business_trust","description":"domain‖company_name → entity-resolved PUBLIC trust signals: positive_signals[], risk_signals[], unknowns[] + a respectful heuristic recommendation. NOT KYB/AML.","required_params":[],"optional_params":["domain","company_name","country","business_type","depth"],"params":[{"name":"domain","type":"string","required":false,"description":"Business website domain to assess (bare host like stripe.com; a full URL or leading www. is accepted and normalized). Provide `domain` OR `company_name` — domain gives the strongest signals.","on_invalid":"reject","example":"stripe.com","aliases":["website","url"]},{"name":"company_name","type":"string","required":false,"description":"Business name to assess when you have no domain. Weaker than `domain` (no domain-lifecycle signals); pair with `country` for accurate region-routing and entity confirmation.","on_invalid":"reject","example":"Trendyol","aliases":["company","name"]},{"name":"country","type":"string","required":false,"description":"ISO-3166 alpha-2 country hint (e.g. TR, BR, KR, US). Drives region-routing for reputation sources and suppresses false risks (an absent US-only source is not a risk abroad). Inferred from the ccTLD when omitted.","on_invalid":"reject","example":"TR"},{"name":"business_type","type":"enum","required":false,"description":"Optional hint that tunes which signals matter and prevents false risks (e.g. b2b → no public reviews is expected, never penalized).","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto-detect from signals (default)"},{"value":"local","label":"Local/physical business — weight maps/reviews higher"},{"value":"ecommerce","label":"Online store — check Shopify/store signals"},{"value":"saas","label":"SaaS/app — check app-store presence"},{"value":"brand","label":"Consumer brand — check search-trend interest"},{"value":"b2b","label":"B2B/enterprise — reviews scarce is NORMAL, not a risk"}],"default":"auto","example":"ecommerce"},{"name":"depth","type":"enum","required":false,"description":"basic = domain/presence/reputation/news core; rich adds region-routed reputation (Yelp/TripAdvisor/ReclameAqui/Naver), store/app presence, brand trends and review depth.","on_invalid":"reject","allowed_values":[{"value":"basic","label":"Core signals (~7 cr)"},{"value":"rich","label":"Core + regional reputation, store/app, brand trends, review depth (~14 cr)"}],"default":"basic","example":"basic"}],"returns":"entity (input, kind: domain|name, match type, confidence, canonical_name, country, evidence[]), positive_signals[] (code, label, evidence, source), risk_signals[] (code, label, evidence, source), unknowns[] (code, label, reason, source — includes a sanctions: not_checked notice), reputation (trustpilot score/reviews, Google Maps rating/reviews, regional sources), domain_signals (age_days, parked, impersonation risk, ssl, dns), recommendation (proceed | review | high_risk | insufficient_data), score_method, disclaimer; meta.subcalls[] listing each contributing source","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":7},"example_params":{"domain":"stripe.com","depth":"basic"}},{"name":"batch","description":"assess up to 10 domains in one call (core signals, cache-first, per-item ok/error)","required_params":["domains"],"optional_params":["country","business_type"],"params":[{"name":"domains","type":"array","required":true,"description":"Up to 10 domains (array or comma-separated). Each is assessed like `business_trust`; per-item ok/error, cache-first.","on_invalid":"reject","example":["stripe.com","shopify.com"]},{"name":"country","type":"string","required":false,"description":"ISO-3166 alpha-2 country hint (e.g. TR, BR, KR, US). Drives region-routing for reputation sources and suppresses false risks (an absent US-only source is not a risk abroad). Inferred from the ccTLD when omitted.","on_invalid":"reject","example":"TR"},{"name":"business_type","type":"enum","required":false,"description":"Optional hint that tunes which signals matter and prevents false risks (e.g. b2b → no public reviews is expected, never penalized).","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto-detect from signals (default)"},{"value":"local","label":"Local/physical business — weight maps/reviews higher"},{"value":"ecommerce","label":"Online store — check Shopify/store signals"},{"value":"saas","label":"SaaS/app — check app-store presence"},{"value":"brand","label":"Consumer brand — check search-trend interest"},{"value":"b2b","label":"B2B/enterprise — reviews scarce is NORMAL, not a risk"}],"default":"auto","example":"ecommerce"}],"returns":"results[] (one business_trust payload or {ok:false,error} per input), count, ok_count, disclaimer","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":24},"example_params":null}]},{"name":"enrich-url","category":{"id":"utilities","title":"Utilities & AI"},"title":"URL Intelligence API — resolve any URL to its final/clean URL, classify the entity type, find the canonical domain and route it to the right data engine","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/enrich-url/v1","spec_available":true,"actions":[{"name":"classify","description":"Any URL → final_url, cleaned_url (tracking stripped), domain, entity_type{value,confidence,source}, platform, recommended{engine,action,params} (the Reef deep-fetch card; web-extract fallback for unknown hosts), tracking{affiliate,stripped_params}.","required_params":["url"],"optional_params":["deep"],"params":[{"name":"url","type":"string","required":true,"description":"Any http(s) URL — short/affiliate/tracking/canonical — or a bare host (stripe.com). Redirects are followed + tracking stripped by the inner url-resolver (SSRF-guarded). Private/internal targets are blocked there.","on_invalid":"reject","example":"https://amzn.to/3xExample","aliases":["link","u"]},{"name":"deep","type":"boolean","required":false,"description":"Advanced: when true, run an additional structured-data pass even when the page type was already identified, for deeper detail. Default false = fastest, most cost-efficient path.","on_invalid":"ignore","default":false,"example":false}],"returns":"input_url, final_url, cleaned_url, canonical_url, domain, registrable_domain, is_short_link, redirect{redirected,hops,chain_hosts}, entity_type{value,confidence,source}, platform, identifier, recommended{engine,action,params} (null→web-extract fallback card), tracking{is_affiliate,affiliate_network,merchant_hint,stripped_params[]}, preview{title,description,image,site_name,og_type}, provenance{resolver,classifier status+missing_reason}, meta.extra.subcalls[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://www.amazon.com/dp/B08N5WRWNW?tag=aff-20&utm_source=x"}},{"name":"extract_entity","description":"Any URL → a lightweight entity card with title, image, description, price, author and publication date — great for link previews and deciding which Reef engine to call next. Use the recommended{} field from classify for the full deep-fetch.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"Any http(s) URL — short/affiliate/tracking/canonical — or a bare host (stripe.com). Redirects are followed + tracking stripped by the inner url-resolver (SSRF-guarded). Private/internal targets are blocked there.","on_invalid":"reject","example":"https://amzn.to/3xExample","aliases":["link","u"]}],"returns":"final_url, domain, entity_type{value,confidence,source}, platform, entity{title,name,image,description,price,currency,author,published_at,site_name,canonical}, recommended{engine,action,params}, source (og|jsonld|resolver-preview|web-extract), provenance","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://github.com/torvalds/linux"}},{"name":"batch","description":"Classify up to 20 URLs in one call (the link-list cleanup + routing use-case): per-URL ok/error, each independently resolved + classified.","required_params":["urls"],"optional_params":[],"params":[{"name":"urls","type":"array","required":true,"description":"Up to 20 URLs (array or comma-separated). Each is resolved + classified independently; per-URL ok/error.","on_invalid":"reject","example":["https://amzn.to/a","https://github.com/torvalds/linux","stripe.com"],"aliases":["links"]}],"returns":"results[] (one classify payload or {ok:false,error} per input), count, ok_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"catalog_resolve","description":"META (no network): given a known platform name OR a URL's host, return which Reef engine+action handles it and the param key it needs — the routing table itself (url-resolver marketplace engine_hints + the non-marketplace platform map). For agents discovering 'which engine for X'.","required_params":[],"optional_params":["platform","url"],"params":[{"name":"platform","type":"string","required":false,"description":"A platform name (instagram/youtube/github/amazon/…) to resolve to its Reef engine+action. Omit both platform and url to list the full table.","on_invalid":"ignore","example":"instagram"},{"name":"url","type":"string","required":false,"description":"Optional URL whose host is mapped to its Reef engine (no network fetch — host-only routing lookup).","on_invalid":"ignore","example":"https://www.instagram.com/nasa/"}],"returns":"query, matched (bool), platform, entity_type, recommended{engine,action,param_key}, known_platforms[] (when no query: the full routing table)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"platform":"instagram"}}]},{"name":"etsy","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Etsy API scraper — search handmade & vintage listings, full product detail (price, variations, materials, photos), shop profiles, a shop's full paginated catalog, category browse and all customer reviews from etsy.com","version":"2.2.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/etsy/v1","spec_available":true,"actions":[{"name":"listings/search","description":"Search Etsy handmade/vintage listings by keyword — returns listing cards with id, title, price, sale price, shop, image and listing URL. Supports category, price range, sort and pagination filters.","required_params":["query"],"optional_params":["max_pages","sort","min_price","max_price","category","free_shipping"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for (listing keywords).","on_invalid":"reject","example":"handmade silver ring"},{"name":"max_pages","type":"integer","required":false,"description":"How many result pages to fetch in one call (1–10). Each page ≈ 48 listings.","on_invalid":"ignore","default":1,"minimum":1,"maximum":10},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Best match (Etsy default)"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"recent","label":"Most recent"},{"value":"top_reviews","label":"Highest customer reviews"}],"default":"relevance"},{"name":"min_price","type":"number","required":false,"description":"Minimum price filter (in the site currency, USD).","on_invalid":"ignore","example":10},{"name":"max_price","type":"number","required":false,"description":"Maximum price filter (in the site currency, USD).","on_invalid":"ignore","example":100},{"name":"category","type":"string","required":false,"description":"Restrict to an Etsy category slug (jewelry, home_and_living, clothing, art_and_collectibles, weddings, toys_and_games …).","on_invalid":"ignore","example":"jewelry"},{"name":"free_shipping","type":"boolean","required":false,"description":"Only listings that ship free.","on_invalid":"ignore"}],"returns":"items[]{listing_id, title, price, currency, list_price, shop_slug, shop_id, image_url, url, is_ad}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":2,"per":25,"min":1},"example_params":{"query":"silver ring"}},{"name":"listings/detail","description":"Full Etsy listing detail by listing ID or URL — title, price, sale price, currency, rating, review count, favorites (demand signal), stock-left, variations, gallery images, description, tags, materials, category and shipping estimate.","required_params":[],"optional_params":["listing_url","listing_id","url"],"params":[{"name":"listing_id","type":"string","required":false,"description":"Etsy listing ID — the digits in the listing URL (etsy.com/listing/<id>/…). Provide listing_id OR listing_url.","on_invalid":"reject","example":"1509738931"},{"name":"listing_url","type":"string","required":false,"description":"Full listing URL — alternative to listing_id.","on_invalid":"reject","example":"https://www.etsy.com/listing/1509738931","aliases":["url"]}],"returns":"listing{listing_id, title, price, price_max, currency, original_price, on_sale, rating, review_count_display, favorites_count, stock_left, variations[], images[], image_count, description, tags[], materials[], categories[], shipping_estimate, shop_id, shop_slug, schema_product}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":2,"per":25,"min":1},"example_params":{"listing_id":"1509738931"}},{"name":"shops/detail","description":"Etsy shop profile by shop slug or URL — name, total lifetime sales, location, star rating, review count, admirers (followers), active-listings count, year opened and the shop's featured listings (deduped, with title/price/image).","required_params":[],"optional_params":["shop_url","shop_slug","url"],"params":[{"name":"shop_slug","type":"string","required":false,"description":"Shop name as it appears in the shop URL (etsy.com/shop/<slug>). Provide shop_slug OR shop_url.","on_invalid":"reject","example":"SilverRainSilver"},{"name":"shop_url","type":"string","required":false,"description":"Full shop URL — alternative to shop_slug.","on_invalid":"reject","example":"https://www.etsy.com/shop/SilverRainSilver","aliases":["url"]}],"returns":"shop{shop_slug, shop_name, sales_count, location, rating, review_count, followers_count, active_listings_count, opened_year, shop_id, featured_listings[]{listing_id, title, price, currency, image_url, url}}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":2,"per":25,"min":1},"example_params":{"shop_slug":"SilverRainSilver"}},{"name":"shops/listings","description":"Browse a shop's full active catalog, paginated — every product the shop sells (not just the featured handful), with id, title, price, sale price, image and listing URL. Page through with max_pages to pull the whole inventory.","required_params":[],"optional_params":["shop_url","shop_slug","url","max_pages","sort"],"params":[{"name":"shop_slug","type":"string","required":false,"description":"Shop name from the shop URL (etsy.com/shop/<slug>). Provide shop_slug OR shop_url.","on_invalid":"reject","example":"SilverRainSilver"},{"name":"shop_url","type":"string","required":false,"description":"Full shop URL — alternative to shop_slug.","on_invalid":"reject","example":"https://www.etsy.com/shop/SilverRainSilver","aliases":["url"]},{"name":"max_pages","type":"integer","required":false,"description":"How many catalog pages to fetch (1–20). Each page ≈ 36 listings.","on_invalid":"ignore","default":1,"minimum":1,"maximum":20},{"name":"sort","type":"enum","required":false,"description":"Order within the shop.","on_invalid":"ignore","allowed_values":[{"value":"custom","label":"Shop's own arrangement (default)"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"recent","label":"Most recent"}],"default":"custom"}],"returns":"items[]{listing_id, title, price, currency, list_price, image_url, url} + total_listings, pages_fetched","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"listings/category","description":"Browse Etsy by category (the /c/<category> grid) — discover trending/popular listings in a category without a keyword. Supports sub-categories, price range, sort and pagination.","required_params":["category"],"optional_params":["max_pages","sort","min_price","max_price","free_shipping"],"params":[{"name":"category","type":"string","required":true,"description":"Etsy category to browse. Use a top-level slug below, or a sub-path like 'jewelry/rings' / 'home_and_living/candles'.","on_invalid":"ignore","allowed_values":[{"value":"jewelry","label":"Jewelry"},{"value":"clothing","label":"Clothing & shoes"},{"value":"home_and_living","label":"Home & living"},{"value":"wedding_and_party","label":"Wedding & party"},{"value":"toys_and_entertainment","label":"Toys & games"},{"value":"art_and_collectibles","label":"Art & collectibles"},{"value":"craft_supplies_and_tools","label":"Craft supplies & tools"},{"value":"bags_and_purses","label":"Bags & purses"},{"value":"accessories","label":"Accessories"},{"value":"bath_and_beauty","label":"Bath & beauty"},{"value":"books_movies_and_music","label":"Books, movies & music"},{"value":"electronics_and_accessories","label":"Electronics & accessories"},{"value":"pet_supplies","label":"Pet supplies"},{"value":"shoes","label":"Shoes"},{"value":"paper_and_party_supplies","label":"Paper & party supplies"}],"example":"jewelry"},{"name":"max_pages","type":"integer","required":false,"description":"How many category pages to fetch (1–10). Each page ≈ 48 listings.","on_invalid":"ignore","default":1,"minimum":1,"maximum":10},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Etsy default"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"recent","label":"Most recent"},{"value":"top_reviews","label":"Highest customer reviews"}],"default":"relevance"},{"name":"min_price","type":"number","required":false,"description":"Minimum price filter (USD).","on_invalid":"ignore","example":10},{"name":"max_price","type":"number","required":false,"description":"Maximum price filter (USD).","on_invalid":"ignore","example":100},{"name":"free_shipping","type":"boolean","required":false,"description":"Only listings that ship free.","on_invalid":"ignore"}],"returns":"items[]{listing_id, title, price, currency, list_price, shop_slug, image_url, url} + category, pages_fetched","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"jewelry/rings"}},{"name":"reviews/shop","description":"Customer reviews for an Etsy shop — star rating, review text, reviewer, date, the shop's reply, buyer photos and the listing each review is about. Pass shop_slug for the full paginated review stream (about 14 reviews per page). Passing only the numeric shop_id uses Etsy's compact shop-summary feed, which returns at most 6 reviews no matter what limit you ask for.","required_params":[],"optional_params":["shop_slug","shop_url","url","shop_id","limit","max_pages","exclude_listing_id"],"params":[{"name":"shop_slug","type":"string","required":false,"description":"Shop name as it appears in the shop URL (etsy.com/shop/<slug>). Preferred: this unlocks the full paginated review stream. Provide shop_slug, shop_url or shop_id.","on_invalid":"reject","example":"SilverRainSilver","aliases":["shop"]},{"name":"shop_url","type":"string","required":false,"description":"Full shop URL — alternative to shop_slug.","on_invalid":"reject","example":"https://www.etsy.com/shop/SilverRainSilver","aliases":["url"]},{"name":"shop_id","type":"string","required":false,"description":"Numeric Etsy shop ID (shops/detail returns it as shop_id). Works, but Etsy caps this route at 6 reviews — prefer shop_slug for more.","on_invalid":"reject","example":"7357402"},{"name":"limit","type":"integer","required":false,"description":"Maximum reviews to return.","on_invalid":"ignore","default":100,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"How many review pages to walk (1–20). Each page ≈ 14 reviews. Only applies when shop_slug/shop_url is given.","on_invalid":"ignore","default":3,"minimum":1,"maximum":20},{"name":"exclude_listing_id","type":"string","required":false,"description":"Skip reviews belonging to this listing (advanced).","on_invalid":"ignore","example":"1509738931"}],"returns":"reviews[]{review_id, transaction_id, rating, text, reviewer, reviewer_url, date, shop_response, listing_id, listing_title, listing_url, listing_image_url, photo_urls[]} + shop_slug, count, pages_fetched","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"shop_id":"7357402","limit":20}},{"name":"reviews/listing","description":"Customer reviews for a single Etsy listing — star rating, review text, reviewer, date, the shop's reply and buyer photos, plus the item's overall rating and total review count. Page 1 is the review panel Etsy shows on the item page (up to 4 reviews); raise max_pages to pull further reviews of this item out of the shop's review stream.","required_params":[],"optional_params":["listing_url","listing_id","url","max_pages"],"params":[{"name":"listing_id","type":"string","required":false,"description":"Etsy listing ID — the digits in the listing URL (etsy.com/listing/<id>/…). Provide listing_id OR listing_url.","on_invalid":"reject","example":"1509738931"},{"name":"listing_url","type":"string","required":false,"description":"Full listing URL — alternative to listing_id.","on_invalid":"reject","example":"https://www.etsy.com/listing/1509738931","aliases":["url"]},{"name":"max_pages","type":"integer","required":false,"description":"How many review pages to walk (1–20). 1 = only the reviews on the item page itself (fastest). Each further page adds about 2 seconds and more reviews of this item.","on_invalid":"ignore","default":3,"minimum":1,"maximum":20}],"returns":"reviews[]{review_id, transaction_id, rating, text, reviewer, reviewer_url, date, shop_response, shop_response_by, photo_urls[]} + listing_id, shop_slug, rating, total_reported, count, pages_fetched, partial","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"listing_id":"1509738931","max_pages":1}},{"name":"search/suggest","description":"Etsy search autocomplete — keyword suggestions for a partial query (no account required).","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Partial search text to complete.","on_invalid":"reject","example":"silver ring"},{"name":"limit","type":"integer","required":false,"description":"How many suggestions to return.","on_invalid":"ignore","default":20,"minimum":1}],"returns":"suggestions[]{query, categories[]}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"query":"silver ring"}}]},{"name":"eventbrite","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Eventbrite API scraper — search live events by city, keyword, category, date and price; pull full event detail (name, date, venue, organizer, ticket price range and image); get an organizer's profile and ALL their upcoming/past events (paginated); and browse a city or category's event listings from Eventbrite.com — no login, no API key","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/eventbrite/v1","spec_available":true,"actions":[{"name":"search","description":"Search Eventbrite for events by keyword in a city, with optional category, date and free-only filters. Paginated (~20 events/page). Returns each event's name, date, venue with coordinates, image and link.","required_params":[],"optional_params":["query","location","category","date","free","page"],"params":[{"name":"query","type":"string","required":false,"description":"What to search for — a keyword, artist, topic or event name ('music', 'jazz', 'startup', 'yoga'). Omit to list a city/category's events.","on_invalid":"ignore","example":"music","aliases":["q","keyword"]},{"name":"location","type":"string","required":false,"description":"Where to search. Use Eventbrite's location slug '<country>--<city>' (e.g. 'united-states--new-york', 'united-kingdom--london', 'ca--san-francisco'), a US '<state-abbr>--<city>' form, or 'online' for online-only events. Defaults to New York.","on_invalid":"ignore","example":"united-states--new-york","aliases":["geo","city"]},{"name":"category","type":"string","required":false,"description":"Optional category to narrow results (music, business, food-and-drink, arts, health, sports-and-fitness, community, film-and-media, fashion, hobbies, charity-and-causes, government, science-and-tech, travel-and-outdoor, holiday).","on_invalid":"ignore","example":"music"},{"name":"date","type":"enum","required":false,"description":"Optional date filter.","on_invalid":"ignore","allowed_values":[{"value":"today","label":"Today"},{"value":"tomorrow","label":"Tomorrow"},{"value":"this-weekend","label":"This weekend"},{"value":"this-week","label":"This week"},{"value":"this-month","label":"This month"}],"example":"this-weekend"},{"name":"free","type":"boolean","required":false,"description":"Set true to return only free events.","on_invalid":"ignore","example":true},{"name":"page","type":"integer","required":false,"description":"Result page (~20/page). Page until meta.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50}],"returns":"events[]{event_id, name, url, start_date, end_date, image, is_online, venue{name, street, city, region, postal_code, country, latitude, longitude}} + meta{page, has_more, next_page}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"music","location":"united-states--new-york"}},{"name":"detail","description":"Full detail for one event by id or url: name, description, start/end datetime, venue with full address and coordinates, organizer, ticket price range (low/high + currency), availability, language, status and image.","required_params":[],"optional_params":["event_id","url"],"params":[{"name":"event_id","type":"string","required":false,"description":"Eventbrite event id (the trailing number in an event URL /e/<name>-tickets-<id>). From a search result's event_id.","on_invalid":"reject","example":"1989917921069"},{"name":"url","type":"string","required":false,"description":"Alternatively a full Eventbrite event URL.","on_invalid":"ignore","example":"https://www.eventbrite.com/e/papi-juice-pride-tickets-1989917921069"}],"returns":"event{event_id, name, description, start_date, end_date, status, language, image, is_online, venue{...}, organizer{name, url, organizer_id}, offers{low_price, high_price, currency, availability, available_until}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"event_id":"1989917921069"}},{"name":"organizer","description":"Profile for an event organizer by id or url: name, bio, verification, avatar, follower count, website and social links, and how many upcoming events they have.","required_params":[],"optional_params":["organizer_id","url"],"params":[{"name":"organizer_id","type":"string","required":false,"description":"Eventbrite organizer id (the number in /o/<name>-<id>). From an event detail's organizer.organizer_id.","on_invalid":"reject","example":"105655500371","aliases":["org_id"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full Eventbrite organizer URL.","on_invalid":"ignore","example":"https://www.eventbrite.com/o/elsewhere-105655500371"}],"returns":"organizer{organizer_id, name, verified, bio, avatar_url, profile_url, followers, website, social_links} + meta{upcoming_events_total}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"organizer_id":"105655500371"}},{"name":"organizer_events","description":"An organizer's events, paginated (30/page). Choose upcoming (default) or past. Returns each event with name, start/end datetime, venue, category, price range and link.","required_params":["organizer_id"],"optional_params":["type","page"],"params":[{"name":"organizer_id","type":"string","required":true,"description":"Eventbrite organizer id to list events for.","on_invalid":"reject","example":"105655500371","aliases":["org_id"]},{"name":"type","type":"enum","required":false,"description":"'future' (upcoming, default) or 'past' events.","on_invalid":"ignore","allowed_values":[{"value":"future","label":"Upcoming"},{"value":"past","label":"Past"}],"default":"future","example":"future"},{"name":"page","type":"integer","required":false,"description":"Event page (30/page). Page until meta.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100}],"returns":"events[]{event_id, name, url, start_date, end_date, timezone, summary, image, is_online, is_free, price_range, currency, status, category, venue{...}} + meta{page, has_more, next_page}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"organizer_id":"105655500371"}},{"name":"browse","description":"Browse Eventbrite's curated event listings for a city and/or category (the discovery shelf). Returns the featured events for that location/category — same event shape as search. This surface is a single curated page (not paginated); use `search` with a query for paginated results.","required_params":[],"optional_params":["location","category"],"params":[{"name":"location","type":"string","required":false,"description":"Where to search. Use Eventbrite's location slug '<country>--<city>' (e.g. 'united-states--new-york', 'united-kingdom--london', 'ca--san-francisco'), a US '<state-abbr>--<city>' form, or 'online' for online-only events. Defaults to New York.","on_invalid":"ignore","example":"united-states--new-york","aliases":["geo","city"]},{"name":"category","type":"string","required":false,"description":"Category to browse (music, business, food-and-drink, arts, health, sports-and-fitness, community, film-and-media, fashion, hobbies, charity-and-causes, science-and-tech, travel-and-outdoor). Omit for all categories.","on_invalid":"ignore","example":"food-and-drink"}],"returns":"events[]{event_id, name, url, start_date, end_date, image, is_online, venue{...}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"location":"united-states--new-york"}}]},{"name":"facebook-marketplace","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Facebook Marketplace API — search the public local classifieds of a US metro by keyword or category and read a full listing: price, condition, description, every photo, the city it sits in, when it was posted and whether it is still available. Marketplace is city-scoped and so is this API: 47 metros by name, or any Facebook city id.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/facebook-marketplace/v1","spec_available":true,"actions":[{"name":"search","description":"Search one metro's Marketplace listings by keyword: listing id, title, price (with the seller's earlier price when it was lowered), the city and state the item sits in, when it was posted, whether it is sold or pending, its photo and how it changes hands. Filter by price range, how recently it was posted, condition, delivery method and pending status; order by best match, newest, price or distance. The response always names the location Facebook actually resolved.","required_params":["query"],"optional_params":["location","price_min","price_max","days_listed","sort","condition","delivery","availability","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for, as a shopper would type it.","on_invalid":"reject","example":"iphone","aliases":["q","keyword"]},{"name":"location","type":"string","required":false,"description":"Which metro to search. Facebook Marketplace is city-scoped and the inventory really is different per city: six cities were compared against New York on the same query and none shared a single listing id. 47 US metros are supported by name; any other Facebook city can be reached by passing the numeric city id that every response returns as location.id. The response always names the location that was actually searched.","on_invalid":"reject","allowed_values":[{"value":"albuquerque","label":"albuquerque"},{"value":"anchorage","label":"anchorage"},{"value":"atlanta","label":"atlanta"},{"value":"austin","label":"austin"},{"value":"baltimore","label":"baltimore"},{"value":"boise","label":"boise"},{"value":"boston","label":"boston"},{"value":"buffalo","label":"buffalo"},{"value":"charlotte","label":"charlotte"},{"value":"chicago","label":"chicago"},{"value":"cincinnati","label":"cincinnati"},{"value":"cleveland","label":"cleveland"},{"value":"columbus","label":"columbus"},{"value":"dallas","label":"dallas"},{"value":"denver","label":"denver"},{"value":"detroit","label":"detroit"},{"value":"honolulu","label":"honolulu"},{"value":"houston","label":"houston"},{"value":"indianapolis","label":"indianapolis"},{"value":"jacksonville","label":"jacksonville"},{"value":"kansascity","label":"kansascity"},{"value":"la","label":"la"},{"value":"louisville","label":"louisville"},{"value":"memphis","label":"memphis"},{"value":"miami","label":"miami"},{"value":"milwaukee","label":"milwaukee"},{"value":"minneapolis","label":"minneapolis"},{"value":"nashville","label":"nashville"},{"value":"neworleans","label":"neworleans"},{"value":"nyc","label":"nyc"},{"value":"omaha","label":"omaha"},{"value":"orlando","label":"orlando"},{"value":"philly","label":"philly"},{"value":"phoenix","label":"phoenix"},{"value":"pittsburgh","label":"pittsburgh"},{"value":"portland","label":"portland"},{"value":"raleigh","label":"raleigh"},{"value":"richmond","label":"richmond"},{"value":"saltlakecity","label":"saltlakecity"},{"value":"sanantonio","label":"sanantonio"},{"value":"sandiego","label":"sandiego"},{"value":"sanfrancisco","label":"sanfrancisco"},{"value":"seattle","label":"seattle"},{"value":"stlouis","label":"stlouis"},{"value":"tampa","label":"tampa"},{"value":"tucson","label":"tucson"},{"value":"vegas","label":"vegas"}],"default":"nyc","example":"nyc","aliases":["city"]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price to include, in the market's currency.","on_invalid":"reject","example":500,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price to include, in the market's currency.","on_invalid":"reject","example":2000,"minimum":0},{"name":"days_listed","type":"enum","required":false,"description":"Only listings posted within this many days.","on_invalid":"reject","allowed_values":[{"value":1,"label":"last 24 hours"},{"value":7,"label":"last 7 days"},{"value":30,"label":"last 30 days"}],"example":7},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"best_match","label":"Best match (the site's default)"},{"value":"newest","label":"Newest first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"distance","label":"Nearest first (the distance itself is not published)"}],"default":"best_match","example":"newest"},{"name":"condition","type":"enum","required":false,"description":"The condition the seller graded the item.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"used_like_new","label":"Used - like new"},{"value":"used_good","label":"Used - good"},{"value":"used_fair","label":"Used - fair"}],"example":"new"},{"name":"delivery","type":"enum","required":false,"description":"How the item changes hands. 'shipping' returns nationwide listings, not just the chosen metro.","on_invalid":"reject","allowed_values":[{"value":"local_pickup","label":"Local pickup"},{"value":"shipping","label":"Shipped"}],"example":"shipping"},{"name":"availability","type":"enum","required":false,"description":"Restrict to listings the site marks as no longer freely available. Measured: these come back with status PENDING (a sale in progress), not sold.","on_invalid":"reject","allowed_values":[{"value":"pending","label":"Sale pending"}],"example":"pending"},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to re-try this request before giving up.","on_invalid":"reject","default":4,"minimum":1,"maximum":6}],"returns":"results[]{listing_id, title, custom_title (vehicles carry the seller's own wording here), subtitles[] (the card's extra facts, e.g. a vehicle's mileage), url, price, price_formatted, price_was (the seller's earlier price when it was lowered), price_min, price_max, currency, city, state, city_id, posted_at, is_sold, is_pending, is_live, category_id, image, has_video, delivery_types[], listing_type}, count, total_results (null — the source publishes no count), source_has_more, location{name, id}, currency, filters_applied[], dropped_non_listing_tiles","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"iphone","location":"nyc"}},{"name":"category","description":"Browse one of Facebook Marketplace's 17 categories inside a metro — vehicles, property for sale, property rentals, electronics, apparel, free stuff and the rest — with the same row shape and the same filters as search.","required_params":["category"],"optional_params":["location","price_min","price_max","days_listed","sort","condition","delivery","availability","max_rotations"],"params":[{"name":"category","type":"enum","required":true,"description":"Which Marketplace category to browse.","on_invalid":"reject","allowed_values":[{"value":"apparel","label":"Apparel"},{"value":"classifieds","label":"Classifieds"},{"value":"electronics","label":"Electronics"},{"value":"entertainment","label":"Entertainment"},{"value":"family","label":"Family"},{"value":"free","label":"Free Stuff"},{"value":"garden","label":"Garden & Outdoor"},{"value":"hobbies","label":"Hobbies"},{"value":"home","label":"Home Goods"},{"value":"home-improvements","label":"Home Improvement Supplies"},{"value":"instruments","label":"Musical Instruments"},{"value":"pets","label":"Pet Supplies"},{"value":"propertyforsale","label":"Home Sales"},{"value":"propertyrentals","label":"Property Rentals"},{"value":"sports","label":"Sporting Goods"},{"value":"toys","label":"Toys & Games"},{"value":"vehicles","label":"Vehicles"}],"example":"vehicles"},{"name":"location","type":"string","required":false,"description":"Which metro to search. Facebook Marketplace is city-scoped and the inventory really is different per city: six cities were compared against New York on the same query and none shared a single listing id. 47 US metros are supported by name; any other Facebook city can be reached by passing the numeric city id that every response returns as location.id. The response always names the location that was actually searched.","on_invalid":"reject","allowed_values":[{"value":"albuquerque","label":"albuquerque"},{"value":"anchorage","label":"anchorage"},{"value":"atlanta","label":"atlanta"},{"value":"austin","label":"austin"},{"value":"baltimore","label":"baltimore"},{"value":"boise","label":"boise"},{"value":"boston","label":"boston"},{"value":"buffalo","label":"buffalo"},{"value":"charlotte","label":"charlotte"},{"value":"chicago","label":"chicago"},{"value":"cincinnati","label":"cincinnati"},{"value":"cleveland","label":"cleveland"},{"value":"columbus","label":"columbus"},{"value":"dallas","label":"dallas"},{"value":"denver","label":"denver"},{"value":"detroit","label":"detroit"},{"value":"honolulu","label":"honolulu"},{"value":"houston","label":"houston"},{"value":"indianapolis","label":"indianapolis"},{"value":"jacksonville","label":"jacksonville"},{"value":"kansascity","label":"kansascity"},{"value":"la","label":"la"},{"value":"louisville","label":"louisville"},{"value":"memphis","label":"memphis"},{"value":"miami","label":"miami"},{"value":"milwaukee","label":"milwaukee"},{"value":"minneapolis","label":"minneapolis"},{"value":"nashville","label":"nashville"},{"value":"neworleans","label":"neworleans"},{"value":"nyc","label":"nyc"},{"value":"omaha","label":"omaha"},{"value":"orlando","label":"orlando"},{"value":"philly","label":"philly"},{"value":"phoenix","label":"phoenix"},{"value":"pittsburgh","label":"pittsburgh"},{"value":"portland","label":"portland"},{"value":"raleigh","label":"raleigh"},{"value":"richmond","label":"richmond"},{"value":"saltlakecity","label":"saltlakecity"},{"value":"sanantonio","label":"sanantonio"},{"value":"sandiego","label":"sandiego"},{"value":"sanfrancisco","label":"sanfrancisco"},{"value":"seattle","label":"seattle"},{"value":"stlouis","label":"stlouis"},{"value":"tampa","label":"tampa"},{"value":"tucson","label":"tucson"},{"value":"vegas","label":"vegas"}],"default":"nyc","example":"nyc","aliases":["city"]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price to include, in the market's currency.","on_invalid":"reject","example":500,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price to include, in the market's currency.","on_invalid":"reject","example":2000,"minimum":0},{"name":"days_listed","type":"enum","required":false,"description":"Only listings posted within this many days.","on_invalid":"reject","allowed_values":[{"value":1,"label":"last 24 hours"},{"value":7,"label":"last 7 days"},{"value":30,"label":"last 30 days"}],"example":7},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"best_match","label":"Best match (the site's default)"},{"value":"newest","label":"Newest first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"distance","label":"Nearest first (the distance itself is not published)"}],"default":"best_match","example":"newest"},{"name":"condition","type":"enum","required":false,"description":"The condition the seller graded the item.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"used_like_new","label":"Used - like new"},{"value":"used_good","label":"Used - good"},{"value":"used_fair","label":"Used - fair"}],"example":"new"},{"name":"delivery","type":"enum","required":false,"description":"How the item changes hands. 'shipping' returns nationwide listings, not just the chosen metro.","on_invalid":"reject","allowed_values":[{"value":"local_pickup","label":"Local pickup"},{"value":"shipping","label":"Shipped"}],"example":"shipping"},{"name":"availability","type":"enum","required":false,"description":"Restrict to listings the site marks as no longer freely available. Measured: these come back with status PENDING (a sale in progress), not sold.","on_invalid":"reject","allowed_values":[{"value":"pending","label":"Sale pending"}],"example":"pending"},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to re-try this request before giving up.","on_invalid":"reject","default":4,"minimum":1,"maximum":6}],"returns":"results[]{listing_id, title, custom_title (vehicles carry the seller's own wording here), subtitles[] (the card's extra facts, e.g. a vehicle's mileage), url, price, price_formatted, price_was (the seller's earlier price when it was lowered), price_min, price_max, currency, city, state, city_id, posted_at, is_sold, is_pending, is_live, category_id, image, has_video, delivery_types[], listing_type}, count, total_results (null — the source publishes no count), source_has_more, location{name, id}, currency, filters_applied[], dropped_non_listing_tiles, category{slug, name, id}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":{"category":"vehicles","location":"nyc"}},{"name":"listing","description":"The full listing by id or URL: title, the seller's full description, price and currency, the condition they graded it, the category path, every photo with its dimensions, the city it sits in with the city-level coordinates the site rounds to, when it was posted, whether it is available, pending or sold, how it can be delivered, and the seller as the public listing shows them: name, profile link, profile photo, the date they joined, and their 5-star rating with its count.","required_params":["listing_id"],"optional_params":["seller_attempts","max_rotations"],"params":[{"name":"listing_id","type":"string","required":true,"description":"The number at the end of a Marketplace listing URL (facebook.com/marketplace/item/4511313592443983/ -> 4511313592443983). Every search row returns it as listing_id. A full URL is accepted too.","on_invalid":"reject","example":"4511313592443983","aliases":["id","url"]},{"name":"seller_attempts","type":"integer","required":false,"description":"How hard to try for the seller. Facebook includes the seller on only about one in ten of its public listing responses, at random - the same listing carries it on one read and not the next. 1 (the default) returns whatever the first response had. Raise it and the listing is read again until the seller appears, up to this many reads, which makes the call slower. Measured on 9 listings: 0 of 9 had the seller on the first read, 3 of 9 within six. The answer always reports seller_available and seller_lookups, so you can see what it cost and whether it worked.","on_invalid":"reject","default":1,"example":4,"minimum":1,"maximum":6},{"name":"max_rotations","type":"integer","required":false,"description":"How many times to re-try this request before giving up.","on_invalid":"reject","default":4,"minimum":1,"maximum":6}],"returns":"listing{listing_id, title, custom_title, subtitles[], url, description, price, price_formatted, price_was, currency, condition, condition_label, attributes[]{name, value, label}, category, category_slug, category_id, category_path[]{name, slug, id}, location_text, latitude, longitude (city-level, as the site rounds them), posted_at, status, is_sold, is_pending, is_live, inventory_count, photos[]{url, width, height, caption}, photo_count, has_video, delivery_types[], shipping_offered, listing_type, seller{name, profile_id, profile_url, user_token, profile_picture, joined_at, rating, rating_count, ratings_are_private, combined_rating, combined_rating_count, is_verified, type} (null when this response did not carry it — see seller_attempts), seller_type (e.g. PRIVATE_SELLER on vehicles), is_business_seller, seller_badges[], seller_badge_summary (e.g. 'Highly rated on Marketplace'), seller_shop_id, dealership_name, seller_phone, seller_website, listing_address}, seller_available, seller_lookups","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":null}]},{"name":"falabella","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Falabella API scraper — falabella.com (Chile, Colombia, Peru): search and browse products with the internet price, event price, CMR card price and struck normal price kept apart, Falabella vs marketplace seller with seller rating, stock and delivery options, specifications, variants, ratings and reviews. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/falabella/v1","spec_available":true,"actions":[{"name":"search","description":"Search Falabella by keyword in Chile, Colombia or Peru. Each product comes with the price anyone pays online (internet or event price), the CMR card price and the struck normal price in separate fields, the discount, the seller (Falabella, a Falabella group store such as Sodimac or Tottus, or a marketplace seller), delivery badges, interest-free installments, variants and Falabella's search rating. Sort by price or rating; filter by brand, rating, discount or any filter Falabella lists. Keywords Falabella sends to a collection, category or product are followed; sponsored rows are removed and counted.","required_params":["query"],"optional_params":["country","page","sort","brand","min_rating","min_discount_pct","filters","include_sponsored","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Words a shopper would type on Falabella (Spanish).","on_invalid":"reject","example":"televisor","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Falabella storefront: cl (falabella.com, CLP), co (falabella.com.co, COP) or pe (falabella.com.pe, PEN). Prices, currency and catalogue follow the country.","on_invalid":"reject","allowed_values":[{"value":"cl","label":"Chile — falabella.com (CLP)"},{"value":"co","label":"Colombia — falabella.com.co (COP)"},{"value":"pe","label":"Peru — falabella.com.pe (PEN)"}],"default":"cl","example":"cl"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1. Falabella serves 48 organic products per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Falabella's own sort orders.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Recomendados"},{"value":"price_asc","label":"Precio de menor a mayor"},{"value":"price_desc","label":"Precio de mayor a menor"},{"value":"rating","label":"Los mejores evaluados"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"One brand as Falabella lists it (e.g. samsung); same as filters f.product.brandName=samsung.","on_invalid":"reject","example":"samsung"},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars (2-5), as Falabella's rating filter.","on_invalid":"reject","example":4,"minimum":2,"maximum":5},{"name":"min_discount_pct","type":"enum","required":false,"description":"Only products discounted at least this much (Falabella's 20/30/40/50% steps).","on_invalid":"reject","allowed_values":[{"value":"20","label":"20% dcto y más"},{"value":"30","label":"30% dcto y más"},{"value":"40","label":"40% dcto y más"},{"value":"50","label":"50% dcto y más"}],"example":"30"},{"name":"filters","type":"array","required":false,"description":"Any filter exactly as returned in filters_available[].values[].filter of a previous call (price bucket, seller type, category, size, colour, …). Several may be sent.","on_invalid":"reject","example":["f.range.derived.price.search=$100.000 - $200.000"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Sponsored rows are left out and counted in sponsored_dropped. true: returned with sponsored true.","on_invalid":"reject","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no product matches the keyword, Falabella fills the page with unrelated products. They are dropped and counted in fallback_results_dropped; true returns them separately in fallback_results.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id, sku_id, title, brand, url, image, images[], price, price_max, price_type (internet|event|normal), cmr_price (CMR card only), list_price (struck), discount_pct, cmr_discount_pct, cmr_saving, other_prices[], currency, discount_badge_pct, seller{id, name, kind (falabella|falabella_group|marketplace), is_falabella, verified}, marketplace, search_index_rating, search_index_review_count (search-index figures; product/detail has the review system's), rating_scale, badges[], delivery_badges[]{type, label}, installments[]{count, interest_free, payment_methods[]}, top_specifications[], best_seller, product_type, variants[]{type, options[]{value, variant_id, available, purchasable, price, url}}, sponsored}, count (organic rows), sponsored_dropped, sponsored_included, total_results, total_pages, page, page_size, has_more, page_notice, filters_available[]{name, type, values[]{label, count, filter, selected}}, site_applied_filters[], redirected_to{type, id, url}, sort, applied_filters, country, currency, query, matched_query, keyword_matches_on_page, site_semantic_fallback, fallback_results_dropped, fallback_total, fallback_results[] (opt-in)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"televisor"}},{"name":"category","description":"Every product in a Falabella category or collection (by id or URL), paged, with the same rows, sorts and filters as search, plus the category breadcrumb.","required_params":["category"],"optional_params":["country","page","sort","brand","min_rating","min_discount_pct","filters","include_sponsored","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A Falabella category id (cat690239, CATG36089), a category URL (/falabella-cl/category/cat690239/Zapatillas-urbanas-mujer), a collection URL (/falabella-cl/collection/iphone) or a brand page URL (/falabella-cl/brand/SAMSUNG).","on_invalid":"reject","example":"cat690239","aliases":["category_id","collection","url"]},{"name":"country","type":"enum","required":false,"description":"Falabella storefront: cl (falabella.com, CLP), co (falabella.com.co, COP) or pe (falabella.com.pe, PEN). Prices, currency and catalogue follow the country.","on_invalid":"reject","allowed_values":[{"value":"cl","label":"Chile — falabella.com (CLP)"},{"value":"co","label":"Colombia — falabella.com.co (COP)"},{"value":"pe","label":"Peru — falabella.com.pe (PEN)"}],"default":"cl","example":"cl"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1. Falabella serves 48 organic products per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Falabella's own sort orders.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Recomendados"},{"value":"price_asc","label":"Precio de menor a mayor"},{"value":"price_desc","label":"Precio de mayor a menor"},{"value":"rating","label":"Los mejores evaluados"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"One brand as Falabella lists it (e.g. samsung); same as filters f.product.brandName=samsung.","on_invalid":"reject","example":"samsung"},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars (2-5), as Falabella's rating filter.","on_invalid":"reject","example":4,"minimum":2,"maximum":5},{"name":"min_discount_pct","type":"enum","required":false,"description":"Only products discounted at least this much (Falabella's 20/30/40/50% steps).","on_invalid":"reject","allowed_values":[{"value":"20","label":"20% dcto y más"},{"value":"30","label":"30% dcto y más"},{"value":"40","label":"40% dcto y más"},{"value":"50","label":"50% dcto y más"}],"example":"30"},{"name":"filters","type":"array","required":false,"description":"Any filter exactly as returned in filters_available[].values[].filter of a previous call (price bucket, seller type, category, size, colour, …). Several may be sent.","on_invalid":"reject","example":["f.range.derived.price.search=$100.000 - $200.000"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Sponsored rows are left out and counted in sponsored_dropped. true: returned with sponsored true.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id, sku_id, title, brand, url, image, images[], price, price_max, price_type (internet|event|normal), cmr_price (CMR card only), list_price (struck), discount_pct, cmr_discount_pct, cmr_saving, other_prices[], currency, discount_badge_pct, seller{id, name, kind (falabella|falabella_group|marketplace), is_falabella, verified}, marketplace, search_index_rating, search_index_review_count (search-index figures; product/detail has the review system's), rating_scale, badges[], delivery_badges[]{type, label}, installments[]{count, interest_free, payment_methods[]}, top_specifications[], best_seller, product_type, variants[]{type, options[]{value, variant_id, available, purchasable, price, url}}, sponsored}, count (organic rows), sponsored_dropped, sponsored_included, total_results, total_pages, page, page_size, has_more, page_notice, filters_available[]{name, type, values[]{label, count, filter, selected}}, site_applied_filters[], redirected_to{type, id, url}, sort, applied_filters, country, currency, category_type, category_id, breadcrumb[]{id, name, url}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"product/detail","description":"The full Falabella product record by id or URL: title, brand, model, internet or event price, CMR card price, struck normal price with discounts and validity dates, CMR points, the seller with its rating and verification, availability with stock per delivery option, home delivery and store pickup, interest-free installments, rating with star distribution, description, specifications, images and videos, every variant with its own prices and stock, and the category breadcrumb.","required_params":["product_id"],"optional_params":["variant_id","country","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"A Falabella product id (the number after /product/ in the URL, e.g. 14794157) or the product URL. A URL also sets the country.","on_invalid":"reject","example":"14794157","aliases":["id","url"]},{"name":"variant_id","type":"string","required":false,"description":"One variant (size / colour SKU) of the product; its prices and stock become the top-level fields. Default: the variant Falabella shows first.","on_invalid":"reject","example":"14794163","aliases":["sku_id","sku"]},{"name":"country","type":"enum","required":false,"description":"Falabella storefront: cl (falabella.com, CLP), co (falabella.com.co, COP) or pe (falabella.com.pe, PEN). Prices, currency and catalogue follow the country.","on_invalid":"reject","allowed_values":[{"value":"cl","label":"Chile — falabella.com (CLP)"},{"value":"co","label":"Colombia — falabella.com.co (COP)"},{"value":"pe","label":"Peru — falabella.com.pe (PEN)"}],"default":"cl","example":"cl"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id, variant_id, title, brand, brand_id, url, model, product_type, price, price_type, price_valid_until, cmr_price, cmr_price_valid_until, list_price, discount_pct, cmr_discount_pct, cmr_saving, other_prices[], discount_badge_pct, cmr_points, purchasable, availability (in_stock|out_of_stock|null), stock_quantity, stock_quantity_cap, stock_by_shipping_option[]{shipping_option, state, has_stock, quantity}, home_delivery, store_pickup, free_shipping, delivery_labels[], delivery_badges[], max_quantity, offers[]{seller, offering_id, seller_sku, status, active}, currency, seller{id, name, kind, is_falabella, business_name, verified, rating{score, on_time, cancellations, customer, scale}}, marketplace, installments[], rating, review_count, rating_scale, rating_distribution{5..1} (Spanish-language reviews, as the product page counts them), recommended_count, rating_all_locales, review_count_all_locales, description, short_description, specifications[]{name, value}, top_specifications[], country_of_origin, condition, images[], videos[], variants[]{variant_id, name, attributes{}, selected, price, cmr_price, list_price, …, availability, stock_quantity}, variant_count, category_id, breadcrumb[]{id, name, url}, international_shipping, return_policy, published}, country, currency, rating_status","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"14794157"}},{"name":"product/reviews","description":"Customer reviews of a Falabella product, paged and sorted (newest, oldest, highest or lowest rating, most helpful) and filterable by star rating: rating, title, text, date, reviewer nickname, recommendation, helpful votes, detailed ratings (comfort, size…), photos and seller responses, plus the average rating, review count and star distribution. Reviews and figures are the Spanish-language ones the product page counts; the all-languages totals are returned separately.","required_params":["product_id"],"optional_params":["country","page","page_size","sort","rating","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"A Falabella product id (the number after /product/ in the URL, e.g. 14794157) or the product URL. A URL also sets the country.","on_invalid":"reject","example":"14794157","aliases":["id","url"]},{"name":"country","type":"enum","required":false,"description":"Falabella storefront: cl (falabella.com, CLP), co (falabella.com.co, COP) or pe (falabella.com.pe, PEN). Prices, currency and catalogue follow the country.","on_invalid":"reject","allowed_values":[{"value":"cl","label":"Chile — falabella.com (CLP)"},{"value":"co","label":"Colombia — falabella.com.co (COP)"},{"value":"pe","label":"Peru — falabella.com.pe (PEN)"}],"default":"cl","example":"cl"},{"name":"page","type":"integer","required":false,"description":"Review page, from 1.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page.","on_invalid":"reject","default":10,"minimum":1,"maximum":30},{"name":"sort","type":"enum","required":false,"description":"Review order. most_helpful follows helpful votes, which are 0 on most reviews.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Más recientes"},{"value":"oldest","label":"Más antiguas"},{"value":"highest_rating","label":"Mejor calificación"},{"value":"lowest_rating","label":"Peor calificación"},{"value":"most_helpful","label":"Más útiles"}],"default":"newest","example":"lowest_rating"},{"name":"rating","type":"integer","required":false,"description":"Only reviews with exactly this many stars.","on_invalid":"reject","example":1,"minimum":1,"maximum":5},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"reviews[]{review_id, rating, rating_scale, title, text, date, author, author_location, recommended, helpful_votes, unhelpful_votes, badges[], secondary_ratings[]{label, value, scale, value_label}, photos[], seller_responses[], syndicated, reviewed_product_id, locale}, count, page, page_size, total_results (matching the rating filter), has_more, average_rating, review_count, rating_scale, rating_distribution{5..1}, recommended_count, rating_all_locales, review_count_all_locales, stats_status, product_id, sort, rating_filter, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"14794157"}},{"name":"search/suggest","description":"Falabella's search-box suggestions for what a shopper has typed, each with the categories Falabella proposes for it.","required_params":["query"],"optional_params":["country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper has typed so far.","on_invalid":"reject","example":"telev","aliases":["q","prefix"]},{"name":"country","type":"enum","required":false,"description":"Falabella storefront: cl (falabella.com, CLP), co (falabella.com.co, COP) or pe (falabella.com.pe, PEN). Prices, currency and catalogue follow the country.","on_invalid":"reject","allowed_values":[{"value":"cl","label":"Chile — falabella.com (CLP)"},{"value":"co","label":"Colombia — falabella.com.co (COP)"},{"value":"pe","label":"Peru — falabella.com.pe (PEN)"}],"default":"cl","example":"cl"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"suggestions[]{term, url, categories[]{name, category_id, url}}, count, query, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"televisor"}}]},{"name":"farfetch","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Farfetch API scraper — the luxury fashion marketplace of boutiques (farfetch.com): search ~70 country storefronts with local prices, read the full product (every size with the boutique that sells it, its price, stock and ship-from, composition, made-in, duties/VAT basis) and autocomplete. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/farfetch/v1","spec_available":true,"actions":[{"name":"search","description":"Search Farfetch in any storefront country by keyword and/or designer/category, with the site's own sorts and filters (department, on-sale, price range, colour). Each row: item id, designer, name, the price a shopper pays in that country's currency, the struck price + sale %, the discounted offer of another size/boutique when one exists, the boutique id, the search-index stock quantity, sizes in stock, pre-owned + condition, members-only flag, and images. A query with no genuine match returns empty (padding counted in fallback_results_dropped).","required_params":[],"optional_params":["country","language","query","gender","sort","page","page_size","brand_id","category_id","color_id","on_sale","price_min","price_max","include_facets","include_fallback_results"],"params":[{"name":"country","type":"enum","required":false,"description":"Farfetch storefront country (ISO-2; 'uk' for the United Kingdom). Prices, the currency and the duties/VAT basis follow it. Default us.","on_invalid":"reject","allowed_values":[{"value":"us","label":"US (USD)"},{"value":"uk","label":"UK (GBP)"},{"value":"de","label":"DE (EUR)"},{"value":"fr","label":"FR (EUR)"},{"value":"it","label":"IT (EUR)"},{"value":"es","label":"ES (EUR)"},{"value":"nl","label":"NL (EUR)"},{"value":"at","label":"AT (EUR)"},{"value":"ch","label":"CH (CHF)"},{"value":"se","label":"SE (SEK)"},{"value":"dk","label":"DK (DKK)"},{"value":"no","label":"NO (EUR)"},{"value":"fi","label":"FI (EUR)"},{"value":"pl","label":"PL (PLN)"},{"value":"be","label":"BE (EUR)"},{"value":"lu","label":"LU (EUR)"},{"value":"pt","label":"PT (EUR)"},{"value":"ie","label":"IE (EUR)"},{"value":"gr","label":"GR (EUR)"},{"value":"cz","label":"CZ (EUR)"},{"value":"sk","label":"SK (EUR)"},{"value":"si","label":"SI (EUR)"},{"value":"hr","label":"HR (EUR)"},{"value":"bg","label":"BG (EUR)"},{"value":"ee","label":"EE (EUR)"},{"value":"lv","label":"LV (EUR)"},{"value":"lt","label":"LT (EUR)"},{"value":"ro","label":"RO (EUR)"},{"value":"hu","label":"HU (EUR)"},{"value":"cy","label":"CY (EUR)"},{"value":"mt","label":"MT (EUR)"},{"value":"ae","label":"AE (AED)"},{"value":"sa","label":"SA (SAR)"},{"value":"qa","label":"QA (QAR)"},{"value":"kw","label":"KW (USD)"},{"value":"bh","label":"BH (USD)"},{"value":"om","label":"OM (USD)"},{"value":"jo","label":"JO (USD)"},{"value":"eg","label":"EG (USD)"},{"value":"ma","label":"MA (USD)"},{"value":"il","label":"IL (USD)"},{"value":"jp","label":"JP (JPY)"},{"value":"kr","label":"KR (KRW)"},{"value":"au","label":"AU (AUD)"},{"value":"nz","label":"NZ (USD)"},{"value":"ca","label":"CA (CAD)"},{"value":"mx","label":"MX (MXN)"},{"value":"br","label":"BR (BRL)"},{"value":"ar","label":"AR (USD)"},{"value":"cl","label":"CL (CLP)"},{"value":"co","label":"CO (COP)"},{"value":"pe","label":"PE (USD)"},{"value":"sg","label":"SG (SGD)"},{"value":"hk","label":"HK (HKD)"},{"value":"mo","label":"MO (HKD)"},{"value":"tw","label":"TW (TWD)"},{"value":"in","label":"IN (USD)"},{"value":"cn","label":"CN (CNY)"},{"value":"th","label":"TH (USD)"},{"value":"my","label":"MY (USD)"},{"value":"id","label":"ID (USD)"},{"value":"ph","label":"PH (USD)"},{"value":"vn","label":"VN (USD)"},{"value":"za","label":"ZA (USD)"},{"value":"ng","label":"NG (USD)"},{"value":"ke","label":"KE (USD)"},{"value":"kz","label":"KZ (USD)"},{"value":"is","label":"IS (USD)"}],"default":"us","example":"uk"},{"name":"language","type":"enum","required":false,"description":"Language of names, labels, composition and made-in — and of the keyword index (search a Spanish word with language=es). Independent of country. Default en.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"zh","label":"Chinese"},{"value":"ru","label":"Russian"}],"default":"en","example":"de"},{"name":"query","type":"string","required":false,"description":"Keyword (designer, product, type). Optional when brand_id or category_id is given.","on_invalid":"reject","example":"gucci loafers","aliases":["q","keyword"]},{"name":"gender","type":"enum","required":false,"description":"Department.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All"},{"value":"women","label":"Women"},{"value":"men","label":"Men"},{"value":"kids","label":"Kids"}],"default":"all","example":"women"},{"name":"sort","type":"enum","required":false,"description":"Result order. best_discount restricts to sale items (the site's discount order only exists inside sale).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Our picks"},{"value":"newest","label":"New items"},{"value":"price_asc","label":"Price low→high"},{"value":"price_desc","label":"Price high→low"},{"value":"best_discount","label":"Biggest discount (sale only)"}],"default":"relevance","example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page.","on_invalid":"reject","default":1,"example":2,"minimum":1,"maximum":200},{"name":"page_size","type":"integer","required":false,"description":"Rows per page (Farfetch allows up to 180).","on_invalid":"reject","default":48,"example":48,"minimum":1,"maximum":180},{"name":"brand_id","type":"string","required":false,"description":"Farfetch designer id (search rows return brand_id; facets list them).","on_invalid":"reject","example":"25354","aliases":["designer_id"]},{"name":"category_id","type":"string","required":false,"description":"Farfetch category id (from facets or product/detail category_paths), e.g. 135967 women's clothing.","on_invalid":"reject","example":"135967"},{"name":"color_id","type":"string","required":false,"description":"Colour facet id (from include_facets).","on_invalid":"reject","example":"1"},{"name":"on_sale","type":"boolean","required":false,"description":"Only products with at least one discounted offer (Farfetch's sale listing is product-level; a row's own on_sale says whether its page price is the discounted one).","on_invalid":"reject","default":false},{"name":"price_min","type":"number","required":false,"description":"Minimum price in the storefront currency.","on_invalid":"reject","example":100},{"name":"price_max","type":"number","required":false,"description":"Maximum price in the storefront currency.","on_invalid":"reject","example":500},{"name":"include_facets","type":"boolean","required":false,"description":"Also return facets (designers, categories, colours, price and discount ranges) with their ids and counts.","on_invalid":"reject","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When a query matches nothing, Farfetch sometimes pads the page with unrelated products. By default they are dropped (fallback_results_dropped counts them); true returns them apart in fallback_results.","on_invalid":"reject","default":false}],"returns":"results[]{product_id, url, brand, brand_id, name, label, price, currency, was_price, discount_percent, on_sale, price_type, promotion_offer{price,full_price,discount_percent,type}, purchasable, boutique_id, search_index_stock_quantity, sizes_in_stock[], size_count, color_count, pre_owned, condition, members_only, image, images[]}, count, total_results, page, page_size, has_more, sort, query, gender, on_sale, country, language, currency, keyword_matches_on_page, fallback_results_dropped, facets[] (include_facets)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"us","query":"gucci"}},{"name":"product/detail","description":"The full Farfetch product by item id or URL in a storefront country: designer, name, the highlights list, season, gender, colour, designer style id, made-in, composition, care, measurements, condition for pre-owned, category path, the page price with struck price/sale %, the discounted offer of another size/boutique, and the duties/VAT basis, the boutique that sells it (name, country, city), total stock, and every size with the boutique offers for it (each boutique's own price, quantity and ship-from), plus the lowest/highest offer price and images.","required_params":[],"optional_params":["country","language","product_id","url"],"params":[{"name":"country","type":"enum","required":false,"description":"Farfetch storefront country (ISO-2; 'uk' for the United Kingdom). Prices, the currency and the duties/VAT basis follow it. Default us.","on_invalid":"reject","allowed_values":[{"value":"us","label":"US (USD)"},{"value":"uk","label":"UK (GBP)"},{"value":"de","label":"DE (EUR)"},{"value":"fr","label":"FR (EUR)"},{"value":"it","label":"IT (EUR)"},{"value":"es","label":"ES (EUR)"},{"value":"nl","label":"NL (EUR)"},{"value":"at","label":"AT (EUR)"},{"value":"ch","label":"CH (CHF)"},{"value":"se","label":"SE (SEK)"},{"value":"dk","label":"DK (DKK)"},{"value":"no","label":"NO (EUR)"},{"value":"fi","label":"FI (EUR)"},{"value":"pl","label":"PL (PLN)"},{"value":"be","label":"BE (EUR)"},{"value":"lu","label":"LU (EUR)"},{"value":"pt","label":"PT (EUR)"},{"value":"ie","label":"IE (EUR)"},{"value":"gr","label":"GR (EUR)"},{"value":"cz","label":"CZ (EUR)"},{"value":"sk","label":"SK (EUR)"},{"value":"si","label":"SI (EUR)"},{"value":"hr","label":"HR (EUR)"},{"value":"bg","label":"BG (EUR)"},{"value":"ee","label":"EE (EUR)"},{"value":"lv","label":"LV (EUR)"},{"value":"lt","label":"LT (EUR)"},{"value":"ro","label":"RO (EUR)"},{"value":"hu","label":"HU (EUR)"},{"value":"cy","label":"CY (EUR)"},{"value":"mt","label":"MT (EUR)"},{"value":"ae","label":"AE (AED)"},{"value":"sa","label":"SA (SAR)"},{"value":"qa","label":"QA (QAR)"},{"value":"kw","label":"KW (USD)"},{"value":"bh","label":"BH (USD)"},{"value":"om","label":"OM (USD)"},{"value":"jo","label":"JO (USD)"},{"value":"eg","label":"EG (USD)"},{"value":"ma","label":"MA (USD)"},{"value":"il","label":"IL (USD)"},{"value":"jp","label":"JP (JPY)"},{"value":"kr","label":"KR (KRW)"},{"value":"au","label":"AU (AUD)"},{"value":"nz","label":"NZ (USD)"},{"value":"ca","label":"CA (CAD)"},{"value":"mx","label":"MX (MXN)"},{"value":"br","label":"BR (BRL)"},{"value":"ar","label":"AR (USD)"},{"value":"cl","label":"CL (CLP)"},{"value":"co","label":"CO (COP)"},{"value":"pe","label":"PE (USD)"},{"value":"sg","label":"SG (SGD)"},{"value":"hk","label":"HK (HKD)"},{"value":"mo","label":"MO (HKD)"},{"value":"tw","label":"TW (TWD)"},{"value":"in","label":"IN (USD)"},{"value":"cn","label":"CN (CNY)"},{"value":"th","label":"TH (USD)"},{"value":"my","label":"MY (USD)"},{"value":"id","label":"ID (USD)"},{"value":"ph","label":"PH (USD)"},{"value":"vn","label":"VN (USD)"},{"value":"za","label":"ZA (USD)"},{"value":"ng","label":"NG (USD)"},{"value":"ke","label":"KE (USD)"},{"value":"kz","label":"KZ (USD)"},{"value":"is","label":"IS (USD)"}],"default":"us","example":"uk"},{"name":"language","type":"enum","required":false,"description":"Language of names, labels, composition and made-in — and of the keyword index (search a Spanish word with language=es). Independent of country. Default en.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"zh","label":"Chinese"},{"value":"ru","label":"Russian"}],"default":"en","example":"de"},{"name":"product_id","type":"string","required":false,"description":"Farfetch item id (the number in …-item-<id>.aspx; search rows return product_id).","on_invalid":"reject","example":"28060177","aliases":["id","item_id"]},{"name":"url","type":"string","required":false,"description":"A farfetch.com product URL instead of product_id. Its /<country>/ subfolder sets the country unless country is given.","on_invalid":"reject","example":"https://www.farfetch.com/shopping/women/zimmermann-coco-cotton-hoodie-item-28060177.aspx","aliases":["product_url"]}],"returns":"product{product_id, url, brand, brand_id, name, highlights[], label, season, gender, color, designer_style_id, made_in, composition[{part,materials[{material,percentage}]}], care[{type,procedures[]}], measurements[{name,metric,imperial}], pre_owned, condition, breadcrumb[{id,name}], category_paths[[…]], price, currency, was_price, discount_percent, on_sale, price_type, promotion_offer, purchasable, taxes_and_duties{type,label}, boutique{id,name,country_code,country,city,stock_type}, available, stock_quantity, lowest_price, highest_price, boutique_count, size_scale{id,name,one_size}, sizes[{id,size,size_alt,scale,available,quantity,offers[{boutique_id,boutique_name,ships_from_country_code,ships_from_country,ships_from_city,stock_type,quantity,price,was_price,discount_percent,on_sale,purchasable}]}], colors[], images[], image}, country, language","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"uk","product_id":"28060177"}},{"name":"suggest","description":"Farfetch autocomplete for a partial keyword: designer, category and phrase suggestions with the designer/category id and the storefront URL.","required_params":["query"],"optional_params":["country","language","gender"],"params":[{"name":"query","type":"string","required":true,"description":"Partial keyword.","on_invalid":"reject","example":"guc","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Farfetch storefront country (ISO-2; 'uk' for the United Kingdom). Prices, the currency and the duties/VAT basis follow it. Default us.","on_invalid":"reject","allowed_values":[{"value":"us","label":"US (USD)"},{"value":"uk","label":"UK (GBP)"},{"value":"de","label":"DE (EUR)"},{"value":"fr","label":"FR (EUR)"},{"value":"it","label":"IT (EUR)"},{"value":"es","label":"ES (EUR)"},{"value":"nl","label":"NL (EUR)"},{"value":"at","label":"AT (EUR)"},{"value":"ch","label":"CH (CHF)"},{"value":"se","label":"SE (SEK)"},{"value":"dk","label":"DK (DKK)"},{"value":"no","label":"NO (EUR)"},{"value":"fi","label":"FI (EUR)"},{"value":"pl","label":"PL (PLN)"},{"value":"be","label":"BE (EUR)"},{"value":"lu","label":"LU (EUR)"},{"value":"pt","label":"PT (EUR)"},{"value":"ie","label":"IE (EUR)"},{"value":"gr","label":"GR (EUR)"},{"value":"cz","label":"CZ (EUR)"},{"value":"sk","label":"SK (EUR)"},{"value":"si","label":"SI (EUR)"},{"value":"hr","label":"HR (EUR)"},{"value":"bg","label":"BG (EUR)"},{"value":"ee","label":"EE (EUR)"},{"value":"lv","label":"LV (EUR)"},{"value":"lt","label":"LT (EUR)"},{"value":"ro","label":"RO (EUR)"},{"value":"hu","label":"HU (EUR)"},{"value":"cy","label":"CY (EUR)"},{"value":"mt","label":"MT (EUR)"},{"value":"ae","label":"AE (AED)"},{"value":"sa","label":"SA (SAR)"},{"value":"qa","label":"QA (QAR)"},{"value":"kw","label":"KW (USD)"},{"value":"bh","label":"BH (USD)"},{"value":"om","label":"OM (USD)"},{"value":"jo","label":"JO (USD)"},{"value":"eg","label":"EG (USD)"},{"value":"ma","label":"MA (USD)"},{"value":"il","label":"IL (USD)"},{"value":"jp","label":"JP (JPY)"},{"value":"kr","label":"KR (KRW)"},{"value":"au","label":"AU (AUD)"},{"value":"nz","label":"NZ (USD)"},{"value":"ca","label":"CA (CAD)"},{"value":"mx","label":"MX (MXN)"},{"value":"br","label":"BR (BRL)"},{"value":"ar","label":"AR (USD)"},{"value":"cl","label":"CL (CLP)"},{"value":"co","label":"CO (COP)"},{"value":"pe","label":"PE (USD)"},{"value":"sg","label":"SG (SGD)"},{"value":"hk","label":"HK (HKD)"},{"value":"mo","label":"MO (HKD)"},{"value":"tw","label":"TW (TWD)"},{"value":"in","label":"IN (USD)"},{"value":"cn","label":"CN (CNY)"},{"value":"th","label":"TH (USD)"},{"value":"my","label":"MY (USD)"},{"value":"id","label":"ID (USD)"},{"value":"ph","label":"PH (USD)"},{"value":"vn","label":"VN (USD)"},{"value":"za","label":"ZA (USD)"},{"value":"ng","label":"NG (USD)"},{"value":"ke","label":"KE (USD)"},{"value":"kz","label":"KZ (USD)"},{"value":"is","label":"IS (USD)"}],"default":"us","example":"uk"},{"name":"language","type":"enum","required":false,"description":"Language of names, labels, composition and made-in — and of the keyword index (search a Spanish word with language=es). Independent of country. Default en.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"zh","label":"Chinese"},{"value":"ru","label":"Russian"}],"default":"en","example":"de"},{"name":"gender","type":"enum","required":false,"description":"Department.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All"},{"value":"women","label":"Women"},{"value":"men","label":"Men"},{"value":"kids","label":"Kids"}],"default":"all","example":"women"}],"returns":"suggestions[{text, type, reference_type, reference_id, url}], count, country, gender","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"de","query":"guc"}}]},{"name":"feed-gateway","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"RSS & Feed API — universal RSS, Atom and JSON Feed parser: fetch, discover, merge and search any web feed in one normalized schema","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/feed-gateway/v1","spec_available":true,"actions":[{"name":"fetch","description":"Fetch ONE feed URL (RSS 2.0/0.9x, RSS 1.0/RDF, Atom, JSON-Feed 1.1 — auto-detected) and normalise it into one clean JSON schema. Broken XML, HTML entities, encoding mess and truncated feeds are repaired automatically (recovery step reported in meta).","required_params":["url"],"optional_params":["limit","sort_by","sort_dir","include_content","since","until"],"params":[{"name":"url","type":"string","required":true,"description":"Feed URL (RSS/Atom/JSON-Feed). Bare hosts get https:// prefixed. Private/internal/metadata targets are SSRF-blocked.","on_invalid":"reject","example":"https://feeds.bbci.co.uk/news/world/rss.xml"},{"name":"limit","type":"integer","required":false,"description":"Max items returned (1-100, default 50). Out-of-range values are clamped, never rejected.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":100},{"name":"sort_by","type":"enum","required":false,"description":"Item ordering. Competitors paywall sorting (rss2json needs an api_key for order_by) — here it is free.","on_invalid":"reject","allowed_values":[{"value":"feed_order","label":"Original feed order (default)"},{"value":"published","label":"Publish date"},{"value":"title","label":"Title (A-Z)"},{"value":"author","label":"Author name"}],"default":"feed_order","example":"published"},{"name":"sort_dir","type":"enum","required":false,"description":"Sort direction (applies when sort_by is not feed_order).","on_invalid":"reject","allowed_values":[{"value":"desc","label":"Descending (newest/Z first)"},{"value":"asc","label":"Ascending (oldest/A first)"}],"default":"desc","example":"desc"},{"name":"include_content","type":"boolean","required":false,"description":"Include the raw item HTML body as content_html (capped 30 KB). Off by default: summary is always returned as clean plain text.","on_invalid":"reject","default":false,"example":false},{"name":"since","type":"string","required":false,"description":"Only items published at/after this date (ISO 8601, e.g. 2026-06-01 or 2026-06-01T12:00:00Z).","on_invalid":"reject","example":"2026-06-01"},{"name":"until","type":"string","required":false,"description":"Only items published at/before this date (ISO 8601).","on_invalid":"reject","example":"2026-06-30"}],"returns":"{feed: {url, final_url, format, title, link, description, language, updated, image, author, generator, categories[]}, items[]: {id, title, link, published (ISO 8601 Z), updated, author, summary (clean plain text), categories[], enclosures[] {url,type,length,width,height,duration_seconds} (podcast/media RSS), image, podcast {duration_seconds,episode,season,episode_type,explicit,subtitle,keywords[]} (iTunes — present only on podcasts), media {credit,description,keywords[]} (Media RSS), content_html (only when include_content=true)}, item_count, total_items}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://feeds.bbci.co.uk/news/world/rss.xml","limit":10}},{"name":"discover","description":"Find the feeds of ANY website: parses <link rel=alternate> tags + visible anchor hints, then probes common feed paths at BOTH the host root (/feed, /rss.xml, /atom.xml, /index.xml, …) AND under the given path (e.g. /r/programming/.rss). Every candidate is fetched and VERIFIED as a real parseable feed before being returned — so it works even on sites that don't declare a feed link-tag.","required_params":["url"],"optional_params":["probe","limit"],"params":[{"name":"url","type":"string","required":true,"description":"Website URL (homepage or any page).","on_invalid":"reject","example":"https://www.theverge.com"},{"name":"probe","type":"boolean","required":false,"description":"Also probe common feed paths (/feed, /rss.xml, /atom.xml, …) beyond the page's declared link tags.","on_invalid":"reject","default":true,"example":true},{"name":"limit","type":"integer","required":false,"description":"Max feeds returned (1-20, default 10).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":20}],"returns":"{site, feeds[]: {url, format, title, item_count, discovered_via (link-tag|anchor|probe)}, count, candidates_checked}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.theverge.com"}},{"name":"merge","description":"Merge up to 10 feeds into ONE de-duplicated, date-sorted stream. Duplicates are detected on a canonical link key (tracking params stripped) falling back to guid/title. Each item carries its source_feed.","required_params":["urls"],"optional_params":["limit","sort_dir","dedup","since","until","include_content"],"params":[{"name":"urls","type":"array","required":true,"description":"Feed URLs to merge (max 10). Each URL is independently SSRF-guarded and fetched concurrently; one bad feed never fails the whole call.","on_invalid":"reject","example":["https://feeds.bbci.co.uk/news/world/rss.xml","https://hnrss.org/frontpage"]},{"name":"limit","type":"integer","required":false,"description":"Max items returned (1-200, default 100). Out-of-range values are clamped, never rejected.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":200},{"name":"sort_dir","type":"enum","required":false,"description":"Sort direction (applies when sort_by is not feed_order).","on_invalid":"reject","allowed_values":[{"value":"desc","label":"Descending (newest/Z first)"},{"value":"asc","label":"Ascending (oldest/A first)"}],"default":"desc","example":"desc"},{"name":"dedup","type":"boolean","required":false,"description":"Remove duplicate stories across feeds (default true).","on_invalid":"reject","default":true,"example":true},{"name":"since","type":"string","required":false,"description":"Only items published at/after this date (ISO 8601, e.g. 2026-06-01 or 2026-06-01T12:00:00Z).","on_invalid":"reject","example":"2026-06-01"},{"name":"until","type":"string","required":false,"description":"Only items published at/before this date (ISO 8601).","on_invalid":"reject","example":"2026-06-30"},{"name":"include_content","type":"boolean","required":false,"description":"Include the raw item HTML body as content_html (capped 30 KB). Off by default: summary is always returned as clean plain text.","on_invalid":"reject","default":false,"example":false}],"returns":"{items[]: {id, title, link, published (ISO 8601 Z), updated, author, summary (clean plain text), categories[], enclosures[] {url,type,length,width,height,duration_seconds} (podcast/media RSS), image, podcast {duration_seconds,episode,season,episode_type,explicit,subtitle,keywords[]} (iTunes — present only on podcasts), media {credit,description,keywords[]} (Media RSS), content_html (only when include_content=true)} each + source_feed {url, title}, item_count, total_before_dedup, unique_after_dedup, removed_duplicates, feeds[]: {url, ok, title, item_count, error}}","cacheable":true,"cache_ttl_seconds":180,"pricing":{"mode":"flat","credits":1},"example_params":{"urls":["https://feeds.bbci.co.uk/news/world/rss.xml","https://feeds.bbci.co.uk/news/technology/rss.xml"],"limit":20}},{"name":"search","description":"Keyword-filter feed items (like RSSHub filter / Feedly search, but no account). Searches title/summary/author/categories (and content_html when include_content=true); multi-word queries match any or all terms; exclude= drops unwanted items.","required_params":[],"optional_params":["url","urls","query","exclude","fields","match","limit","sort_by","sort_dir","include_content","since","until"],"params":[{"name":"url","type":"string","required":false,"description":"Single feed URL to search. (search needs url OR urls.)","on_invalid":"reject","example":"https://feeds.bbci.co.uk/news/world/rss.xml"},{"name":"urls","type":"array","required":false,"description":"Multiple feed URLs to search at once (max 10). Each URL is independently SSRF-guarded and fetched concurrently; one bad feed never fails the whole call.","on_invalid":"reject","example":["https://feeds.bbci.co.uk/news/world/rss.xml","https://hnrss.org/frontpage"]},{"name":"query","type":"string","required":false,"description":"Keyword(s) to match, space-separated. Empty query + exclude acts as a pure exclusion filter. Case-insensitive substring match.","on_invalid":"reject","example":"climate"},{"name":"exclude","type":"string","required":false,"description":"Keyword(s) that DROP an item when present (RSSHub filter_out equivalent).","on_invalid":"reject","example":"opinion"},{"name":"fields","type":"array","required":false,"description":"Which item fields to match against (default title+summary).","on_invalid":"reject","allowed_values":[{"value":"title","label":"title"},{"value":"summary","label":"summary"},{"value":"content","label":"content"},{"value":"author","label":"author"},{"value":"categories","label":"categories"}],"default":["title","summary"],"example":["title","summary"]},{"name":"match","type":"enum","required":false,"description":"Multi-term combination mode.","on_invalid":"reject","allowed_values":[{"value":"any","label":"Match ANY term (OR)"},{"value":"all","label":"Match ALL terms (AND)"}],"default":"any","example":"any"},{"name":"limit","type":"integer","required":false,"description":"Max items returned (1-100, default 50). Out-of-range values are clamped, never rejected.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":100},{"name":"sort_by","type":"enum","required":false,"description":"Item ordering. Competitors paywall sorting (rss2json needs an api_key for order_by) — here it is free.","on_invalid":"reject","allowed_values":[{"value":"feed_order","label":"Original feed order (default)"},{"value":"published","label":"Publish date"},{"value":"title","label":"Title (A-Z)"},{"value":"author","label":"Author name"}],"default":"feed_order","example":"published"},{"name":"sort_dir","type":"enum","required":false,"description":"Sort direction (applies when sort_by is not feed_order).","on_invalid":"reject","allowed_values":[{"value":"desc","label":"Descending (newest/Z first)"},{"value":"asc","label":"Ascending (oldest/A first)"}],"default":"desc","example":"desc"},{"name":"include_content","type":"boolean","required":false,"description":"Include the raw item HTML body as content_html (capped 30 KB). Off by default: summary is always returned as clean plain text.","on_invalid":"reject","default":false,"example":false},{"name":"since","type":"string","required":false,"description":"Only items published at/after this date (ISO 8601, e.g. 2026-06-01 or 2026-06-01T12:00:00Z).","on_invalid":"reject","example":"2026-06-01"},{"name":"until","type":"string","required":false,"description":"Only items published at/before this date (ISO 8601).","on_invalid":"reject","example":"2026-06-30"}],"returns":"{items[]: {id, title, link, published (ISO 8601 Z), updated, author, summary (clean plain text), categories[], enclosures[] {url,type,length,width,height,duration_seconds} (podcast/media RSS), image, podcast {duration_seconds,episode,season,episode_type,explicit,subtitle,keywords[]} (iTunes — present only on podcasts), media {credit,description,keywords[]} (Media RSS), content_html (only when include_content=true)} each + source_feed when multi-feed, item_count, total_scanned, query, feeds[] (per-feed ok/error when urls used)}","cacheable":true,"cache_ttl_seconds":180,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://feeds.bbci.co.uk/news/world/rss.xml","query":"a e i o u","match":"any"}},{"name":"batch","description":"Fetch up to 20 feeds in ONE call (concurrent, fault-isolated): each feed returns independently with its own ok/error — one dead feed never fails the batch.","required_params":["urls"],"optional_params":["limit","include_content","sort_by","sort_dir"],"params":[{"name":"urls","type":"array","required":true,"description":"Feed URLs to fetch (max 20). Each URL is independently SSRF-guarded and fetched concurrently; one bad feed never fails the whole call.","on_invalid":"reject","example":["https://feeds.bbci.co.uk/news/world/rss.xml","https://hnrss.org/frontpage"]},{"name":"limit","type":"integer","required":false,"description":"Max items returned (1-100, default 20). Out-of-range values are clamped, never rejected.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"include_content","type":"boolean","required":false,"description":"Include the raw item HTML body as content_html (capped 30 KB). Off by default: summary is always returned as clean plain text.","on_invalid":"reject","default":false,"example":false},{"name":"sort_by","type":"enum","required":false,"description":"Item ordering. Competitors paywall sorting (rss2json needs an api_key for order_by) — here it is free.","on_invalid":"reject","allowed_values":[{"value":"feed_order","label":"Original feed order (default)"},{"value":"published","label":"Publish date"},{"value":"title","label":"Title (A-Z)"},{"value":"author","label":"Author name"}],"default":"feed_order","example":"published"},{"name":"sort_dir","type":"enum","required":false,"description":"Sort direction (applies when sort_by is not feed_order).","on_invalid":"reject","allowed_values":[{"value":"desc","label":"Descending (newest/Z first)"},{"value":"asc","label":"Ascending (oldest/A first)"}],"default":"desc","example":"desc"}],"returns":"{results[]: {url, ok, feed, items[], item_count, error}, feed_count, ok_count, total_items}","cacheable":true,"cache_ttl_seconds":180,"pricing":{"mode":"flat","credits":1},"example_params":{"urls":["https://feeds.bbci.co.uk/news/world/rss.xml","https://hnrss.org/frontpage"],"limit":5}}]},{"name":"file-convert","category":{"id":"utilities","title":"Utilities & AI"},"title":"File Conversion API — convert and process files: PDF tools, image convert/optimize, document-to-markdown (for RAG), OCR, Office-to-PDF, audio extraction and data-format conversion","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/file-convert/v1","spec_available":true,"actions":[{"name":"pdf_extract_text","description":"Extract text from a PDF (per page). mode=layout preserves visual alignment (pdfplumber); mode=plain is fastest. Flags likely-scanned PDFs.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"pages","type":"string","required":false,"description":"Page selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.","on_invalid":"ignore","example":"1-3,5"},{"name":"mode","type":"enum","required":false,"description":"plain = reading-order text; layout = whitespace-aligned text (tables stay readable).","on_invalid":"reject","allowed_values":[{"value":"plain","label":"Plain"},{"value":"layout","label":"Layout-aware"}],"default":"plain","example":"plain"}],"returns":"pages[] (page, text), page_count, pages_extracted, characters, empty_pages, likely_scanned (true ⇒ use ocr_pdf), stop_reason","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="}},{"name":"pdf_metadata","description":"PDF document properties: title/author/dates/producer, page count & size, encryption flag, AcroForm field count.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"}],"returns":"encrypted, page_count, title, author, subject, creator, producer, creation_date, modification_date, page_size_points, has_form, form_field_count","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="}},{"name":"pdf_merge","description":"Merge 2-20 PDFs into one (input order preserved). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"files_b64","type":"array","required":false,"description":"Array of base64 files (max 20 total inputs). Combine freely with file_urls; base64 entries come first in the processing order.","on_invalid":"ignore","example":["JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg==","JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="]},{"name":"file_urls","type":"array","required":false,"description":"Array of https URLs (each SSRF-guarded and fetched server-side).","on_invalid":"ignore","example":["https://pdfobject.com/pdf/sample.pdf","https://pdfobject.com/pdf/sample.pdf"]},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"}],"returns":"input_files, page_count, files[] (merged.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"files_b64":["JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg==","JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="]}},{"name":"pdf_split","description":"Split a PDF: pages='2-5,8' extracts those pages into one PDF; chunk_size=N splits the whole document into N-page parts (max 100 parts). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"pages","type":"string","required":false,"description":"Pages to EXTRACT into a single PDF (mutually exclusive with chunk_size).","on_invalid":"ignore","example":"1-3,5"},{"name":"chunk_size","type":"integer","required":false,"description":"Split into parts of N pages each (1 = one PDF per page). Ignored when 'pages' is given.","on_invalid":"reject","example":1,"minimum":1,"maximum":500}],"returns":"page_count, parts, files[] (part_NNN.pdf or extracted.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg==","chunk_size":1}},{"name":"pdf_rotate","description":"Rotate pages clockwise by 90/180/270° (all pages or a range). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"pages","type":"string","required":false,"description":"Page selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.","on_invalid":"ignore","example":"1-3,5"},{"name":"angle","type":"enum","required":false,"description":"Clockwise rotation angle.","on_invalid":"reject","allowed_values":[{"value":90,"label":"90° CW"},{"value":180,"label":"180°"},{"value":270,"label":"270° CW"}],"default":90,"example":90}],"returns":"page_count, rotated_pages, angle, files[] (rotated.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg==","angle":90}},{"name":"pdf_to_images","description":"Render PDF pages to PNG/JPG/WebP (pypdfium2). Max 20 pages per call, dpi ≤ 300. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"pages","type":"string","required":false,"description":"Page selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.","on_invalid":"ignore","example":"1-3,5"},{"name":"to","type":"enum","required":false,"description":"Image format for the rendered pages (alias: format).","on_invalid":"reject","allowed_values":[{"value":"png","label":"PNG"},{"value":"jpg","label":"JPG"},{"value":"webp","label":"WebP"}],"default":"png","example":"png","aliases":["format"]},{"name":"dpi","type":"integer","required":false,"description":"Render resolution (36-300).","on_invalid":"reject","default":150,"example":150,"minimum":36,"maximum":300}],"returns":"page_count, rendered, dpi, stop_reason, files[] (page_NNN.png, each with width/height)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg==","dpi":72}},{"name":"images_to_pdf","description":"Combine 1-20 images into a single PDF (one page per image; page_size=a4/letter centers each image on a standard page). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"files_b64","type":"array","required":false,"description":"Array of base64 files (max 20 total inputs). Combine freely with file_urls; base64 entries come first in the processing order.","on_invalid":"ignore","example":["iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg==","iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="]},{"name":"file_urls","type":"array","required":false,"description":"Array of https URLs (each SSRF-guarded and fetched server-side).","on_invalid":"ignore","example":["https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png","https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"]},{"name":"file_b64","type":"string","required":false,"description":"Single image as base64 (or use files_b64).","on_invalid":"ignore","example":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"},{"name":"page_size","type":"enum","required":false,"description":"auto = page matches each image; a4/letter = white page, image fitted+centred.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Image size"},{"value":"a4","label":"A4"},{"value":"letter","label":"Letter"}],"default":"auto","example":"auto"}],"returns":"image_count, page_size, files[] (images.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"files_b64":["iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="]}},{"name":"pdf_watermark","description":"Stamp a text or image watermark over pages (true alpha overlay; diagonal or centred). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"pages","type":"string","required":false,"description":"Page selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.","on_invalid":"ignore","example":"1-3,5"},{"name":"text","type":"string","required":false,"description":"Watermark text (UTF-8, DejaVu font). Provide text OR image_b64/image_url.","on_invalid":"ignore","example":"CONFIDENTIAL"},{"name":"image_b64","type":"string","required":false,"description":"Watermark image as base64 (PNG with alpha recommended; scaled to ~40% page width).","on_invalid":"ignore"},{"name":"image_url","type":"string","required":false,"description":"Watermark image URL (SSRF-guarded fetch).","on_invalid":"ignore"},{"name":"opacity","type":"number","required":false,"description":"Watermark opacity 0.02-1.0.","on_invalid":"reject","default":0.25,"example":0.25,"minimum":0.02,"maximum":1.0},{"name":"position","type":"enum","required":false,"description":"Text placement.","on_invalid":"reject","allowed_values":[{"value":"diagonal","label":"Diagonal"},{"value":"center","label":"Centred"}],"default":"diagonal","example":"diagonal"},{"name":"color","type":"enum","required":false,"description":"Text colour.","on_invalid":"reject","allowed_values":[{"value":"gray","label":"Gray"},{"value":"red","label":"Red"},{"value":"black","label":"Black"},{"value":"blue","label":"Blue"}],"default":"gray","example":"gray"},{"name":"font_size","type":"integer","required":false,"description":"Text size in pixels at 2× page scale (default: auto ≈ page/10).","on_invalid":"reject","example":24,"minimum":8,"maximum":400}],"returns":"page_count, watermarked_pages, kind (text|image), files[] (watermarked.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg==","text":"CANARY"}},{"name":"pdf_fill_form","description":"AcroForm filling. Without 'fields' → lists the form fields (discovery). With 'fields' → fills and returns the PDF (NeedAppearances set). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUi9BY3JvRm9ybTw8L0ZpZWxkc1s2IDAgUiA3IDAgUl0vREEoL0hlbHYgMCBUZiAwIGcpL0RSPDwvRm9udDw8L0hlbHYgNSAwIFIvWmFEYiA4IDAgUj4+Pj4vTmVlZEFwcGVhcmFuY2VzIHRydWU+Pj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0hlbHYgNSAwIFIvWmFEYiA4IDAgUj4+Pj4vQW5ub3RzWzYgMCBSIDcgMCBSXT4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNjU+PnN0cmVhbQpCVCAvSGVsdiAxNCBUZiA3MiA3NDAgVGQgKFJlZWZBUEkgZ29sZGVuIEFjcm9Gb3JtIHRlc3QgUERGKSBUaiBFVAplbmRzdHJlYW1lbmRvYmoKNSAwIG9iajw8L1R5cGUvRm9udC9TdWJ0eXBlL1R5cGUxL0Jhc2VGb250L0hlbHZldGljYS9FbmNvZGluZy9XaW5BbnNpRW5jb2Rpbmc+PmVuZG9iago2IDAgb2JqPDwvVHlwZS9Bbm5vdC9TdWJ0eXBlL1dpZGdldC9GVC9UeC9UKG5hbWUpL1RVKEZ1bGwgbmFtZSkvRmYgMC9WKCkvUmVjdFs3MiA2NjAgMzcyIDY5MF0vREEoL0hlbHYgMTIgVGYgMCBnKS9GIDQvUCAzIDAgUi9NSzw8L0JDWzAgMCAwXS9CR1sxIDEgMV0+Pj4+ZW5kb2JqCjcgMCBvYmo8PC9UeXBlL0Fubm90L1N1YnR5cGUvV2lkZ2V0L0ZUL0J0bi9UKGFncmVlKS9UVShJIGFncmVlKS9WL09mZi9BUy9PZmYvUmVjdFs3MiA2MjAgOTIgNjQwXS9EQSgvWmFEYiAwIFRmIDAgZykvRiA0L1AgMyAwIFIvTUs8PC9CQ1swIDAgMF0vQkdbMSAxIDFdL0NBKDQpPj4vQVA8PC9OPDwvWWVzIDkgMCBSL09mZiAxMCAwIFI+Pj4+Pj5lbmRvYmoKOCAwIG9iajw8L1R5cGUvRm9udC9TdWJ0eXBlL1R5cGUxL0Jhc2VGb250L1phcGZEaW5nYmF0cz4+ZW5kb2JqCjkgMCBvYmo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9Gb3JtL0JCb3hbMCAwIDIwIDIwXS9SZXNvdXJjZXM8PC9Gb250PDwvWmFEYiA4IDAgUj4+Pj4vTGVuZ3RoIDQ2Pj5zdHJlYW0KcSBCVCAvWmFEYiAxNCBUZiAwIGcgNCA0IFRkICg0KSBUaiBFVCBRCmVuZHN0cmVhbWVuZG9iagoxMCAwIG9iajw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0Zvcm0vQkJveFswIDAgMjAgMjBdL1Jlc291cmNlczw8Pj4vTGVuZ3RoIDg+PnN0cmVhbQpxICBRCmVuZHN0cmVhbWVuZG9iagp4cmVmCjAgMTEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAxNjMgMDAwMDAgbiAKMDAwMDAwMDIxMiAwMDAwMCBuIAowMDAwMDAwMzU1IDAwMDAwIG4gCjAwMDAwMDA0NjUgMDAwMDAgbiAKMDAwMDAwMDU1MSAwMDAwMCBuIAowMDAwMDAwNzEyIDAwMDAwIG4gCjAwMDAwMDA5MTUgMDAwMDAgbiAKMDAwMDAwMDk3OSAwMDAwMCBuIAowMDAwMDAxMTM5IDAwMDAwIG4gCnRyYWlsZXI8PC9TaXplIDExL1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMTI0NAolJUVPRgo="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"form.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"fields","type":"object","required":false,"description":"{field_name: value} map. Checkbox values are usually /Yes — run discovery mode first.","on_invalid":"ignore","example":{"name":"Jane Doe","agree":"/Yes"}}],"returns":"mode (list|fill), has_form, field_count, fields[]/fields_filled, fields_unknown[], files[] (filled.pdf, fill mode only)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUi9BY3JvRm9ybTw8L0ZpZWxkc1s2IDAgUiA3IDAgUl0vREEoL0hlbHYgMCBUZiAwIGcpL0RSPDwvRm9udDw8L0hlbHYgNSAwIFIvWmFEYiA4IDAgUj4+Pj4vTmVlZEFwcGVhcmFuY2VzIHRydWU+Pj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0hlbHYgNSAwIFIvWmFEYiA4IDAgUj4+Pj4vQW5ub3RzWzYgMCBSIDcgMCBSXT4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNjU+PnN0cmVhbQpCVCAvSGVsdiAxNCBUZiA3MiA3NDAgVGQgKFJlZWZBUEkgZ29sZGVuIEFjcm9Gb3JtIHRlc3QgUERGKSBUaiBFVAplbmRzdHJlYW1lbmRvYmoKNSAwIG9iajw8L1R5cGUvRm9udC9TdWJ0eXBlL1R5cGUxL0Jhc2VGb250L0hlbHZldGljYS9FbmNvZGluZy9XaW5BbnNpRW5jb2Rpbmc+PmVuZG9iago2IDAgb2JqPDwvVHlwZS9Bbm5vdC9TdWJ0eXBlL1dpZGdldC9GVC9UeC9UKG5hbWUpL1RVKEZ1bGwgbmFtZSkvRmYgMC9WKCkvUmVjdFs3MiA2NjAgMzcyIDY5MF0vREEoL0hlbHYgMTIgVGYgMCBnKS9GIDQvUCAzIDAgUi9NSzw8L0JDWzAgMCAwXS9CR1sxIDEgMV0+Pj4+ZW5kb2JqCjcgMCBvYmo8PC9UeXBlL0Fubm90L1N1YnR5cGUvV2lkZ2V0L0ZUL0J0bi9UKGFncmVlKS9UVShJIGFncmVlKS9WL09mZi9BUy9PZmYvUmVjdFs3MiA2MjAgOTIgNjQwXS9EQSgvWmFEYiAwIFRmIDAgZykvRiA0L1AgMyAwIFIvTUs8PC9CQ1swIDAgMF0vQkdbMSAxIDFdL0NBKDQpPj4vQVA8PC9OPDwvWWVzIDkgMCBSL09mZiAxMCAwIFI+Pj4+Pj5lbmRvYmoKOCAwIG9iajw8L1R5cGUvRm9udC9TdWJ0eXBlL1R5cGUxL0Jhc2VGb250L1phcGZEaW5nYmF0cz4+ZW5kb2JqCjkgMCBvYmo8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9Gb3JtL0JCb3hbMCAwIDIwIDIwXS9SZXNvdXJjZXM8PC9Gb250PDwvWmFEYiA4IDAgUj4+Pj4vTGVuZ3RoIDQ2Pj5zdHJlYW0KcSBCVCAvWmFEYiAxNCBUZiAwIGcgNCA0IFRkICg0KSBUaiBFVCBRCmVuZHN0cmVhbWVuZG9iagoxMCAwIG9iajw8L1R5cGUvWE9iamVjdC9TdWJ0eXBlL0Zvcm0vQkJveFswIDAgMjAgMjBdL1Jlc291cmNlczw8Pj4vTGVuZ3RoIDg+PnN0cmVhbQpxICBRCmVuZHN0cmVhbWVuZG9iagp4cmVmCjAgMTEKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAxNjMgMDAwMDAgbiAKMDAwMDAwMDIxMiAwMDAwMCBuIAowMDAwMDAwMzU1IDAwMDAwIG4gCjAwMDAwMDA0NjUgMDAwMDAgbiAKMDAwMDAwMDU1MSAwMDAwMCBuIAowMDAwMDAwNzEyIDAwMDAwIG4gCjAwMDAwMDA5MTUgMDAwMDAgbiAKMDAwMDAwMDk3OSAwMDAwMCBuIAowMDAwMDAxMTM5IDAwMDAwIG4gCnRyYWlsZXI8PC9TaXplIDExL1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMTI0NAolJUVPRgo="}},{"name":"pdf_redact","description":"TRUE redaction: target pages are re-rendered with the matches blacked out and REBUILT — original text/fonts/layers destroyed, then verified by re-extraction (output withheld if any remnant). Redacted pages lose selectable text. Find by 'terms' and/or explicit 'areas'. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"terms","type":"array","required":false,"description":"Text terms to find & redact (case-insensitive, matched across words on a line).","on_invalid":"ignore","example":["Jane Doe","ACME-2024-001"]},{"name":"areas","type":"array","required":false,"description":"Explicit boxes: {page, x0, y0, x1, y1} in PDF points, origin TOP-left.","on_invalid":"ignore","example":[{"page":1,"x0":72,"y0":90,"x1":300,"y1":120}]},{"name":"dpi","type":"integer","required":false,"description":"Rebuild resolution for redacted pages.","on_invalid":"reject","default":200,"example":200,"minimum":120,"maximum":300}],"returns":"page_count, redacted_pages, pages[], matches, verified_removed (always true on success), method, files[] (redacted.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg==","terms":["golden"]}},{"name":"pdf_compress","description":"Shrink a PDF: stream recompression + embedded-image re-encode (level=low/balanced/strong; strong also caps image resolution). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"level","type":"enum","required":false,"description":"Compression aggressiveness.","on_invalid":"reject","allowed_values":[{"value":"low","label":"Low (quality 85)"},{"value":"balanced","label":"Balanced (quality 75)"},{"value":"strong","label":"Strong (quality 60 + downscale)"}],"default":"balanced","example":"balanced"}],"returns":"bytes_before, bytes_after, saved_pct, images_recoded, level, files[] (compressed.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="}},{"name":"pdf_protect","description":"Encrypt a PDF with AES-256 (user password to open; optional owner password). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":["user_password"],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"user_password","type":"string","required":true,"description":"Password required to OPEN the PDF (min 4 chars).","on_invalid":"ignore","example":"s3cret!"},{"name":"owner_password","type":"string","required":false,"description":"Optional owner/permissions password (defaults to the user password.","on_invalid":"ignore","example":"owner123"}],"returns":"page_count, algorithm (AES-256), files[] (protected.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg==","user_password":"canary123"}},{"name":"pdf_unlock","description":"Remove encryption from a PDF — REQUIRES the correct password (we never crack or bypass protection). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":["password"],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNjQ+PnN0cmVhbQrpKGDFfcWpNJhwgBvsFFzVQL9DwsFTy36zcGXftL4ci6vYoPE1iyw1XypQVtobWFkJn8eA0q4g8jlAQouAqf7mCmVuZHN0cmVhbWVuZG9iago1IDAgb2JqPDwvVHlwZS9Gb250L1N1YnR5cGUvVHlwZTEvQmFzZUZvbnQvSGVsdmV0aWNhPj5lbmRvYmoKNiAwIG9iajw8L0ZpbHRlci9TdGFuZGFyZC9WIDEvUiAyL088MjRlODI1ODljYTJhMzBiMWM4MTczZmZjY2Y0YTRmYTc2YWYyZThkMWVjZThiODJmMzY1MzBjYTllNmJmNmZiOT4vVTxhZmM4MTZlZmExYzJhYjAyMGQ4ZGYwYmZjOGY5MmM4YTM4OGIyNjZlNzk5Mzc1MTY4NmQwZjliMjIxZDQxZDI4Pi9QIC0xPj5lbmRvYmoKeHJlZgowIDcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTIgMDAwMDAgbiAKMDAwMDAwMDEwMSAwMDAwMCBuIAowMDAwMDAwMjExIDAwMDAwIG4gCjAwMDAwMDAzMjAgMDAwMDAgbiAKMDAwMDAwMDM4MSAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA3L1Jvb3QgMSAwIFIvRW5jcnlwdCA2IDAgUi9JRFs8NTI2NTY1NjY0MTUwNDk2NzZmNmM2NDY1NmUzMDMwMzAzMT48NTI2NTY1NjY0MTUwNDk2NzZmNmM2NDY1NmUzMDMwMzAzMT5dPj4Kc3RhcnR4cmVmCjU2NAolJUVPRgo="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"locked.pdf"},{"name":"password","type":"string","required":true,"description":"The PDF's legitimate password. (The base64 example above is an encrypted sample whose password is 'reefapi'.)","on_invalid":"ignore","example":"reefapi"}],"returns":"page_count, was_encrypted, files[] (unlocked.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNjQ+PnN0cmVhbQrpKGDFfcWpNJhwgBvsFFzVQL9DwsFTy36zcGXftL4ci6vYoPE1iyw1XypQVtobWFkJn8eA0q4g8jlAQouAqf7mCmVuZHN0cmVhbWVuZG9iago1IDAgb2JqPDwvVHlwZS9Gb250L1N1YnR5cGUvVHlwZTEvQmFzZUZvbnQvSGVsdmV0aWNhPj5lbmRvYmoKNiAwIG9iajw8L0ZpbHRlci9TdGFuZGFyZC9WIDEvUiAyL088MjRlODI1ODljYTJhMzBiMWM4MTczZmZjY2Y0YTRmYTc2YWYyZThkMWVjZThiODJmMzY1MzBjYTllNmJmNmZiOT4vVTxhZmM4MTZlZmExYzJhYjAyMGQ4ZGYwYmZjOGY5MmM4YTM4OGIyNjZlNzk5Mzc1MTY4NmQwZjliMjIxZDQxZDI4Pi9QIC0xPj5lbmRvYmoKeHJlZgowIDcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTIgMDAwMDAgbiAKMDAwMDAwMDEwMSAwMDAwMCBuIAowMDAwMDAwMjExIDAwMDAwIG4gCjAwMDAwMDAzMjAgMDAwMDAgbiAKMDAwMDAwMDM4MSAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA3L1Jvb3QgMSAwIFIvRW5jcnlwdCA2IDAgUi9JRFs8NTI2NTY1NjY0MTUwNDk2NzZmNmM2NDY1NmUzMDMwMzAzMT48NTI2NTY1NjY0MTUwNDk2NzZmNmM2NDY1NmUzMDMwMzAzMT5dPj4Kc3RhcnR4cmVmCjU2NAolJUVPRgo=","password":"reefapi"}},{"name":"pdf_repair","description":"Best-effort structural repair (broken xref/trailer/stream lengths) via a tolerant qpdf parse + clean rewrite. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"}],"returns":"page_count, readable_after_repair, note, files[] (repaired.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="}},{"name":"image_convert","description":"Convert between raster formats (jpg/png/webp/tiff/bmp/gif/avif; animated gif/webp preserved where the target supports it). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":["to"],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"photo.png"},{"name":"to","type":"enum","required":true,"description":"Target format: jpg, png, webp, tiff, bmp, gif, avif.","on_invalid":"reject","allowed_values":[{"value":"jpg","label":"JPG"},{"value":"png","label":"PNG"},{"value":"webp","label":"WEBP"},{"value":"tiff","label":"TIFF"},{"value":"bmp","label":"BMP"},{"value":"gif","label":"GIF"},{"value":"avif","label":"AVIF"}],"example":"jpg"},{"name":"quality","type":"integer","required":false,"description":"Encode quality 1-100 (jpg/webp/avif).","on_invalid":"reject","default":85,"example":85,"minimum":1,"maximum":100}],"returns":"from, to, width, height, frames, files[]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg==","to":"webp"}},{"name":"image_resize","description":"Resize with fit=contain (aspect kept, fits inside box) / cover (fills+crops) / stretch. No upscaling unless upscale=true. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"photo.png"},{"name":"width","type":"integer","required":false,"description":"Target width px (give width and/or height).","on_invalid":"reject","example":800,"minimum":1,"maximum":20000},{"name":"height","type":"integer","required":false,"description":"Target height px.","on_invalid":"reject","example":8,"minimum":1,"maximum":20000},{"name":"fit","type":"enum","required":false,"description":"Resize strategy.","on_invalid":"reject","allowed_values":[{"value":"contain","label":"Contain"},{"value":"cover","label":"Cover"},{"value":"stretch","label":"Stretch"}],"default":"contain","example":"contain"},{"name":"upscale","type":"boolean","required":false,"description":"Allow enlarging beyond the source size.","on_invalid":"ignore","default":false,"example":false},{"name":"to","type":"enum","required":false,"description":"Optional output format (default: keep source).","on_invalid":"reject","allowed_values":[{"value":"jpg","label":"JPG"},{"value":"png","label":"PNG"},{"value":"webp","label":"WEBP"},{"value":"tiff","label":"TIFF"},{"value":"bmp","label":"BMP"},{"value":"gif","label":"GIF"},{"value":"avif","label":"AVIF"}],"default":"","example":"jpg"},{"name":"quality","type":"integer","required":false,"description":"Encode quality 1-100 (jpg/webp/avif).","on_invalid":"reject","default":85,"example":85,"minimum":1,"maximum":100}],"returns":"from_size, to_size, fit, files[]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg==","width":64}},{"name":"image_optimize","description":"Smart perceptual compression (TinyPNG-style): binary-searches the lowest quality whose decoded result stays visually equal to the source, per a per-channel error budget (effort=low/balanced/strong). Optionally convert to webp/avif while optimizing. Never returns a bigger file. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"photo.png"},{"name":"to","type":"enum","required":false,"description":"auto = keep format (exotic sources → webp).","on_invalid":"reject","allowed_values":[{"value":"auto","label":"AUTO"},{"value":"jpg","label":"JPG"},{"value":"png","label":"PNG"},{"value":"webp","label":"WEBP"},{"value":"avif","label":"AVIF"}],"default":"auto","example":"auto"},{"name":"effort","type":"enum","required":false,"description":"How much visual error to allow.","on_invalid":"reject","allowed_values":[{"value":"low","label":"Visually lossless"},{"value":"balanced","label":"Balanced"},{"value":"strong","label":"Max savings"}],"default":"balanced","example":"balanced"}],"returns":"from, to, bytes_before, bytes_after, saved_pct, quality, method, files[]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="}},{"name":"image_thumbnail","description":"Fast thumbnail (16-2048px box; square=true centre-crops to a square). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"photo.png"},{"name":"size","type":"integer","required":false,"description":"Bounding-box size in px.","on_invalid":"reject","default":256,"example":256,"minimum":16,"maximum":2048},{"name":"square","type":"boolean","required":false,"description":"Centre-crop to square.","on_invalid":"ignore","default":false,"example":false},{"name":"to","type":"enum","required":false,"description":"Thumbnail format.","on_invalid":"reject","allowed_values":[{"value":"webp","label":"WEBP"},{"value":"jpg","label":"JPG"},{"value":"png","label":"PNG"}],"default":"webp","example":"webp"}],"returns":"from_size, to_size, files[] (thumb.webp)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg==","size":64}},{"name":"image_metadata","description":"Read image facts + EXIF (+GPS) — and with strip=true return a copy with ALL metadata removed (EXIF/GPS/XMP/ICC).","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"photo.png"},{"name":"strip","type":"boolean","required":false,"description":"Also return a metadata-stripped copy.","on_invalid":"ignore","default":false,"example":false}],"returns":"format, mode, width, height, frames, bytes, exif{}, gps{}, has_gps, stripped, files[] (stripped.jpg/png when strip=true)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="}},{"name":"image_rotate","description":"Rotate (90/180/270 clockwise) and/or flip (horizontal/vertical). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"photo.png"},{"name":"angle","type":"enum","required":false,"description":"Clockwise rotation.","on_invalid":"reject","allowed_values":[{"value":0,"label":"None"},{"value":90,"label":"90° CW"},{"value":180,"label":"180°"},{"value":270,"label":"270° CW"}],"default":0,"example":0},{"name":"flip","type":"enum","required":false,"description":"Optional mirror.","on_invalid":"reject","allowed_values":[{"value":"horizontal","label":"Horizontal"},{"value":"vertical","label":"Vertical"}],"default":"","example":"horizontal"}],"returns":"angle, flip, size, files[]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg==","angle":90}},{"name":"image_crop","description":"Crop a pixel box (x, y from top-left + width × height). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":["width","height"],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"photo.png"},{"name":"x","type":"integer","required":false,"description":"Left edge px.","on_invalid":"reject","default":0,"example":0,"minimum":0},{"name":"y","type":"integer","required":false,"description":"Top edge px.","on_invalid":"reject","default":0,"example":0,"minimum":0},{"name":"width","type":"integer","required":true,"description":"Crop width px.","on_invalid":"reject","example":16,"minimum":1},{"name":"height","type":"integer","required":true,"description":"Crop height px.","on_invalid":"reject","example":16,"minimum":1}],"returns":"from_size, box, files[]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg==","width":8,"height":8}},{"name":"doc_to_markdown","description":"Document → clean markdown for RAG/agents. PDF uses a layout engine (headings from font sizes, real pipe-tables, reading order); docx/pptx/xlsx/html via MarkItDown. mode=fast trades structure for speed. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0ndXRmLTgnPjx0aXRsZT5Hb2xkZW48L3RpdGxlPjwvaGVhZD48Ym9keT48aDE+UmVlZkFQSSBnb2xkZW4gdGVzdCBwYWdlPC9oMT48cD5BIHRpbnkgZG9jdW1lbnQgZm9yIGNhbmFyeSBydW5zLjwvcD48dGFibGU+PHRyPjx0aD5lbmdpbmU8L3RoPjx0aD50aWVyPC90aD48L3RyPjx0cj48dGQ+ZmlsZS1jb252ZXJ0PC90ZD48dGQ+dXRpbGl0aWVzPC90ZD48L3RyPjx0cj48dGQ+d2ViLWV4dHJhY3Q8L3RkPjx0ZD5kYXRhPC90ZD48L3RyPjwvdGFibGU+PC9ib2R5PjwvaHRtbD4="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://example.com/"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.html"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"pages","type":"string","required":false,"description":"Page selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.","on_invalid":"ignore","example":"1-3,5"},{"name":"mode","type":"enum","required":false,"description":"PDF only: layout = headings+tables; fast = plain text spine.","on_invalid":"reject","allowed_values":[{"value":"layout","label":"Layout-aware (PDF)"},{"value":"fast","label":"Fast/plain"}],"default":"layout","example":"layout"}],"returns":"markdown_preview (first 2000 chars), characters, page_count, tables, likely_scanned, files[] (document.md — full markdown)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":4},"example_params":{"file_b64":"PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0ndXRmLTgnPjx0aXRsZT5Hb2xkZW48L3RpdGxlPjwvaGVhZD48Ym9keT48aDE+UmVlZkFQSSBnb2xkZW4gdGVzdCBwYWdlPC9oMT48cD5BIHRpbnkgZG9jdW1lbnQgZm9yIGNhbmFyeSBydW5zLjwvcD48dGFibGU+PHRyPjx0aD5lbmdpbmU8L3RoPjx0aD50aWVyPC90aD48L3RyPjx0cj48dGQ+ZmlsZS1jb252ZXJ0PC90ZD48dGQ+dXRpbGl0aWVzPC90ZD48L3RyPjx0cj48dGQ+d2ViLWV4dHJhY3Q8L3RkPjx0ZD5kYXRhPC90ZD48L3RyPjwvdGFibGU+PC9ib2R5PjwvaHRtbD4="}},{"name":"extract_tables","description":"Pull every table out of a PDF / xlsx / docx / html as JSON rows (+optional CSV files). Max 50 tables.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0ndXRmLTgnPjx0aXRsZT5Hb2xkZW48L3RpdGxlPjwvaGVhZD48Ym9keT48aDE+UmVlZkFQSSBnb2xkZW4gdGVzdCBwYWdlPC9oMT48cD5BIHRpbnkgZG9jdW1lbnQgZm9yIGNhbmFyeSBydW5zLjwvcD48dGFibGU+PHRyPjx0aD5lbmdpbmU8L3RoPjx0aD50aWVyPC90aD48L3RyPjx0cj48dGQ+ZmlsZS1jb252ZXJ0PC90ZD48dGQ+dXRpbGl0aWVzPC90ZD48L3RyPjx0cj48dGQ+d2ViLWV4dHJhY3Q8L3RkPjx0ZD5kYXRhPC90ZD48L3RyPjwvdGFibGU+PC9ib2R5PjwvaHRtbD4="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://example.com/"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.html"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"pages","type":"string","required":false,"description":"Page selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.","on_invalid":"ignore","example":"1-3,5"},{"name":"as_csv","type":"boolean","required":false,"description":"Also return each table as a CSV file.","on_invalid":"ignore","default":false,"example":false}],"returns":"table_count, tables[] (source, rows, columns, data[][]), stop_reason, files[] (table_N.csv when as_csv)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"file_b64":"PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0ndXRmLTgnPjx0aXRsZT5Hb2xkZW48L3RpdGxlPjwvaGVhZD48Ym9keT48aDE+UmVlZkFQSSBnb2xkZW4gdGVzdCBwYWdlPC9oMT48cD5BIHRpbnkgZG9jdW1lbnQgZm9yIGNhbmFyeSBydW5zLjwvcD48dGFibGU+PHRyPjx0aD5lbmdpbmU8L3RoPjx0aD50aWVyPC90aD48L3RyPjx0cj48dGQ+ZmlsZS1jb252ZXJ0PC90ZD48dGQ+dXRpbGl0aWVzPC90ZD48L3RyPjx0cj48dGQ+d2ViLWV4dHJhY3Q8L3RkPjx0ZD5kYXRhPC90ZD48L3RyPjwvdGFibGU+PC9ib2R5PjwvaHRtbD4="}},{"name":"ocr_image","description":"OCR an image → text + word count + confidence (tesseract 5, printed text; languages: eng/deu/fra/spa/tur, combinable).","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"photo.png"},{"name":"language","type":"array","required":false,"description":"OCR language(s): eng, deu, fra, spa, tur — array or comma-joined.","on_invalid":"ignore","default":"eng","example":["eng","deu"],"aliases":["lang"]}],"returns":"text, words, mean_confidence (0-100), language, width, height, note","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"file_b64":"iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAIAAABvFaqvAAAAH0lEQVR42mN4l+VFFcQwatCoQaMGjRo0atCoQQNvEAB6hKyuf+L5NQAAAABJRU5ErkJggg=="}},{"name":"ocr_pdf","description":"OCR a scanned PDF: output=text → per-page text+confidence; output=searchable_pdf → image+invisible-text-layer PDF. OCR-light: max 10 pages per call (use 'pages' to window). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg=="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://pdfobject.com/pdf/sample.pdf"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.pdf"},{"name":"password","type":"string","required":false,"description":"Password for encrypted PDFs. Without it an encrypted input fails cleanly with INVALID_PARAM (we never crack/bypass).","on_invalid":"ignore","example":"x"},{"name":"pages","type":"string","required":false,"description":"Page selection, 1-based: '1-3,5,9-' (open ranges OK). Default: all pages.","on_invalid":"ignore","example":"1-3,5"},{"name":"language","type":"array","required":false,"description":"OCR language(s): eng, deu, fra, spa, tur.","on_invalid":"ignore","default":"eng","example":"eng","aliases":["lang"]},{"name":"output","type":"enum","required":false,"description":"Result kind.","on_invalid":"reject","allowed_values":[{"value":"text","label":"Plain text"},{"value":"searchable_pdf","label":"Searchable PDF"}],"default":"text","example":"text"}],"returns":"page_count, pages_ocr, language, stop_reason; text mode: pages[] (page, text, words, mean_confidence), text, mean_confidence; searchable_pdf mode: files[] (searchable.pdf)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"file_b64":"JVBERi0xLjQKMSAwIG9iajw8L1R5cGUvQ2F0YWxvZy9QYWdlcyAyIDAgUj4+ZW5kb2JqCjIgMCBvYmo8PC9UeXBlL1BhZ2VzL0tpZHNbMyAwIFJdL0NvdW50IDE+PmVuZG9iagozIDAgb2JqPDwvVHlwZS9QYWdlL1BhcmVudCAyIDAgUi9NZWRpYUJveFswIDAgNjEyIDc5Ml0vQ29udGVudHMgNCAwIFIvUmVzb3VyY2VzPDwvRm9udDw8L0YxIDUgMCBSPj4+Pj4+ZW5kb2JqCjQgMCBvYmo8PC9MZW5ndGggNTQ+PnN0cmVhbQpCVCAvRjEgMTggVGYgNzIgNzIwIFRkIChSZWVmQVBJIGdvbGRlbiB0ZXN0IFBERikgVGogRVQKZW5kc3RyZWFtZW5kb2JqCjUgMCBvYmo8PC9UeXBlL0ZvbnQvU3VidHlwZS9UeXBlMS9CYXNlRm9udC9IZWx2ZXRpY2E+PmVuZG9iagp4cmVmCjAgNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwMDkgMDAwMDAgbiAKMDAwMDAwMDA1MiAwMDAwMCBuIAowMDAwMDAwMTAxIDAwMDAwIG4gCjAwMDAwMDAyMTEgMDAwMDAgbiAKMDAwMDAwMDMxMCAwMDAwMCBuIAp0cmFpbGVyPDwvU2l6ZSA2L1Jvb3QgMSAwIFI+PgpzdGFydHhyZWYKMzcxCiUlRU9GCg==","pages":"1"}},{"name":"office_convert","description":"Office → PDF (and html/txt; spreadsheets also → csv; text docs also → docx) via LibreOffice headless — docx/doc/odt/rtf/pptx/ppt/odp/xlsx/xls/ods/html/markdown/txt/csv in. Fonts: Noto (CJK/RTL) + Liberation (Arial/Times metrics). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0ndXRmLTgnPjx0aXRsZT5Hb2xkZW48L3RpdGxlPjwvaGVhZD48Ym9keT48aDE+UmVlZkFQSSBnb2xkZW4gdGVzdCBwYWdlPC9oMT48cD5BIHRpbnkgZG9jdW1lbnQgZm9yIGNhbmFyeSBydW5zLjwvcD48dGFibGU+PHRyPjx0aD5lbmdpbmU8L3RoPjx0aD50aWVyPC90aD48L3RyPjx0cj48dGQ+ZmlsZS1jb252ZXJ0PC90ZD48dGQ+dXRpbGl0aWVzPC90ZD48L3RyPjx0cj48dGQ+d2ViLWV4dHJhY3Q8L3RkPjx0ZD5kYXRhPC90ZD48L3RyPjwvdGFibGU+PC9ib2R5PjwvaHRtbD4="},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://example.com/"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"report.html"},{"name":"to","type":"enum","required":false,"description":"Target: pdf (default) | html | txt | csv (spreadsheets only) | docx (text documents only).","on_invalid":"reject","allowed_values":[{"value":"pdf","label":"PDF"},{"value":"html","label":"HTML"},{"value":"txt","label":"TXT"},{"value":"csv","label":"CSV"},{"value":"docx","label":"DOCX"}],"default":"pdf","example":"pdf"},{"name":"from","type":"enum","required":false,"description":"Set from=md when sending markdown (it has no magic bytes; .md filename also works).","on_invalid":"ignore","allowed_values":[{"value":"md","label":"Markdown"}],"default":""}],"returns":"from, to, engine, files, fidelity_note, files[] (converted.pdf …)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"file_b64":"PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0ndXRmLTgnPjx0aXRsZT5Hb2xkZW48L3RpdGxlPjwvaGVhZD48Ym9keT48aDE+UmVlZkFQSSBnb2xkZW4gdGVzdCBwYWdlPC9oMT48cD5BIHRpbnkgZG9jdW1lbnQgZm9yIGNhbmFyeSBydW5zLjwvcD48dGFibGU+PHRyPjx0aD5lbmdpbmU8L3RoPjx0aD50aWVyPC90aD48L3RyPjx0cj48dGQ+ZmlsZS1jb252ZXJ0PC90ZD48dGQ+dXRpbGl0aWVzPC90ZD48L3RyPjx0cj48dGQ+d2ViLWV4dHJhY3Q8L3RkPjx0ZD5kYXRhPC90ZD48L3RyPjwvdGFibGU+PC9ib2R5PjwvaHRtbD4=","to":"pdf"}},{"name":"audio_extract","description":"Extract the audio track from a video (mp4/webm/mkv/avi) → mp3 (default) / m4a / wav / flac / ogg / opus. Stream-copies losslessly when the codec already matches the target. NOT a video transcoder (phase-2). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore"},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://download.samplelib.com/mp4/sample-5s.mp4"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"clip.mp4"},{"name":"to","type":"enum","required":false,"description":"Audio output format.","on_invalid":"reject","allowed_values":[{"value":"mp3","label":"MP3"},{"value":"m4a","label":"M4A"},{"value":"wav","label":"WAV"},{"value":"flac","label":"FLAC"},{"value":"ogg","label":"OGG"},{"value":"opus","label":"OPUS"}],"default":"mp3","example":"mp3"},{"name":"bitrate","type":"enum","required":false,"description":"Target bitrate (forces transcode; default 192k/encoder default).","on_invalid":"reject","allowed_values":[{"value":"64k","label":"64k"},{"value":"96k","label":"96k"},{"value":"128k","label":"128k"},{"value":"160k","label":"160k"},{"value":"192k","label":"192k"},{"value":"256k","label":"256k"},{"value":"320k","label":"320k"}],"default":"","example":"192k"}],"returns":"from, to, method (stream-copy|transcode:enc), source_codec, duration_s, sample_rate, channels, files[] (audio.mp3)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"audio_convert","description":"Convert between audio formats (mp3/wav/flac/ogg/m4a in → mp3/m4a/wav/flac/ogg/opus out; ffmpeg LGPL build). Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":["to"],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"UklGRsQPAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YaAPAAAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDw"},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://download.samplelib.com/mp4/sample-5s.mp4"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"clip.wav"},{"name":"to","type":"enum","required":true,"description":"Target format: mp3, m4a, wav, flac, ogg, opus.","on_invalid":"reject","allowed_values":[{"value":"mp3","label":"MP3"},{"value":"m4a","label":"M4A"},{"value":"wav","label":"WAV"},{"value":"flac","label":"FLAC"},{"value":"ogg","label":"OGG"},{"value":"opus","label":"OPUS"}],"example":"mp3"},{"name":"bitrate","type":"enum","required":false,"description":"Target bitrate.","on_invalid":"reject","allowed_values":[{"value":"64k","label":"64k"},{"value":"96k","label":"96k"},{"value":"128k","label":"128k"},{"value":"160k","label":"160k"},{"value":"192k","label":"192k"},{"value":"256k","label":"256k"},{"value":"320k","label":"320k"}],"default":"","example":"192k"}],"returns":"from, to, method, source_codec, duration_s, files[]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"file_b64":"UklGRsQPAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YaAPAAAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDw","to":"mp3"}},{"name":"media_probe","description":"ffprobe metadata for any audio/video file: container, duration, bitrate, per-stream codec/sample-rate/resolution, curated tags.","required_params":[],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"UklGRsQPAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YaAPAAAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDw"},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://download.samplelib.com/mp4/sample-5s.mp4"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"clip.wav"}],"returns":"container, duration_s, bit_rate, size_bytes, stream_count, streams[] (type, codec, sample_rate/width/height…), tags{}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"UklGRsQPAABXQVZFZm10IBAAAAABAAEAQB8AAIA+AAACABAAZGF0YaAPAAAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDwAADgD+EdWCgLLkwuEyn/HkEReAGE8UbjbdhB0n/RPNbq32PtD/0TDY0bxCZmLaouaSolIfUTaQRY9KflFNr90jjR+9TV3bnqIfo5Ch0ZCSWULNoulSspI5UWVQc49yTo4tvm0yDR5tPi2yToOPdVB5UWKSOVK9oulCwJJR0ZOQoh+rnq1d371DjR/dIU2qflWPRpBPUTJSFpKqouZi3EJo0bEw0P/WPt6t881n/RQdJt2EbjhPF4AUER/x4TKUwuCy5YKOEd4A8AACDwH+Ko1/XRtNHt1gHhv+6I/nwOuhyTJ78tgS7EKRYgnRLxAu3yc+Q82ZrSVtGX1dveC+yX+6gLWRrsJQMtyC4FKysiRxXfBcf14+b32mzTJtFr1Nfca+mr+MgI3BceJBos4C4aLB4k3BfICKv4a+nX3GvUJtFs0/fa4+bH9d8FRxUrIgUryC4DLewlWRqoC5f7C+zb3pfVVtGa0jzZc+Tt8vECnRIWIMQpgS6/LZMnuhx8Doj+v+4B4e3WtNH10ajXH+Ig8AAA4A/hHVgoCy5MLhMp/x5BEXgBhPFG423YQdJ/0TzW6t9j7Q/9Ew2NG8QmZi2qLmkqJSH1E2kEWPSn5RTa/dI40fvU1d256iH6OQodGQkllCzaLpUrKSOVFlUHOPck6OLb5tMg0ebT4tsk6Dj3VQeVFikjlSvaLpQsCSUdGTkKIfq56tXd+9Q40f3SFNqn5Vj0aQT1EyUhaSqqLmYtxCaNGxMND/1j7erfPNZ/0UHSbdhG44TxeAFBEf8eEylMLgsuWCjhHeAPAAAg8B/iqNf10bTR7dYB4b/uiP58Drockye/LYEuxCkWIJ0S8QLt8nPkPNma0lbRl9Xb3gvsl/uoC1ka7CUDLcguBSsrIkcV3wXH9ePm99ps0ybRa9TX3Gvpq/jICNwXHiQaLOAuGiweJNwXyAir+Gvp19xr1CbRbNP32uPmx/XfBUcVKyIFK8guAy3sJVkaqAuX+wvs296X1VbRmtI82XPk7fLxAp0SFiDEKYEuvy2TJ7ocfA6I/r/uAeHt1rTR9dGo1x/iIPAAAOAP4R1YKAsuTC4TKf8eQRF4AYTxRuNt2EHSf9E81urfY+0P/RMNjRvEJmYtqi5pKiUh9RNpBFj0p+UU2v3SONH71NXdueoh+jkKHRkJJZQs2i6VKykjlRZVBzj3JOji2+bTINHm0+LbJOg491UHlRYpI5Ur2i6ULAklHRk5CiH6uerV3fvUONH90hTap+VY9GkE9RMlIWkqqi5mLcQmjRsTDQ/9Y+3q3zzWf9FB0m3YRuOE8XgBQRH/HhMpTC4LLlgo4R3gDwAAIPAf4qjX9dG00e3WAeG/7oj+fA66HJMnvy2BLsQpFiCdEvEC7fJz5DzZmtJW0ZfV294L7Jf7qAtZGuwlAy3ILgUrKyJHFd8Fx/Xj5vfabNMm0WvU19xr6av4yAjcFx4kGizgLhosHiTcF8gIq/hr6dfca9Qm0WzT99rj5sf13wVHFSsiBSvILgMt7CVZGqgLl/sL7Nvel9VW0ZrSPNlz5O3y8QKdEhYgxCmBLr8tkye6HHwOiP6/7gHh7da00fXRqNcf4iDw"}},{"name":"data_convert","description":"Deterministic data-format conversion: CSV ↔ JSON ↔ XML ↔ YAML ↔ Excel(xlsx) (any direction; tabular targets need tabular-shaped input — clean error otherwise). 200k-row cap. Output delivery: each produced file ≤10MB comes inline as base64 (files[].file_b64); 10-50MB comes as a one-time download token (files[].download_path, 30min TTL); >50MB total is rejected.","required_params":["to"],"optional_params":[],"params":[{"name":"file_b64","type":"string","required":false,"description":"The input file as base64 (data-URI prefix tolerated). Max 25MB. Provide file_b64 OR file_url. Multipart upload also works: POST the file as the 'file' form field.","on_invalid":"ignore","example":"bmFtZSxjcmVkaXRzLGNhdGVnb3J5CnBkZl9tZXJnZSwxLHBkZgppbWFnZV9vcHRpbWl6ZSwyLGltYWdlCm9jcl9wZGYsMixvY3IK"},{"name":"file_url","type":"string","required":false,"description":"https URL of the input file — fetched server-side through the private/internal/metadata addresses are SSRF-blocked. Max 25MB.","on_invalid":"ignore","example":"https://raw.githubusercontent.com/datasciencedojo/datasets/master/titanic.csv"},{"name":"filename","type":"string","required":false,"description":"Optional original filename — used only as a hint (e.g. .md detection); the real format is always sniffed from magic bytes.","on_invalid":"ignore","example":"data.csv"},{"name":"to","type":"enum","required":true,"description":"Target format: csv, json, xml, yaml, xlsx.","on_invalid":"reject","allowed_values":[{"value":"csv","label":"CSV"},{"value":"json","label":"JSON"},{"value":"xml","label":"XML"},{"value":"yaml","label":"YAML"},{"value":"xlsx","label":"XLSX"}],"example":"json"},{"name":"from","type":"enum","required":false,"description":"Optional source override for ambiguous text (e.g. YAML without a leading ---); binary formats are always sniffed.","on_invalid":"reject","allowed_values":[{"value":"csv","label":"CSV"},{"value":"json","label":"JSON"},{"value":"xml","label":"XML"},{"value":"yaml","label":"YAML"},{"value":"xlsx","label":"Excel"}],"default":""},{"name":"delimiter","type":"string","required":false,"description":"CSV delimiter override (default: sniffed).","on_invalid":"ignore","example":","},{"name":"sheet","type":"string","required":false,"description":"Excel source: sheet name (default: first).","on_invalid":"ignore"}],"returns":"from, to, rows, files[] (converted.json …)","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"file_b64":"bmFtZSxjcmVkaXRzLGNhdGVnb3J5CnBkZl9tZXJnZSwxLHBkZgppbWFnZV9vcHRpbWl6ZSwyLGltYWdlCm9jcl9wZGYsMixvY3IK","to":"json"}},{"name":"formats","description":"Capability matrix: every action with its accepted input formats, targets and caps — machine-readable (the Zamzar /formats equivalent).","required_params":[],"optional_params":[],"params":[],"returns":"actions{action: {accepts[], targets[], caps{}}}, input_policy, output_policy","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"finance","category":{"id":"finance","title":"Finance & Data"},"title":"Finance API — real-time quotes, charts, fundamentals, analyst ratings, screener, options, technicals & earnings/IPO/economic calendars (incl. a market-wide earnings calendar) on Yahoo Finance data + FRED macroeconomic series","version":"1.0.3","pii_redact_default":false,"mint_reusable":null,"base_path":"/finance/v1","spec_available":true,"actions":[{"name":"quote","description":"single or multi-symbol quote","required_params":["symbol"],"optional_params":["symbols"],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol, or use `symbols` for several (e.g. 'AAPL'). crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC'.","on_invalid":"reject","example":"AAPL","aliases":["symbols"]},{"name":"symbols","type":"string","required":false,"description":"Multiple symbols (array or comma-separated) for a batch quote.","on_invalid":"reject","example":"AAPL,MSFT"}],"returns":"quotes[] — symbol, price, change, changePercent, currency, marketCap, volume, exchange, quoteType, marketState","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"chart","description":"OHLCV chart data","required_params":["symbol"],"optional_params":["range","interval"],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"range","type":"enum","required":false,"description":"History window. Common Yahoo ranges shown; other Yahoo range tokens are also accepted. Pair with interval.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"},{"value":"6mo","label":"6 months"},{"value":"1y","label":"1 year"},{"value":"2y","label":"2 years"},{"value":"5y","label":"5 years"},{"value":"10y","label":"10 years"},{"value":"ytd","label":"Year to date"},{"value":"max","label":"Max available"}],"default":"1mo","example":"6mo"},{"name":"interval","type":"enum","required":false,"description":"Candle granularity. Intraday intervals only cover short ranges (Yahoo limitation); daily+ cover long ranges.","on_invalid":"ignore","allowed_values":[{"value":"1m","label":"1 minute"},{"value":"2m","label":"2 min"},{"value":"5m","label":"5 min"},{"value":"15m","label":"15 min"},{"value":"30m","label":"30 min"},{"value":"60m","label":"60 min"},{"value":"90m","label":"90 min"},{"value":"1h","label":"1 hour"},{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1wk","label":"1 week"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"}],"default":"1d","example":"1d"}],"returns":"symbol, currency, range, interval, points[]{timestamp,open,high,low,close,volume}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"search","description":"symbol search","required_params":["query"],"optional_params":["quotesCount"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (company name or symbol).","on_invalid":"reject","example":"apple","aliases":["q"]},{"name":"quotesCount","type":"integer","required":false,"description":"How many symbol matches to return.","on_invalid":"ignore","default":10,"example":10,"minimum":1}],"returns":"query, quotes[]{symbol,name,exchange,quoteType,score}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"apple"}},{"name":"fundamentals","description":"quoteSummary modules","required_params":["symbol"],"optional_params":["modules"],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"modules","type":"string","required":false,"description":"Comma-separated Yahoo quoteSummary modules (e.g. 'price,financialData,earnings'). Omit for a broad default module set.","on_invalid":"reject","example":"price,summaryDetail,financialData"}],"returns":"symbol, modules{<module>:{...}} (Yahoo quoteSummary)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"analyst","description":"recommendations, upgrades/downgrades, price targets","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{recommendationTrend,upgradeDowngradeHistory,financialData}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"holders","description":"insider/institution/fund ownership and holder activity","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{insider/institution/fund ownership + holder activity}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"news","description":"Yahoo Finance news search","required_params":["query"],"optional_params":["count","symbol"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword OR a ticker symbol to pull news for (either works).","on_invalid":"reject","example":"AAPL","aliases":["q","symbol"]},{"name":"symbol","type":"string","required":false,"description":"Ticker symbol to fetch news for (alternative to query).","on_invalid":"reject","example":"AAPL"},{"name":"count","type":"integer","required":false,"description":"Maximum number of results to return.","on_invalid":"ignore","default":10,"example":10,"minimum":1}],"returns":"query, news[]{uuid,title,publisher,link,providerPublishTime,type,thumbnail}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"apple"}},{"name":"options","description":"option chain","required_params":["symbol"],"optional_params":["date"],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"date","type":"integer","required":false,"description":"Optional option-chain expiration as a Unix timestamp; omit for the nearest expiry.","on_invalid":"ignore","example":1718323200}],"returns":"symbol, expirationDates[], strikes[], calls[], puts[] (option contracts)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"calendar","description":"earnings/calendar quoteSummary modules","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{calendarEvents,earnings}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"events","description":"dividends and splits from chart events","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, dividends[], splits[], capitalGains[]","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"screener_predefined","description":"Yahoo saved screeners","required_params":[],"optional_params":["scrIds","count","start"],"params":[{"name":"scrIds","type":"enum","required":false,"description":"A Yahoo predefined screener id. Common ones shown; any valid Yahoo saved-screener id is accepted.","on_invalid":"ignore","allowed_values":[{"value":"most_actives","label":"Most actives"},{"value":"day_gainers","label":"Day gainers"},{"value":"day_losers","label":"Day losers"},{"value":"growth_technology_stocks","label":"Growth tech stocks"},{"value":"most_shorted_stocks","label":"Most shorted"},{"value":"undervalued_growth_stocks","label":"Undervalued growth"},{"value":"aggressive_small_caps","label":"Aggressive small caps"},{"value":"small_cap_gainers","label":"Small-cap gainers"}],"default":"day_gainers","example":"most_actives","aliases":["scr_ids"]},{"name":"count","type":"integer","required":false,"description":"Number of screener rows to return.","on_invalid":"ignore","default":25,"example":5,"minimum":1},{"name":"start","type":"integer","required":false,"description":"Result offset for pagination.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"scrIds, quotes[] (the saved-screener result rows)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"screener","description":"Yahoo custom screener POST","required_params":[],"optional_params":["criteria","size","offset","sortField","sortType"],"params":[{"name":"criteria","type":"object","required":false,"description":"Yahoo custom-screener query object ({operator, operands:[...]}); omit for an unfiltered screen.","on_invalid":"ignore","aliases":["query"]},{"name":"size","type":"integer","required":false,"description":"Number of screener results.","on_invalid":"ignore","default":25,"example":5,"minimum":1,"aliases":["count"]},{"name":"offset","type":"integer","required":false,"description":"Result offset for screener pagination.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"sortField","type":"string","required":false,"description":"Screener field to sort by (e.g. intradaymarketcap, percentchange, dayvolume).","on_invalid":"ignore","default":"intradaymarketcap","example":"intradaymarketcap"},{"name":"sortType","type":"enum","required":false,"description":"Sort direction for the screener.","on_invalid":"ignore","allowed_values":[{"value":"DESC","label":"Descending"},{"value":"ASC","label":"Ascending"}],"default":"DESC","example":"DESC"},{"name":"quoteType","type":"enum","required":false,"description":"Instrument type the screener targets.","on_invalid":"ignore","allowed_values":[{"value":"EQUITY","label":"Stocks"},{"value":"ETF","label":"ETFs"},{"value":"MUTUALFUND","label":"Mutual funds"},{"value":"INDEX","label":"Indices"},{"value":"CURRENCY","label":"FX"},{"value":"CRYPTOCURRENCY","label":"Crypto"},{"value":"FUTURE","label":"Futures"}],"default":"EQUITY","example":"EQUITY"}],"returns":"quotes[] (custom-screener matches), request{size,offset}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"market_summary","description":"market summary indices","required_params":[],"optional_params":["region"],"params":[{"name":"region","type":"string","required":false,"description":"Yahoo market region code (e.g. US, GB, DE, FR, IN, JP).","on_invalid":"ignore","default":"US","example":"US"},{"name":"lang","type":"string","required":false,"description":"Yahoo response language tag (e.g. en-US).","on_invalid":"ignore","default":"en-US","example":"en-US"}],"returns":"items[] — market summary indices for the region","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"trending","description":"trending symbols","required_params":[],"optional_params":["region","count"],"params":[{"name":"region","type":"string","required":false,"description":"Yahoo market region code (e.g. US, GB, DE, FR, IN, JP).","on_invalid":"ignore","default":"US","example":"US"},{"name":"count","type":"integer","required":false,"description":"Maximum number of results to return.","on_invalid":"ignore","default":10,"example":10,"minimum":1}],"returns":"region, quotes[] — trending symbols","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"lookup","description":"Yahoo symbol universe lookup","required_params":["query"],"optional_params":["count"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (company name or symbol).","on_invalid":"reject","example":"apple","aliases":["q"]},{"name":"count","type":"integer","required":false,"description":"Maximum number of results to return.","on_invalid":"ignore","default":20,"example":20,"minimum":1},{"name":"type","type":"enum","required":false,"description":"Restrict the symbol lookup to one quote type. Omit for all types.","on_invalid":"ignore","allowed_values":[{"value":"equity","label":"Stocks"},{"value":"etf","label":"ETFs"},{"value":"mutualfund","label":"Mutual funds"},{"value":"index","label":"Indices"},{"value":"currency","label":"FX"},{"value":"cryptocurrency","label":"Crypto"},{"value":"future","label":"Futures"}],"example":"equity","aliases":["quoteType"]}],"returns":"query, type, documents[] — matching symbols","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"apple"}},{"name":"technicals","description":"local technical indicators from chart OHLCV","required_params":["symbol"],"optional_params":["range","interval","periods"],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"range","type":"enum","required":false,"description":"History window. Common Yahoo ranges shown; other Yahoo range tokens are also accepted. Pair with interval.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"},{"value":"6mo","label":"6 months"},{"value":"1y","label":"1 year"},{"value":"2y","label":"2 years"},{"value":"5y","label":"5 years"},{"value":"10y","label":"10 years"},{"value":"ytd","label":"Year to date"},{"value":"max","label":"Max available"}],"default":"1y","example":"6mo"},{"name":"interval","type":"enum","required":false,"description":"Candle granularity. Intraday intervals only cover short ranges (Yahoo limitation); daily+ cover long ranges.","on_invalid":"ignore","allowed_values":[{"value":"1m","label":"1 minute"},{"value":"2m","label":"2 min"},{"value":"5m","label":"5 min"},{"value":"15m","label":"15 min"},{"value":"30m","label":"30 min"},{"value":"60m","label":"60 min"},{"value":"90m","label":"90 min"},{"value":"1h","label":"1 hour"},{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1wk","label":"1 week"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"}],"default":"1d","example":"1d"},{"name":"periods","type":"string","required":false,"description":"Comma-separated SMA/EMA lookback periods to compute (e.g. '20,50'). RSI(14)/MACD/Bollinger/ATR/ADX are always included.","on_invalid":"ignore","default":"20,50","example":"20,50"}],"returns":"symbol, points[], indicators{sma/ema/rsi14/macd/bollinger20/atr14/adx14/...}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL","range":"6mo","interval":"1d"}},{"name":"economic","description":"FRED economic series via official API","required_params":["series","fred_api_key"],"optional_params":["limit","sort_order"],"params":[{"name":"series","type":"string","required":true,"description":"FRED economic series id (e.g. GDP, UNRATE, CPIAUCSL).","on_invalid":"reject","example":"GDP","aliases":["series_id"]},{"name":"fred_api_key","type":"string","required":true,"description":"Your own FRED API key (St. Louis Fed) — required; this surface is key-gated and not proxied by the gateway.","on_invalid":"reject","example":"<your-fred-key>","aliases":["api_key"]},{"name":"limit","type":"integer","required":false,"description":"Max FRED observations to return.","on_invalid":"ignore","default":100,"example":100,"minimum":1},{"name":"sort_order","type":"enum","required":false,"description":"Order of the returned FRED observations.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Newest first"},{"value":"asc","label":"Oldest first"}],"default":"desc","example":"desc"}],"returns":"series, observations[]{date,value} (FRED)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"v1/market/tickers","description":"public NASDAQ/NYSE/AMEX ticker universe","required_params":[],"optional_params":["limit"],"params":[{"name":"limit","type":"integer","required":false,"description":"Max tickers to return (0/omit = full universe).","on_invalid":"ignore","default":0,"example":50,"minimum":1}],"returns":"tickers[]{symbol,name,exchange,etf,source} — NASDAQ/NYSE/AMEX universe","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"limit":10}},{"name":"v1/search","description":"RapidAPI-compatible alias for search","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (company name or symbol).","on_invalid":"reject","example":"apple","aliases":["q"]},{"name":"quotesCount","type":"integer","required":false,"description":"How many symbol matches to return.","on_invalid":"ignore","default":10,"example":10,"minimum":1}],"returns":"query, quotes[]{symbol,name,exchange,quoteType,score}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"apple"}},{"name":"v1/market/quotes","description":"RapidAPI-compatible alias for quote","required_params":["symbol"],"optional_params":["symbols"],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol, or use `symbols` for several (e.g. 'AAPL'). crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC'.","on_invalid":"reject","example":"AAPL","aliases":["symbols"]},{"name":"symbols","type":"string","required":false,"description":"Multiple symbols (array or comma-separated) for a batch quote.","on_invalid":"reject","example":"AAPL,MSFT"}],"returns":"quotes[] — symbol, price, change, changePercent, currency, marketCap, volume, exchange, quoteType, marketState","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbols":["AAPL","MSFT"],"symbol":"AAPL"}},{"name":"v1/stock/history","description":"RapidAPI-compatible alias for chart","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"range","type":"enum","required":false,"description":"History window. Common Yahoo ranges shown; other Yahoo range tokens are also accepted. Pair with interval.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"},{"value":"6mo","label":"6 months"},{"value":"1y","label":"1 year"},{"value":"2y","label":"2 years"},{"value":"5y","label":"5 years"},{"value":"10y","label":"10 years"},{"value":"ytd","label":"Year to date"},{"value":"max","label":"Max available"}],"default":"1mo","example":"6mo"},{"name":"interval","type":"enum","required":false,"description":"Candle granularity. Intraday intervals only cover short ranges (Yahoo limitation); daily+ cover long ranges.","on_invalid":"ignore","allowed_values":[{"value":"1m","label":"1 minute"},{"value":"2m","label":"2 min"},{"value":"5m","label":"5 min"},{"value":"15m","label":"15 min"},{"value":"30m","label":"30 min"},{"value":"60m","label":"60 min"},{"value":"90m","label":"90 min"},{"value":"1h","label":"1 hour"},{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1wk","label":"1 week"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"}],"default":"1d","example":"1d"}],"returns":"symbol, currency, range, interval, points[]{timestamp,open,high,low,close,volume}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL","range":"1mo","interval":"1d"}},{"name":"v2/stock/history","description":"RapidAPI-compatible alias for chart","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"range","type":"enum","required":false,"description":"History window. Common Yahoo ranges shown; other Yahoo range tokens are also accepted. Pair with interval.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"},{"value":"6mo","label":"6 months"},{"value":"1y","label":"1 year"},{"value":"2y","label":"2 years"},{"value":"5y","label":"5 years"},{"value":"10y","label":"10 years"},{"value":"ytd","label":"Year to date"},{"value":"max","label":"Max available"}],"default":"1mo","example":"6mo"},{"name":"interval","type":"enum","required":false,"description":"Candle granularity. Intraday intervals only cover short ranges (Yahoo limitation); daily+ cover long ranges.","on_invalid":"ignore","allowed_values":[{"value":"1m","label":"1 minute"},{"value":"2m","label":"2 min"},{"value":"5m","label":"5 min"},{"value":"15m","label":"15 min"},{"value":"30m","label":"30 min"},{"value":"60m","label":"60 min"},{"value":"90m","label":"90 min"},{"value":"1h","label":"1 hour"},{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1wk","label":"1 week"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"}],"default":"1d","example":"1d"}],"returns":"symbol, currency, range, interval, points[]{timestamp,open,high,low,close,volume}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL","range":"1mo","interval":"1d"}},{"name":"v1/market/screener","description":"RapidAPI-compatible alias for screener","required_params":[],"optional_params":["criteria","scrIds"],"params":[{"name":"scrIds","type":"enum","required":false,"description":"A Yahoo predefined screener id. Common ones shown; any valid Yahoo saved-screener id is accepted.","on_invalid":"ignore","allowed_values":[{"value":"most_actives","label":"Most actives"},{"value":"day_gainers","label":"Day gainers"},{"value":"day_losers","label":"Day losers"},{"value":"growth_technology_stocks","label":"Growth tech stocks"},{"value":"most_shorted_stocks","label":"Most shorted"},{"value":"undervalued_growth_stocks","label":"Undervalued growth"},{"value":"aggressive_small_caps","label":"Aggressive small caps"},{"value":"small_cap_gainers","label":"Small-cap gainers"}],"default":"day_gainers","example":"most_actives","aliases":["scr_ids"]},{"name":"criteria","type":"object","required":false,"description":"Yahoo custom-screener query object ({operator, operands:[...]}); omit for an unfiltered screen.","on_invalid":"ignore","aliases":["query"]},{"name":"size","type":"integer","required":false,"description":"Number of screener results.","on_invalid":"ignore","default":25,"example":5,"minimum":1,"aliases":["count"]},{"name":"offset","type":"integer","required":false,"description":"Result offset for screener pagination.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"sortField","type":"string","required":false,"description":"Screener field to sort by (e.g. intradaymarketcap, percentchange, dayvolume).","on_invalid":"ignore","default":"intradaymarketcap","example":"intradaymarketcap"},{"name":"sortType","type":"enum","required":false,"description":"Sort direction for the screener.","on_invalid":"ignore","allowed_values":[{"value":"DESC","label":"Descending"},{"value":"ASC","label":"Ascending"}],"default":"DESC","example":"DESC"},{"name":"quoteType","type":"enum","required":false,"description":"Instrument type the screener targets.","on_invalid":"ignore","allowed_values":[{"value":"EQUITY","label":"Stocks"},{"value":"ETF","label":"ETFs"},{"value":"MUTUALFUND","label":"Mutual funds"},{"value":"INDEX","label":"Indices"},{"value":"CURRENCY","label":"FX"},{"value":"CRYPTOCURRENCY","label":"Crypto"},{"value":"FUTURE","label":"Futures"}],"default":"EQUITY","example":"EQUITY"}],"returns":"quotes[] — predefined (scrIds) or custom (criteria) screener results","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"scrIds":"most_actives","count":5}},{"name":"v1/stock/modules","description":"RapidAPI-compatible alias for quoteSummary modules","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"modules","type":"string","required":false,"description":"Comma-separated Yahoo quoteSummary modules (e.g. 'price,financialData,earnings'). Omit for a broad default module set.","on_invalid":"reject","example":"price,summaryDetail,financialData"}],"returns":"symbol, modules{<module>:{...}} (Yahoo quoteSummary)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/market/news","description":"RapidAPI-compatible alias for news","required_params":["query"],"optional_params":["symbol"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword OR a ticker symbol to pull news for (either works).","on_invalid":"reject","example":"AAPL","aliases":["q","symbol"]},{"name":"symbol","type":"string","required":false,"description":"Ticker symbol to fetch news for (alternative to query).","on_invalid":"reject","example":"AAPL"},{"name":"count","type":"integer","required":false,"description":"Maximum number of results to return.","on_invalid":"ignore","default":10,"example":10,"minimum":1}],"returns":"query, news[]{uuid,title,publisher,link,providerPublishTime,type,thumbnail}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL","count":5,"query":"apple"}},{"name":"v2/market/news","description":"RapidAPI-compatible alias for news","required_params":["query"],"optional_params":["symbol"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword OR a ticker symbol to pull news for (either works).","on_invalid":"reject","example":"AAPL","aliases":["q","symbol"]},{"name":"symbol","type":"string","required":false,"description":"Ticker symbol to fetch news for (alternative to query).","on_invalid":"reject","example":"AAPL"},{"name":"count","type":"integer","required":false,"description":"Maximum number of results to return.","on_invalid":"ignore","default":10,"example":10,"minimum":1}],"returns":"query, news[]{uuid,title,publisher,link,providerPublishTime,type,thumbnail}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL","count":5,"query":"apple"}},{"name":"v1/options","description":"RapidAPI-compatible alias for options","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"date","type":"integer","required":false,"description":"Optional option-chain expiration as a Unix timestamp; omit for the nearest expiry.","on_invalid":"ignore","example":1718323200}],"returns":"symbol, expirationDates[], strikes[], calls[], puts[] (option contracts)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/most-active","description":"options most-active contracts derived from Yahoo option chains","required_params":[],"optional_params":["symbol","symbols","count"],"params":[{"name":"symbol","type":"string","required":false,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"symbols","type":"string","required":false,"description":"One or more symbols as an array or comma-separated string (e.g. 'AAPL,MSFT' or ['AAPL','MSFT']).","on_invalid":"reject","example":"AAPL,MSFT"},{"name":"count","type":"integer","required":false,"description":"Maximum number of results to return.","on_invalid":"ignore","default":25,"example":5,"minimum":1}],"returns":"contracts[] ranked by volume, symbols[], ranking","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"v1/unusual-options-activity","description":"unusual options activity derived from Yahoo option chain volume/open-interest","required_params":[],"optional_params":["symbol","symbols","count"],"params":[{"name":"symbol","type":"string","required":false,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"symbols","type":"string","required":false,"description":"One or more symbols as an array or comma-separated string (e.g. 'AAPL,MSFT' or ['AAPL','MSFT']).","on_invalid":"reject","example":"AAPL,MSFT"},{"name":"count","type":"integer","required":false,"description":"Maximum number of results to return.","on_invalid":"ignore","default":25,"example":5,"minimum":1}],"returns":"contracts[] ranked by volume/open-interest ratio (unusualScore)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"calendar/earnings","description":"symbol earnings calendar via quoteSummary","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{calendarEvents,earnings}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"calendar/earnings_market","description":"market-wide upcoming earnings calendar (all symbols) via Yahoo visualization","required_params":[],"optional_params":["start","end","date","count","offset","region","lang"],"params":[{"name":"start","type":"string","required":false,"description":"Earliest earnings date (YYYY-MM-DD) — returns earnings ON or AFTER this day. Defaults to today.","on_invalid":"ignore","example":"2026-06-21","aliases":["date","date_from"]},{"name":"end","type":"string","required":false,"description":"Latest earnings date (YYYY-MM-DD) — trims results to ON or BEFORE this day. Optional; omit for all upcoming.","on_invalid":"ignore","example":"2026-07-15","aliases":["date_to"]},{"name":"count","type":"integer","required":false,"description":"Max earnings events to return (capped at 100).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"offset","type":"integer","required":false,"description":"Pagination offset across the upcoming-earnings list.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"region","type":"string","required":false,"description":"Yahoo market region code (e.g. US, GB, DE, FR, IN, JP).","on_invalid":"ignore","default":"US","example":"US"},{"name":"lang","type":"string","required":false,"description":"Yahoo response language tag (e.g. en-US).","on_invalid":"ignore","default":"en-US","example":"en-US"}],"returns":"events[]{symbol,companyName,eventStartDate,eventStartTime,ePSEstimate,reportedEPS,surprise}, calendar_type, start, end — market-wide upcoming earnings across all symbols","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"count":5}},{"name":"calendar/dividends","description":"symbol dividends via chart events","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, dividends[]","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"calendar/economic_events","description":"global economic events via Yahoo visualization calendar","required_params":[],"optional_params":["start","end","count","offset"],"params":[{"name":"start","type":"string","required":false,"description":"Window start date (YYYY-MM-DD). Defaults to today.","on_invalid":"ignore","example":"2026-01-01","aliases":["date_from"]},{"name":"end","type":"string","required":false,"description":"Window end date (YYYY-MM-DD). Defaults to ~30 days out.","on_invalid":"ignore","example":"2026-12-31","aliases":["date_to"]},{"name":"count","type":"integer","required":false,"description":"Max events to return (capped at 100).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"offset","type":"integer","required":false,"description":"Event pagination offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"events[] — global economic events, calendar_type, start, end","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"calendar/public_offerings","description":"public offerings derived from Yahoo IPO calendar deal types","required_params":[],"optional_params":["start","end","count","offset"],"params":[{"name":"start","type":"string","required":false,"description":"Window start date (YYYY-MM-DD). Defaults to today.","on_invalid":"ignore","example":"2026-01-01","aliases":["date_from"]},{"name":"end","type":"string","required":false,"description":"Window end date (YYYY-MM-DD). Defaults to ~30 days out.","on_invalid":"ignore","example":"2026-12-31","aliases":["date_to"]},{"name":"count","type":"integer","required":false,"description":"Max events to return (capped at 100).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"offset","type":"integer","required":false,"description":"Event pagination offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"events[] — public offerings derived from IPO deal types","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"calendar/ipo","description":"IPO calendar via Yahoo visualization calendar","required_params":[],"optional_params":["start","end","count","offset"],"params":[{"name":"start","type":"string","required":false,"description":"Window start date (YYYY-MM-DD). Defaults to today.","on_invalid":"ignore","example":"2026-01-01","aliases":["date_from"]},{"name":"end","type":"string","required":false,"description":"Window end date (YYYY-MM-DD). Defaults to ~30 days out.","on_invalid":"ignore","example":"2026-12-31","aliases":["date_to"]},{"name":"count","type":"integer","required":false,"description":"Max events to return (capped at 100).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"offset","type":"integer","required":false,"description":"Event pagination offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"events[] — IPO calendar, calendar_type, start, end","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"calendar/stock-splits","description":"symbol stock splits via chart events","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, splits[]","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"calendar/count","description":"count of calendar events in a window (economic/ipo)","required_params":[],"optional_params":["calendar_type","type","start","end"],"params":[{"name":"calendar_type","type":"enum","required":false,"description":"Which calendar to count events from. `earnings` counts the same rows calendar/earnings_market returns for the window.","on_invalid":"ignore","allowed_values":[{"value":"economic_event","label":"Economic events"},{"value":"ipo_info","label":"IPOs"},{"value":"ipo","label":"IPOs (type= alias value)"},{"value":"earnings","label":"Company earnings dates"}],"example":"economic_event","aliases":["type"]},{"name":"start","type":"string","required":false,"description":"Window start date (YYYY-MM-DD). Defaults to today.","on_invalid":"ignore","example":"2026-01-01","aliases":["date_from"]},{"name":"end","type":"string","required":false,"description":"Window end date (YYYY-MM-DD). Defaults to ~30 days out.","on_invalid":"ignore","example":"2026-12-31","aliases":["date_to"]}],"returns":"calendar_type, count, count_capped, counted_up_to, upstream_total, start, end","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"futures","description":"futures chain: related contract months via Yahoo futuresChain","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, futures[] (related contract months), details","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"ES=F"}},{"name":"insights","description":"trading insights: technical events, key technicals, valuation, recommendation, significant developments","required_params":["symbol"],"optional_params":["reportsCount"],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"reportsCount","type":"integer","required":false,"description":"How many research/insights reports to include.","on_invalid":"ignore","default":5,"example":5,"minimum":1}],"returns":"symbol, instrumentInfo, recommendation, significantDevelopments[], events, companySnapshot","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"research","description":"what analysts are saying: research-report metadata via Yahoo insights","required_params":["symbol"],"optional_params":["reportsCount"],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"reportsCount","type":"integer","required":false,"description":"How many research/insights reports to include.","on_invalid":"ignore","default":5,"example":5,"minimum":1}],"returns":"symbol, reports[] (analyst research metadata)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"fund/fees","description":"ETF/mutual-fund fees and expenses via Yahoo fundProfile","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, fees, feesCategory, family, categoryName, legalType, managementInfo","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"SPY"}},{"name":"fund/holdings","description":"ETF/mutual-fund top holdings, sector weightings, asset allocation via Yahoo topHoldings","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, holdings[], sectorWeightings[], allocation{stock,bond,cash,...}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"SPY"}},{"name":"recommendations","description":"peer/similar symbols via Yahoo recommendationsbysymbol","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, recommendedSymbols[] (peer/similar symbols)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"news/details","description":"full news article content by uuid via Yahoo caas","required_params":["uuid"],"optional_params":[],"params":[{"name":"uuid","type":"string","required":true,"description":"Yahoo news article uuid (from a news item's `uuid`).","on_invalid":"reject","example":"0c0f0a00-0000-0000-0000-000000000000","aliases":["id","uuids"]}],"returns":"uuid, title, summary, author, publishedAt, provider, url, body_html","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"screener/fields","description":"queryable screener field catalog (filters) via Yahoo screeners","required_params":[],"optional_params":["type"],"params":[{"name":"type","type":"enum","required":false,"description":"Instrument whose screener field catalog to return.","on_invalid":"ignore","allowed_values":[{"value":"equity","label":"Equity"},{"value":"mutualfund","label":"Mutual fund"},{"value":"etf","label":"ETF"},{"value":"index","label":"Index"},{"value":"future","label":"Future"}],"default":"equity","example":"equity","aliases":["instrument"]}],"returns":"instrument, fields[]{id,displayName,type,sortable}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"equity"}},{"name":"market/tickers-by-type","description":"symbol lookup filtered by quote type (equity/etf/mutualfund/future/index/currency)","required_params":["query"],"optional_params":["type","count"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (company name or symbol).","on_invalid":"reject","example":"apple","aliases":["q"]},{"name":"type","type":"enum","required":false,"description":"Restrict the symbol lookup to one quote type. Omit for all types.","on_invalid":"ignore","allowed_values":[{"value":"equity","label":"Stocks"},{"value":"etf","label":"ETFs"},{"value":"mutualfund","label":"Mutual funds"},{"value":"index","label":"Indices"},{"value":"currency","label":"FX"},{"value":"cryptocurrency","label":"Crypto"},{"value":"future","label":"Futures"}],"example":"equity","aliases":["quoteType"]},{"name":"count","type":"integer","required":false,"description":"Maximum number of results to return.","on_invalid":"ignore","default":20,"example":20,"minimum":1}],"returns":"query, type, documents[] — symbols filtered by quote type","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"apple"}},{"name":"v1/stock/profile","description":"quoteSummary alias for assetProfile,summaryProfile","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{assetProfile,summaryProfile}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/statistics","description":"quoteSummary alias for defaultKeyStatistics","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{defaultKeyStatistics}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/financial-data","description":"quoteSummary alias for financialData","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{financialData}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/sec-filings","description":"quoteSummary alias for secFilings,assetProfile","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{secFilings,assetProfile}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/earnings","description":"quoteSummary alias for earnings,earningsTrend,earningsHistory","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{earnings,earningsTrend,earningsHistory}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/calendar-events","description":"quoteSummary alias for calendarEvents","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{calendarEvents}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/insider-holders","description":"quoteSummary alias for insiderHolders","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{insiderHolders}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/balance-sheet","description":"quoteSummary alias for balanceSheetHistory","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{balanceSheetHistory}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v2/stock/balance-sheet","description":"quoteSummary alias for balanceSheetHistory,balanceSheetHistoryQuarterly","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{balanceSheetHistory,balanceSheetHistoryQuarterly}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/institution-ownership","description":"quoteSummary alias for institutionOwnership","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{institutionOwnership}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/insider-transactions","description":"quoteSummary alias for insiderTransactions","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{insiderTransactions}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/index-trend","description":"quoteSummary alias for indexTrend","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{indexTrend}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/income-statement","description":"quoteSummary alias for incomeStatementHistory,incomeStatementHistoryQuarterly","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{incomeStatementHistory,incomeStatementHistoryQuarterly}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/cashflow-statement","description":"quoteSummary alias for cashflowStatementHistory,cashflowStatementHistoryQuarterly","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{cashflowStatementHistory,cashflowStatementHistoryQuarterly}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/recommendation-trend","description":"quoteSummary alias for recommendationTrend","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{recommendationTrend}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/net-share-purchase-activity","description":"quoteSummary alias for netSharePurchaseActivity","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{netSharePurchaseActivity}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/stock/upgrade-downgrade-history","description":"quoteSummary alias for upgradeDowngradeHistory","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{upgradeDowngradeHistory}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/insider-trades","description":"quoteSummary alias for insiderTransactions,insiderHolders,netSharePurchaseActivity","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, modules{insiderTransactions,insiderHolders,netSharePurchaseActivity}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/indicators/sma","description":"local SMA indicator from chart OHLCV","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"range","type":"enum","required":false,"description":"History window. Common Yahoo ranges shown; other Yahoo range tokens are also accepted. Pair with interval.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"},{"value":"6mo","label":"6 months"},{"value":"1y","label":"1 year"},{"value":"2y","label":"2 years"},{"value":"5y","label":"5 years"},{"value":"10y","label":"10 years"},{"value":"ytd","label":"Year to date"},{"value":"max","label":"Max available"}],"default":"1mo","example":"6mo"},{"name":"interval","type":"enum","required":false,"description":"Candle granularity. Intraday intervals only cover short ranges (Yahoo limitation); daily+ cover long ranges.","on_invalid":"ignore","allowed_values":[{"value":"1m","label":"1 minute"},{"value":"2m","label":"2 min"},{"value":"5m","label":"5 min"},{"value":"15m","label":"15 min"},{"value":"30m","label":"30 min"},{"value":"60m","label":"60 min"},{"value":"90m","label":"90 min"},{"value":"1h","label":"1 hour"},{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1wk","label":"1 week"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"}],"default":"1d","example":"1d"},{"name":"period","type":"integer","required":false,"description":"Lookback period for the single moving-average indicator.","on_invalid":"ignore","default":20,"example":20,"minimum":2}],"returns":"symbol, indicator (sma), key, value","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/indicators/rsi","description":"local RSI indicator from chart OHLCV","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"range","type":"enum","required":false,"description":"History window. Common Yahoo ranges shown; other Yahoo range tokens are also accepted. Pair with interval.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"},{"value":"6mo","label":"6 months"},{"value":"1y","label":"1 year"},{"value":"2y","label":"2 years"},{"value":"5y","label":"5 years"},{"value":"10y","label":"10 years"},{"value":"ytd","label":"Year to date"},{"value":"max","label":"Max available"}],"default":"1mo","example":"6mo"},{"name":"interval","type":"enum","required":false,"description":"Candle granularity. Intraday intervals only cover short ranges (Yahoo limitation); daily+ cover long ranges.","on_invalid":"ignore","allowed_values":[{"value":"1m","label":"1 minute"},{"value":"2m","label":"2 min"},{"value":"5m","label":"5 min"},{"value":"15m","label":"15 min"},{"value":"30m","label":"30 min"},{"value":"60m","label":"60 min"},{"value":"90m","label":"90 min"},{"value":"1h","label":"1 hour"},{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1wk","label":"1 week"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"}],"default":"1d","example":"1d"}],"returns":"symbol, indicator (rsi), key, value","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/indicators/macd","description":"local MACD indicator from chart OHLCV","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"range","type":"enum","required":false,"description":"History window. Common Yahoo ranges shown; other Yahoo range tokens are also accepted. Pair with interval.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"},{"value":"6mo","label":"6 months"},{"value":"1y","label":"1 year"},{"value":"2y","label":"2 years"},{"value":"5y","label":"5 years"},{"value":"10y","label":"10 years"},{"value":"ytd","label":"Year to date"},{"value":"max","label":"Max available"}],"default":"1mo","example":"6mo"},{"name":"interval","type":"enum","required":false,"description":"Candle granularity. Intraday intervals only cover short ranges (Yahoo limitation); daily+ cover long ranges.","on_invalid":"ignore","allowed_values":[{"value":"1m","label":"1 minute"},{"value":"2m","label":"2 min"},{"value":"5m","label":"5 min"},{"value":"15m","label":"15 min"},{"value":"30m","label":"30 min"},{"value":"60m","label":"60 min"},{"value":"90m","label":"90 min"},{"value":"1h","label":"1 hour"},{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1wk","label":"1 week"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"}],"default":"1d","example":"1d"}],"returns":"symbol, indicator (macd), key, value","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"v1/indicators/adx","description":"local ADX indicator from chart OHLCV","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"range","type":"enum","required":false,"description":"History window. Common Yahoo ranges shown; other Yahoo range tokens are also accepted. Pair with interval.","on_invalid":"ignore","allowed_values":[{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"},{"value":"6mo","label":"6 months"},{"value":"1y","label":"1 year"},{"value":"2y","label":"2 years"},{"value":"5y","label":"5 years"},{"value":"10y","label":"10 years"},{"value":"ytd","label":"Year to date"},{"value":"max","label":"Max available"}],"default":"1mo","example":"6mo"},{"name":"interval","type":"enum","required":false,"description":"Candle granularity. Intraday intervals only cover short ranges (Yahoo limitation); daily+ cover long ranges.","on_invalid":"ignore","allowed_values":[{"value":"1m","label":"1 minute"},{"value":"2m","label":"2 min"},{"value":"5m","label":"5 min"},{"value":"15m","label":"15 min"},{"value":"30m","label":"30 min"},{"value":"60m","label":"60 min"},{"value":"90m","label":"90 min"},{"value":"1h","label":"1 hour"},{"value":"1d","label":"1 day"},{"value":"5d","label":"5 days"},{"value":"1wk","label":"1 week"},{"value":"1mo","label":"1 month"},{"value":"3mo","label":"3 months"}],"default":"1d","example":"1d"}],"returns":"symbol, indicator (adx), key, value","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"stock/get-futures-chain","description":"apidojo-compatible alias for futures","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, futures[] (related contract months), details","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"stock/get-insights","description":"apidojo-compatible alias for insights","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"reportsCount","type":"integer","required":false,"description":"How many research/insights reports to include.","on_invalid":"ignore","default":5,"example":5,"minimum":1}],"returns":"symbol, instrumentInfo, recommendation, significantDevelopments[], events, companySnapshot","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"stock/v3/get-insights","description":"apidojo-compatible alias for insights","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"reportsCount","type":"integer","required":false,"description":"How many research/insights reports to include.","on_invalid":"ignore","default":5,"example":5,"minimum":1}],"returns":"symbol, instrumentInfo, recommendation, significantDevelopments[], events, companySnapshot","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"stock/get-what-analysts-are-saying","description":"apidojo-compatible alias for research","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"},{"name":"reportsCount","type":"integer","required":false,"description":"How many research/insights reports to include.","on_invalid":"ignore","default":5,"example":5,"minimum":1}],"returns":"symbol, reports[] (analyst research metadata)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"stock/get-fees-and-expenses","description":"apidojo-compatible alias for fund/fees","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, fees, feesCategory, family, categoryName, legalType, managementInfo","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"stock/get-top-holdings","description":"apidojo-compatible alias for fund/holdings","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, holdings[], sectorWeightings[], allocation{stock,bond,cash,...}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"stock/v2/get-recommendations","description":"apidojo-compatible alias for recommendations","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Ticker symbol (Yahoo format: equities 'AAPL', crypto 'BTC-USD', FX 'EURUSD=X', index '^GSPC', future 'ES=F'). Case-insensitive.","on_invalid":"reject","example":"AAPL"}],"returns":"symbol, recommendedSymbols[] (peer/similar symbols)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"AAPL"}},{"name":"news/v2/get-details","description":"apidojo-compatible alias for news/details","required_params":["uuid"],"optional_params":[],"params":[{"name":"uuid","type":"string","required":true,"description":"Yahoo news article uuid (from a news item's `uuid`).","on_invalid":"reject","example":"0c0f0a00-0000-0000-0000-000000000000","aliases":["id","uuids"]}],"returns":"uuid, title, summary, author, publishedAt, provider, url, body_html","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"screeners/get-filters","description":"apidojo-compatible alias for screener/fields","required_params":[],"optional_params":[],"params":[{"name":"type","type":"enum","required":false,"description":"Instrument whose screener field catalog to return.","on_invalid":"ignore","allowed_values":[{"value":"equity","label":"Equity"},{"value":"mutualfund","label":"Mutual fund"},{"value":"etf","label":"ETF"},{"value":"index","label":"Index"},{"value":"future","label":"Future"}],"default":"equity","example":"equity","aliases":["instrument"]}],"returns":"instrument, fields[]{id,displayName,type,sortable}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"market/get-tickers-by-quote-type","description":"apidojo-compatible alias for market/tickers-by-type","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (company name or symbol).","on_invalid":"reject","example":"apple","aliases":["q"]},{"name":"type","type":"enum","required":false,"description":"Restrict the symbol lookup to one quote type. Omit for all types.","on_invalid":"ignore","allowed_values":[{"value":"equity","label":"Stocks"},{"value":"etf","label":"ETFs"},{"value":"mutualfund","label":"Mutual funds"},{"value":"index","label":"Indices"},{"value":"currency","label":"FX"},{"value":"cryptocurrency","label":"Crypto"},{"value":"future","label":"Futures"}],"example":"equity","aliases":["quoteType"]},{"name":"count","type":"integer","required":false,"description":"Maximum number of results to return.","on_invalid":"ignore","default":20,"example":20,"minimum":1}],"returns":"query, type, documents[] — symbols filtered by quote type","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"apple"}}]},{"name":"fitness","category":{"id":"utilities","title":"Utilities & AI"},"title":"Fitness & Exercise API — exercise database with step-by-step instructions, muscle targeting, and equipment filters (wger.de open data, 800+ exercises)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/fitness/v1","spec_available":true,"actions":[{"name":"exercises","description":"Browse or search the full exercise library (800+ exercises from wger.de). Filter by name keyword; returns each exercise's name, body part, target muscle, equipment, step-by-step instructions, and animation URL.","required_params":[],"optional_params":["name","term","limit","offset","language"],"params":[{"name":"name","type":"string","required":false,"description":"Free-text search term to filter exercises by name.","on_invalid":"ignore","example":"press"},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped to 100.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"language","type":"integer","required":false,"description":"wger language id for names/instructions (2 = English, 1 = German, 4 = Russian, 5 = Spanish, …). Defaults to English.","on_invalid":"ignore","default":2,"example":2}],"returns":"results[] (id, name, bodyPart, target, equipment, secondaryMuscles[], instructions[], gifUrl/imageUrl, license, licenseAuthor), count, next_offset","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"by_bodypart","description":"All exercises targeting a specific body part — e.g. 'chest', 'back', 'shoulders', 'upper arms', 'waist'. Returns name, target muscle, equipment, and instructions for each.","required_params":["bodypart"],"optional_params":["bodyPart","limit","offset","language"],"params":[{"name":"bodypart","type":"string","required":true,"description":"Body part / category to filter by (e.g. chest, back, shoulders, upper arms, upper legs, lower legs, waist, cardio). Matched by substring; use bodypart_list for the live options.","on_invalid":"reject","example":"chest","aliases":["bodyPart"]},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped to 100.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"language","type":"integer","required":false,"description":"wger language id for names/instructions (2 = English, 1 = German, 4 = Russian, 5 = Spanish, …). Defaults to English.","on_invalid":"ignore","default":2,"example":2}],"returns":"results[] (exercise name, bodyPart, target, equipment, instructions[], gifUrl), count, bodypart","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"bodypart":"chest","limit":5}},{"name":"by_equipment","description":"All exercises that use a specific piece of equipment — e.g. 'barbell', 'dumbbell', 'kettlebell', 'none' (bodyweight). Returns name, target muscle, body part, and instructions.","required_params":["equipment"],"optional_params":["limit","offset","language"],"params":[{"name":"equipment","type":"string","required":true,"description":"Equipment name to filter by (e.g. barbell, dumbbell, kettlebell, none). Matched by substring; use equipment_list for the live options.","on_invalid":"reject","example":"barbell"},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped to 100.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"language","type":"integer","required":false,"description":"wger language id for names/instructions (2 = English, 1 = German, 4 = Russian, 5 = Spanish, …). Defaults to English.","on_invalid":"ignore","default":2,"example":2}],"returns":"results[] (exercise name, equipment, target, bodyPart, instructions[], gifUrl), count, equipment","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"by_target","description":"All exercises that target a specific muscle — e.g. 'biceps', 'triceps', 'quads', 'glutes', 'lats'. Returns name, equipment, body part, and step-by-step instructions.","required_params":["target"],"optional_params":["limit","offset","language"],"params":[{"name":"target","type":"string","required":true,"description":"Target muscle to filter by (e.g. biceps, triceps, quads, glutes). Matched by substring; use target_list for the live options.","on_invalid":"reject","example":"biceps"},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped to 100.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"language","type":"integer","required":false,"description":"wger language id for names/instructions (2 = English, 1 = German, 4 = Russian, 5 = Spanish, …). Defaults to English.","on_invalid":"ignore","default":2,"example":2}],"returns":"results[] (exercise name, target, equipment, bodyPart, instructions[], gifUrl), count, target","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"exercise_detail","description":"Full detail for a single exercise by its id — name, body part, primary and secondary muscles, equipment, step-by-step instructions, animation URL, and license.","required_params":["id"],"optional_params":["exercise_id","language"],"params":[{"name":"id","type":"integer","required":true,"description":"A single wger exercise id (the `id` of a search/filter result).","on_invalid":"reject","example":1962,"aliases":["exercise_id"]},{"name":"language","type":"integer","required":false,"description":"wger language id for names/instructions (2 = English, 1 = German, 4 = Russian, 5 = Spanish, …). Defaults to English.","on_invalid":"ignore","default":2,"example":2}],"returns":"exercise{} (full normalized record including primaryMuscles[], instructions[], equipment, gifUrl, license)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":1962}},{"name":"bodypart_list","description":"List all available body part categories (e.g. chest, back, shoulders, waist, cardio). Use these values with the by_bodypart action.","required_params":[],"optional_params":[],"params":[],"returns":"bodyParts[] (the available body-part / category names)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"equipment_list","description":"List all available equipment types (e.g. barbell, dumbbell, kettlebell, none). Use these values with the by_equipment action.","required_params":[],"optional_params":[],"params":[],"returns":"equipment[] (the available equipment names)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"target_list","description":"List all available target muscles (e.g. biceps, triceps, quads, glutes, lats). Use these values with the by_target action.","required_params":[],"optional_params":[],"params":[],"returns":"targets[] (the available target-muscle names)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"fiverr","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Fiverr.com API scraper — live gig search, gig detail and public seller profiles from Fiverr in clean JSON: title, starting price, packages, delivery time, ratings, review counts, seller level and country. No login required.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/fiverr/v1","spec_available":true,"actions":[{"name":"search","description":"Search live Fiverr GIGS by keyword. Returns title, starting price + delivery days, package count, rating, review count, category, gig attributes (style/format/…), images, and the seller's handle, level, country, languages and rating. Paid 'promoted' gigs are dropped by default and flagged when kept.","required_params":["query"],"optional_params":["limit","offset","include_promoted"],"params":[{"name":"query","type":"string","required":true,"description":"Keyword to search Fiverr gigs — e.g. 'logo design', 'python developer', 'voice over'. Fiverr has no keyword-free browse; use the `category` action to walk a category instead.","on_invalid":"ignore","example":"logo design","aliases":["q","keyword","search"]},{"name":"limit","type":"integer","required":false,"description":"How many gigs to return (1–96). Fiverr serves 48 per page; asking for more walks additional pages.","on_invalid":"ignore","default":24,"example":24,"minimum":1,"maximum":96,"aliases":["max_results","count"]},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (0–480); skip this many gigs before returning `limit`.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":480,"aliases":["skip","start"]},{"name":"include_promoted","type":"boolean","required":false,"description":"Fiverr injects paid 'promoted' gigs into the top of EVERY results page and repeats the same ads across pages. Default false drops them so paging returns new organic gigs; set true to keep them (each row is flagged `is_promoted`).","on_invalid":"ignore","default":false,"example":false,"aliases":["include_ads","ads"]}],"returns":"gigs[]{id, title, slug, url, is_promoted, is_pro, price{from,currency,delivery_days,package_count}, rating, reviews_count, category_id, attributes[], images[], seller{id,username,display_name,country_code,level,rating,ratings_count,languages[],url}}, total_count, returned, offset","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"logo design","limit":10}},{"name":"category","description":"Browse a Fiverr CATEGORY without a keyword — same gig rows as `search`, taken from the category landing page. Use when you want the market for a whole sub-category (e.g. website development) rather than a search term.","required_params":["category"],"optional_params":["limit","offset","include_promoted"],"params":[{"name":"category","type":"string","required":true,"description":"Category path to browse, as it appears after /categories/ — e.g. 'graphics-design/creative-logo-design' or 'programming-tech/website-development'. A one-segment path ('graphics-design') redirects to its dominant sub-category.","on_invalid":"ignore","example":"programming-tech/website-development","aliases":["path","cat","slug"]},{"name":"limit","type":"integer","required":false,"description":"How many gigs to return (1–96). Fiverr serves 48 per page; asking for more walks additional pages.","on_invalid":"ignore","default":24,"example":24,"minimum":1,"maximum":96,"aliases":["max_results","count"]},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (0–480); skip this many gigs before returning `limit`.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":480,"aliases":["skip","start"]},{"name":"include_promoted","type":"boolean","required":false,"description":"Fiverr injects paid 'promoted' gigs into the top of EVERY results page and repeats the same ads across pages. Default false drops them so paging returns new organic gigs; set true to keep them (each row is flagged `is_promoted`).","on_invalid":"ignore","default":false,"example":false,"aliases":["include_ads","ads"]}],"returns":"gigs[]{…same shape as search…}, total_count, returned, offset, category","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"gig","description":"Full detail for ONE Fiverr gig by URL or '<seller>/<slug>': description, every pricing package (title, price, delivery hours, revisions), FAQ, review summary and the most recent reviews with their order price band, plus the seller block.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"The gig to fetch: a full Fiverr gig URL, or '<seller>/<gig-slug>'. A bare numeric gig id is NOT resolvable without the seller handle — take the `url` or `slug`+`seller.username` from a `search` row.","on_invalid":"ignore","example":"https://www.fiverr.com/faizankhanani/create-a-modern-minimalist-logo-design","aliases":["gig","gig_url","url","slug"]}],"returns":"gig{id, title, url, status, category{}, sub_category{}, description, rating, reviews_count, orders_in_queue, packages[]{id,title,price,delivery_hours,revisions}, faq[], reviews_summary{}, reviews[], seller{}}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"seller","description":"PUBLIC business profile of a Fiverr seller by handle or profile URL: display name, headline, bio, country, timezone, join date, languages, skills, seller level, Pro/verified flags, response time, hourly rate, rating, review count and the gigs they list.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"The seller to fetch: a Fiverr handle or profile URL. Returns the PUBLIC business profile — handle, display name, country, languages, level, ratings and listed gigs.","on_invalid":"ignore","example":"faizankhanani","aliases":["seller","user","handle","id"]}],"returns":"seller{id, username, display_name, headline, description, country, country_code, timezone, joined_at, languages[], avatar, is_pro, is_verified, is_on_vacation, is_highly_responsive, is_agency, level, response_time_hours, hourly_rate, rating, reviews_count, skills[], gigs[], gigs_count, url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"flightaware","category":{"id":"travel","title":"Travel & Lodging"},"title":"FlightAware API — live flight tracker & status scraper: real-time flight status by flight number, origin/destination airports with gates and terminals, scheduled vs actual departure/arrival times, aircraft type and airline, live ADS-B position (altitude, groundspeed, heading, track), trip progress and filed flight plan — plus airport arrivals/departures activity boards from FlightAware.com, no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/flightaware/v1","spec_available":true,"actions":[{"name":"flight_status","description":"Live status for one flight by ident or flight number. Returns origin/destination (airport name, IATA/ICAO, gate, terminal, timezone, coordinates), scheduled / estimated / actual times for gate-out, take-off, landing and gate-in, aircraft type, airline, trip progress (percent complete, miles flown/remaining), the live position (altitude, groundspeed, heading) when airborne, and the filed flight plan.","required_params":["ident"],"optional_params":[],"params":[{"name":"ident","type":"string","required":true,"description":"Flight identifier — an airline flight number in ICAO form (UAL100, DAL47, BAW178) or IATA form (UA100, DL47, BA178), or a registration/callsign. IATA is auto-resolved to the operating flight. The aircraft's most recent/active leg is returned.","on_invalid":"reject","example":"UAL100","aliases":["flight","flight_number","q"]}],"returns":"flight{ident, status, airline{}, aircraft{}, origin{}, destination{}, gate_departure{scheduled,estimated,actual}, takeoff{}, landing{}, gate_arrival{}, progress{percent_complete,flown_miles,remaining_miles}, position{latitude,longitude,altitude_100ft,groundspeed_kts,heading}, flight_plan{route,filed_altitude,...}}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"ident":"UAL100"}},{"name":"live_position","description":"Live ADS-B track for one airborne flight: current position plus the full position history (lat/lon/altitude/groundspeed per timestamp) FlightAware has logged for this leg. Use flight_status first to confirm the flight is airborne. For grounded / arrived flights `position` is null and `track` is whatever was logged on the ground.","required_params":["ident"],"optional_params":[],"params":[{"name":"ident","type":"string","required":true,"description":"Flight identifier — an airline flight number in ICAO form (UAL100, DAL47, BAW178) or IATA form (UA100, DL47, BA178), or a registration/callsign. IATA is auto-resolved to the operating flight. The aircraft's most recent/active leg is returned.","on_invalid":"reject","example":"UAL100","aliases":["flight","flight_number","q"]}],"returns":"flight{ident, status, position{latitude,longitude,altitude_100ft,groundspeed_kts,heading,timestamp}, origin{}, destination{}, track[]{timestamp,latitude,longitude,altitude_100ft,groundspeed_kts}}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"ident":"UAL100"}},{"name":"airport_board","description":"Live activity board for an airport: the arrivals, departures, en-route or scheduled flights FlightAware shows for that airport. Each row gives the flight ident, aircraft type, the other airport (IATA), and the scheduled/estimated times. Feed an ident back into flight_status for full detail.","required_params":["airport"],"optional_params":["board","limit"],"params":[{"name":"airport","type":"string","required":true,"description":"Airport code — ICAO (KJFK, EGLL, EDDF) or IATA (JFK, LHR, FRA). ICAO is the most reliable. Returns the live activity boards for that airport.","on_invalid":"reject","example":"KJFK","aliases":["code","icao","iata","q"]},{"name":"board","type":"enum","required":false,"description":"Which activity board to return: arrivals, departures, enroute or scheduled.","on_invalid":"reject","allowed_values":[{"value":"arrivals","label":"Arrivals"},{"value":"departures","label":"Departures"},{"value":"enroute","label":"En route to this airport"},{"value":"scheduled","label":"Scheduled departures"}],"default":"arrivals","example":"arrivals"},{"name":"limit","type":"integer","required":false,"description":"Max flights to return from the board (1-20; FlightAware renders ~20 per board to logged-out requests).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":20}],"returns":"airport{name, iata, icao} + board (the requested type) + flights[]{ident, aircraft_type, origin_airport|destination_airport (IATA), *_airport_name, departure_time/arrival_time (or status for enroute), url}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"airport":"KJFK","board":"arrivals"}}]},{"name":"flights","category":{"id":"travel","title":"Travel & Lodging"},"title":"Flights API — flight search, cheapest-day price graph, airport/IATA lookup & seat specs (worldwide, live prices, booking links)","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/flights/v1","spec_available":true,"actions":[{"name":"search_flights","description":"Search flights from origin to destination for a given date. Returns ranked itineraries with price, all flight segments (carrier, flight number, departure/arrival times), total journey duration and a direct booking link. Supports one-way and return trips.","required_params":["origin","destination","depart_date"],"optional_params":["return_date","depart_date_end","return_date_end","adults","children","infants","cabin_class","currency","max_stops","sort","limit"],"params":[{"name":"origin","type":"string","required":true,"description":"Departure: IATA code (LON/JFK), city name, or Kiwi location id.","on_invalid":"reject","example":"London","aliases":["from"]},{"name":"destination","type":"string","required":true,"description":"Arrival: IATA code, city name, or Kiwi location id.","on_invalid":"reject","example":"New York","aliases":["to"]},{"name":"depart_date","type":"string","required":true,"description":"Outbound date, YYYY-MM-DD (must be a future date).","on_invalid":"reject","example":"2026-10-23","aliases":["date","departure_date"]},{"name":"return_date","type":"string","required":false,"description":"Return date, YYYY-MM-DD. Omit for a one-way search.","on_invalid":"ignore","example":"2026-10-30","aliases":["return"]},{"name":"depart_date_end","type":"string","required":false,"description":"End of an outbound date RANGE (YYYY-MM-DD); search any departure between depart_date and this.","on_invalid":"ignore","example":"2026-10-26"},{"name":"return_date_end","type":"string","required":false,"description":"End of a return date RANGE (YYYY-MM-DD).","on_invalid":"ignore","example":"2026-11-02"},{"name":"adults","type":"integer","required":false,"description":"Number of adult passengers.","on_invalid":"ignore","default":1,"example":1,"minimum":0},{"name":"children","type":"integer","required":false,"description":"Number of child passengers (2-11).","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"infants","type":"integer","required":false,"description":"Number of infant passengers (<2).","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"cabin_class","type":"enum","required":false,"description":"Cabin class (unknown values fall back to economy).","on_invalid":"ignore","allowed_values":[{"value":"economy","label":"Economy (default)"},{"value":"premium_economy","label":"Premium economy"},{"value":"business","label":"Business"},{"value":"first","label":"First class"}],"default":"economy","example":"business","aliases":["cabin"]},{"name":"currency","type":"string","required":false,"description":"ISO-4217 currency for prices (e.g. USD, EUR, GBP). Default USD.","on_invalid":"ignore","default":"USD","example":"EUR"},{"name":"max_stops","type":"integer","required":false,"description":"Max number of stops (0 = direct only). Omit for any.","on_invalid":"ignore","example":1,"minimum":0,"aliases":["stops_max"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering (unknown values fall back to price).","on_invalid":"ignore","allowed_values":[{"value":"price","label":"Cheapest (default)"},{"value":"duration","label":"Fastest"},{"value":"quality","label":"Best quality"},{"value":"date","label":"Departure date"},{"value":"popularity","label":"Most popular"}],"default":"price","example":"duration"},{"name":"limit","type":"integer","required":false,"description":"Max itineraries to return (default 20).","on_invalid":"ignore","default":20,"example":5,"minimum":1}],"returns":"flights[]{price{amount,currency}, segments[]{carrier,carrier_code,flight_no,departure,arrival}, duration_seconds, booking_url, origin, destination} (return trips have outbound/inbound legs), count, trip_type, total_available","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"origin":"London","destination":"New York","depart_date":"2026-10-23","limit":5}},{"name":"search_places","description":"Resolve a city or airport name to location IDs used in flight search — useful when you want to pin an exact airport rather than a city (e.g. 'Heathrow' → LHR).","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"City or airport name / IATA code to resolve to Kiwi place ids.","on_invalid":"reject","example":"London","aliases":["term","q"]},{"name":"limit","type":"integer","required":false,"description":"Max place matches to return (default 8).","on_invalid":"ignore","default":8,"example":8,"minimum":1}],"returns":"places[]{id, name, type}, count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"London"}},{"name":"airport_info","description":"Look up airports and cities by name or IATA code. Returns full reference data: IATA + ICAO codes, GPS coordinates, timezone, country, and — for a city — the list of all its airports. Useful to validate a code, geolocate an airport, or map a city to its airports.","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Airport or city name / IATA code (e.g. 'Heathrow', 'LHR', 'Istanbul').","on_invalid":"reject","example":"Heathrow","aliases":["term","q"]},{"name":"limit","type":"integer","required":false,"description":"Max matches to return (default 5).","on_invalid":"ignore","default":5,"example":5,"minimum":1}],"returns":"places[]{id, name, type (Station/City/Country), iata, icao, timezone, gps{lat,lng}, country, country_code, airports_count, airports[]{iata,icao,name,gps}}, count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Heathrow"}},{"name":"price_graph","description":"Find the cheapest day to fly. Returns the lowest price for each departure date across a date range, each tagged CHEAP / AVERAGE / EXPENSIVE, plus the single cheapest option. Set nights_min/nights_max for a return trip; omit them for one-way. One fast call.","required_params":["origin","destination","depart_date"],"optional_params":["depart_date_end","nights_min","nights_max","adults","children","infants","cabin_class","currency"],"params":[{"name":"origin","type":"string","required":true,"description":"Departure: IATA code (LON/JFK), city name, or Kiwi location id.","on_invalid":"reject","example":"London","aliases":["from"]},{"name":"destination","type":"string","required":true,"description":"Arrival: IATA code, city name, or Kiwi location id.","on_invalid":"reject","example":"New York","aliases":["to"]},{"name":"depart_date","type":"string","required":true,"description":"Start of the departure date range, YYYY-MM-DD (future).","on_invalid":"reject","example":"2026-10-23","aliases":["date","departure_date"]},{"name":"depart_date_end","type":"string","required":false,"description":"End of the departure date range, YYYY-MM-DD. Defaults to ~30 days after depart_date if omitted.","on_invalid":"ignore","example":"2026-11-22"},{"name":"nights_min","type":"integer","required":false,"description":"Minimum number of nights at the destination — turns the price graph into a return-trip search (omit both for one-way).","on_invalid":"ignore","example":5,"minimum":0},{"name":"nights_max","type":"integer","required":false,"description":"Maximum number of nights at the destination — turns the price graph into a return-trip search (omit both for one-way).","on_invalid":"ignore","example":9,"minimum":0},{"name":"adults","type":"integer","required":false,"description":"Number of adult passengers.","on_invalid":"ignore","default":1,"example":1,"minimum":0},{"name":"children","type":"integer","required":false,"description":"Number of child passengers (2-11).","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"infants","type":"integer","required":false,"description":"Number of infant passengers (<2).","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"cabin_class","type":"enum","required":false,"description":"Cabin class (unknown values fall back to economy).","on_invalid":"ignore","allowed_values":[{"value":"economy","label":"Economy (default)"},{"value":"premium_economy","label":"Premium economy"},{"value":"business","label":"Business"},{"value":"first","label":"First class"}],"default":"economy","example":"business","aliases":["cabin"]},{"name":"currency","type":"string","required":false,"description":"ISO-4217 currency for prices (e.g. USD, EUR, GBP). Default USD.","on_invalid":"ignore","default":"USD","example":"EUR"}],"returns":"prices[]{date, return_date, price, currency, rating}, cheapest{date,price}, count, currency, trip_type, origin, destination","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"origin":"London","destination":"New York","depart_date":"2026-10-23","depart_date_end":"2026-10-30"}},{"name":"seat_info","description":"Get the seat specs and amenities for a specific flight: seat pitch, width and recline (legroom/comfort), plus power, Wi-Fi and in-flight entertainment availability. Look up by airline + flight number + route + date. Returns honest empty when the flight is unknown.","required_params":["carrier","flight_number","source","destination","date"],"optional_params":["cabin_class"],"params":[{"name":"carrier","type":"string","required":true,"description":"Operating airline IATA code (2 chars, e.g. BA = British Airways, AA = American, LH = Lufthansa).","on_invalid":"reject","example":"BA","aliases":["airline"]},{"name":"flight_number","type":"string","required":true,"description":"Flight number (numeric part only, e.g. 177; 'BA177' is also accepted).","on_invalid":"reject","example":"177","aliases":["code","number"]},{"name":"source","type":"string","required":true,"description":"Departure airport IATA code (e.g. LHR).","on_invalid":"reject","example":"LHR","aliases":["origin","from"]},{"name":"destination","type":"string","required":true,"description":"Arrival airport IATA code (e.g. JFK).","on_invalid":"reject","example":"JFK","aliases":["to"]},{"name":"date","type":"string","required":true,"description":"Flight date, YYYY-MM-DD (must be a future date).","on_invalid":"reject","example":"2026-10-23","aliases":["depart_date","departure_date"]},{"name":"cabin_class","type":"enum","required":false,"description":"Cabin class (unknown values fall back to economy).","on_invalid":"ignore","allowed_values":[{"value":"economy","label":"Economy (default)"},{"value":"premium_economy","label":"Premium economy"},{"value":"business","label":"Business"},{"value":"first","label":"First class"}],"default":"economy","example":"business","aliases":["cabin"]}],"returns":"flight, carrier, source, destination, cabin_class, found, seat{pitch{value,unit}, width{value,unit}, recline{value,unit}, has_power, has_wifi, has_audio_video, power, audio_video}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"carrier":"BA","flight_number":"177","source":"LHR","destination":"JFK","date":"2026-10-23"}}]},{"name":"flipkart","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Flipkart API scraper — India's largest e-commerce marketplace (flipkart.com): product search with full filters, product detail (price/specs/variants/offers), buyer reviews, categories, sellers, similar products, available filters and autocomplete","version":"2.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/flipkart/v1","spec_available":true,"actions":[{"name":"search","description":"Flipkart product search with filters — keyword search returning product cards (title/price/mrp/discount/rating/image/url) plus the total result count, paginated. Filter by brand, price range, minimum rating, minimum discount, F-Assured and any category facet (use the `filters` action to discover what a query supports).","required_params":["q"],"optional_params":["page","sort","brand","min_price","max_price","min_rating","min_discount","f_assured","no_cost_emi","include_out_of_stock","facets"],"params":[{"name":"q","type":"string","required":true,"description":"Search keyword.","on_invalid":"reject","example":"laptop","aliases":["query"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"sort","type":"enum","required":false,"description":"Sort order.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"popularity","label":"Popularity"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"recency_desc","label":"Newest first"}],"example":"popularity"},{"name":"brand","type":"string","required":false,"description":"Filter to a brand (exact Flipkart brand name, e.g. Samsung, HP).","on_invalid":"reject","example":"Samsung"},{"name":"min_price","type":"number","required":false,"description":"Minimum price in ₹ (INR). Applied to the returned cards.","on_invalid":"ignore","example":10000},{"name":"max_price","type":"number","required":false,"description":"Maximum price in ₹ (INR). Applied to the returned cards.","on_invalid":"ignore","example":50000},{"name":"min_rating","type":"enum","required":false,"description":"Keep only products rated this many stars and up.","on_invalid":"ignore","allowed_values":[{"value":"4","label":"4★ & above"},{"value":"3","label":"3★ & above"},{"value":"2","label":"2★ & above"},{"value":"1","label":"1★ & above"}],"example":"4"},{"name":"min_discount","type":"enum","required":false,"description":"Keep only products with at least this % discount.","on_invalid":"ignore","allowed_values":[{"value":"10","label":"10% or more"},{"value":"20","label":"20% or more"},{"value":"30","label":"30% or more"},{"value":"40","label":"40% or more"},{"value":"50","label":"50% or more"},{"value":"60","label":"60% or more"},{"value":"70","label":"70% or more"},{"value":"80","label":"80% or more"}],"example":"30"},{"name":"f_assured","type":"boolean","required":false,"description":"When true, restrict to F-Assured (Flipkart-Assured quality/delivery) listings.","on_invalid":"ignore","default":false},{"name":"no_cost_emi","type":"boolean","required":false,"description":"When true, restrict to products with a No Cost EMI offer.","on_invalid":"ignore","default":false},{"name":"include_out_of_stock","type":"boolean","required":false,"description":"When true, include out-of-stock products in the results.","on_invalid":"ignore","default":false},{"name":"facets","type":"array","required":false,"description":"Advanced: raw category-facet filter fragment(s) taken from the `filters` action's `param` field (e.g. 'facets.processor[]=Core i7'). Pass one string or a list to stack several facets.","on_invalid":"ignore","example":["facets.processor[]=Core i7","facets.ram_capacity[]=16 GB"]}],"returns":"results[] (title, price, mrp, discount, rating, image, url) + total_results + filters_applied + page + has_more + next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"laptop"}},{"name":"product","description":"full product page facts (title/price/mrp/rating/specs/highlights/images/seller/similar)","required_params":[],"optional_params":["url","itm_id"],"params":[{"name":"url","type":"string","required":false,"description":"Full Flipkart product URL.","on_invalid":"reject","example":"https://www.flipkart.com/apple-iphone-16-white-128-gb/p/itm7c0281cd247be"},{"name":"itm_id","type":"string","required":false,"description":"Flipkart item id (the itmXXXX in a /p/ URL).","on_invalid":"reject","example":"itm5a14f3731bf15"}],"returns":"product{title, brand, breadcrumbs[], description, price, mrp, discount_percent, currency, rating, rating_count, review_count, rating_breakup, parameter_ratings, in_stock, seller{}, variants[]{value,price,in_stock,url}, offers[]{type,title,value}, images[], highlights[], specifications[]{name,value}, return_policy, cod_available, no_cost_emi, delivery, similar_products[]}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"itm_id":"itm5a14f3731bf15"}},{"name":"reviews","description":"Flipkart buyer reviews for a product, paginated — each review has rating, title, body, reviewer name, location, certified-buyer badge, helpful/up/down votes and date, plus the product's total review count. Page through with meta.next_page to collect them all.","required_params":[],"optional_params":["url","slug","itm_id","page","sort"],"params":[{"name":"url","type":"string","required":false,"description":"Full Flipkart product URL.","on_invalid":"reject","example":"https://www.flipkart.com/apple-iphone-16-white-128-gb/p/itm7c0281cd247be"},{"name":"slug","type":"string","required":false,"description":"Product slug (the part before /p/; derived from url if omitted).","on_invalid":"reject"},{"name":"itm_id","type":"string","required":false,"description":"Flipkart item id (the itmXXXX in a /p/ URL).","on_invalid":"reject","example":"itm5a14f3731bf15"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"sort","type":"enum","required":false,"description":"Review ordering.","on_invalid":"ignore","allowed_values":[{"value":"MOST_RECENT","label":"Most recent"},{"value":"MOST_HELPFUL","label":"Most helpful"},{"value":"POSITIVE_FIRST","label":"Positive first"},{"value":"NEGATIVE_FIRST","label":"Negative first"}],"example":"MOST_RECENT"}],"returns":"reviews[]{rating, title, text, author, location, certified_buyer, helpful_count, upvote, downvote, created} + total_review_count + itm_id + page + has_more + next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"itm_id":"itm5a14f3731bf15"}},{"name":"category","description":"category/browse listing cards from a Flipkart category URL/path — a `/pr?sid=…` category link, a `~cs-…` curated collection, or a store/hub page such as /mobiles or /mobile-phones-store","required_params":[],"optional_params":["url","path","page"],"params":[{"name":"url","type":"string","required":false,"description":"Full Flipkart category URL. (category needs url OR path.)","on_invalid":"reject","example":"https://www.flipkart.com/mobiles/pr?sid=tyy,4io"},{"name":"path","type":"string","required":false,"description":"Site-relative category path (alternative to url).","on_invalid":"reject"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"results[] listing cards, source, page, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"browse","description":"Alias of the `category` action — browse/listing cards from a Flipkart category URL or site-relative path. (browse needs url OR path.)","required_params":[],"optional_params":["url","path","page"],"params":[{"name":"url","type":"string","required":false,"description":"Full Flipkart category URL (alias of the category action). (browse needs url OR path.)","on_invalid":"reject","example":"https://www.flipkart.com/mobiles/pr?sid=tyy,4io"},{"name":"path","type":"string","required":false,"description":"Site-relative category path (alternative to url), e.g. /mobiles/pr?sid=tyy,4io.","on_invalid":"reject"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"results[] listing cards (same as category), source, page, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"similar","description":"similar/related products from a product page reco widgets","required_params":[],"optional_params":["url","itm_id","product_id"],"params":[{"name":"url","type":"string","required":false,"description":"Full Flipkart product URL.","on_invalid":"reject","example":"https://www.flipkart.com/apple-iphone-16-white-128-gb/p/itm7c0281cd247be"},{"name":"itm_id","type":"string","required":false,"description":"Flipkart item id (the itmXXXX in a /p/ URL).","on_invalid":"reject","example":"itm5a14f3731bf15"},{"name":"product_id","type":"string","required":false,"description":"Flipkart product id (FSN) to exclude from results.","on_invalid":"reject"}],"returns":"results[] related products (title, price, rating, url)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"seller","description":"Who sells a product: seller id, fulfilment and availability, resolved from a product URL — plus storefront catalog cards when a storefront path is supplied. Start with `product_url` (the live-verified route); Flipkart has no public /seller/<id> storefront, so a bare `seller_id` returns metadata only.","required_params":[],"optional_params":["product_url","url","seller_id","seller_path","seller_url","product_id","page"],"params":[{"name":"product_url","type":"string","required":false,"description":"Flipkart product URL to resolve the seller from — the recommended locator.","on_invalid":"reject","example":"https://www.flipkart.com/apple-iphone-16-white-128-gb/p/itm7c0281cd247be"},{"name":"url","type":"string","required":false,"description":"Generic Flipkart URL (seller storefront or product); treated like product_url when it points at a product.","on_invalid":"reject"},{"name":"seller_id","type":"string","required":false,"description":"Flipkart seller id. Note: Flipkart publishes no /seller/<id> storefront, so this alone yields no catalog — use product_url, or seller_path/seller_url if you already have a storefront link.","on_invalid":"reject"},{"name":"seller_path","type":"string","required":false,"description":"Site-relative seller storefront path.","on_invalid":"reject"},{"name":"seller_url","type":"string","required":false,"description":"Full seller storefront URL.","on_invalid":"reject"},{"name":"product_id","type":"string","required":false,"description":"Product id for seller-of-this-product lookup.","on_invalid":"reject"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"seller{seller_id, catalog_count, ...}, results[] storefront cards, page, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"autocomplete","description":"search autosuggest suggestions for a partial query","required_params":["q"],"optional_params":[],"params":[{"name":"q","type":"string","required":true,"description":"Search keyword.","on_invalid":"reject","example":"laptop","aliases":["query"]}],"returns":"suggestions[] {text, query, source}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"laptop"}},{"name":"categories","description":"top-level navigation/category links from homepage state","required_params":[],"optional_params":[],"params":[],"returns":"categories[] {title, url} from the homepage navigation","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"variants","description":"Product variants (the sibling SKUs — color/storage/size) each with its OWN price, stock status and product URL, from the product page.","required_params":[],"optional_params":["url","itm_id","product_id"],"params":[{"name":"url","type":"string","required":false,"description":"Full Flipkart product URL.","on_invalid":"reject","example":"https://www.flipkart.com/apple-iphone-16-white-128-gb/p/itm7c0281cd247be"},{"name":"itm_id","type":"string","required":false,"description":"Flipkart item id (the itmXXXX in a /p/ URL).","on_invalid":"reject","example":"itm5a14f3731bf15"},{"name":"product_id","type":"string","required":false,"description":"Flipkart product id (FSN).","on_invalid":"reject"}],"returns":"variants[]{value, product_id, price, currency, in_stock, url}, product_id","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"filters","description":"Available search filters (facets) for a query — every filter Flipkart offers for these results: brand, price, rating, discount, offers, availability and category-specific facets (processor, RAM, screen size, etc.), each value carrying a count and a ready-to-use filter `param`. Feed a value's `param` back into search's `facets` argument.","required_params":["q"],"optional_params":["brand"],"params":[{"name":"q","type":"string","required":true,"description":"Search keyword.","on_invalid":"reject","example":"laptop","aliases":["query"]},{"name":"brand","type":"string","required":false,"description":"Optionally scope the facets to a brand first.","on_invalid":"reject"}],"returns":"filters[]{id, title, values[]{value, count, param, selected}} + total_results + query","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"laptop"}},{"name":"offers","description":"Bank, EMI, exchange and cashback offers for a product (the offer strip on the product page): e.g. 'Flipkart Axis Bank Card 5% cashback', 'Exchange offer up to ₹X off', 'No Cost EMI'. Honest-empty when a product has no active offers.","required_params":[],"optional_params":["url","itm_id"],"params":[{"name":"url","type":"string","required":false,"description":"Full Flipkart product URL.","on_invalid":"reject","example":"https://www.flipkart.com/apple-iphone-16-white-128-gb/p/itm7c0281cd247be"},{"name":"itm_id","type":"string","required":false,"description":"Flipkart item id (the itmXXXX in a /p/ URL).","on_invalid":"reject","example":"itm5a14f3731bf15"}],"returns":"offers[]{type, title, value} + no_cost_emi + cod_available + product_id","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"flo","category":{"id":"other","title":"Other"},"title":"FLO API scraper — search, category browse & product detail for FLO (flo.com.tr), Turkey's largest footwear retailer. Sizes, colors, prices (TRY), discounts, coupons & stock. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/flo/v1","spec_available":true,"actions":[{"name":"search","description":"Search FLO by keyword (`query`), paginated. Every card carries product_id, title, brand, price, special_price (discount), sizes[] (with per-size stock), colors[], image, url, seller_type (flo|marketplace).","required_params":["query"],"optional_params":["page","sort","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword (Turkish or brand name).","on_invalid":"reject","example":"nike spor ayakkabı","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page — 1-based, 24 products/page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"sort","type":"string","required":false,"description":"Sort order: price_asc (cheapest first) · price_desc · newest. Also accepts a raw FLO sort token (e.g. 'filter_price:asc').","on_invalid":"ignore","allowed_values":[{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"newest","label":"newest"}],"example":"price_asc","aliases":["order","siralama"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-16, default 8).","on_invalid":"ignore","default":8,"minimum":1,"maximum":16}],"returns":"products[]{product_id, title, brand, price, special_price, original_price, discount_rate, currency, in_stock, image, sizes[], colors[], seller_id, seller_type, category}, count, total, page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike"}},{"name":"category/products","description":"Browse a FLO category (`category` slug + optional `cinsiyet` gender), paginated — the deep shoe-enumeration workhorse. Same rich card shape as search (sizes, colors, discount, stock).","required_params":["category"],"optional_params":["cinsiyet","page","sort","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"FLO category slug, e.g. spor-ayakkabi · kosu-ayakkabisi · yuruyus-ayakkabisi · gunluk-ayakkabi · bot · sandalet · terlik · sneaker · hali-saha-ayakkabisi. May also be a full category URL.","on_invalid":"reject","example":"spor-ayakkabi","aliases":["slug","category_slug"]},{"name":"cinsiyet","type":"string","required":false,"description":"Gender filter for category browse: erkek · kadin · unisex · erkek-cocuk · kiz-cocuk.","on_invalid":"ignore","allowed_values":[{"value":"erkek","label":"Men"},{"value":"kadin","label":"Women"},{"value":"unisex","label":"Unisex"},{"value":"erkek-cocuk","label":"Boys"},{"value":"kiz-cocuk","label":"Girls"}],"example":"erkek","aliases":["gender"]},{"name":"page","type":"integer","required":false,"description":"Result page — 1-based, 24 products/page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"sort","type":"string","required":false,"description":"Sort order: price_asc (cheapest first) · price_desc · newest. Also accepts a raw FLO sort token (e.g. 'filter_price:asc').","on_invalid":"ignore","allowed_values":[{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"newest","label":"newest"}],"example":"price_asc","aliases":["order","siralama"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-16, default 8).","on_invalid":"ignore","default":8,"minimum":1,"maximum":16}],"returns":"products[]{…same card as search}, count, total, page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"spor-ayakkabi","cinsiyet":"erkek"}},{"name":"product/detail","description":"Full FLO product by its page `url`: title, brand, price, original_price, discount_percent, currency=TRY, images[] (full gallery), sizes[] (per-size stock with a unit count and a barcode on every size), colors[], coupons[], badges (free-shipping/campaign), rating, seller, description, stock. Pass the url — FLO has no route that takes the product id by itself, and search and category rows already carry the url for exactly this call.","required_params":["url"],"optional_params":["max_rotations"],"params":[{"name":"url","type":"string","required":true,"description":"Full FLO product URL (…/urun/<slug>-<sku>). This is the only address FLO answers to: the trailing digits are not a route on their own, so the id alone cannot open a product. Every row `search` and `category/products` return carries this url.","on_invalid":"reject","example":"https://www.flo.com.tr/urun/nike-revolution-7-erkek-siyah-kosu-ayakkabisi-101465072","aliases":["product_url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-16, default 8).","on_invalid":"ignore","default":8,"minimum":1,"maximum":16}],"returns":"product{product_id, title, brand, model_code, url, price, original_price, discount_percent, currency=TRY, in_stock, stock_message, sizes[], colors[], color, gender, images[], coupons[], badges[], rating, rating_count, description, category, breadcrumb[], seller{}, attributes{}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.flo.com.tr/urun/nike-court-borough-low-recraft-beyaz-unisex-sneaker-101792825"}}]},{"name":"fnac","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Fnac API scraper — fnac.com (France) plus Belgium, Switzerland and Portugal: search products, read the product (EAN, price with the struck 30-day-lowest price and eco-fee, member price, seller, other offers, specs), list every marketplace offer and read reviews. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/fnac/v1","spec_available":true,"actions":[{"name":"search","description":"Search a Fnac storefront by keyword with the site's own sorts and filters (price range, sold by Fnac). Each row: product id, title, URL, brand or contributors, the price with the struck 30-day-lowest price and discount when shown, the member price where the storefront shows one, the store-pickup price on books, condition (new/used + grade), seller (Fnac or marketplace), availability, rating + count, other new/used offers with their from-prices, badges and image.","required_params":["query"],"optional_params":["country","page","sort","price_min","price_max","sold_by_fnac","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Keyword to search (in the storefront's language: 'casque bluetooth', 'livro'). When Fnac answers a keyword with a category page instead of a result list, the response says so in `redirected_to` / `redirect_type` and returns that page's products.","on_invalid":"reject","example":"casque bluetooth","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Fnac storefront. Prices come back in that storefront's currency (CHF for ch). Product ids are shared across storefronts but price, stock and sellers differ. A pasted product URL sets the country itself.","on_invalid":"reject","allowed_values":[{"value":"fr","label":"fnac.com — France, EUR"},{"value":"be","label":"fr.fnac.be — Belgium, EUR"},{"value":"ch","label":"fr.fnac.ch — Switzerland, CHF"},{"value":"pt","label":"fnac.pt — Portugal, EUR"},{"value":"es","label":"fnac.es — not available (returns MARKET_UNAVAILABLE)"}],"default":"fr","example":"fr"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Fnac serves 20 products per page; `total_pages` says how many exist.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"sort","type":"enum","required":false,"description":"Order of the results — the site's own orderings.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Fnac's default order"},{"value":"price_asc","label":"Fnac's 'lowest price' order (not strictly monotonic on the shown price)"},{"value":"price_desc","label":"Fnac's 'highest price' order"},{"value":"rating","label":"Fnac's 'customer rating' order"}],"default":"relevance"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in the storefront currency. Sent to Fnac's own price filter and re-checked on the returned rows (outliers dropped, counted in `dropped_outside_price_range`). Part of fnac.com's traffic only offers fixed price bands; the response's `price_filter_mode` says which applied ('exact' or 'bands' — with bands, `total_results` counts the bands).","on_invalid":"reject","example":20,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in the storefront currency (see price_min).","on_invalid":"reject","example":50,"minimum":0},{"name":"sold_by_fnac","type":"boolean","required":false,"description":"Only products sold by Fnac itself (Fnac's 'Vendu par Fnac' filter).","on_invalid":"reject"},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no product on the page contains a query word, Fnac pads the page with fuzzy matches. false (default): results are empty and `fallback_results_dropped` counts them. true: they are returned apart, in `fallback_results`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 5).","on_invalid":"ignore","default":5,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id, catalog, product_code, offer_id, title, url, brand, product_type, contributors[{name, role}], price, currency, struck_price, struck_price_type, discount_percent, member_price, member_price_label, store_pickup_price, store_pickup_label, condition ('new'|'used'), condition_grade, seller{name, id, type, is_fnac}, fulfilled_by, availability, availability_code, rating, rating_count, rating_scale, other_offers[{condition, count, from_price}], lowest_new_offer_price, lowest_used_offer_price, badges[], image}, count, total_results, total_pages, page, page_size, sort, sort_applied, query, country, currency, applied_filters, dropped_outside_price_range, keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[] (only with include_fallback_results=true), sponsored_dropped, page_notice","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"casque bluetooth"}},{"name":"product/detail","description":"The Fnac product record by URL or product_id: title, brand or contributors, EAN, SKU, MPN, the buy-box price with the struck 30-day-lowest price and discount, the eco-participation and copie-privée levy it includes, member price where shown, store-pickup price on books, availability (in stock / pre-order), condition, seller (Fnac or marketplace, with rating and sales count), delivery, the other new/used offers summary, star rating + count, energy class, images, video, description, specs and breadcrumb.","required_params":[],"optional_params":["url","product_id","country","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"A Fnac product URL (fnac.com, fr.fnac.be, fr.fnac.ch, fnac.pt). Every search row returns one.","on_invalid":"reject","example":"https://www.fnac.com/Casque-audio-sans-fil-SONY-Bluetooth-a-reduction-de-bruit-WH-CH720N-Noir/a17689644/w-4","aliases":["product_url"]},{"name":"product_id","type":"string","required":false,"description":"Instead of url: the Fnac product id (digits, as `product_id` in search rows) or the URL code (a17689644, mp50936938).","on_invalid":"reject","example":"17689644","aliases":["prid","product_code"]},{"name":"country","type":"enum","required":false,"description":"Fnac storefront. Prices come back in that storefront's currency (CHF for ch). Product ids are shared across storefronts but price, stock and sellers differ. A pasted product URL sets the country itself.","on_invalid":"reject","allowed_values":[{"value":"fr","label":"fnac.com — France, EUR"},{"value":"be","label":"fr.fnac.be — Belgium, EUR"},{"value":"ch","label":"fr.fnac.ch — Switzerland, CHF"},{"value":"pt","label":"fnac.pt — Portugal, EUR"},{"value":"es","label":"fnac.es — not available (returns MARKET_UNAVAILABLE)"}],"default":"fr","example":"fr"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 5).","on_invalid":"ignore","default":5,"minimum":1,"maximum":8}],"returns":"product{product_id, catalog, product_code, sku, ean, mpn, title, url, brand, contributors[], price, currency, struck_price, struck_price_type, discount_percent, eco_participation, copy_levy, price_includes_eco_fee, member_price, member_price_label, member_perk, store_pickup_price, store_pickup_label, store_pickup_only, store_availability, badges[], availability (headline offer: in_stock|out_of_stock|pre_order|limited), availability_text (the page's wording when Fnac sells the headline offer, else null), availability_type, fnac_availability, fnac_availability_type, fnac_availability_code (Fnac's own status, kept apart), stock_status, in_stock, is_preorder, condition, condition_grade, seller{name, id, type, is_fnac, location, rating, rating_scale, sales_count}, fulfilled_by, delivery{label, price, estimate}, other_offers[{condition, count, from_price}], lowest_new_offer_price, lowest_used_offer_price, page_offers[], rating, rating_count, rating_scale, energy_class, images[], video_url, description, specs[{name, value}], breadcrumb[{name, url}], category, country}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"17689644"}},{"name":"product/offers","description":"Every offer for one product (Fnac/Darty and marketplace sellers, new and used), by URL or product_id, with the site's condition filter and sorts: seller name + rating + review count, condition (new/refurbished/used + grade), price, shipping price, total price, delivery estimate and badges.","required_params":[],"optional_params":["url","product_id","country","condition","sort","page","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"A Fnac product URL (fnac.com, fr.fnac.be, fr.fnac.ch, fnac.pt). Every search row returns one.","on_invalid":"reject","example":"https://www.fnac.com/Casque-audio-sans-fil-SONY-Bluetooth-a-reduction-de-bruit-WH-CH720N-Noir/a17689644/w-4","aliases":["product_url"]},{"name":"product_id","type":"string","required":false,"description":"Instead of url: the Fnac product id (digits, as `product_id` in search rows) or the URL code (a17689644, mp50936938).","on_invalid":"reject","example":"17689644","aliases":["prid","product_code"]},{"name":"country","type":"enum","required":false,"description":"Fnac storefront. Prices come back in that storefront's currency (CHF for ch). Product ids are shared across storefronts but price, stock and sellers differ. A pasted product URL sets the country itself.","on_invalid":"reject","allowed_values":[{"value":"fr","label":"fnac.com — France, EUR"},{"value":"be","label":"fr.fnac.be — Belgium, EUR"},{"value":"ch","label":"fr.fnac.ch — Switzerland, CHF"},{"value":"pt","label":"fnac.pt — Portugal, EUR"},{"value":"es","label":"fnac.es — not available (returns MARKET_UNAVAILABLE)"}],"default":"fr","example":"fr"},{"name":"condition","type":"enum","required":false,"description":"Fnac's own offer filter.","on_invalid":"reject","allowed_values":[{"value":"all","label":"Every offer"},{"value":"new","label":"New offers only"},{"value":"used","label":"Used and refurbished offers only"}],"default":"all"},{"name":"sort","type":"enum","required":false,"description":"Order of the offers — the site's own orderings.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Fnac's default order"},{"value":"best_selling","label":"Seller sales count"},{"value":"price_asc","label":"Cheapest price + shipping first"},{"value":"price_desc","label":"Dearest price + shipping first"},{"value":"seller_rating","label":"Best-rated seller first"},{"value":"delivery","label":"Fastest delivery first"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Offer page, 1-based. Fnac serves 10 offers per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 5).","on_invalid":"ignore","default":5,"minimum":1,"maximum":8}],"returns":"offers[]{offer_id, seller{name, is_fnac_group, rating, rating_scale, rating_count}, condition, condition_label, condition_grade, price, currency, shipping_price, total_price, delivery_estimate, badges[]}, count, product_id, catalog, country, currency, filter_applied, sort_applied, cheapest_total_on_page, page, page_size","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"17689644"}},{"name":"product/reviews","description":"Customer reviews for a product, by URL or product_id, paged and sortable: score, title, text, author display name, date, purchase date, verified-purchase flag and helpful votes, plus the average rating and review count.","required_params":[],"optional_params":["url","product_id","country","sort","page","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"A Fnac product URL (fnac.com, fr.fnac.be, fr.fnac.ch, fnac.pt). Every search row returns one.","on_invalid":"reject","example":"https://www.fnac.com/Casque-audio-sans-fil-SONY-Bluetooth-a-reduction-de-bruit-WH-CH720N-Noir/a17689644/w-4","aliases":["product_url"]},{"name":"product_id","type":"string","required":false,"description":"Instead of url: the Fnac product id (digits, as `product_id` in search rows) or the URL code (a17689644, mp50936938).","on_invalid":"reject","example":"17689644","aliases":["prid","product_code"]},{"name":"country","type":"enum","required":false,"description":"Fnac storefront. Prices come back in that storefront's currency (CHF for ch). Product ids are shared across storefronts but price, stock and sellers differ. A pasted product URL sets the country itself.","on_invalid":"reject","allowed_values":[{"value":"fr","label":"fnac.com — France, EUR"},{"value":"be","label":"fr.fnac.be — Belgium, EUR"},{"value":"ch","label":"fr.fnac.ch — Switzerland, CHF"},{"value":"pt","label":"fnac.pt — Portugal, EUR"},{"value":"es","label":"fnac.es — not available (returns MARKET_UNAVAILABLE)"}],"default":"fr","example":"fr"},{"name":"sort","type":"enum","required":false,"description":"Order of the reviews.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Most recent first (Fnac's default)"},{"value":"most_helpful","label":"Most helpful first"},{"value":"rating_desc","label":"Best scores first"},{"value":"rating_asc","label":"Lowest scores first"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based. Fnac serves 10 reviews per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 5).","on_invalid":"ignore","default":5,"minimum":1,"maximum":8}],"returns":"reviews[]{id, score, title, content, author, date, purchase_date, verified_purchase, origin, trust_note, helpful_yes, helpful_no}, count, total_reviews, average_rating, rating_scale, page, total_pages, sort, page_notice, product_id, country","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{}}]},{"name":"forum","category":{"id":"other","title":"Other"},"title":"Forum Feed API — live, dated topic streams from developer, e-commerce, no-code and real-estate communities","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/forum/v1","spec_available":true,"actions":[{"name":"latest","description":"Newest topics from one forum, each with its creation time. Ask for the last 24 hours and you get exactly what people opened today.","required_params":["site"],"optional_params":["limit","since_hours","order_by"],"params":[{"name":"site","type":"enum","required":true,"description":"Which forum to read. Each one is a live community whose members discuss the tools they use and the problems they hit.","on_invalid":"reject","allowed_values":[{"value":"n8n","label":"community.n8n.io (automation)"},{"value":"make","label":"community.make.com (automation)"},{"value":"bubble","label":"forum.bubble.io (no-code)"},{"value":"retool","label":"community.retool.com (internal-tools)"},{"value":"shopify","label":"community.shopify.com (ecommerce)"},{"value":"biggerpockets","label":"www.biggerpockets.com (real-estate)"},{"value":"localsearchforum","label":"www.localsearchforum.com (local-seo)"},{"value":"ecommercefuel","label":"www.ecommercefuel.com (ecommerce)"},{"value":"uipath","label":"forum.uipath.com (rpa-automation)"},{"value":"frappe","label":"discuss.frappe.io (erp)"},{"value":"shopifydev","label":"community.shopify.dev (ecommerce-dev)"},{"value":"openai","label":"community.openai.com (ai-dev)"},{"value":"cursor","label":"forum.cursor.com (ai-dev)"},{"value":"huggingface","label":"discuss.huggingface.co (ai-ml)"},{"value":"discoursemeta","label":"meta.discourse.org (forum-ops)"},{"value":"streamlit","label":"discuss.streamlit.io (data-apps)"},{"value":"namepros","label":"www.namepros.com (domains)"},{"value":"dnforum","label":"www.dnforum.com (domains)"},{"value":"ebay","label":"community.ebay.com (ecommerce)"},{"value":"elitetrader","label":"www.elitetrader.com (trading)"},{"value":"trade2win","label":"www.trade2win.com (trading)"},{"value":"esri","label":"community.esri.com (gis-geodata)"},{"value":"betangel","label":"www.betangel.com (betting-trading)"},{"value":"plesk","label":"talk.plesk.com (hosting-ops)"},{"value":"etsy","label":"community.etsy.com (ecommerce)"},{"value":"powerbi","label":"community.fabric.microsoft.com (data-apps)"},{"value":"propertychat","label":"www.propertychat.com.au (real-estate)"},{"value":"affiliatefix","label":"www.affiliatefix.com (affiliate)"}],"example":"n8n","aliases":["forum","community"]},{"name":"limit","type":"integer","required":false,"description":"How many topics to return (1-200). Discourse forums page automatically to reach the number you ask for; RSS feeds return whatever the feed publishes, so the real count can be lower.","on_invalid":"ignore","default":30,"example":50,"minimum":1,"maximum":200},{"name":"since_hours","type":"integer","required":false,"description":"Only return topics created within this many hours. Use 24 for what was posted today. Filtering is on the creation time, not the last reply, so an old thread that got a new comment is not returned unless you also set order_by=bumped.","on_invalid":"ignore","example":24,"minimum":1,"maximum":8760,"aliases":["hours","within_hours"]},{"name":"order_by","type":"enum","required":false,"description":"Which timestamp to sort and filter by. Use created to find new questions; use bumped to find threads that are active again.","on_invalid":"reject","allowed_values":[{"value":"created","label":"when the topic was opened"},{"value":"bumped","label":"when it last got a reply"}],"default":"created","example":"created"}],"returns":"site, host, platform, vertical, count, topics[]{title, url, excerpt, created_at, bumped_at, age_hours, replies, views, category, author, id}. created_at and bumped_at are separate on purpose: a topic opened years ago can be bumped today, and treating the bump as the creation date makes an old thread look new.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"sites","description":"Every forum this API can read, with its platform and market.","required_params":[],"optional_params":[],"params":[],"returns":"count, verticals[], sites[]{site, host, platform, vertical}, not_covered[], measured_and_rejected{host: reason}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"topic","description":"The full text of one topic: the opening post and every reply.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"Full URL of a forum topic. Returns the opening post and the replies as plain text.","on_invalid":"reject","example":"https://community.n8n.io/t/welcome-to-the-n8n-community/1","aliases":["topic_url","link"]}],"returns":"url, title, created_at, post_count, posts[]{author, created_at, text}. Discourse forums only; an RSS-only forum returns INVALID_PARAM naming the sites that do support it.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search","description":"Search inside one forum. Results come back in the forum's own relevance order, not by date, so use latest when you need recency.","required_params":["site","query"],"optional_params":["limit"],"params":[{"name":"site","type":"enum","required":true,"description":"Which forum to read. Each one is a live community whose members discuss the tools they use and the problems they hit.","on_invalid":"reject","allowed_values":[{"value":"n8n","label":"community.n8n.io (automation)"},{"value":"make","label":"community.make.com (automation)"},{"value":"bubble","label":"forum.bubble.io (no-code)"},{"value":"retool","label":"community.retool.com (internal-tools)"},{"value":"shopify","label":"community.shopify.com (ecommerce)"},{"value":"biggerpockets","label":"www.biggerpockets.com (real-estate)"},{"value":"localsearchforum","label":"www.localsearchforum.com (local-seo)"},{"value":"ecommercefuel","label":"www.ecommercefuel.com (ecommerce)"},{"value":"uipath","label":"forum.uipath.com (rpa-automation)"},{"value":"frappe","label":"discuss.frappe.io (erp)"},{"value":"shopifydev","label":"community.shopify.dev (ecommerce-dev)"},{"value":"openai","label":"community.openai.com (ai-dev)"},{"value":"cursor","label":"forum.cursor.com (ai-dev)"},{"value":"huggingface","label":"discuss.huggingface.co (ai-ml)"},{"value":"discoursemeta","label":"meta.discourse.org (forum-ops)"},{"value":"streamlit","label":"discuss.streamlit.io (data-apps)"},{"value":"namepros","label":"www.namepros.com (domains)"},{"value":"dnforum","label":"www.dnforum.com (domains)"},{"value":"ebay","label":"community.ebay.com (ecommerce)"},{"value":"elitetrader","label":"www.elitetrader.com (trading)"},{"value":"trade2win","label":"www.trade2win.com (trading)"},{"value":"esri","label":"community.esri.com (gis-geodata)"},{"value":"betangel","label":"www.betangel.com (betting-trading)"},{"value":"plesk","label":"talk.plesk.com (hosting-ops)"},{"value":"etsy","label":"community.etsy.com (ecommerce)"},{"value":"powerbi","label":"community.fabric.microsoft.com (data-apps)"},{"value":"propertychat","label":"www.propertychat.com.au (real-estate)"},{"value":"affiliatefix","label":"www.affiliatefix.com (affiliate)"}],"example":"n8n","aliases":["forum","community"]},{"name":"query","type":"string","required":true,"description":"Words to search for inside the forum.","on_invalid":"reject","example":"api rate limit","aliases":["q","term","search"]},{"name":"limit","type":"integer","required":false,"description":"How many topics to return (1-200). Discourse forums page automatically to reach the number you ask for; RSS feeds return whatever the feed publishes, so the real count can be lower.","on_invalid":"ignore","default":30,"example":50,"minimum":1,"maximum":200}],"returns":"site, query, count, topics[]{title, url, created_at, excerpt, id}. Discourse forums only; an RSS-only forum returns INVALID_PARAM naming the sites that do support it.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"freelancer","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Freelancer.com API scraper — live freelance projects, freelancer & employer profiles, design contests, and the full skill/category taxonomy from Freelancer.com: budget, bids/proposals, skills, client country, ratings and portfolio, in clean PII-safe JSON. No login required.","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/freelancer/v1","spec_available":true,"actions":[{"name":"search","description":"Search live freelance PROJECTS on Freelancer.com by keyword, skills, category, budget/hourly band, freshness, country, and language; sorted by recency, bids, or bid-deadline. Returns title, description, budget{type,min,max,currency}, skills[], bids_count (proposals), posted_at, client_country, and url. No client PII.","required_params":[],"optional_params":["query","match","skills","category","project_types","budget_min","budget_max","posted_within","countries","languages","sort","limit","offset"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to match in the project title/description — e.g. 'logo design', 'React developer', 'mobile app'. Omit to browse the newest projects.","on_invalid":"ignore","example":"react native developer","aliases":["q","keyword","search"]},{"name":"match","type":"enum","required":false,"description":"Freelancer's own search treats a multi-word query as OR, so 'data scraping python' can return unrelated projects. 'any' re-ranks by word coverage without dropping anything; 'all' filters to projects matching every word.","on_invalid":"ignore","allowed_values":[{"value":"any","label":"Keep every upstream result, but rank the ones containing more of your query words first (default)."},{"value":"all","label":"Only return projects whose text contains every word of your query."}],"default":"any","example":"all","aliases":["match_mode"]},{"name":"skills","type":"array","required":false,"description":"Filter to projects requiring these skill IDs (use the `skills` action to resolve a skill name → id, e.g. 'PHP'→13). Multiple = OR.","on_invalid":"ignore","example":[13,9],"aliases":["job_ids","skill_ids"]},{"name":"category","type":"string","required":false,"description":"Top-level category SEO slug to scope the search (see the `categories` action for the full list, e.g. 'design-media-architecture').","on_invalid":"ignore","example":"websites-it-software","aliases":["cat"]},{"name":"project_types","type":"array","required":false,"description":"Restrict to 'fixed' (fixed-price) and/or 'hourly' projects. Omit for both.","on_invalid":"ignore","allowed_values":[{"value":"fixed","label":"Fixed-price projects"},{"value":"hourly","label":"Hourly projects"}],"example":["fixed"],"aliases":["type","types"]},{"name":"budget_min","type":"number","required":false,"description":"Minimum average project budget (in the project's own currency). For hourly projects this is the hourly-rate floor.","on_invalid":"ignore","example":250,"minimum":0,"aliases":["min_budget","min_avg_price"]},{"name":"budget_max","type":"number","required":false,"description":"Maximum average project budget (project currency). Pair with budget_min.","on_invalid":"ignore","example":2000,"minimum":0,"aliases":["max_budget","max_avg_price"]},{"name":"posted_within","type":"enum","required":false,"description":"Only projects posted within this window (server-side from_time filter). Great for a fresh-leads feed.","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"Last hour"},{"value":"24h","label":"Last 24 hours"},{"value":"3d","label":"Last 3 days"},{"value":"7d","label":"Last 7 days"},{"value":"30d","label":"Last 30 days"}],"example":"24h","aliases":["posted","freshness"]},{"name":"countries","type":"array","required":false,"description":"Filter by project country name(s) (e.g. 'United States', 'United Kingdom'). Multiple = OR. (Unauthenticated: client identity is not exposed — only the project's listed country is used.)","on_invalid":"ignore","example":["United States"],"aliases":["country"]},{"name":"languages","type":"array","required":false,"description":"Filter by the project's language code(s) (ISO-639, e.g. 'en', 'es').","on_invalid":"ignore","example":["en"],"aliases":["lang"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"time_updated","label":"Most recently updated (default)"},{"value":"time_submitted","label":"Newest first (just posted)"},{"value":"bid_count","label":"Most bids first"},{"value":"bid_enddate","label":"Bidding ending soonest"}],"default":"time_updated","example":"time_submitted","aliases":["sort_field","sort_by"]},{"name":"limit","type":"integer","required":false,"description":"How many projects to return (1–100). Use `offset` to page.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100,"aliases":["max_results","count"]},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (0–5000); skip this many results before returning `limit`.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":5000,"aliases":["skip","page_offset"]}],"returns":"projects[]{id, title, description, type, budget{type,min,max,currency}, skills[], status, bids_count, posted_at, client_country, featured, urgent, nda, seo_url, url}, total_count, returned, offset","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"python","limit":10}},{"name":"project","description":"Full detail for one Freelancer.com project by numeric id, project URL, or SEO slug — everything from `search` plus hourly-commitment, timeframe, qualifications, escrow status and selected-bid count. No client PII.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"The project to fetch: a numeric project id (40505996), a project URL (https://www.freelancer.com/projects/<slug>), or the SEO slug itself.","on_invalid":"ignore","example":"40505996","aliases":["project_id","url","seo_url"]}],"returns":"project{...all search fields..., detail{hourly_info, timeframe, qualifications[], is_escrow, selected_bids_count}}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"40675266"}},{"name":"user","description":"PUBLIC business profile of a Freelancer.com freelancer or employer by username/handle or id: display name, country, role, hourly rate, reputation (rating/reviews/completion/repeat-hire), skills, membership, badges, portfolio and registration year. PII (email/phone/legal-name/address) is NEVER returned.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"The freelancer/employer to fetch: a Freelancer username (fmsiddique) or a numeric user id. Returns the PUBLIC business profile only — no email / phone / legal-name / address (those are never returned).","on_invalid":"ignore","example":"fmsiddique","aliases":["user","user_id","id"]}],"returns":"user{id, username, display_name, role, country, hourly_rate, primary_currency, registration_year, preferred_freelancer, portfolio_count, membership, skills[], badges[], reputation{...}, employer_reputation{...}, portfolio[], profile_url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"contests","description":"Browse live OPEN Freelancer.com design/creative CONTESTS (accepting entries) — prize, currency, entry count, skills, and deadlines. Filter by keyword and skills.","required_params":[],"optional_params":["query","skills","limit","offset"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to match in the project title/description — e.g. 'logo design', 'React developer', 'mobile app'. Omit to browse the newest projects.","on_invalid":"ignore","example":"react native developer","aliases":["q","keyword","search"]},{"name":"skills","type":"array","required":false,"description":"Filter to projects requiring these skill IDs (use the `skills` action to resolve a skill name → id, e.g. 'PHP'→13). Multiple = OR.","on_invalid":"ignore","example":[13,9],"aliases":["job_ids","skill_ids"]},{"name":"limit","type":"integer","required":false,"description":"How many contests to return (1–50).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50,"aliases":["max_results","count"]},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (0–5000); skip this many results before returning `limit`.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":5000,"aliases":["skip","page_offset"]}],"returns":"contests[]{id, title, description, prize, currency, entry_count, skills[], status, guaranteed, featured, end_at, url}, total_count, returned, offset","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":8}},{"name":"skills","description":"Resolve a skill name to Freelancer.com skill id(s) (for search's `skills` filter), or list the most-popular skills with their active-project counts — the marketplace's skill taxonomy.","required_params":[],"optional_params":["query","limit"],"params":[{"name":"query","type":"string","required":false,"description":"Skill name (or fragment) to resolve to Freelancer skill id(s) you can feed to search's `skills` filter (e.g. 'php' → {id:13,name:'PHP'}). Omit to list the most-popular skills.","on_invalid":"ignore","example":"python","aliases":["q","name","skill"]},{"name":"limit","type":"integer","required":false,"description":"Max skills to return (1–200, default 60).","on_invalid":"ignore","default":60,"minimum":1,"maximum":200}],"returns":"skills[]{id, name, category, seo_url, active_project_count}, returned","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"php","limit":10}},{"name":"categories","description":"List the top-level Freelancer.com job categories (Websites/IT, Design, Writing, Mobile…) with their active-project counts — the browse taxonomy for scoping a search.","required_params":[],"optional_params":[],"params":[],"returns":"categories[]{id, name, seo_url, active_project_count}, returned","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"funda","category":{"id":"real-estate","title":"Real Estate"},"title":"Funda.nl API scraper — Netherlands real estate data: for-sale (koop) and for-rent (huur) property listings across every Dutch city, town and province with full filters (price EUR, rooms, surface m², plot, property type, sort), each listing with price, rooms, surface, energy label, construction type, photos, agent and address, a full per-listing detail record (description, all photos, complete Kenmerken spec table, year built), plus an area resolver that maps a Dutch place name to Funda's search area — no API key required","version":"1.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/funda/v1","spec_available":true,"actions":[{"name":"search","description":"Search Funda.nl property listings by area (for sale or for rent), with structured filters: price (EUR), rooms, living surface (m²), plot size, property type and sort. Each result carries price, object type, surface, rooms, bedrooms, energy label, construction type, address, agent and the primary photo. Paginate with page.","required_params":["area"],"optional_params":["contract","home_type","sort","page","price_min","price_max","rooms_min","rooms_max","surface_min","surface_max","plot_min","plot_max"],"params":[{"name":"area","type":"string","required":true,"description":"Where to search — a Dutch city, town or province ('amsterdam', 'rotterdam', 'utrecht', 'den-haag', 'noord-holland'). Free text is accepted and resolved to Funda's area-slug automatically (a province is resolved to its provincie- slug).","on_invalid":"reject","example":"amsterdam","aliases":["location","loc","city","where","selected_area"]},{"name":"contract","type":"enum","required":false,"description":"Listing type: for sale (koop) or for rent (huur). Rent prices are monthly.","on_invalid":"ignore","allowed_values":[{"value":"sale","label":"For sale (koop)"},{"value":"rent","label":"For rent (huur)"}],"default":"sale","example":"sale"},{"name":"home_type","type":"string","required":false,"description":"Property type — one or several comma-separated: house, apartment. e.g. 'house,apartment'.","on_invalid":"ignore","example":"apartment","aliases":["object_type","property_type"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Most relevant (default)"},{"value":"newest","label":"Most recently published"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"surface_high","label":"Largest living surface first"}],"default":"relevance","example":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (15 listings per page; paginate with page += 1).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"price_min","type":"integer","required":false,"description":"Minimum price in EUR (asking price for sale, monthly rent when contract=rent).","on_invalid":"ignore","example":250000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum price in EUR.","on_invalid":"ignore","example":500000,"minimum":0},{"name":"rooms_min","type":"integer","required":false,"description":"Minimum number of rooms.","on_invalid":"ignore","example":3,"minimum":1,"maximum":30,"aliases":["rooms"]},{"name":"rooms_max","type":"integer","required":false,"description":"Maximum number of rooms.","on_invalid":"ignore","example":6,"minimum":1,"maximum":30},{"name":"surface_min","type":"integer","required":false,"description":"Minimum living surface in square metres (m²).","on_invalid":"ignore","example":75,"minimum":0,"aliases":["floor_area_min"]},{"name":"surface_max","type":"integer","required":false,"description":"Maximum living surface in square metres (m²).","on_invalid":"ignore","example":150,"minimum":0,"aliases":["floor_area_max"]},{"name":"plot_min","type":"integer","required":false,"description":"Minimum plot (land) size in square metres (m²).","on_invalid":"ignore","example":100,"minimum":0},{"name":"plot_max","type":"integer","required":false,"description":"Maximum plot (land) size in square metres (m²).","on_invalid":"ignore","example":1000,"minimum":0}],"returns":"results[]{id (= global_id), global_id, tiny_id (the number inside `url`), url, contract, object_type, price{amount_eur, kind}, surface_m2, rooms, bedrooms, energy_label, construction_type, publish_date, address{city, postal_code, street, province}, agent{office_name, url}, primary_photo_url} + total + count + page + area + filters_applied","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"area":"amsterdam"}},{"name":"detail","description":"Full record for a single listing by its Funda detail URL or path (funda.nl/detail/koop/<city>/<slug>/<id>/). Returns price, address, description, every photo at full resolution, and the complete Kenmerken (specifications) table — surface, rooms, year built, energy label, heating, location and more.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"A Funda listing detail URL or path — the funda.nl/detail/koop/<city>/<slug>/<id>/ link from a search result's `url`. A full https URL or just the /detail/... path both work.","on_invalid":"reject","example":"https://www.funda.nl/detail/koop/amsterdam/appartement-kanaalstraat-140-h/44409331/","aliases":["listing_url","path","detail_url"]}],"returns":"listing{id (= global_id, joins onto a search row), global_id, tiny_id, canonical_id, url, name, object_type, description, price{amount_eur}, address{street, city, province, postal_code}, photos[], features[]{group, label, value}, year_built}. Funda runs three id spaces for one home — the global id, the short id in the link a search result gives you, and the id on the page's own canonical address — so all three come back under their own names and `id` is the one that matches search.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.funda.nl/detail/koop/amsterdam/appartement-albert-cuypstraat-94-3/44570149/"}},{"name":"area","description":"Area resolver — map a free-text Dutch place name to Funda's search area-slug and report the live listing count there. Use it to power a search box or to confirm the exact area the search will use (a city resolves to its slug, a province to its provincie- slug).","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text Dutch place to resolve — a city, town or province ('Amsterdam', 'Den Haag', 'Noord-Holland').","on_invalid":"reject","example":"Den Haag","aliases":["q","input","area","location","city"]}],"returns":"resolved{query, area_slug, label, total_for_sale} + matched (bool)","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":0},"example_params":{"query":"Den Haag"}}]},{"name":"generate","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Generation API — create PDFs, social/OG images, charts, QR codes, barcodes (EAN/UPC/Code-128/ISBN), favicon bundles, WiFi-join QR, code-snippet images, vCard (.vcf) and iCal (.ics) files from templates, inline HTML/CSS, or a single parameter set (stateless: input → ready-to-use asset)","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/generate/v1","spec_available":true,"actions":[{"name":"pdf_render","description":"Render a PDF from inline HTML/CSS (Jinja2) or a built-in template_name + data (invoice/receipt/certificate/report). WeasyPrint, fonts pinned, network-off. Output: inline base64 (≤8MB) or one-time download token.","required_params":[],"optional_params":["html","template_name","data","paper","filename","allow_hosts"],"params":[{"name":"html","type":"string","required":false,"description":"Inline HTML/CSS document (Jinja2 syntax allowed; rendered in a SANDBOXED env — no code execution). Mutually exclusive with template_name.","on_invalid":"ignore","example":"<h1>{{ title }}</h1>","aliases":["html_string"]},{"name":"template_name","type":"enum","required":false,"description":"Built-in PDF template (stateless — lives in engine, not stored). Supply `data` matching its contract (see template_list).","on_invalid":"reject","allowed_values":[{"value":"invoice","label":"invoice"},{"value":"receipt","label":"receipt"},{"value":"certificate","label":"certificate"},{"value":"report","label":"report"}],"aliases":["template"]},{"name":"data","type":"object","required":false,"description":"Template variables (JSON object) — merged into the template. For built-ins see each template's data_contract.","on_invalid":"ignore","example":{"title":"Hello"},"aliases":["vars","variables","context"]},{"name":"paper","type":"enum","required":false,"description":"Page size override for built-in templates.","on_invalid":"reject","allowed_values":[{"value":"A4","label":"A4"},{"value":"A4 landscape","label":"A4 landscape"},{"value":"Letter","label":"Letter"},{"value":"Letter landscape","label":"Letter landscape"},{"value":"A5","label":"A5"},{"value":"Legal","label":"Legal"}]},{"name":"filename","type":"string","required":false,"description":"Suggested download filename.","on_invalid":"ignore","example":"invoice-1042.pdf"},{"name":"allow_hosts","type":"string","required":false,"description":"Comma-separated https hosts whose images/CSS the PDF may fetch (default NONE = network-off, SSRF-safe). Use data: URIs to embed assets without this.","on_invalid":"ignore","example":"cdn.example.com"}],"returns":"file{file_b64|download_token, filename, content_type=application/pdf, bytes, pages_hint, delivery}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":4},"example_params":{"template_name":"invoice","data":{"company":{"name":"Acme"},"items":[{"description":"Widget","qty":2,"unit_price":9.5}],"subtotal":19.0,"total":19.0}}},{"name":"pdf_from_html","description":"Shortcut for rendering inline HTML directly to PDF — the same WeasyPrint engine as pdf_render; `html` is required.","required_params":["html"],"optional_params":["data","paper","filename","allow_hosts"],"params":[{"name":"html","type":"string","required":true,"description":"HTML/CSS document to render (Jinja2 allowed, sandboxed).","on_invalid":"reject","example":"<!doctype html><h1>Report</h1>","aliases":["html_string"]},{"name":"data","type":"object","required":false,"description":"Optional Jinja2 variables for the HTML.","on_invalid":"ignore","aliases":["vars"]},{"name":"paper","type":"enum","required":false,"description":"Page size (only if your CSS uses {{ paper }}).","on_invalid":"reject","allowed_values":[{"value":"A4","label":"A4"},{"value":"A4 landscape","label":"A4 landscape"},{"value":"Letter","label":"Letter"},{"value":"A5","label":"A5"},{"value":"Legal","label":"Legal"}]},{"name":"filename","type":"string","required":false,"description":"Suggested filename.","on_invalid":"ignore","example":"page.pdf"},{"name":"allow_hosts","type":"string","required":false,"description":"Allowlisted https hosts for remote assets (default none).","on_invalid":"ignore"}],"returns":"file{...,content_type=application/pdf}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":4},"example_params":{"html":"<!doctype html><h1>{{ t }}</h1>","data":{"t":"Hello"}}},{"name":"pdf_from_url","description":"Render a built-in or inline template to PDF, populating it with data fetched live from a JSON URL you supply. Useful when your invoice or report data lives at a public API endpoint — no manual copy-paste needed.","required_params":["data_url"],"optional_params":["template_name","html","data_path","paper","filename"],"params":[{"name":"data_url","type":"string","required":true,"description":"https URL returning a JSON object used as template `data`.","on_invalid":"reject","example":"https://api.example.com/invoice/1042.json","aliases":["url","json_url"]},{"name":"template_name","type":"enum","required":false,"description":"Built-in template to fill.","on_invalid":"reject","allowed_values":[{"value":"invoice","label":"invoice"},{"value":"receipt","label":"receipt"},{"value":"certificate","label":"certificate"},{"value":"report","label":"report"}],"aliases":["template"]},{"name":"html","type":"string","required":false,"description":"Inline HTML template (instead of template_name).","on_invalid":"ignore"},{"name":"data_path","type":"string","required":false,"description":"Optional dotted path into the fetched JSON to use as data (e.g. 'result.invoice').","on_invalid":"ignore","example":"data.invoice"},{"name":"paper","type":"enum","required":false,"description":"Page size override.","on_invalid":"reject","allowed_values":[{"value":"A4","label":"A4"},{"value":"A4 landscape","label":"A4 landscape"},{"value":"Letter","label":"Letter"},{"value":"A5","label":"A5"},{"value":"Legal","label":"Legal"}]},{"name":"filename","type":"string","required":false,"description":"Suggested filename.","on_invalid":"ignore"}],"returns":"file{...,content_type=application/pdf}, data_source","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":4},"example_params":{"data_url":"https://api.github.com/repos/python/cpython"}},{"name":"og_image","description":"Render a social / Open Graph card image (1200×630 default) from a built-in template or an inline layout spec. Supports automatic text-wrap and font scaling for long titles, colour gradients and badge overlays.","required_params":[],"optional_params":["template_name","layout","vars","width","height","format","filename"],"params":[{"name":"template_name","type":"enum","required":false,"description":"Built-in card layout. See template_list for each layout's vars.","on_invalid":"reject","allowed_values":[{"value":"og_basic","label":"og_basic"},{"value":"og_article","label":"og_article"},{"value":"og_quote","label":"og_quote"},{"value":"og_product","label":"og_product"}],"default":"og_basic","example":"og_basic","aliases":["template"]},{"name":"vars","type":"object","required":false,"description":"Card content (JSON): title/subtitle/badge/quote/author/site/name/tagline/cta + colors bg/bg2/fg/accent (hex).","on_invalid":"ignore","example":{"title":"Launch day","subtitle":"v1.0 is live","bg":"#0b1f3a","accent":"#38bdf8"},"aliases":["data","variables"]},{"name":"layout","type":"object","required":false,"description":"Inline layout override (JSON) — {size:[w,h], ...} for a fully custom card without a built-in template.","on_invalid":"ignore"},{"name":"width","type":"integer","required":false,"description":"Canvas width px.","on_invalid":"ignore","default":1200,"example":1200,"minimum":200,"maximum":4000},{"name":"height","type":"integer","required":false,"description":"Canvas height px.","on_invalid":"ignore","default":630,"example":630,"minimum":200,"maximum":4000},{"name":"format","type":"enum","required":false,"description":"Output image format.","on_invalid":"reject","allowed_values":[{"value":"png","label":"PNG (default)"},{"value":"jpeg","label":"JPEG"},{"value":"webp","label":"WebP"}],"default":"png","example":"png","aliases":["image_format"]},{"name":"filename","type":"string","required":false,"description":"Suggested filename.","on_invalid":"ignore","example":"og-card.png"}],"returns":"file{file_b64|download_token, content_type=image/png|jpeg|webp, bytes}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"template_name":"og_basic","vars":{"title":"Launch day","subtitle":"v1.0 is live"}}},{"name":"image_from_template","description":"Alias of og_image (explicit Bannerbear 'create image from template' naming). template_name + vars → PNG.","required_params":["template_name"],"optional_params":["vars","width","height","format","filename"],"params":[{"name":"template_name","type":"enum","required":true,"description":"Built-in image template.","on_invalid":"reject","allowed_values":[{"value":"og_basic","label":"og_basic"},{"value":"og_article","label":"og_article"},{"value":"og_quote","label":"og_quote"},{"value":"og_product","label":"og_product"}],"aliases":["template"]},{"name":"vars","type":"object","required":false,"description":"Template variables (see template_list).","on_invalid":"ignore","aliases":["data"]},{"name":"width","type":"integer","required":false,"description":"Canvas width px.","on_invalid":"ignore","default":1200,"example":1200,"minimum":200,"maximum":4000},{"name":"height","type":"integer","required":false,"description":"Canvas height px.","on_invalid":"ignore","default":630,"example":630,"minimum":200,"maximum":4000},{"name":"format","type":"enum","required":false,"description":"Output format.","on_invalid":"reject","allowed_values":[{"value":"png","label":"PNG (default)"},{"value":"jpeg","label":"JPEG"},{"value":"webp","label":"WebP"}],"default":"png","example":"png","aliases":["image_format"]},{"name":"filename","type":"string","required":false,"description":"Suggested filename.","on_invalid":"ignore"}],"returns":"file{...,content_type=image/*}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"template_name":"invoice"}},{"name":"image_from_url","description":"Render an image template with `vars` fetched from a JSON URL (proxy, SSRF-validated). Data-driven banner generation.","required_params":["data_url"],"optional_params":["template_name","layout","data_path","width","height","format","filename"],"params":[{"name":"data_url","type":"string","required":true,"description":"https URL returning a JSON object used as card `vars`.","on_invalid":"reject","example":"https://api.example.com/card.json","aliases":["url","json_url"]},{"name":"template_name","type":"enum","required":false,"description":"Built-in template.","on_invalid":"reject","allowed_values":[{"value":"og_basic","label":"og_basic"},{"value":"og_article","label":"og_article"},{"value":"og_quote","label":"og_quote"},{"value":"og_product","label":"og_product"}],"default":"og_basic","example":"og_basic","aliases":["template"]},{"name":"layout","type":"object","required":false,"description":"Inline layout override (JSON).","on_invalid":"ignore"},{"name":"data_path","type":"string","required":false,"description":"Dotted path into the JSON to use as vars.","on_invalid":"ignore"},{"name":"width","type":"integer","required":false,"description":"Canvas width px.","on_invalid":"ignore","default":1200,"example":1200,"minimum":200,"maximum":4000},{"name":"height","type":"integer","required":false,"description":"Canvas height px.","on_invalid":"ignore","default":630,"example":630,"minimum":200,"maximum":4000},{"name":"format","type":"enum","required":false,"description":"Output format.","on_invalid":"reject","allowed_values":[{"value":"png","label":"PNG (default)"},{"value":"jpeg","label":"JPEG"},{"value":"webp","label":"WebP"}],"default":"png","example":"png","aliases":["image_format"]},{"name":"filename","type":"string","required":false,"description":"Suggested filename.","on_invalid":"ignore"}],"returns":"file{...,content_type=image/*}, data_source","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"data_url":"https://api.github.com/repos/python/cpython","template_name":"og_basic"}},{"name":"chart","description":"Render a chart from a Chart.js-style spec — returns a PNG or SVG image. Supported chart types: bar, horizontal_bar, line, area, pie, doughnut, scatter and radar. Powered by a matplotlib backend.","required_params":["spec"],"optional_params":["format","filename"],"params":[{"name":"spec","type":"object","required":true,"description":"Chart spec: {type, data:{labels:[...], datasets:[{label, data:[...], color?}]}, options:{title, x_label, y_label, width, height, legend}}.","on_invalid":"ignore","example":{"type":"bar","data":{"labels":["Q1","Q2","Q3"],"datasets":[{"label":"Sales","data":[12,19,7]}]},"options":{"title":"Quarterly Sales"}},"aliases":["chart","config"]},{"name":"format","type":"enum","required":false,"description":"Output format.","on_invalid":"reject","allowed_values":[{"value":"png","label":"PNG raster (default)"},{"value":"svg","label":"SVG vector"}],"default":"png","example":"png","aliases":["image_format"]},{"name":"filename","type":"string","required":false,"description":"Suggested filename.","on_invalid":"ignore","example":"chart.png"}],"returns":"file{file_b64|download_token, content_type=image/png|svg+xml, bytes, chart_type}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"spec":{"type":"bar","data":{"labels":["A","B","C"],"datasets":[{"label":"x","data":[1,2,3]}]}}}},{"name":"chart_types","description":"List all supported chart types with a description of each. No input required.","required_params":[],"optional_params":[],"params":[],"returns":"types[{type, description}]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"batch_pdf","description":"Render up to 20 PDFs in one call. `jobs` = array of pdf_render param objects.","required_params":["jobs"],"optional_params":[],"params":[{"name":"jobs","type":"object","required":true,"description":"Array of ≤20 pdf_render param objects ({html|template_name, data, ...}).","on_invalid":"ignore","aliases":["items","documents"]}],"returns":"files[] (one delivery entry per job; per-job error captured inline), count","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":4},"example_params":null},{"name":"batch_image","description":"Render up to 20 images in one call. `jobs` = array of og_image param objects.","required_params":["jobs"],"optional_params":[],"params":[{"name":"jobs","type":"object","required":true,"description":"Array of ≤20 og_image param objects ({template_name|layout, vars, ...}).","on_invalid":"ignore","aliases":["items","images"]}],"returns":"files[] (one entry per job), count","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"template_list","description":"List built-in templates (PDF + image) with their data contracts. Stateless — there is NO stored-template management (create/upload/delete out of scope).","required_params":[],"optional_params":[],"params":[],"returns":"pdf[{name,description,data_contract}], og_image[{name,...,size}], note","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"validate_html","description":"Lint HTML/CSS for the PDF path WITHOUT rendering: flags remote resources that the SSRF-safe renderer will block, size, and tag-balance hints. Deterministic.","required_params":["html"],"optional_params":[],"params":[{"name":"html","type":"string","required":true,"description":"HTML document to lint.","on_invalid":"reject","example":"<h1>Hi</h1><img src='https://x/y.png'>"}],"returns":"valid, bytes, remote_resources[], tags_open, tags_close, issues[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":{"html":"<img src='https://evil.example/x.png'>"}},{"name":"health","description":"Renderer diagnostics — which backends (WeasyPrint/Pillow/matplotlib) are loadable and their versions. No input.","required_params":[],"optional_params":[],"params":[],"returns":"pdf_backend, weasyprint_version, image_backend, chart_backend, matplotlib_version, max_image_pixels","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"qr","description":"Generate a QR code (PNG or SVG) with custom fg/bg color, error-correction, and an OPTIONAL center logo fetched from logo_url (SSRF-guarded, via proxy). Use error_correction=h when embedding a logo so it stays scannable.","required_params":["data"],"optional_params":["format","error_correction","scale","border","color","background","logo_url","logo_size"],"params":[{"name":"data","type":"string","required":true,"description":"The content to encode: a URL, text, vCard string, etc.","on_invalid":"reject","example":"https://reefapi.com","aliases":["text","content","value"]},{"name":"format","type":"enum","required":false,"description":"Output image format. png supports logo-embed + colors; svg is scalable (logo-embed requires png).","on_invalid":"reject","allowed_values":[{"value":"png","label":"png"},{"value":"svg","label":"svg"}],"default":"png","example":"png","aliases":["kind","output"]},{"name":"error_correction","type":"enum","required":false,"description":"Recovery level: l~7% · m~15% · q~25% · h~30%. Use h with a logo.","on_invalid":"reject","allowed_values":[{"value":"l","label":"l"},{"value":"m","label":"m"},{"value":"q","label":"q"},{"value":"h","label":"h"}],"default":"m","example":"m","aliases":["ec","error"]},{"name":"scale","type":"integer","required":false,"description":"Module size in pixels.","on_invalid":"reject","default":8,"example":8,"minimum":1,"maximum":40,"aliases":["size"]},{"name":"border","type":"integer","required":false,"description":"Quiet-zone width in modules (spec default 4).","on_invalid":"reject","default":4,"example":4,"minimum":0,"maximum":20},{"name":"color","type":"string","required":false,"description":"Foreground (dark) color: #rrggbb / #rgb / basic CSS name.","on_invalid":"ignore","example":"#000000","aliases":["fg","foreground","dark"]},{"name":"background","type":"string","required":false,"description":"Background color, or 'transparent'.","on_invalid":"ignore","example":"#ffffff","aliases":["bg","light"]},{"name":"logo_url","type":"string","required":false,"description":"URL of a logo to embed in the center (PNG output only). Fetched through the proxy with a full SSRF guard.","on_invalid":"ignore","example":"https://reefapi.com/logo.png","aliases":["logo","image_url"]},{"name":"logo_size","type":"number","required":false,"description":"Logo size as a fraction of the QR side (0.05–0.30; >0.25 risks unscannable codes even at EC-H).","on_invalid":"reject","default":0.22,"example":0.22,"minimum":0.05,"maximum":0.3}],"returns":"png_base64+data_uri | svg, version, error_correction, designator, modules, is_micro, logo_embedded","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"data":"https://reefapi.com","format":"png"}},{"name":"barcode","description":"Generate a 1D barcode IMAGE (PNG or SVG) from data: EAN-13/8, UPC-A, Code-128, Code-39, ISBN-10/13, ITF, GS1-128, JAN, PZN, Codabar. Check digits are validated — a wrong EAN/UPC/ISBN check digit returns a structured error, not a silent fix.","required_params":["data","type"],"optional_params":["format","show_text","module_height","color","background"],"params":[{"name":"data","type":"string","required":true,"description":"The value to encode. For EAN/UPC supply the digits; the check digit is computed (or validated if you include it).","on_invalid":"reject","example":"5901234123457","aliases":["text","value","content"]},{"name":"type","type":"enum","required":true,"description":"Barcode symbology.","on_invalid":"reject","allowed_values":[{"value":"ean13","label":"ean13"},{"value":"ean8","label":"ean8"},{"value":"ean14","label":"ean14"},{"value":"upca","label":"upca"},{"value":"code128","label":"code128"},{"value":"code39","label":"code39"},{"value":"isbn13","label":"isbn13"},{"value":"isbn10","label":"isbn10"},{"value":"issn","label":"issn"},{"value":"itf","label":"itf"},{"value":"gs1_128","label":"gs1_128"},{"value":"jan","label":"jan"},{"value":"pzn","label":"pzn"},{"value":"codabar","label":"codabar"}],"example":"ean13","aliases":["symbology","format_type"]},{"name":"format","type":"enum","required":false,"description":"Output image format.","on_invalid":"reject","allowed_values":[{"value":"png","label":"png"},{"value":"svg","label":"svg"}],"default":"png","example":"png","aliases":["kind","output"]},{"name":"show_text","type":"boolean","required":false,"description":"Print the human-readable value under the bars.","on_invalid":"ignore","default":true,"example":true,"aliases":["write_text"]},{"name":"module_height","type":"number","required":false,"description":"Bar height in mm.","on_invalid":"reject","default":15.0,"example":15.0,"minimum":2.0,"maximum":100.0},{"name":"color","type":"string","required":false,"description":"Bar color (#rrggbb / name).","on_invalid":"ignore","example":"#000000","aliases":["fg","foreground"]},{"name":"background","type":"string","required":false,"description":"Background color (#rrggbb / name).","on_invalid":"ignore","example":"#ffffff","aliases":["bg"]}],"returns":"png_base64+data_uri | svg, type, full_code (with check digit), label, bytes; on bad check digit → error with the valid_code","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"data":"5901234123457","type":"ean13"}},{"name":"code_image","description":"Render a syntax-highlighted code snippet as a PNG with a carbon/ray.so-style window frame. 500+ languages (Pygments), 40+ themes, optional line numbers.","required_params":["code"],"optional_params":["language","theme","window_style","line_numbers","font_size"],"params":[{"name":"code","type":"string","required":true,"description":"The source code to render.","on_invalid":"reject","example":"def hello(name):\n    return f'Hi {name}'","aliases":["source","text"]},{"name":"language","type":"string","required":false,"description":"Language for highlighting (python, javascript, go, rust, sql…). Omit to auto-detect.","on_invalid":"ignore","example":"python","aliases":["lang"]},{"name":"theme","type":"enum","required":false,"description":"Color theme (Pygments style).","on_invalid":"reject","allowed_values":[{"value":"abap","label":"abap"},{"value":"algol","label":"algol"},{"value":"algol_nu","label":"algol_nu"},{"value":"arduino","label":"arduino"},{"value":"autumn","label":"autumn"},{"value":"borland","label":"borland"},{"value":"bw","label":"bw"},{"value":"coffee","label":"coffee"},{"value":"colorful","label":"colorful"},{"value":"default","label":"default"},{"value":"dracula","label":"dracula"},{"value":"emacs","label":"emacs"},{"value":"friendly","label":"friendly"},{"value":"friendly_grayscale","label":"friendly_grayscale"},{"value":"fruity","label":"fruity"},{"value":"github-dark","label":"github-dark"},{"value":"gruvbox-dark","label":"gruvbox-dark"},{"value":"gruvbox-light","label":"gruvbox-light"},{"value":"igor","label":"igor"},{"value":"inkpot","label":"inkpot"},{"value":"lightbulb","label":"lightbulb"},{"value":"lilypond","label":"lilypond"},{"value":"lovelace","label":"lovelace"},{"value":"manni","label":"manni"},{"value":"material","label":"material"},{"value":"monokai","label":"monokai"},{"value":"murphy","label":"murphy"},{"value":"native","label":"native"},{"value":"nord","label":"nord"},{"value":"nord-darker","label":"nord-darker"},{"value":"one-dark","label":"one-dark"},{"value":"paraiso-dark","label":"paraiso-dark"},{"value":"paraiso-light","label":"paraiso-light"},{"value":"pastie","label":"pastie"},{"value":"perldoc","label":"perldoc"},{"value":"rainbow_dash","label":"rainbow_dash"},{"value":"rrt","label":"rrt"},{"value":"sas","label":"sas"},{"value":"solarized-dark","label":"solarized-dark"},{"value":"solarized-light","label":"solarized-light"},{"value":"staroffice","label":"staroffice"},{"value":"stata-dark","label":"stata-dark"},{"value":"stata-light","label":"stata-light"},{"value":"tango","label":"tango"},{"value":"trac","label":"trac"},{"value":"vim","label":"vim"},{"value":"vs","label":"vs"},{"value":"xcode","label":"xcode"},{"value":"zenburn","label":"zenburn"}],"default":"monokai","example":"monokai","aliases":["style"]},{"name":"window_style","type":"enum","required":false,"description":"Frame: dark/darker/light window chrome with traffic-light dots, or 'none' for a bare image.","on_invalid":"reject","allowed_values":[{"value":"dark","label":"dark"},{"value":"darker","label":"darker"},{"value":"light","label":"light"},{"value":"none","label":"none"}],"default":"dark","example":"dark","aliases":["window"]},{"name":"line_numbers","type":"boolean","required":false,"description":"Show line numbers in the gutter.","on_invalid":"ignore","default":false,"example":false,"aliases":["line_nums"]},{"name":"font_size","type":"integer","required":false,"description":"Font size in px.","on_invalid":"reject","default":20,"example":20,"minimum":10,"maximum":48}],"returns":"png_base64+data_uri, language (resolved), theme, window_style, lines, bytes","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"code":"print('hello')","language":"python"}},{"name":"favicon","description":"Turn one source image into a complete favicon bundle: multi-resolution favicon.ico, a named PNG set (16→512 incl. apple-touch-icon + android-chrome), site.webmanifest, and the ready-to-paste <head> <link> snippet. Source from image_url (SSRF-guarded) or a base64 upload.","required_params":[],"optional_params":["image_url","image_base64"],"params":[{"name":"image_url","type":"string","required":false,"description":"URL of the source image (PNG/JPG/etc). Fetched through the proxy with a full SSRF guard. Provide this OR image_base64.","on_invalid":"ignore","example":"https://reefapi.com/logo.png","aliases":["url","logo_url"]},{"name":"image_base64","type":"string","required":false,"description":"Base64-encoded source image (data-URI prefix accepted). Use instead of image_url for direct uploads.","on_invalid":"ignore","aliases":["upload","image","file"]}],"returns":"favicon_ico{png_base64,sizes}, pngs{name:{size,png_base64}}, site_webmanifest{}, link_snippet (HTML), source{width,height}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"vcard","description":"Build a vCard (.vcf) contact file from contact fields (vCard 3.0 or 4.0). Returns the raw .vcf text + a base64 data-URI you can download or encode into a QR.","required_params":[],"optional_params":["full_name","first_name","last_name","organization","title","phone","email","url","address","note","birthday","version","as_qr"],"params":[{"name":"full_name","type":"string","required":false,"description":"Full display name (or supply first_name/last_name).","on_invalid":"ignore","example":"Jane Doe","aliases":["name","fn"]},{"name":"first_name","type":"string","required":false,"description":"Given name.","on_invalid":"ignore","example":"Jane","aliases":["given_name"]},{"name":"last_name","type":"string","required":false,"description":"Family name.","on_invalid":"ignore","example":"Doe","aliases":["family_name"]},{"name":"organization","type":"string","required":false,"description":"Company/organization.","on_invalid":"ignore","example":"Acme Inc","aliases":["org","company"]},{"name":"title","type":"string","required":false,"description":"Job title.","on_invalid":"ignore","example":"CTO","aliases":["job_title"]},{"name":"phone","type":"string","required":false,"description":"Phone number(s) — string or array.","on_invalid":"ignore","example":"+1-555-0100","aliases":["phones","tel"]},{"name":"email","type":"string","required":false,"description":"Email address(es) — string or array.","on_invalid":"ignore","example":"jane@acme.com","aliases":["emails"]},{"name":"url","type":"string","required":false,"description":"Website URL(s) — string or array.","on_invalid":"ignore","example":"https://acme.com","aliases":["website","urls"]},{"name":"address","type":"string","required":false,"description":"Postal address (single line).","on_invalid":"ignore","example":"1 Market St, San Francisco, CA"},{"name":"note","type":"string","required":false,"description":"Free-text note.","on_invalid":"ignore","example":"Met at the API conference"},{"name":"birthday","type":"string","required":false,"description":"Birthday (YYYY-MM-DD).","on_invalid":"ignore","example":"1990-05-01"},{"name":"version","type":"enum","required":false,"description":"vCard spec version (3.0 = widest compatibility, 4.0 = modern).","on_invalid":"reject","allowed_values":[{"value":"3.0","label":"3.0"},{"value":"4.0","label":"4.0"}],"default":"3.0","example":"3.0"},{"name":"as_qr","type":"boolean","required":false,"description":"Also return a scannable PNG QR of the vCard (add-to-contacts).","on_invalid":"ignore","default":false,"example":false}],"returns":"vcard (raw .vcf text), data_uri (text/vcard), full_name, version, field_count [+ qr_png_base64 if as_qr]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"full_name":"Jane Doe","email":"jane@acme.com","phone":"+15550100"}},{"name":"ical","description":"Build an iCalendar (.ics) event file from event fields (RFC 5545). Supports timed or all-day events, end-time or duration, location, description, organizer. Returns the raw .ics + a base64 data-URI.","required_params":["summary","start"],"optional_params":["end","duration_minutes","location","description","url","organizer_email","uid","as_qr"],"params":[{"name":"summary","type":"string","required":true,"description":"Event title.","on_invalid":"reject","example":"Team Standup","aliases":["title"]},{"name":"start","type":"string","required":true,"description":"Start: ISO-8601 (2026-07-01T15:00:00+00:00) or YYYY-MM-DD (all-day).","on_invalid":"reject","example":"2026-07-01T15:00:00Z","aliases":["start_time"]},{"name":"end","type":"string","required":false,"description":"End time (ISO-8601 or YYYY-MM-DD). Omit to use duration_minutes.","on_invalid":"ignore","example":"2026-07-01T15:30:00Z","aliases":["end_time"]},{"name":"duration_minutes","type":"integer","required":false,"description":"Event length in minutes (used when `end` is absent).","on_invalid":"reject","default":0,"example":0,"minimum":0,"maximum":100000},{"name":"location","type":"string","required":false,"description":"Event location.","on_invalid":"ignore","example":"Zoom / HQ Room 4"},{"name":"description","type":"string","required":false,"description":"Event details.","on_invalid":"ignore","example":"Daily sync","aliases":["note"]},{"name":"url","type":"string","required":false,"description":"Event URL.","on_invalid":"ignore","example":"https://meet.example.com/abc"},{"name":"organizer_email","type":"string","required":false,"description":"Organizer email.","on_invalid":"ignore","example":"host@acme.com"},{"name":"uid","type":"string","required":false,"description":"Stable UID (auto-generated if omitted).","on_invalid":"ignore"},{"name":"as_qr","type":"boolean","required":false,"description":"Also return a scannable PNG QR of the event.","on_invalid":"ignore","default":false,"example":false}],"returns":"ical (raw .ics text), data_uri (text/calendar), summary, all_day, uid, start [+ qr_png_base64 if as_qr]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"summary":"Standup","start":"2026-07-01T15:00:00Z","duration_minutes":30}},{"name":"wifi","description":"Generate a WiFi-join QR code (PNG/SVG) from network credentials — scan to connect, no typing. Encodes the standard WIFI: payload (WPA/WEP/open, hidden networks).","required_params":["ssid"],"optional_params":["password","encryption","hidden","format","scale","error_correction"],"params":[{"name":"ssid","type":"string","required":true,"description":"Network name (SSID).","on_invalid":"reject","example":"MyNetwork","aliases":["network","name"]},{"name":"password","type":"string","required":false,"description":"Network password (required unless encryption=nopass).","on_invalid":"ignore","example":"s3cret-pass","aliases":["pass","psk"]},{"name":"encryption","type":"enum","required":false,"description":"Security type: WPA (incl. WPA2/WPA3), WEP, or nopass (open network).","on_invalid":"reject","allowed_values":[{"value":"WPA","label":"WPA"},{"value":"WEP","label":"WEP"},{"value":"nopass","label":"nopass"}],"default":"WPA","example":"WPA"},{"name":"hidden","type":"boolean","required":false,"description":"Mark the network as hidden (non-broadcast SSID).","on_invalid":"ignore","default":false,"example":false},{"name":"format","type":"enum","required":false,"description":"Output image format.","on_invalid":"reject","allowed_values":[{"value":"png","label":"png"},{"value":"svg","label":"svg"}],"default":"png","example":"png","aliases":["kind"]},{"name":"scale","type":"integer","required":false,"description":"Module size in pixels.","on_invalid":"reject","default":8,"example":8,"minimum":1,"maximum":40,"aliases":["size"]},{"name":"error_correction","type":"enum","required":false,"description":"QR recovery level.","on_invalid":"reject","allowed_values":[{"value":"l","label":"l"},{"value":"m","label":"m"},{"value":"q","label":"q"},{"value":"h","label":"h"}],"default":"m","example":"m","aliases":["ec"]}],"returns":"png_base64+data_uri | svg, ssid, encryption, hidden, version, modules","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"ssid":"MyNet","password":"pw12345","encryption":"WPA"}},{"name":"batch","description":"Generate up to 50 small assets in one request. Items run independently — a bad item yields its own error entry, never fails the batch. NOTE: items that fetch a remote logo_url/image_url ARE supported and SSRF-guarded.","required_params":["items"],"optional_params":[],"params":[{"name":"items","type":"array","required":true,"description":"Up to 50 items, each {action, params} where action is qr|barcode|code_image|favicon|vcard|ical|wifi.","on_invalid":"reject","example":[{"action":"qr","params":{"data":"https://reefapi.com"}},{"action":"barcode","params":{"data":"5901234123457","type":"ean13"}}],"aliases":["calls","requests"]}],"returns":"count, ok_count, results[{action, ok, data|error}]","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"items":[{"action":"qr","params":{"data":"x"}},{"action":"barcode","params":{"data":"5901234123457","type":"ean13"}},{"action":"barcode","params":{"data":"bad","type":"ean13"}}]}}]},{"name":"geo-intel","category":{"id":"utilities","title":"Utilities & AI"},"title":"AI Search Visibility API (GEO) — measure a website's AI citability: AI-crawler access (robots.txt), llms.txt, schema.org structured data and meta signals → a 0-100 AI-readiness score with ranked fixes","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/geo-intel/v1","spec_available":true,"actions":[{"name":"check","description":"Full AI-readiness report for a URL: AI-crawler access map + llms.txt + schema + meta + 0-100 score + ranked fix recommendations. One call, everything.","required_params":["url"],"optional_params":["path","bots","follow_redirects"],"params":[{"name":"url","type":"string","required":true,"description":"The site to analyse. Accepts a full URL (https://example.com/page) or a bare domain (example.com → https:// assumed). Only http/https; private/internal/metadata targets are SSRF-blocked. Alias: domain.","on_invalid":"reject","example":"https://docs.anthropic.com","aliases":["domain","site","website"]},{"name":"path","type":"string","required":false,"description":"The path to evaluate robots.txt access against (default '/'). Use a real content path (e.g. /blog/post) to test whether AI bots may fetch THAT page.","on_invalid":"ignore","default":"/","example":"/"},{"name":"bots","type":"array","required":false,"description":"Optional subset of AI-bot tokens to report (comma-separated or array). Omit for the full 50+ bot map. Unknown tokens are still checked against robots.txt verbatim.","on_invalid":"ignore","example":["GPTBot","ClaudeBot","PerplexityBot"]},{"name":"follow_redirects","type":"boolean","required":false,"description":"Follow redirects (e.g. http→https, apex→www) before analysing the final URL (default true). Each hop is independently SSRF-validated.","on_invalid":"ignore","default":true,"example":true}],"returns":"url, final_url, score{score,grade,breakdown,recommendations}, ai_crawlers{bots[],summary}, llms_txt{present,valid,sections,links}, structured_data{types,citable_types,...}, meta{canonical,og,robots_meta,...}, extractability{text_ratio,likely_js_app}, sitemaps[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://docs.anthropic.com"}},{"name":"crawlers","description":"AI-crawler access map from robots.txt: per-bot allow/block (Google longest-match), operator, AI engine, purpose (search/training/agent), crawl-delay, sitemaps.","required_params":["url"],"optional_params":["path","bots"],"params":[{"name":"url","type":"string","required":true,"description":"The site to analyse. Accepts a full URL (https://example.com/page) or a bare domain (example.com → https:// assumed). Only http/https; private/internal/metadata targets are SSRF-blocked. Alias: domain.","on_invalid":"reject","example":"https://docs.anthropic.com","aliases":["domain","site","website"]},{"name":"path","type":"string","required":false,"description":"The path to evaluate robots.txt access against (default '/'). Use a real content path (e.g. /blog/post) to test whether AI bots may fetch THAT page.","on_invalid":"ignore","default":"/","example":"/"},{"name":"bots","type":"array","required":false,"description":"Optional subset of AI-bot tokens to report (comma-separated or array). Omit for the full 50+ bot map. Unknown tokens are still checked against robots.txt verbatim.","on_invalid":"ignore","example":["GPTBot","ClaudeBot","PerplexityBot"]}],"returns":"robots_status, bots[] (token, operator, engine, category, allowed, rule, critical, cites), summary{total,allowed,blocked,critical_blocked}, blanket_block_all, sitemaps[], crawl_delays{}, parse_errors[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.nytimes.com"}},{"name":"llms_txt","description":"Detect + parse + validate /llms.txt (and /llms-full.txt) — the emerging AI-context standard. Content-type sniffed so an HTML 404 can't masquerade as a real file.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"The site to analyse. Accepts a full URL (https://example.com/page) or a bare domain (example.com → https:// assumed). Only http/https; private/internal/metadata targets are SSRF-blocked. Alias: domain.","on_invalid":"reject","example":"https://docs.anthropic.com","aliases":["domain","site","website"]}],"returns":"llms_txt{present,valid,title,sections[],links_sample[],findings[],bytes}, llms_full_txt{present,bytes}, recommendations[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://stripe.com"}},{"name":"schema","description":"Extract and classify schema.org structured data (JSON-LD and @graph) for AI citability signals: Organization, Article, FAQ, BreadcrumbList, Product, Speakable — plus microdata and RDFa presence.","required_params":["url"],"optional_params":["follow_redirects"],"params":[{"name":"url","type":"string","required":true,"description":"The site to analyse. Accepts a full URL (https://example.com/page) or a bare domain (example.com → https:// assumed). Only http/https; private/internal/metadata targets are SSRF-blocked. Alias: domain.","on_invalid":"reject","example":"https://docs.anthropic.com","aliases":["domain","site","website"]},{"name":"follow_redirects","type":"boolean","required":false,"description":"Follow redirects (e.g. http→https, apex→www) before analysing the final URL (default true). Each hop is independently SSRF-validated.","on_invalid":"ignore","default":true,"example":true}],"returns":"structured_data{jsonld_blocks,types[],citable_types[],high_value_types[],has_organization,has_article,has_faq,has_breadcrumb,has_speakable,has_microdata,has_rdfa}, recommendations[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.nytimes.com"}},{"name":"score","description":"Composite AI-readiness score (0-100) + transparent per-pillar breakdown (crawler_access 40 / structured_data 25 / llms_txt 15 / meta 12 / crawlability 8) + ranked recommendations.","required_params":["url"],"optional_params":["path","follow_redirects"],"params":[{"name":"url","type":"string","required":true,"description":"The site to analyse. Accepts a full URL (https://example.com/page) or a bare domain (example.com → https:// assumed). Only http/https; private/internal/metadata targets are SSRF-blocked. Alias: domain.","on_invalid":"reject","example":"https://docs.anthropic.com","aliases":["domain","site","website"]},{"name":"path","type":"string","required":false,"description":"The path to evaluate robots.txt access against (default '/'). Use a real content path (e.g. /blog/post) to test whether AI bots may fetch THAT page.","on_invalid":"ignore","default":"/","example":"/"},{"name":"follow_redirects","type":"boolean","required":false,"description":"Follow redirects (e.g. http→https, apex→www) before analysing the final URL (default true). Each hop is independently SSRF-validated.","on_invalid":"ignore","default":true,"example":true}],"returns":"score, grade (A-F), breakdown{pillar:{score,max}}, recommendations[] (priority, pillar, points_recoverable, fix), signals{} (the raw inputs)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://github.com"}},{"name":"batch","description":"Score up to 20 sites concurrently in one call (each independently SSRF-guarded). Returns a compact score+grade per URL.","required_params":["urls"],"optional_params":[],"params":[{"name":"urls","type":"array","required":true,"description":"List of sites to score in one call (max 20); each is independently SSRF-guarded and fetched concurrently.","on_invalid":"reject","example":["https://stripe.com","https://github.com"]}],"returns":"results[] (url, ok, score, grade, critical_blocked[], llms_txt_present, has_structured_data) , count, ok_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"urls":["https://stripe.com","https://github.com"]}}]},{"name":"geo-postal","category":{"id":"utilities","title":"Utilities & AI"},"title":"Postal Code & Geocoding API — reverse-geocode coordinates or postal codes to administrative regions worldwide: country, state/county, ZIP/PIN, FIPS, NUTS/LAU codes and census GEOIDs","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/geo-postal/v1","spec_available":true,"actions":[{"name":"eu_regions","description":"Coordinates OR postal code → EU/EFTA/candidate statistical regions: country, NUTS 0-3 hierarchy, LAU commune (GISCO NUTS-2024 + LAU-2024 + TERCET pc2025).","required_params":[],"optional_params":["lat","lon","postal_code","country","include_geometry"],"params":[{"name":"lat","type":"number","required":false,"description":"WGS84 latitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":52.52,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":false,"description":"WGS84 longitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":13.405,"minimum":-180,"maximum":180,"aliases":["lng","longitude"]},{"name":"postal_code","type":"string","required":false,"description":"Postal code to resolve. Spaces/dashes are ignored, case-insensitive (e.g. '10115', '75001', 'SW1A1AA').","on_invalid":"reject","example":"10115","aliases":["postcode","zip","zip_code","pcode"]},{"name":"country","type":"string","required":false,"description":"ISO-3166 alpha-2 country code (e.g. DE, FR, TR, IN, US). Greece accepts GR or EL.","on_invalid":"ignore","example":"DE","aliases":["country_code","cc"]},{"name":"include_geometry","type":"boolean","required":false,"description":"If true, include the (simplified) boundary polygon as GeoJSON. Default false — geometries are large; lookups never depend on this.","on_invalid":"ignore","default":false,"example":false,"aliases":["geometry"]}],"returns":"found, country{code,name}, nuts0..nuts3{code,name}, lau{gisco_id,lau_id,name}, postal_places[] (postal input), normalized_input, match_type, confidence, low_confidence, source, dataset_version (+geometry if requested)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"lat":52.52,"lon":13.405}},{"name":"tr_regions","description":"Türkiye: koordinat, posta kodu VEYA il/ilçe/mahalle adı → resmî idari hiyerarşi (il+plaka, ilçe, mahalle/köy, posta kodları) + NUTS-TR istatistik kodları.","required_params":[],"optional_params":["lat","lon","postal_code","province","district","neighborhood","include_geometry"],"params":[{"name":"lat","type":"number","required":false,"description":"WGS84 latitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":52.52,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":false,"description":"WGS84 longitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":13.405,"minimum":-180,"maximum":180,"aliases":["lng","longitude"]},{"name":"postal_code","type":"string","required":false,"description":"Postal code to resolve. Spaces/dashes are ignored, case-insensitive (e.g. '10115', '75001', 'SW1A1AA').","on_invalid":"reject","example":"34710","aliases":["postcode","zip","zip_code","pcode"]},{"name":"province","type":"string","required":false,"description":"Province (il) name, e.g. İstanbul, Ankara, İzmir. Turkish characters optional (istanbul works).","on_invalid":"reject","example":"İstanbul","aliases":["il","city"]},{"name":"district","type":"string","required":false,"description":"District (ilçe) name within the province.","on_invalid":"reject","example":"Kadıköy","aliases":["ilce"]},{"name":"neighborhood","type":"string","required":false,"description":"Neighborhood (mahalle) or village (köy) name.","on_invalid":"reject","example":"Caferağa","aliases":["mahalle","koy","village"]},{"name":"include_geometry","type":"boolean","required":false,"description":"If true, include the (simplified) boundary polygon as GeoJSON. Default false — geometries are large; lookups never depend on this.","on_invalid":"ignore","default":false,"example":false,"aliases":["geometry"]}],"returns":"found, province{id,plate,name,nuts1..3,region,population,coordinates,phone_area_codes,is_metropolitan}, district{id,name,population}, matches[] (mahalle/köy w/ postal_code,population,kind), postal_codes[], normalized_input, match_type, confidence, source, dataset_version","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"lat":41.0082,"lon":28.9784}},{"name":"in_postal","description":"India: PIN code OR post-office name → post offices, district, state, lat/lon centroid (official All-India Pincode Directory).","required_params":[],"optional_params":["pincode","office","state","district"],"params":[{"name":"pincode","type":"string","required":false,"description":"6-digit Indian PIN code, e.g. 400001 (Mumbai GPO).","on_invalid":"reject","example":"400001","aliases":["pin","postal_code","zip"]},{"name":"office","type":"string","required":false,"description":"Post-office name to search (exact or prefix), when the PIN is unknown.","on_invalid":"reject","example":"Connaught Place","aliases":["post_office","q"]},{"name":"state","type":"string","required":false,"description":"Optional state filter for office search.","on_invalid":"ignore","example":"MAHARASHTRA"},{"name":"district","type":"string","required":false,"description":"Optional district filter for office search.","on_invalid":"ignore","example":"MUMBAI"}],"returns":"found, pincode, offices[]{name,type,delivery,district,state,lat,lon}, district, state, centroid{lat,lon}, office_count, normalized_input, match_type, confidence, source, dataset_version","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"pincode":"400001"}},{"name":"us_regions","description":"United States: ZIP code OR coordinates → state, county + 5-digit county FIPS, place, ZIP centroid, and the CGAZ state/county boundary. Built WITHOUT census.gov (GeoNames ZIP directory carries county FIPS; ANSI state-FIPS is a public-domain constant). For census-grade ZCTA + tract/block GEOIDs use the `us_census` action (TIGER/ZCTA polygons + Census Geocoder, gov-pending/91).","required_params":[],"optional_params":["postal_code","lat","lon","include_geometry"],"params":[{"name":"postal_code","type":"string","required":false,"description":"Postal code to resolve. Spaces/dashes are ignored, case-insensitive (e.g. '10115', '75001', 'SW1A1AA').","on_invalid":"reject","example":"10001","aliases":["postcode","zip","zip_code","pcode"]},{"name":"lat","type":"number","required":false,"description":"WGS84 latitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":52.52,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":false,"description":"WGS84 longitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":13.405,"minimum":-180,"maximum":180,"aliases":["lng","longitude"]},{"name":"include_geometry","type":"boolean","required":false,"description":"If true, include the (simplified) boundary polygon as GeoJSON. Default false — geometries are large; lookups never depend on this.","on_invalid":"ignore","default":false,"example":false,"aliases":["geometry"]}],"returns":"found, zip, place, state{code,name,fips}, county{name,fips}, centroid{lat,lon}, boundary{adm1,adm2} (coord mode), census{zcta,tract,...} when the TIGER extension is loaded else census_pending (see us_census), normalized_input, match_type, confidence, source, dataset_version","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"postal_code":"10001"}},{"name":"us_census","description":"United States census-grade geocode: street ADDRESS, ZIP, or coordinates → state, county (+5-digit FIPS), census TRACT GEOID, census BLOCK GEOID, ZCTA, and tract/ZCTA land-area — with match_type + confidence. Coordinates/ZIP resolve the ZCTA offline from pinned TIGER/ZCTA-2024 polygons (zero egress); the authoritative tract/block GEOID + address geocoding come from the US Census Geocoder, cached. US-Gov public domain (Title 17 §105).","required_params":[],"optional_params":["address","postal_code","lat","lon","include_geometry","live"],"params":[{"name":"address","type":"string","required":false,"description":"One-line US street address to geocode to its census tract/block (uses the Census Geocoder; rooftop interpolation, not a deliverability/CASS claim).","on_invalid":"reject","example":"1600 Pennsylvania Ave NW, Washington, DC 20500","aliases":["street","q"]},{"name":"postal_code","type":"string","required":false,"description":"Postal code to resolve. Spaces/dashes are ignored, case-insensitive (e.g. '10115', '75001', 'SW1A1AA').","on_invalid":"reject","example":"10001","aliases":["postcode","zip","zip_code","pcode"]},{"name":"lat","type":"number","required":false,"description":"WGS84 latitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":52.52,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":false,"description":"WGS84 longitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":13.405,"minimum":-180,"maximum":180,"aliases":["lng","longitude"]},{"name":"include_geometry","type":"boolean","required":false,"description":"If true, include the (simplified) boundary polygon as GeoJSON. Default false — geometries are large; lookups never depend on this.","on_invalid":"ignore","default":false,"example":false,"aliases":["geometry"]},{"name":"live","type":"boolean","required":false,"description":"If true (default) and an exact tract/block GEOID is needed, query the Census Geocoder (cached). Set false for offline-only (ZCTA polygon + nearest-tract centroid) with no .gov call.","on_invalid":"ignore","default":true,"example":true}],"returns":"found, input_kind, zcta{geoid,land_sqmi,water_sqmi}, state{code,name,fips}, county{name,fips}, tract{geoid,number,land_sqmi,match}, block{geoid} (live), matched_address (address mode), coordinates{lat,lon}, source, match_type, confidence, low_confidence, normalized_input, dataset_version (+geometry if requested)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":3},"example_params":{"lat":40.7505,"lon":-73.9967,"live":true}},{"name":"admin_boundary","description":"GLOBAL coordinates → administrative boundary hierarchy ADM0/ADM1/ADM2 (geoBoundaries CGAZ composite, CC-BY 4.0).","required_params":["lat","lon"],"optional_params":["levels","include_geometry"],"params":[{"name":"lat","type":"number","required":true,"description":"WGS84 latitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":52.52,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":true,"description":"WGS84 longitude of the point to resolve (decimal degrees).","on_invalid":"reject","example":13.405,"minimum":-180,"maximum":180,"aliases":["lng","longitude"]},{"name":"levels","type":"string","required":false,"description":"Comma-separated geoBoundaries levels to resolve: 0 (country), 1 (state/region), 2 (county/municipality). Default all three.","on_invalid":"ignore","default":"0,1,2","example":"0,1,2"},{"name":"include_geometry","type":"boolean","required":false,"description":"If true, include the (simplified) boundary polygon as GeoJSON. Default false — geometries are large; lookups never depend on this.","on_invalid":"ignore","default":false,"example":false,"aliases":["geometry"]}],"returns":"found, adm0{id,name,iso3}, adm1{id,name,iso3}, adm2{id,name,iso3} (each w/ own match_type+confidence), normalized_input, match_type, confidence, source, dataset_version (+geometry if requested)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"lat":35.6762,"lon":139.6503}},{"name":"postal_lookup","description":"country + postal code → region metadata for ~100 countries (GeoNames postal directory) with country-specific enrichment (EU→NUTS3, TR→mahalle, IN→offices).","required_params":["country","postal_code"],"optional_params":[],"params":[{"name":"country","type":"string","required":true,"description":"ISO-3166 alpha-2 country code (e.g. DE, FR, TR, IN, US). Greece accepts GR or EL.","on_invalid":"ignore","example":"DE","aliases":["country_code","cc"]},{"name":"postal_code","type":"string","required":true,"description":"Postal code to resolve. Spaces/dashes are ignored, case-insensitive (e.g. '10115', '75001', 'SW1A1AA').","on_invalid":"reject","example":"75001","aliases":["postcode","zip","zip_code","pcode"]}],"returns":"found, country, postal_code, places[]{name,admin1(+code),admin2(+code),admin3(+code),lat,lon,accuracy}, nuts3 (EU), tr_matches[] (TR), in_offices[] (IN), coverage_note, normalized_input, match_type, confidence, source, dataset_version","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"FR","postal_code":"75001"}},{"name":"postal_search","description":"country + city/place → its postal codes (zip-by-city); country + admin1 only → that state's codes (zip-by-state); country only → the country's states/regions list (GeoNames directory).","required_params":["country"],"optional_params":["place","admin1","limit"],"params":[{"name":"country","type":"string","required":true,"description":"ISO-3166 alpha-2 country code (e.g. DE, FR, TR, IN, US). Greece accepts GR or EL.","on_invalid":"ignore","example":"DE","aliases":["country_code","cc"]},{"name":"place","type":"string","required":false,"description":"Place/city name to list postal codes for. Accent and case-insensitive (munchen finds München). Omit it and pass only admin1 for a state-wide listing; omit both for the country's admin-1 (state/region) list.","on_invalid":"reject","example":"München","aliases":["city","q"]},{"name":"admin1","type":"string","required":false,"description":"Optional admin-1 (state/region) filter, name or code.","on_invalid":"ignore","example":"Bayern","aliases":["state","region"]},{"name":"limit","type":"integer","required":false,"description":"Max codes to return (1-100, default 50).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":100}],"returns":"found, country, place, postal_codes[]{postal_code,name,admin1,admin2,lat,lon}, code_count, truncated — OR (country-only mode) regions[]{name,code,postal_code_count}; normalized_input, match_type, confidence, source, dataset_version","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"DE","place":"München","limit":10}},{"name":"postal_distance","description":"Great-circle distance between two postal codes (same or different countries).","required_params":["country","from","to"],"optional_params":["to_country","unit"],"params":[{"name":"country","type":"string","required":true,"description":"ISO-3166 alpha-2 country code (e.g. DE, FR, TR, IN, US). Greece accepts GR or EL.","on_invalid":"ignore","example":"DE","aliases":["country_code","cc"]},{"name":"from","type":"string","required":true,"description":"Origin postal code (in `country`).","on_invalid":"reject","example":"10001","aliases":["from_postal","postal_code1"]},{"name":"to","type":"string","required":true,"description":"Destination postal code (in `to_country`, default same country).","on_invalid":"reject","example":"90210","aliases":["to_postal","postal_code2"]},{"name":"to_country","type":"string","required":false,"description":"Destination ISO-3166 alpha-2 country if different.","on_invalid":"ignore","example":"US"},{"name":"unit","type":"enum","required":false,"description":"Distance unit (km default, mi).","on_invalid":"ignore","allowed_values":[{"value":"km","label":"kilometers"},{"value":"mi","label":"miles"}],"default":"km","example":"km"}],"returns":"found, distance, unit, from{postal_code,name,lat,lon}, to{postal_code,name,lat,lon}, method ('haversine_centroid' — postal CENTROIDS, not rooftop), normalized_input, match_type, confidence, source, dataset_version","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US","from":"10001","to":"90210"}},{"name":"postal_radius","description":"All postal codes within a radius of a postal code (centroid-based).","required_params":["country","postal_code","radius_km"],"optional_params":["limit"],"params":[{"name":"country","type":"string","required":true,"description":"ISO-3166 alpha-2 country code (e.g. DE, FR, TR, IN, US). Greece accepts GR or EL.","on_invalid":"ignore","example":"DE","aliases":["country_code","cc"]},{"name":"postal_code","type":"string","required":true,"description":"Postal code to resolve. Spaces/dashes are ignored, case-insensitive (e.g. '10115', '75001', 'SW1A1AA').","on_invalid":"reject","example":"10115","aliases":["postcode","zip","zip_code","pcode"]},{"name":"radius_km","type":"number","required":true,"description":"Search radius in kilometres (0.1-100).","on_invalid":"reject","example":5,"minimum":0.1,"maximum":100,"aliases":["radius"]},{"name":"limit","type":"integer","required":false,"description":"Max codes to return, nearest first (1-100).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":100}],"returns":"found, center{postal_code,name,lat,lon}, results[]{postal_code,name,admin1,distance_km}, result_count, truncated, normalized_input, match_type, confidence, source, dataset_version","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"DE","postal_code":"10115","radius_km":3}},{"name":"batch","description":"Resolve up to 50 mixed lookups in one call (cheap local queries).","required_params":["items"],"optional_params":[],"params":[{"name":"items","type":"array","required":true,"description":"Up to 50 lookup items. Each is an object with an `action` (eu_regions|tr_regions|in_postal|admin_boundary|postal_lookup) plus that action's params. Items resolve independently — one bad item never fails the batch.","on_invalid":"reject","example":[{"action":"eu_regions","lat":52.52,"lon":13.405},{"action":"postal_lookup","country":"FR","postal_code":"75001"}],"aliases":["inputs","batch"]}],"returns":"count, found_count, results[] (each = the single-action record, tagged with its action)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"items":[{"action":"eu_regions","lat":48.8566,"lon":2.3522},{"action":"postal_lookup","country":"TR","postal_code":"34710"}]}}]},{"name":"getir","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Getir API scraper — Getir and GetirBüyük (Turkey) quick-commerce grocery: find products, read the full product record with price, struck price, unit price, ingredients, nutrition table and product-safety details, browse categories and discounted products. Prices in TRY. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/getir/v1","spec_available":true,"actions":[{"name":"search","description":"Find Getir products by keyword across the public catalogue (all 17 categories, or one with `category`). Each row has price, struck-through price and discount, unit price, pack size, brand, shelf, images and diet tags. Filter by brand, price range or discounted only; sort by match, price, discount or unit price. Choose the Getir or GetirBüyük catalogue with `service`.","required_params":["query"],"optional_params":["service","category","brand","discounted_only","min_price","max_price","sort","page","page_size","include_hidden","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Words to find in product names, brands, pack sizes, diet tags and shelf names. Turkish or ASCII spelling both match ('cay' finds 'Çay'); every word must match.","on_invalid":"reject","example":"kuzeyden","aliases":["q","keyword"]},{"name":"service","type":"enum","required":false,"description":"Which Getir grocery catalogue to read. They are separate price lists: the same product usually costs a different amount on each.","on_invalid":"reject","allowed_values":[{"value":"getir","label":"Getir quick market (default)"},{"value":"buyuk","label":"GetirBüyük large-basket market"}],"default":"getir"},{"name":"category","type":"string","required":false,"description":"Limit to one top category: its id or slug (from `categories`), its exact name ('Su & İçecek') or its getir.com URL. One category is one upstream read; without it all 17 are read.","on_invalid":"reject","example":"551430043427d5010a3a5c5e","aliases":["category_id"]},{"name":"brand","type":"string","required":false,"description":"Only this brand: its exact name (case and Turkish letters ignored) or the brand id every row carries.","on_invalid":"reject","example":"Kuzeyden","aliases":["brand_id"]},{"name":"discounted_only","type":"boolean","required":false,"description":"true = only products with a struck-through price.","on_invalid":"ignore","default":false},{"name":"min_price","type":"number","required":false,"description":"Lowest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best name/brand match first (default)"},{"value":"site_order","label":"Getir's own shelf order"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"discount_percent","label":"Biggest discount first"},{"value":"unit_price_asc","label":"Lowest price per kg / litre / piece first"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-200, default 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":200},{"name":"include_hidden","type":"boolean","required":false,"description":"false (default) returns only products getir.com shows on its own category pages. true also returns the sold-by-weight rows Getir's catalogue carries but does not list without a delivery address: loose fruit and vegetables (no product record exists for them) and weight-sold meat and deli items (product/detail works for these).","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (24-char id, string), title, short_name, brand{id,name}, size (pack size as printed, e.g. '24 x 500 ml'), price (TRY number), currency=TRY, original_price (struck-through price, else null), discount_percent, discount_amount, unit_price, unit_price_unit ('piece' | 'kg' | 'l' | 'g'), sold_by ('piece' | 'weight'), is_bundle, image, images[], badge_images[] (Getir publishes badges as images only), tags[] (e.g. 'Vegan', 'Glutensiz'), category{id,name,slug,url}, subcategory{id,name}, subcategories[] (every shelf the product sits on), url, in_stock (null — stock depends on the delivery warehouse), rating/review_count/rating_scale (null — Getir publishes no ratings)}, count, total_results, page, page_size, page_count, hidden_rows_dropped, service, service_name, match_mode ('catalogue'), query","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"kuzeyden","category":"551430043427d5010a3a5c5e"}},{"name":"product/detail","description":"The full Getir product record by id, slug or getir.com URL: title, brand, pack size, every image, price, struck-through price and discount, unit price, weight options for items sold by weight, bundle contents, description, ingredients, usage, the nutrition table, the product-safety block (origin, manufacturer, registration number) and the category.","required_params":["product_id"],"optional_params":["service","resolve_brand","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"The 24-character Getir product id every row returns, the product slug ('kuzeyden-su-h8DcoZauDv') or a getir.com product URL (a /buyuk/ URL selects GetirBüyük).","on_invalid":"reject","example":"603545c9877ea1efbab7dc90","aliases":["id","slug","url"]},{"name":"service","type":"enum","required":false,"description":"Which Getir grocery catalogue to read. They are separate price lists: the same product usually costs a different amount on each.","on_invalid":"reject","allowed_values":[{"value":"getir","label":"Getir quick market (default)"},{"value":"buyuk","label":"GetirBüyük large-basket market"}],"default":"getir"},{"name":"resolve_brand","type":"boolean","required":false,"description":"true (default) also reads the product's category shelf to add the brand name, category name and shelf. Getir's product record carries only the brand id. false = one small read, brand name null.","on_invalid":"ignore","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id (24-char id, string), title, short_name, brand{id,name}, size (pack size as printed, e.g. '24 x 500 ml'), price (TRY number), currency=TRY, original_price (struck-through price, else null), discount_percent, discount_amount, unit_price, unit_price_unit ('piece' | 'kg' | 'l' | 'g'), sold_by ('piece' | 'weight'), is_bundle, image, images[], badge_images[] (Getir publishes badges as images only), tags[] (e.g. 'Vegan', 'Glutensiz'), category{id,name,slug,url}, subcategory{id,name}, subcategories[] (every shelf the product sits on), url, in_stock (null — stock depends on the delivery warehouse), rating/review_count/rating_scale (null — Getir publishes no ratings), slug, share_link, unit_quantity, price_scope ('domain' = one price across the service), weight_options{initial,initial_text,step,minimum,unit}, bundle_items[]{product_id,title,size,count,image}, info_messages[], description, ingredients, usage, nutrition[]{title,basis,items[]{name,value,value_number,unit}}, origin, manufacturer, product_safety{label: value}, category_ids[], listed, barcode (null — not published), service, service_name}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"603545c9877ea1efbab7dc90"}},{"name":"category","description":"Every product on one Getir top category (optionally one shelf inside it), in Getir's own shelf order or sorted by price, discount or unit price, paged. The response lists the category's shelves with how many products each one holds.","required_params":["category"],"optional_params":["service","subcategory","brand","discounted_only","min_price","max_price","sort","page","page_size","include_hidden","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A top category: its id or slug (from `categories`), its exact name ('Su & İçecek') or its getir.com category URL.","on_invalid":"reject","example":"551430043427d5010a3a5c5e","aliases":["category_id","slug","url"]},{"name":"service","type":"enum","required":false,"description":"Which Getir grocery catalogue to read. They are separate price lists: the same product usually costs a different amount on each.","on_invalid":"reject","allowed_values":[{"value":"getir","label":"Getir quick market (default)"},{"value":"buyuk","label":"GetirBüyük large-basket market"}],"default":"getir"},{"name":"subcategory","type":"string","required":false,"description":"Only one shelf inside the category: its id or exact name ('Maden Suyu'), from `categories` or the response's `category.subcategories`.","on_invalid":"reject","aliases":["subcategory_id"]},{"name":"brand","type":"string","required":false,"description":"Only this brand: its exact name (case and Turkish letters ignored) or the brand id every row carries.","on_invalid":"reject","example":"Kuzeyden","aliases":["brand_id"]},{"name":"discounted_only","type":"boolean","required":false,"description":"true = only products with a struck-through price.","on_invalid":"ignore","default":false},{"name":"min_price","type":"number","required":false,"description":"Lowest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"site_order","label":"Getir's own shelf order (default)"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"discount_percent","label":"Biggest discount first"},{"value":"unit_price_asc","label":"Lowest price per kg / litre / piece first"}],"default":"site_order"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-200, default 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":200},{"name":"include_hidden","type":"boolean","required":false,"description":"false (default) returns only products getir.com shows on its own category pages. true also returns the sold-by-weight rows Getir's catalogue carries but does not list without a delivery address: loose fruit and vegetables (no product record exists for them) and weight-sold meat and deli items (product/detail works for these).","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (24-char id, string), title, short_name, brand{id,name}, size (pack size as printed, e.g. '24 x 500 ml'), price (TRY number), currency=TRY, original_price (struck-through price, else null), discount_percent, discount_amount, unit_price, unit_price_unit ('piece' | 'kg' | 'l' | 'g'), sold_by ('piece' | 'weight'), is_bundle, image, images[], badge_images[] (Getir publishes badges as images only), tags[] (e.g. 'Vegan', 'Glutensiz'), category{id,name,slug,url}, subcategory{id,name}, subcategories[] (every shelf the product sits on), url, in_stock (null — stock depends on the delivery warehouse), rating/review_count/rating_scale (null — Getir publishes no ratings)}, count, total_results, page, page_size, page_count, hidden_rows_dropped, service, service_name, match_mode ('catalogue'), category{id,name,slug,url,product_count,subcategories[]{id,name,rows}}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"551430043427d5010a3a5c5e"}},{"name":"categories","description":"Getir's category tree: the 17 top categories with id, slug, URL, image and product count, and every shelf (subcategory) inside each with its product count.","required_params":[],"optional_params":["service","max_rotations"],"params":[{"name":"service","type":"enum","required":false,"description":"Which Getir grocery catalogue to read. They are separate price lists: the same product usually costs a different amount on each.","on_invalid":"reject","allowed_values":[{"value":"getir","label":"Getir quick market (default)"},{"value":"buyuk","label":"GetirBüyük large-basket market"}],"default":"getir"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"categories[]{id, name, slug, url, image, product_count, subcategories[]{id, name, product_count}}, count, service, service_name","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"deals","description":"Discounted Getir products — every product with a struck-through price, across the catalogue or in one category, biggest discount first by default. Filter by brand, price or minimum discount.","required_params":[],"optional_params":["service","category","brand","min_discount_percent","min_price","max_price","sort","page","page_size","max_rotations"],"params":[{"name":"service","type":"enum","required":false,"description":"Which Getir grocery catalogue to read. They are separate price lists: the same product usually costs a different amount on each.","on_invalid":"reject","allowed_values":[{"value":"getir","label":"Getir quick market (default)"},{"value":"buyuk","label":"GetirBüyük large-basket market"}],"default":"getir"},{"name":"category","type":"string","required":false,"description":"Limit to one top category: its id or slug (from `categories`), its exact name ('Su & İçecek') or its getir.com URL. One category is one upstream read; without it all 17 are read.","on_invalid":"reject","example":"551430043427d5010a3a5c5e","aliases":["category_id"]},{"name":"brand","type":"string","required":false,"description":"Only this brand: its exact name (case and Turkish letters ignored) or the brand id every row carries.","on_invalid":"reject","example":"Kuzeyden","aliases":["brand_id"]},{"name":"min_discount_percent","type":"integer","required":false,"description":"Only products discounted at least this much.","on_invalid":"reject","default":1,"minimum":1,"maximum":99},{"name":"min_price","type":"number","required":false,"description":"Lowest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"discount_percent","label":"Biggest discount first (default)"},{"value":"site_order","label":"Getir's own shelf order"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"unit_price_asc","label":"Lowest price per kg / litre / piece first"}],"default":"discount_percent"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-200, default 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":200},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (24-char id, string), title, short_name, brand{id,name}, size (pack size as printed, e.g. '24 x 500 ml'), price (TRY number), currency=TRY, original_price (struck-through price, else null), discount_percent, discount_amount, unit_price, unit_price_unit ('piece' | 'kg' | 'l' | 'g'), sold_by ('piece' | 'weight'), is_bundle, image, images[], badge_images[] (Getir publishes badges as images only), tags[] (e.g. 'Vegan', 'Glutensiz'), category{id,name,slug,url}, subcategory{id,name}, subcategories[] (every shelf the product sits on), url, in_stock (null — stock depends on the delivery warehouse), rating/review_count/rating_scale (null — Getir publishes no ratings)}, count, total_results, page, page_size, page_count, hidden_rows_dropped, service, service_name, match_mode ('catalogue')","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{}}]},{"name":"getyourguide","category":{"id":"travel","title":"Travel & Lodging"},"title":"GetYourGuide API — tours & activities scraper: search and browse things to do by city or keyword, with activity titles, prices, ratings, review counts, photos and categories, plus full activity detail (description, supplier, rating) and recent traveler reviews from GetYourGuide (getyourguide.com), worldwide, multi-currency, no API key required","version":"1.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/getyourguide/v1","spec_available":true,"actions":[{"name":"search","description":"Search GetYourGuide for tours & activities by free-text keyword or destination ('Rome colosseum', 'Paris', 'wine tasting Tuscany'). Returns activity cards with title, activity_id, price and list price, rating, review count, photos, category, duration and a link to the activity. GetYourGuide answers a query it cannot match with recommended activities rather than an empty page, so compare the titles against your query when it is very specific.","required_params":["query"],"optional_params":["currency","language"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for — a city, attraction, activity type or any combination ('Barcelona', 'Eiffel Tower', 'Tuscany wine tour').","on_invalid":"reject","example":"Rome colosseum","aliases":["q","keyword"]},{"name":"currency","type":"string","required":false,"description":"ISO code the prices should be quoted in (EUR, USD, GBP…). Every returned record carries the `currency` it was priced in. Leave it out and GetYourGuide picks one itself, so it can differ between calls — set it when you need comparable prices.","on_invalid":"reject","allowed_values":[{"value":"AED","label":"UAE Dirham"},{"value":"AUD","label":"Australian Dollar"},{"value":"BRL","label":"Brazilian Real"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"CLP","label":"Chilean Peso"},{"value":"CNY","label":"Chinese Yuan"},{"value":"COP","label":"Colombian Peso"},{"value":"CZK","label":"Czech Koruna"},{"value":"DKK","label":"Danish Krone"},{"value":"EGP","label":"Egyptian Pound"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"HUF","label":"Hungarian Forint"},{"value":"IDR","label":"Indonesian Rupiah"},{"value":"ILS","label":"Israeli New Shekel"},{"value":"INR","label":"Indian Rupee"},{"value":"JPY","label":"Japanese Yen"},{"value":"KRW","label":"South Korean Won"},{"value":"MAD","label":"Moroccan Dirham"},{"value":"MXN","label":"Mexican Peso"},{"value":"MYR","label":"Malaysian Ringgit"},{"value":"NOK","label":"Norwegian Krone"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"PHP","label":"Philippine Peso"},{"value":"PLN","label":"Polish Zloty"},{"value":"RON","label":"Romanian Leu"},{"value":"SEK","label":"Swedish Krona"},{"value":"SGD","label":"Singapore Dollar"},{"value":"THB","label":"Thai Baht"},{"value":"TRY","label":"Turkish Lira"},{"value":"UAH","label":"Ukrainian Hryvnia"},{"value":"USD","label":"U.S. Dollar"},{"value":"UYU","label":"Uruguayan Peso"},{"value":"VND","label":"Vietnamese Dong"},{"value":"ZAR","label":"South African Rand"}],"example":"USD"},{"name":"language","type":"string","required":false,"description":"Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"en-GB","label":"English (UK)"},{"value":"en-AU","label":"English (Australia)"},{"value":"ar","label":"Arabic"},{"value":"bg","label":"Bulgarian"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"de-AT","label":"German (Austria)"},{"value":"de-CH","label":"German (Switzerland)"},{"value":"el","label":"Greek"},{"value":"es","label":"Spanish"},{"value":"es-MX","label":"Spanish (Mexico)"},{"value":"et","label":"Estonian"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"id","label":"Indonesian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"pt-BR","label":"Portuguese (Brazil)"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"},{"value":"tr","label":"Turkish"},{"value":"uk","label":"Ukrainian"},{"value":"zh","label":"Chinese (Simplified)"},{"value":"zh-HK","label":"Chinese (Hong Kong)"},{"value":"zh-TW","label":"Chinese (Traditional)"}],"example":"en"}],"returns":"activities[]{activity_id, title, url, abstract, images[], category, duration, rating, review_count, price, original_price, currency, discount_percent, next_available} (up to ~24 per query) · meta.total_results = the number of matches GetYourGuide itself reports","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Rome colosseum","currency":"EUR"}},{"name":"browse","description":"Browse the top tours & activities for a destination's landing page. Returns activities with title, price, rating, review count, photos and a link. Identify the destination by its slug (from search/destinations) or by location_id + city.","required_params":[],"optional_params":["slug","location_id","city","destination","url","currency","language"],"params":[{"name":"slug","type":"string","required":false,"description":"The destination URL slug — '<city>-l<id>' (e.g. 'rome-l33', 'paris-l16'). Returned by search/destinations.","on_invalid":"reject","example":"rome-l33"},{"name":"location_id","type":"string","required":false,"description":"GetYourGuide location id (the number after '-l' in the URL). Pair with city; the city slug is cosmetic.","on_invalid":"ignore","example":"33"},{"name":"city","type":"string","required":false,"description":"City/destination name (used with location_id to build the URL slug).","on_invalid":"ignore","example":"rome","aliases":["destination"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full GetYourGuide destination URL.","on_invalid":"ignore","example":"https://www.getyourguide.com/rome-l33/"},{"name":"currency","type":"string","required":false,"description":"ISO code the prices should be quoted in (EUR, USD, GBP…). Every returned record carries the `currency` it was priced in. Leave it out and GetYourGuide picks one itself, so it can differ between calls — set it when you need comparable prices.","on_invalid":"reject","allowed_values":[{"value":"AED","label":"UAE Dirham"},{"value":"AUD","label":"Australian Dollar"},{"value":"BRL","label":"Brazilian Real"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"CLP","label":"Chilean Peso"},{"value":"CNY","label":"Chinese Yuan"},{"value":"COP","label":"Colombian Peso"},{"value":"CZK","label":"Czech Koruna"},{"value":"DKK","label":"Danish Krone"},{"value":"EGP","label":"Egyptian Pound"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"HUF","label":"Hungarian Forint"},{"value":"IDR","label":"Indonesian Rupiah"},{"value":"ILS","label":"Israeli New Shekel"},{"value":"INR","label":"Indian Rupee"},{"value":"JPY","label":"Japanese Yen"},{"value":"KRW","label":"South Korean Won"},{"value":"MAD","label":"Moroccan Dirham"},{"value":"MXN","label":"Mexican Peso"},{"value":"MYR","label":"Malaysian Ringgit"},{"value":"NOK","label":"Norwegian Krone"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"PHP","label":"Philippine Peso"},{"value":"PLN","label":"Polish Zloty"},{"value":"RON","label":"Romanian Leu"},{"value":"SEK","label":"Swedish Krona"},{"value":"SGD","label":"Singapore Dollar"},{"value":"THB","label":"Thai Baht"},{"value":"TRY","label":"Turkish Lira"},{"value":"UAH","label":"Ukrainian Hryvnia"},{"value":"USD","label":"U.S. Dollar"},{"value":"UYU","label":"Uruguayan Peso"},{"value":"VND","label":"Vietnamese Dong"},{"value":"ZAR","label":"South African Rand"}],"example":"USD"},{"name":"language","type":"string","required":false,"description":"Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"en-GB","label":"English (UK)"},{"value":"en-AU","label":"English (Australia)"},{"value":"ar","label":"Arabic"},{"value":"bg","label":"Bulgarian"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"de-AT","label":"German (Austria)"},{"value":"de-CH","label":"German (Switzerland)"},{"value":"el","label":"Greek"},{"value":"es","label":"Spanish"},{"value":"es-MX","label":"Spanish (Mexico)"},{"value":"et","label":"Estonian"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"id","label":"Indonesian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"pt-BR","label":"Portuguese (Brazil)"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"},{"value":"tr","label":"Turkish"},{"value":"uk","label":"Ukrainian"},{"value":"zh","label":"Chinese (Simplified)"},{"value":"zh-HK","label":"Chinese (Hong Kong)"},{"value":"zh-TW","label":"Chinese (Traditional)"}],"example":"en"}],"returns":"activities[]{activity_id, title, url, images[], rating, review_count, price, currency, location}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"paris-l16"}},{"name":"detail","description":"Full record for one tour/activity: title, description, the company that operates it, price and list price, rating, review count and photos. Identify it by its activity url (from search/browse).","required_params":[],"optional_params":["url","slug","currency","language"],"params":[{"name":"url","type":"string","required":false,"description":"The activity's GetYourGuide URL (from a search/browse result).","on_invalid":"reject","example":"https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/"},{"name":"slug","type":"string","required":false,"description":"Alternatively the activity path ('…-lNN/…-tNN').","on_invalid":"ignore","example":"rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566"},{"name":"currency","type":"string","required":false,"description":"ISO code the prices should be quoted in (EUR, USD, GBP…). Every returned record carries the `currency` it was priced in. Leave it out and GetYourGuide picks one itself, so it can differ between calls — set it when you need comparable prices.","on_invalid":"reject","allowed_values":[{"value":"AED","label":"UAE Dirham"},{"value":"AUD","label":"Australian Dollar"},{"value":"BRL","label":"Brazilian Real"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"CLP","label":"Chilean Peso"},{"value":"CNY","label":"Chinese Yuan"},{"value":"COP","label":"Colombian Peso"},{"value":"CZK","label":"Czech Koruna"},{"value":"DKK","label":"Danish Krone"},{"value":"EGP","label":"Egyptian Pound"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"HUF","label":"Hungarian Forint"},{"value":"IDR","label":"Indonesian Rupiah"},{"value":"ILS","label":"Israeli New Shekel"},{"value":"INR","label":"Indian Rupee"},{"value":"JPY","label":"Japanese Yen"},{"value":"KRW","label":"South Korean Won"},{"value":"MAD","label":"Moroccan Dirham"},{"value":"MXN","label":"Mexican Peso"},{"value":"MYR","label":"Malaysian Ringgit"},{"value":"NOK","label":"Norwegian Krone"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"PHP","label":"Philippine Peso"},{"value":"PLN","label":"Polish Zloty"},{"value":"RON","label":"Romanian Leu"},{"value":"SEK","label":"Swedish Krona"},{"value":"SGD","label":"Singapore Dollar"},{"value":"THB","label":"Thai Baht"},{"value":"TRY","label":"Turkish Lira"},{"value":"UAH","label":"Ukrainian Hryvnia"},{"value":"USD","label":"U.S. Dollar"},{"value":"UYU","label":"Uruguayan Peso"},{"value":"VND","label":"Vietnamese Dong"},{"value":"ZAR","label":"South African Rand"}],"example":"USD"},{"name":"language","type":"string","required":false,"description":"Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"en-GB","label":"English (UK)"},{"value":"en-AU","label":"English (Australia)"},{"value":"ar","label":"Arabic"},{"value":"bg","label":"Bulgarian"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"de-AT","label":"German (Austria)"},{"value":"de-CH","label":"German (Switzerland)"},{"value":"el","label":"Greek"},{"value":"es","label":"Spanish"},{"value":"es-MX","label":"Spanish (Mexico)"},{"value":"et","label":"Estonian"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"id","label":"Indonesian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"pt-BR","label":"Portuguese (Brazil)"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"},{"value":"tr","label":"Turkish"},{"value":"uk","label":"Ukrainian"},{"value":"zh","label":"Chinese (Simplified)"},{"value":"zh-HK","label":"Chinese (Hong Kong)"},{"value":"zh-TW","label":"Chinese (Traditional)"}],"example":"en"}],"returns":"activity{activity_id, title, url, description, supplier, images[], rating, review_count, best_rating, price, original_price, currency, availability}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/","currency":"EUR"}},{"name":"reviews","description":"The most-recent public traveler reviews for one activity (rating, text, author, date) plus the overall rating and total review count. Returns the 10 newest reviews — that is the full set GetYourGuide publishes on the activity page itself; read review_count for the total volume behind them.","required_params":[],"optional_params":["url","slug","language"],"params":[{"name":"url","type":"string","required":false,"description":"The activity's GetYourGuide URL (from search/browse).","on_invalid":"reject","example":"https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/"},{"name":"slug","type":"string","required":false,"description":"Alternatively the activity path ('…-lNN/…-tNN').","on_invalid":"ignore"},{"name":"language","type":"string","required":false,"description":"Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"en-GB","label":"English (UK)"},{"value":"en-AU","label":"English (Australia)"},{"value":"ar","label":"Arabic"},{"value":"bg","label":"Bulgarian"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"de-AT","label":"German (Austria)"},{"value":"de-CH","label":"German (Switzerland)"},{"value":"el","label":"Greek"},{"value":"es","label":"Spanish"},{"value":"es-MX","label":"Spanish (Mexico)"},{"value":"et","label":"Estonian"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"id","label":"Indonesian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"pt-BR","label":"Portuguese (Brazil)"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"},{"value":"tr","label":"Turkish"},{"value":"uk","label":"Ukrainian"},{"value":"zh","label":"Chinese (Simplified)"},{"value":"zh-HK","label":"Chinese (Hong Kong)"},{"value":"zh-TW","label":"Chinese (Traditional)"}],"example":"en"}],"returns":"reviews[]{rating, text, author, date} + summary{rating, review_count}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.getyourguide.com/rome-l33/colosseum-roman-forum-palatine-hill-guided-tour-t195566/"}},{"name":"destinations","description":"Destination metadata for a GetYourGuide location: id, name, type, country, the number of bookable activities, and its parent locations (region → country). Useful to confirm a destination and discover its hierarchy before browsing.","required_params":[],"optional_params":["slug","location_id","city","destination","url","language"],"params":[{"name":"slug","type":"string","required":false,"description":"The destination URL slug ('<city>-l<id>').","on_invalid":"reject","example":"rome-l33"},{"name":"location_id","type":"string","required":false,"description":"GetYourGuide location id (number after '-l').","on_invalid":"ignore","example":"33"},{"name":"city","type":"string","required":false,"description":"City/destination name (used with location_id).","on_invalid":"ignore","example":"rome","aliases":["destination"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full destination URL.","on_invalid":"ignore","example":"https://www.getyourguide.com/rome-l33/"},{"name":"language","type":"string","required":false,"description":"Language of the returned titles, descriptions, categories and destination names. Ids, prices, ratings and review counts are the same in every language. Default English.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"en-GB","label":"English (UK)"},{"value":"en-AU","label":"English (Australia)"},{"value":"ar","label":"Arabic"},{"value":"bg","label":"Bulgarian"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"de-AT","label":"German (Austria)"},{"value":"de-CH","label":"German (Switzerland)"},{"value":"el","label":"Greek"},{"value":"es","label":"Spanish"},{"value":"es-MX","label":"Spanish (Mexico)"},{"value":"et","label":"Estonian"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"id","label":"Indonesian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"pt-BR","label":"Portuguese (Brazil)"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"},{"value":"tr","label":"Turkish"},{"value":"uk","label":"Ukrainian"},{"value":"zh","label":"Chinese (Simplified)"},{"value":"zh-HK","label":"Chinese (Hong Kong)"},{"value":"zh-TW","label":"Chinese (Traditional)"}],"example":"en"}],"returns":"destination{location_id, name, type, url, abstract, country_id, activity_count, parent_locations[]{id, name, type, url}}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"paris-l16"}}]},{"name":"github","category":{"id":"developer-tools","title":"Developer Tools"},"title":"GitHub Developer Data — official REST API profiles, repos, issues, pulls, commits, code search","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/github/v1","spec_available":true,"actions":[{"name":"user","description":"GitHub user profile","required_params":["username"],"optional_params":["anon_tier"],"params":[{"name":"username","type":"string","required":true,"description":"GitHub user login (the @handle, without the @).","on_invalid":"reject","example":"torvalds"},{"name":"anon_tier","type":"enum","required":false,"description":"Set to 1/true to deliberately use the anonymous GitHub API tier (no token, GitHub's own 60/hr anonymous ceiling) instead of a pooled PAT. Normally the engine auto-selects a PAT and only falls back to anonymous when no token has budget; this forces the anonymous path.","on_invalid":"ignore","allowed_values":[{"value":"1","label":"Force the anonymous (no-token) tier"},{"value":"true","label":"Force anonymous (alias)"}],"example":"1"}],"returns":"user{} — login, id, name, bio, company, blog, location, public_repos, followers, following, created_at","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"torvalds"}},{"name":"user_repos","description":"repositories owned by a user","required_params":["username"],"optional_params":["type","sort","direction","page","per_page","cursor"],"params":[{"name":"username","type":"string","required":true,"description":"GitHub user login (the @handle, without the @).","on_invalid":"reject","example":"torvalds"},{"name":"type","type":"enum","required":false,"description":"Filter the repository list by relationship/visibility (accepted values vary slightly between user and org endpoints).","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All (default)"},{"value":"owner","label":"Owned"},{"value":"member","label":"Member of"},{"value":"public","label":"Public"},{"value":"private","label":"Private"},{"value":"forks","label":"Forks"},{"value":"sources","label":"Sources"}],"example":"all"},{"name":"sort","type":"enum","required":false,"description":"Field to sort repositories by.","on_invalid":"ignore","allowed_values":[{"value":"created","label":"Date created"},{"value":"updated","label":"Last updated"},{"value":"pushed","label":"Last push"},{"value":"full_name","label":"Repository name (default)"}],"example":"updated"},{"name":"direction","type":"enum","required":false,"description":"Sort direction.","on_invalid":"ignore","allowed_values":[{"value":"asc","label":"Ascending"},{"value":"desc","label":"Descending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (repositories: name, full_name, description, stars, forks, language, topics, pushed_at); meta has has_more/next_page/next_cursor + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"torvalds"}},{"name":"user_followers","description":"followers for a user","required_params":["username"],"optional_params":["page","per_page","cursor"],"params":[{"name":"username","type":"string","required":true,"description":"GitHub user login (the @handle, without the @).","on_invalid":"reject","example":"torvalds"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (follower user summaries: login, id, avatar_url, html_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"torvalds"}},{"name":"user_following","description":"accounts followed by a user","required_params":["username"],"optional_params":["page","per_page","cursor"],"params":[{"name":"username","type":"string","required":true,"description":"GitHub user login (the @handle, without the @).","on_invalid":"reject","example":"tiangolo"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (followed user summaries: login, id, avatar_url, html_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"torvalds"}},{"name":"user_gists","description":"public gists for a user","required_params":["username"],"optional_params":["page","per_page","cursor"],"params":[{"name":"username","type":"string","required":true,"description":"GitHub user login (the @handle, without the @).","on_invalid":"reject","example":"torvalds"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (gists: id, description, files, public, created_at, html_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"torvalds"}},{"name":"repo","description":"repository metadata","required_params":["owner","repo"],"optional_params":[],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"}],"returns":"repo{} — full_name, description, stars, forks, watchers, open_issues, language, topics, license, default_branch, timestamps","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_issues","description":"repository issues","required_params":["owner","repo"],"optional_params":["state","since","sort","direction","page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"state","type":"enum","required":false,"description":"Filter issues/pull requests by state.","on_invalid":"ignore","allowed_values":[{"value":"open","label":"Open (default)"},{"value":"closed","label":"Closed"},{"value":"all","label":"All"}],"example":"open"},{"name":"since","type":"string","required":false,"description":"Only records updated at/after this ISO-8601 timestamp.","on_invalid":"ignore","example":"2024-01-01T00:00:00Z"},{"name":"sort","type":"enum","required":false,"description":"Field to sort issues by.","on_invalid":"ignore","allowed_values":[{"value":"created","label":"Created (default)"},{"value":"updated","label":"Updated"},{"value":"comments","label":"Comment count"}],"example":"created"},{"name":"direction","type":"enum","required":false,"description":"Sort direction.","on_invalid":"ignore","allowed_values":[{"value":"asc","label":"Ascending"},{"value":"desc","label":"Descending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (issues: number, title, state, user, labels, comments, created_at, body; pull_request key if the issue is a PR); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_pulls","description":"repository pull requests","required_params":["owner","repo"],"optional_params":["state","sort","direction","page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"state","type":"enum","required":false,"description":"Filter issues/pull requests by state.","on_invalid":"ignore","allowed_values":[{"value":"open","label":"Open (default)"},{"value":"closed","label":"Closed"},{"value":"all","label":"All"}],"example":"open"},{"name":"sort","type":"enum","required":false,"description":"Field to sort pull requests by.","on_invalid":"ignore","allowed_values":[{"value":"created","label":"Created (default)"},{"value":"updated","label":"Updated"},{"value":"popularity","label":"Reaction count"},{"value":"long-running","label":"Long-running"}],"example":"created"},{"name":"direction","type":"enum","required":false,"description":"Sort direction.","on_invalid":"ignore","allowed_values":[{"value":"asc","label":"Ascending"},{"value":"desc","label":"Descending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (pull requests: number, title, state, user, head/base, merged_at, created_at); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_commits","description":"repository commits","required_params":["owner","repo"],"optional_params":["sha","path","author","since","until","page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"sha","type":"string","required":false,"description":"Commit listing: branch name or commit SHA to start from (defaults to the repository's default branch).","on_invalid":"ignore","example":"main"},{"name":"path","type":"string","required":false,"description":"Only commits that touch this file path.","on_invalid":"ignore","example":"src/index.js"},{"name":"author","type":"string","required":false,"description":"Only commits by this GitHub login or email.","on_invalid":"ignore","example":"gaearon"},{"name":"since","type":"string","required":false,"description":"Only records updated at/after this ISO-8601 timestamp.","on_invalid":"ignore","example":"2024-01-01T00:00:00Z"},{"name":"until","type":"string","required":false,"description":"Only commits before this ISO-8601 timestamp.","on_invalid":"ignore","example":"2024-12-31T23:59:59Z"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (commits: sha, commit.message, author, committer, date, html_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_contributors","description":"repository contributors","required_params":["owner","repo"],"optional_params":["anon","page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"anon","type":"enum","required":false,"description":"Set to 1/true to also include anonymous contributors.","on_invalid":"ignore","allowed_values":[{"value":"1","label":"Include anonymous contributors"},{"value":"true","label":"Include anonymous (alias)"}],"example":"1"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (contributors: login, id, contributions, avatar_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_releases","description":"repository releases","required_params":["owner","repo"],"optional_params":["page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (releases: tag_name, name, body, draft, prerelease, published_at, assets); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_stargazers","description":"recent stargazers of a repository","required_params":["owner","repo"],"optional_params":["page","per_page"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (recent stargazers: login, id, avatar_url, html_url, url, type, starred_at); meta.stargazer_count is the authoritative total and meta.coverage='recent_only'. GitHub restricted the full stargazer list to repo admins/collaborators on 2026-06-30, so these rows are reconstructed from the repository's public event feed (WatchEvent), which GitHub caps at 300 events / ~90 days -- a very busy repository therefore yields only its last few stargazers.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_forks","description":"repository forks","required_params":["owner","repo"],"optional_params":["sort","page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"sort","type":"enum","required":false,"description":"Field to sort forks by.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Newest (default)"},{"value":"oldest","label":"Oldest"},{"value":"stargazers","label":"Most stars"},{"value":"watchers","label":"Most watchers"}],"example":"newest"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (forked repositories: full_name, owner, stars, created_at); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_languages","description":"repository language byte counts","required_params":["owner","repo"],"optional_params":[],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"}],"returns":"object mapping language name -> bytes of code (e.g. {\"Python\": 12345})","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_contents","description":"repository content metadata for a path","required_params":["owner","repo"],"optional_params":["path","ref"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"path","type":"string","required":false,"description":"Path to a file or directory inside the repository (omit or '/' for the repository root).","on_invalid":"ignore","example":"README.md"},{"name":"ref","type":"string","required":false,"description":"Branch, tag, or commit SHA to read from (defaults to the default branch).","on_invalid":"ignore","example":"main"}],"returns":"file: content metadata (name, path, size, sha, download_url, base64 content); directory: items[] of entries (name, path, type, size)","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"repo_readme","description":"repository README metadata/content URL","required_params":["owner","repo"],"optional_params":["ref"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"ref","type":"string","required":false,"description":"Branch, tag, or commit SHA to read from (defaults to the default branch).","on_invalid":"ignore","example":"main"}],"returns":"readme{} — name, path, size, sha, download_url, base64-encoded content","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react"}},{"name":"org","description":"organization profile","required_params":["org"],"optional_params":[],"params":[{"name":"org","type":"string","required":true,"description":"GitHub organization login.","on_invalid":"reject","example":"github"}],"returns":"org{} — login, name, description, blog, location, public_repos, followers, created_at","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"org_repos","description":"organization repositories","required_params":["org"],"optional_params":["type","sort","direction","page","per_page","cursor"],"params":[{"name":"org","type":"string","required":true,"description":"GitHub organization login.","on_invalid":"reject","example":"github"},{"name":"type","type":"enum","required":false,"description":"Filter the repository list by relationship/visibility (accepted values vary slightly between user and org endpoints).","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All (default)"},{"value":"owner","label":"Owned"},{"value":"member","label":"Member of"},{"value":"public","label":"Public"},{"value":"private","label":"Private"},{"value":"forks","label":"Forks"},{"value":"sources","label":"Sources"}],"example":"all"},{"name":"sort","type":"enum","required":false,"description":"Field to sort repositories by.","on_invalid":"ignore","allowed_values":[{"value":"created","label":"Date created"},{"value":"updated","label":"Last updated"},{"value":"pushed","label":"Last push"},{"value":"full_name","label":"Repository name (default)"}],"example":"updated"},{"name":"direction","type":"enum","required":false,"description":"Sort direction.","on_invalid":"ignore","allowed_values":[{"value":"asc","label":"Ascending"},{"value":"desc","label":"Descending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (org repositories: name, full_name, description, stars, language, pushed_at); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"org_members","description":"public organization members","required_params":["org"],"optional_params":["filter","role","page","per_page","cursor"],"params":[{"name":"org","type":"string","required":true,"description":"GitHub organization login.","on_invalid":"reject","example":"github"},{"name":"filter","type":"enum","required":false,"description":"Filter organization members.","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All members (default)"},{"value":"2fa_disabled","label":"Without 2FA — org admins only"}],"example":"all"},{"name":"role","type":"enum","required":false,"description":"Filter organization members by role.","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All roles (default)"},{"value":"admin","label":"Owners"},{"value":"member","label":"Non-owner members"}],"example":"all"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (member user summaries: login, id, avatar_url, html_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search_repos","description":"search repositories","required_params":["q"],"optional_params":["sort","order","page","per_page"],"params":[{"name":"q","type":"string","required":true,"description":"GitHub search query, including qualifiers (e.g. 'language:python stars:>1000', 'author:torvalds').","on_invalid":"reject","example":"fastapi"},{"name":"sort","type":"enum","required":false,"description":"Field to sort search results by (omit for best-match relevance).","on_invalid":"ignore","allowed_values":[{"value":"stars","label":"Stars"},{"value":"forks","label":"Forks"},{"value":"help-wanted-issues","label":"Help-wanted issues"},{"value":"updated","label":"Last updated"}],"example":"stars"},{"name":"order","type":"enum","required":false,"description":"Sort direction for search results (only applies when sort is set).","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100}],"returns":"{ total_count, incomplete_results, items[] } of repositories; meta has total, next_page, rate-limit (GitHub caps search at the first 1000 results)","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"fastapi","per_page":5}},{"name":"search_users","description":"search users","required_params":["q"],"optional_params":["sort","order","page","per_page"],"params":[{"name":"q","type":"string","required":true,"description":"GitHub search query, including qualifiers (e.g. 'language:python stars:>1000', 'author:torvalds').","on_invalid":"reject","example":"fastapi"},{"name":"sort","type":"enum","required":false,"description":"Field to sort search results by (omit for best-match relevance).","on_invalid":"ignore","allowed_values":[{"value":"followers","label":"Followers"},{"value":"repositories","label":"Repositories"},{"value":"joined","label":"Join date"}],"example":"followers"},{"name":"order","type":"enum","required":false,"description":"Sort direction for search results (only applies when sort is set).","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100}],"returns":"{ total_count, incomplete_results, items[] } of users; meta has total, next_page, rate-limit (search capped at first 1000 results)","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"fastapi"}},{"name":"search_code","description":"search code (token required by GitHub)","required_params":["q"],"optional_params":["sort","order","page","per_page"],"params":[{"name":"q","type":"string","required":true,"description":"GitHub search query, including qualifiers (e.g. 'language:python stars:>1000', 'author:torvalds').","on_invalid":"reject","example":"fastapi"},{"name":"sort","type":"enum","required":false,"description":"Field to sort search results by (omit for best-match relevance).","on_invalid":"ignore","allowed_values":[{"value":"indexed","label":"Last indexed"}],"example":"indexed"},{"name":"order","type":"enum","required":false,"description":"Sort direction for search results (only applies when sort is set).","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100}],"returns":"{ total_count, incomplete_results, items[] } of code matches (name, path, repository); meta has total + rate-limit. Requires a GitHub token.","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":3},"example_params":{"q":"fastapi"}},{"name":"search_issues","description":"search issues and pull requests","required_params":["q"],"optional_params":["sort","order","page","per_page"],"params":[{"name":"q","type":"string","required":true,"description":"GitHub search query, including qualifiers (e.g. 'language:python stars:>1000', 'author:torvalds').","on_invalid":"reject","example":"fastapi"},{"name":"sort","type":"enum","required":false,"description":"Field to sort search results by (omit for best-match relevance).","on_invalid":"ignore","allowed_values":[{"value":"comments","label":"Comments"},{"value":"created","label":"Created"},{"value":"updated","label":"Updated"},{"value":"reactions","label":"Reactions"}],"example":"created"},{"name":"order","type":"enum","required":false,"description":"Sort direction for search results (only applies when sort is set).","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100}],"returns":"{ total_count, incomplete_results, items[] } of issues/PRs; meta has total, next_page, rate-limit (search capped at first 1000 results)","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"fastapi"}},{"name":"search_topics","description":"search GitHub topics","required_params":["q"],"optional_params":["page","per_page"],"params":[{"name":"q","type":"string","required":true,"description":"GitHub search query, including qualifiers (e.g. 'language:python stars:>1000', 'author:torvalds').","on_invalid":"reject","example":"fastapi"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100}],"returns":"{ total_count, incomplete_results, items[] } of topics (name, display_name, short_description, featured, curated, repository count signals); meta has total + rate-limit. Uses the mercy preview media type.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"fastapi"}},{"name":"search_commits","description":"search commits across GitHub","required_params":["q"],"optional_params":["sort","order","page","per_page"],"params":[{"name":"q","type":"string","required":true,"description":"GitHub search query, including qualifiers (e.g. 'language:python stars:>1000', 'author:torvalds').","on_invalid":"reject","example":"fastapi"},{"name":"sort","type":"enum","required":false,"description":"Field to sort search results by (omit for best-match relevance).","on_invalid":"ignore","allowed_values":[{"value":"author-date","label":"Author date"},{"value":"committer-date","label":"Committer date"}],"example":"author-date"},{"name":"order","type":"enum","required":false,"description":"Sort direction for search results (only applies when sort is set).","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100}],"returns":"{ total_count, incomplete_results, items[] } of commits (sha, commit.message, author, repository); meta has total + rate-limit (capped at first 1000). Uses the cloak preview media type; query needs at least one qualifier, e.g. 'repo:owner/name fix'.","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"fastapi"}},{"name":"repo_branches","description":"repository branches","required_params":["owner","repo"],"optional_params":["page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (branches: name, commit{sha,url}, protected); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react","per_page":5}},{"name":"repo_tags","description":"repository tags","required_params":["owner","repo"],"optional_params":["page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (tags: name, commit{sha,url}, zipball_url, tarball_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"owner":"facebook","repo":"react","per_page":5}},{"name":"repo_topics","description":"repository topics (labels)","required_params":["owner","repo"],"optional_params":[],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"}],"returns":"{ names[] } — the topic strings attached to the repository. Uses the mercy preview media type.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":{"owner":"facebook","repo":"react"}},{"name":"issue_detail","description":"single issue detail","required_params":["owner","repo","number"],"optional_params":[],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"number","type":"integer","required":true,"description":"Issue or pull request number (the #N shown in the GitHub UI).","on_invalid":"reject","example":42,"minimum":1}],"returns":"issue{} — number, title, state, body, user, labels, assignees, milestone, comments count, reactions, created_at/updated_at/closed_at (pull_request key if a PR)","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"issue_comments","description":"comments on an issue or PR","required_params":["owner","repo","number"],"optional_params":["since","page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"number","type":"integer","required":true,"description":"Issue or pull request number (the #N shown in the GitHub UI).","on_invalid":"reject","example":42,"minimum":1},{"name":"since","type":"string","required":false,"description":"Only records updated at/after this ISO-8601 timestamp.","on_invalid":"ignore","example":"2024-01-01T00:00:00Z"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (comments: id, user, body, created_at, updated_at, reactions, html_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"pull_detail","description":"single pull request detail","required_params":["owner","repo","number"],"optional_params":[],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"number","type":"integer","required":true,"description":"Issue or pull request number (the #N shown in the GitHub UI).","on_invalid":"reject","example":42,"minimum":1}],"returns":"pull{} — number, title, state, body, user, head/base, merged, mergeable, merged_at, review_comments, commits, additions, deletions, changed_files, labels","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"pull_reviews","description":"reviews on a pull request","required_params":["owner","repo","number"],"optional_params":["page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"number","type":"integer","required":true,"description":"Issue or pull request number (the #N shown in the GitHub UI).","on_invalid":"reject","example":28000,"minimum":1},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (reviews: id, user, state APPROVED/CHANGES_REQUESTED/COMMENTED, body, submitted_at, commit_id); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"pull_files","description":"files changed in a pull request","required_params":["owner","repo","number"],"optional_params":["page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"number","type":"integer","required":true,"description":"Issue or pull request number (the #N shown in the GitHub UI).","on_invalid":"reject","example":42,"minimum":1},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (changed files: filename, status, additions, deletions, changes, patch, blob_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"pull_commits","description":"commits in a pull request","required_params":["owner","repo","number"],"optional_params":["page","per_page","cursor"],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"number","type":"integer","required":true,"description":"Issue or pull request number (the #N shown in the GitHub UI).","on_invalid":"reject","example":42,"minimum":1},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (commits: sha, commit.message, author, committer, date, html_url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"commit_detail","description":"single commit detail with diff stats and changed files","required_params":["owner","repo","sha"],"optional_params":[],"params":[{"name":"owner","type":"string","required":true,"description":"Repository owner — the user or organization login (the part before the slash in owner/repo).","on_invalid":"reject","example":"facebook"},{"name":"repo","type":"string","required":true,"description":"Repository name (the part after the slash in owner/repo).","on_invalid":"reject","example":"react"},{"name":"sha","type":"string","required":true,"description":"Commit SHA (full or short) — or a branch/tag name that resolves to a commit — to fetch the single-commit detail for.","on_invalid":"reject","example":"main"}],"returns":"commit{} — sha, commit.message, author, committer, stats{additions,deletions,total}, files[] (filename, status, additions, deletions, patch), parents, html_url","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_events","description":"public activity events for a user","required_params":["username"],"optional_params":["page","per_page","cursor"],"params":[{"name":"username","type":"string","required":true,"description":"GitHub user login (the @handle, without the @).","on_invalid":"reject","example":"torvalds"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (public events: id, type PushEvent/IssuesEvent/…, repo, payload, created_at); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"torvalds"}},{"name":"user_orgs","description":"organizations a user belongs to (public)","required_params":["username"],"optional_params":["page","per_page","cursor"],"params":[{"name":"username","type":"string","required":true,"description":"GitHub user login (the @handle, without the @).","on_invalid":"reject","example":"tiangolo"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (organization summaries: login, id, description, avatar_url, url); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"torvalds"}},{"name":"user_starred","description":"repositories a user has starred","required_params":["username"],"optional_params":["sort","direction","page","per_page","cursor"],"params":[{"name":"username","type":"string","required":true,"description":"GitHub user login (the @handle, without the @).","on_invalid":"reject","example":"torvalds"},{"name":"sort","type":"enum","required":false,"description":"Field to sort starred repositories by.","on_invalid":"ignore","allowed_values":[{"value":"created","label":"When the star was added (default)"},{"value":"updated","label":"Repository last updated"}],"example":"created"},{"name":"direction","type":"enum","required":false,"description":"Sort direction.","on_invalid":"ignore","allowed_values":[{"value":"asc","label":"Ascending"},{"value":"desc","label":"Descending"}],"example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor (forwarded as ?after=). Use the value from meta.next_cursor; ignored by the search_* actions.","on_invalid":"ignore","example":"Y3Vyc29yOjEw"}],"returns":"items[] (starred repositories: full_name, owner, description, stars, language, topics, pushed_at); meta has pagination + rate-limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"torvalds"}},{"name":"rate_limit","description":"current token/IP rate-limit status","required_params":[],"optional_params":[],"params":[],"returns":"rate-limit buckets (core, search, graphql, …) — each shows limit, remaining requests, and reset timestamp for the configured GitHub token or anonymous IP","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"glassdoor","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Glassdoor API — company reviews, interview reports, salary data & job listings (glassdoor.com)","version":"1.2.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/glassdoor/v1","spec_available":true,"actions":[{"name":"employer/search","description":"Resolve a company name to its Glassdoor employer_id + basic profile. Start here — every other action needs the employer_id.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Company name to look up.","on_invalid":"reject","example":"Google"}],"returns":"results[]{employer_id, name, category, logo_url}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Google"}},{"name":"employer/detail","description":"Employer profile + ratings.","required_params":["employer_id"],"optional_params":["dynamic_profile_id"],"params":[{"name":"employer_id","type":"integer","required":true,"description":"Glassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.","on_invalid":"reject","example":9079},{"name":"dynamic_profile_id","type":"integer","required":false,"description":"Advanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).","on_invalid":"ignore"}],"returns":"employer{employer_id, name, website, headquarters, size, industry, sector, description, review_count, salary_count, overall_rating, ratings{...}}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"employer_id":9079}},{"name":"employer/reviews","description":"One page of employer reviews (rating, pros/cons, role).","required_params":["employer_id"],"optional_params":["page","cursor","page_size","dynamic_profile_id"],"params":[{"name":"employer_id","type":"integer","required":true,"description":"Glassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.","on_invalid":"reject","example":9079},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1–100). Above 100 Glassdoor returns an empty page.","on_invalid":"reject","default":10,"minimum":1,"maximum":100},{"name":"dynamic_profile_id","type":"integer","required":false,"description":"Advanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).","on_invalid":"ignore"}],"returns":"reviews[]{headline, pros, cons, overall_rating, job_title, employment_status, date} + aggregate_ratings + rating_distribution + meta.pagination{page, has_more, next_cursor, total}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"employer_id":9079,"page_size":10}},{"name":"employer/reviews-harvest","description":"Fetch all available Glassdoor reviews across multiple pages — returns every unique review with rating, pros/cons and role.","required_params":["employer_id"],"optional_params":["dynamic_profile_id","page_size","max_pages"],"params":[{"name":"employer_id","type":"integer","required":true,"description":"Glassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.","on_invalid":"reject","example":9079},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1–100). Above 100 Glassdoor returns an empty page.","on_invalid":"reject","default":10,"minimum":1,"maximum":100},{"name":"max_pages","type":"integer","required":false,"description":"Stop the harvest after this many pages (default: run until complete).","on_invalid":"ignore","minimum":1},{"name":"dynamic_profile_id","type":"integer","required":false,"description":"Advanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).","on_invalid":"ignore"}],"returns":"reviews[] + harvest{pages_fetched, unique_reviews, filtered_reviews_count, stopped_reason}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"employer_id":9079}},{"name":"employer/interviews","description":"One page of interview reports (questions, difficulty, outcome).","required_params":["employer_id"],"optional_params":["page","cursor","items_per_page","dynamic_profile_id"],"params":[{"name":"employer_id","type":"integer","required":true,"description":"Glassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.","on_invalid":"reject","example":9079},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"items_per_page","type":"integer","required":false,"description":"Interview reports per page (1–100).","on_invalid":"reject","default":10,"minimum":1,"maximum":100},{"name":"dynamic_profile_id","type":"integer","required":false,"description":"Advanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).","on_invalid":"ignore"}],"returns":"interviews[]{difficulty, outcome, process, questions[]} + summary + meta.pagination{page, has_more, next_cursor, total}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"employer_id":9079}},{"name":"employer/interviews-harvest","description":"Fetch all available Glassdoor interview reports across multiple pages.","required_params":["employer_id"],"optional_params":["dynamic_profile_id","items_per_page","max_pages"],"params":[{"name":"employer_id","type":"integer","required":true,"description":"Glassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.","on_invalid":"reject","example":9079},{"name":"items_per_page","type":"integer","required":false,"description":"Interview reports per page (1–100).","on_invalid":"reject","default":10,"minimum":1,"maximum":100},{"name":"max_pages","type":"integer","required":false,"description":"Stop the harvest after this many pages (default: run until complete).","on_invalid":"ignore","minimum":1},{"name":"dynamic_profile_id","type":"integer","required":false,"description":"Advanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).","on_invalid":"ignore"}],"returns":"interviews[] + harvest{pages_fetched, stopped_reason}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"employer_id":9079}},{"name":"employer/jobs","description":"Employer job listings (one page; cursor pagination).","required_params":["employer_id"],"optional_params":["page","cursor","page_size","page_cursor"],"params":[{"name":"employer_id","type":"integer","required":true,"description":"Glassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.","on_invalid":"reject","example":9079},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"page_size","type":"integer","required":false,"description":"Jobs per page (1–100).","on_invalid":"reject","default":30,"minimum":1,"maximum":100},{"name":"page_cursor","type":"string","required":false,"description":"Advanced: raw Glassdoor pagination cursor. Prefer `cursor`.","on_invalid":"ignore"}],"returns":"jobs[]{job_id, title, location, salary_min, salary_max, salary_currency, salary_period, easy_apply, job_url} + meta.pagination{page, has_more, next_cursor, total}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"employer_id":9079,"page_size":20}},{"name":"employer/jobs-harvest","description":"Fetch all available Glassdoor job listings across multiple pages.","required_params":["employer_id"],"optional_params":["dynamic_profile_id","page_size","max_pages"],"params":[{"name":"employer_id","type":"integer","required":true,"description":"Glassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.","on_invalid":"reject","example":9079},{"name":"page_size","type":"integer","required":false,"description":"Jobs per page (1–100).","on_invalid":"reject","default":30,"minimum":1,"maximum":100},{"name":"max_pages","type":"integer","required":false,"description":"Stop the harvest after this many pages (default: run until complete).","on_invalid":"ignore","minimum":1},{"name":"dynamic_profile_id","type":"integer","required":false,"description":"Advanced: Glassdoor dynamic profile ID (defaults to employer_id; only needed for employers with a separate profile).","on_invalid":"ignore"}],"returns":"jobs[] + harvest{pages_fetched, unique_jobs, stopped_reason}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"employer_id":9079}},{"name":"employer/salaries","description":"Glassdoor salary estimates for this employer, broken down by job title. Each title returns the full pay distribution — base pay and total pay percentiles (P10/P25/P50/P75/P90), median base/total/additional pay, plus cash bonus, stock, profit sharing, sales commission and tips bands. Titles are ordered by number of reported salaries (most-reported first).","required_params":["employer_id"],"optional_params":["job_title","page","cursor","page_size","pay_period"],"params":[{"name":"employer_id","type":"integer","required":true,"description":"Glassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.","on_invalid":"reject","example":9079},{"name":"job_title","type":"string","required":false,"description":"Optional: filter salary estimates to job titles matching this text (e.g. 'engineer', 'product manager'). Omit for all titles.","on_invalid":"ignore","example":"software engineer"},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"page_size","type":"integer","required":false,"description":"Job titles per page (1–100).","on_invalid":"reject","default":20,"minimum":1,"maximum":100},{"name":"pay_period","type":"string","required":false,"description":"Pay period for the estimates: ANNUAL (yearly) or HOURLY.","on_invalid":"ignore","default":"ANNUAL"}],"returns":"salaries[]{job_title, salary_count, currency, median_base_pay, median_total_pay, median_additional_pay, base_pay{p10..p90,median}, total_pay{...}, additional_pay{...}, cash_bonus, stock_bonus, profit_sharing, sales_commission, tips} + summary{pay_period, location} + meta.pagination{page, has_more, next_cursor, total}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"employer_id":9079}},{"name":"employer/salaries-harvest","description":"Fetch salary estimates for all job titles at this employer across multiple pages — every title with its full pay distribution.","required_params":["employer_id"],"optional_params":["job_title","page_size","pay_period","max_pages"],"params":[{"name":"employer_id","type":"integer","required":true,"description":"Glassdoor employer ID. Don't know it? Call employer/search with the company name first — it returns employer_id.","on_invalid":"reject","example":9079},{"name":"job_title","type":"string","required":false,"description":"Optional: filter salary estimates to job titles matching this text (e.g. 'engineer', 'product manager'). Omit for all titles.","on_invalid":"ignore","example":"software engineer"},{"name":"page_size","type":"integer","required":false,"description":"Job titles per page (1–100).","on_invalid":"reject","default":20,"minimum":1,"maximum":100},{"name":"pay_period","type":"string","required":false,"description":"Pay period for the estimates: ANNUAL (yearly) or HOURLY.","on_invalid":"ignore","default":"ANNUAL"},{"name":"max_pages","type":"integer","required":false,"description":"Stop the harvest after this many pages (default: run until complete).","on_invalid":"ignore","minimum":1}],"returns":"salaries[] + harvest{pages_fetched, unique_titles, job_title_count, completeness_pct, stopped_reason}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"employer_id":9079}}]},{"name":"global-jobs","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Global Jobs API — Naukri (India), Gupy & Catho (Brazil), StepStone (Germany) job search","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/global-jobs/v1","spec_available":true,"actions":[{"name":"jobs/search","description":"Search live job listings on Naukri (India), Gupy and Catho (Brazil), or StepStone (Germany & Europe) by job title, keyword and city. Returns each job's title, company, location and link.","required_params":["platform"],"optional_params":["keyword","query","location","max_pages","max_results","page_size"],"params":[{"name":"platform","type":"enum","required":true,"description":"The job board to search. Choose Gupy or Catho (Brazil), StepStone (Germany & Europe), or Naukri (India) — each is a different country's job market. Note: Naukri currently blocks automated access and returns TARGET_BLOCKED.","on_invalid":"reject","allowed_values":[{"value":"naukri","label":"Naukri — India's largest job board (naukri.com)"},{"value":"gupy","label":"Gupy — Brazil jobs & company career pages (gupy.io)"},{"value":"catho","label":"Catho — Brazil job listings (catho.com.br)"},{"value":"stepstone","label":"StepStone — Germany & Europe job listings (stepstone.de)"}],"example":"catho"},{"name":"keyword","type":"string","required":false,"description":"Job title or keyword to search for. On the Brazilian boards (Gupy, Catho) the listings are in Portuguese, so a Portuguese term such as 'desenvolvedor' returns far more than an English one. Gupy matches the phrase LITERALLY against the job title, so a single word ('python') matches where a phrase ('python developer') returns nothing; when that happens we retry with the most distinctive single word and tell you in `meta.keyword_relaxed_to`.","on_invalid":"ignore","example":"software engineer","aliases":["query"]},{"name":"location","type":"string","required":false,"description":"City or region to filter jobs by — e.g. 'Bangalore', 'São Paulo', 'Berlin'. Naukri defaults to Bangalore; Catho searches nationwide.","on_invalid":"ignore","example":"bangalore"},{"name":"max_pages","type":"integer","required":false,"description":"How many result pages to fetch — each page returns more jobs. Default 10.","on_invalid":"ignore","default":10,"example":3,"minimum":1},{"name":"max_results","type":"integer","required":false,"description":"Optional cap on the total number of jobs returned across all pages.","on_invalid":"ignore","example":50,"minimum":1},{"name":"page_size","type":"integer","required":false,"description":"Number of jobs per page (Naukri and Gupy). Default 20.","on_invalid":"ignore","default":20,"example":20,"minimum":1}],"returns":"jobs[] (title, company_name, location, url, …), count, and the platform searched. Personal data is redacted unless you request it.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"platform":"catho","keyword":"analista","max_pages":1}},{"name":"jobs/detail","description":"Get the full details of a single job posting from Naukri, Gupy, Catho or StepStone — job title, company, full description, salary, location and how to apply.","required_params":["platform"],"optional_params":["job_id","job_url","apply_url"],"params":[{"name":"platform","type":"enum","required":true,"description":"The job board to search. Choose Gupy or Catho (Brazil), StepStone (Germany & Europe), or Naukri (India) — each is a different country's job market. Note: Naukri currently blocks automated access and returns TARGET_BLOCKED.","on_invalid":"reject","allowed_values":[{"value":"naukri","label":"Naukri — India's largest job board (naukri.com)"},{"value":"gupy","label":"Gupy — Brazil jobs & company career pages (gupy.io)"},{"value":"catho","label":"Catho — Brazil job listings (catho.com.br)"},{"value":"stepstone","label":"StepStone — Germany & Europe job listings (stepstone.de)"}],"example":"catho"},{"name":"job_id","type":"string","required":false,"description":"The job's id on the board — used by Naukri (required) and Gupy. Provide either job_id or job_url, depending on the board.","on_invalid":"ignore","example":"12345"},{"name":"job_url","type":"string","required":false,"description":"The full job posting / apply URL — used by Catho and StepStone (required) and Gupy. Example: a catho.com.br/vagas/… link.","on_invalid":"ignore","example":"https://www.catho.com.br/vagas/12345/","aliases":["apply_url"]}],"returns":"job{} — the full posting: title, company, description, salary, location and more. Personal data is redacted unless you request it.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"platform":"catho"}}]},{"name":"gmarket","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Gmarket API scraper — Korea's open marketplace (gmarket.co.kr): search listings, read the full listing (sale, list and coupon-applied price, options, seller, Smile/Star Delivery, shipping fee, rating, specs), page the reviews, and autocomplete. Prices in KRW. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/gmarket/v1","spec_available":true,"actions":[{"name":"search","description":"Search gmarket.co.kr by keyword with the site's sorts and a price range. Each row is a listing: goods code, title, URL, image, sale price, struck list price and discount %, brand, seller name with grade badges and official-store flag, shipping fee / free shipping, Smile Delivery and Star Delivery badges, same-day dispatch note, search-index rating / review / purchase counts, and category codes. Ads are dropped by default and counted.","required_params":["query"],"optional_params":["page","sort","price_min","price_max","include_sponsored","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Keyword to search on gmarket.co.kr. Korean works best ('샴푸', '노트북', '캠핑의자'); brand and model words in English also work ('nike', 'iphone').","on_invalid":"reject","example":"샴푸","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based (the site stops at 50). Under sort=relevance/popular/newest Gmarket repeats many rows from earlier pages; price_asc pages do not overlap.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Order of the results, using the site's own orderings. The price orders search a much wider match set, so check keyword_matches_on_page.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Gmarket's default ranking (랭킹순)"},{"value":"popular","label":"Sales popularity (판매인기순)"},{"value":"newest","label":"Newest listings first (신규상품순)"},{"value":"price_asc","label":"Lowest price first (searches a wider match set)"},{"value":"price_desc","label":"Highest price first (searches a wider match set)"}],"default":"relevance"},{"name":"price_min","type":"number","required":false,"description":"Lowest sale price in KRW (inclusive). Sent to Gmarket's own price filter and re-checked on the returned rows. Not combinable with a price sort.","on_invalid":"reject","example":10000,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest sale price in KRW (inclusive).","on_invalid":"reject","example":20000,"minimum":0},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default): Gmarket's ad placements (파워클릭 / AI매출업) are dropped and counted in `sponsored_dropped`. true: they are returned in page order, flagged `is_sponsored`. `count` always counts organic rows only.","on_invalid":"ignore","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no listing on the page contains a query word, Gmarket fills the page with unrelated popular listings. false (default): results are empty and `fallback_results_dropped` counts them. true: they are returned apart, in `fallback_results`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-12, default 8).","on_invalid":"ignore","default":8,"minimum":1,"maximum":12}],"returns":"results[]{position, product_id, title, url, image, price, currency=KRW, price_label, list_price, discount_percent (list→sale, 1 decimal, same as detail), discount_badge_percent (the card's own integer badge), coupon_price, brand, seller{name, grades[], is_official_store}, shipping_fee, free_shipping, smile_delivery, delivery_badge ('star_delivery'|'seller_star_delivery'), dispatch_note, search_index_rating, search_index_review_count, search_index_purchase_count, benefit_tags[], event_tags[], is_sold_out, category_codes{large, medium, small}, section, is_sponsored}, count (organic rows), sponsored_count, sponsored_dropped, total_results, total_pages, page, sort, query, applied_price_range, dropped_outside_price_range, duplicates_dropped, keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[] (only with include_fallback_results=true), page_overlap_expected, page_notice","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"샴푸"}},{"name":"product/detail","description":"The full Gmarket listing by goods code or URL: title, brand, official-store and certification flags, sale price, struck list price and discount, the coupon-applied price (쿠폰적용가) with its coupons, the card-payment price, unit price, reward points, availability and purchase limit, rating, review / question / purchase counts, seller, Smile Delivery and Star Delivery, shipping fee with the free-shipping threshold and delivery estimate, the Gmarket-lowest-price flag and how many sellers list the same product, options with extra charges and stock, images, description, the legal product-information notice (specs) and category codes.","required_params":[],"optional_params":["product_id","url","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Gmarket goods code (상품번호), 1-10 digits. Every search row returns it as `product_id`.","on_invalid":"reject","example":"3658351431","aliases":["goods_code","goodscode","item_no"]},{"name":"url","type":"string","required":false,"description":"Instead of product_id: a Gmarket product URL (m.gmarket.co.kr/vi/product/<code>, item.gmarket.co.kr/Item?goodscode=<code> or mitem.gmarket.co.kr/Item?goodsCode=<code>).","on_invalid":"reject","example":"https://m.gmarket.co.kr/vi/product/3658351431","aliases":["product_url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-12, default 8).","on_invalid":"ignore","default":8,"minimum":1,"maximum":12}],"returns":"product{product_id, url, title, brand, is_official_store, is_certified, price_type, price, currency=KRW, list_price, discount_percent, coupon_price, coupon_discount_percent, applied_coupons[{coupon_no, amount}], card_payment_price, card_payment_price_label, unit_price_label, reward_points_max, member_extra_reward{label, points}, installment_note, in_stock, availability, purchase_limit, purchase_limit_note, rating, rating_scale, review_count, question_count, purchase_count, seller{id, name, shop_url}, smile_delivery, star_delivery ('fulfillment'|'seller'), item_types[], delivery{shipping_fee, free_shipping, free_shipping_threshold, delivery_estimate, overseas_shipping, notes[], extra_fees[]}, is_gmarket_lowest_price, same_product_offer_count, price_comparison_url, campaign, condition, origin, options[{type ('selection'|'combination'), names[], values[{option_no, value | values[], extra_price, stock, sold_out}]}], images[], description_text, description_images[], specs[{name, value}], category_codes{large, medium, small}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"3658351431"}},{"name":"product/reviews","description":"Customer reviews of a Gmarket listing by goods code or URL: the premium (photo) or general list, paged, with the premium and general counts and the average rating. Each review carries its rating, title, text, the masked author id, date, the purchased option and photos.","required_params":[],"optional_params":["product_id","url","type","sort","page","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Gmarket goods code (상품번호), 1-10 digits. Every search row returns it as `product_id`.","on_invalid":"reject","example":"3658351431","aliases":["goods_code","goodscode","item_no"]},{"name":"url","type":"string","required":false,"description":"Instead of product_id: a Gmarket product URL (m.gmarket.co.kr/vi/product/<code>, item.gmarket.co.kr/Item?goodscode=<code> or mitem.gmarket.co.kr/Item?goodsCode=<code>).","on_invalid":"reject","example":"https://m.gmarket.co.kr/vi/product/3658351431","aliases":["product_url"]},{"name":"type","type":"enum","required":false,"description":"Which review list to page. Both counts are returned either way.","on_invalid":"reject","allowed_values":[{"value":"premium","label":"Premium reviews (프리미엄: longer, usually with photos)"},{"value":"general","label":"General reviews (일반: short ratings, newest first)"}],"default":"premium"},{"name":"sort","type":"enum","required":false,"description":"Order of premium reviews. General reviews are always newest first, so a sort with type=general is rejected.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"Gmarket's popular order (인기순)"},{"value":"newest","label":"Newest first (최신순)"}],"default":"popular"},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based; 10 reviews per page. `total_pages` says how many exist.","on_invalid":"reject","default":1,"minimum":1,"maximum":5000},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-12, default 8).","on_invalid":"ignore","default":8,"minimum":1,"maximum":12}],"returns":"reviews[]{review_id, rating, title, content, author, date, option, images[]}, count, type, sort, page, total_pages, page_size, premium_count, general_count, average_rating, rating_scale, product_id","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"search/suggest","description":"Gmarket's autocomplete for a partial keyword: up to 10 keyword suggestions.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The partial keyword to complete.","on_invalid":"reject","example":"아이폰","aliases":["q","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-12, default 8).","on_invalid":"ignore","default":8,"minimum":1,"maximum":12}],"returns":"suggestions[] (keywords), brands[{name, url}], count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"아이폰"}}]},{"name":"goat","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"GOAT API — live sneaker & streetwear resale data scraper: product search, full catalogue detail (name, brand, SKU, colorway, designer, release date, sizes, images), GOAT display price and the live per-size resale price grid (lowest ask, condition, instant-ship) from goat.com — no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/goat/v1","spec_available":true,"actions":[{"name":"search","description":"Search GOAT for products by keyword. Returns matching products (name, slug, brand image, category) plus related curated collections. Resolves the `slug`/`product_id` you feed into product_detail and prices. `limit` caps results.","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for — a sneaker/streetwear name, model, brand or SKU ('air jordan 4', 'nike dunk low', 'new balance 550', 'yeezy').","on_invalid":"reject","example":"air jordan 4","aliases":["q","keyword","term"]},{"name":"limit","type":"integer","required":false,"description":"Max products to return (1-50).","on_invalid":"ignore","default":25,"minimum":1,"maximum":50}],"returns":"results[]{product_id, slug, url, name, image, category} + collections[]{record_id, title, slug, subtype}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"air jordan 4"}},{"name":"suggest","description":"Autocomplete suggestions for a partial query — quick product + collection name matches as the customer types. Lighter than search.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Partial search text to complete.","on_invalid":"reject","example":"jordan","aliases":["q","term"]}],"returns":"products[]{product_id, slug, name, image} + collections[]{title, slug}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"jordan"}},{"name":"product_detail","description":"Full catalogue record for one product by `slug` / `url` / `product_id`: name, nickname, brand, SKU, colorway, designer, gender, silhouette, release date, season, materials, size range, taxonomy, images, the GOAT display price and the offer floor/ceiling. Pair with `prices` for the live per-size resale grid.","required_params":[],"optional_params":["slug","url","product_id"],"params":[{"name":"slug","type":"string","required":false,"description":"Product slug from a GOAT URL (goat.com/sneakers/<slug>) — copy it from search results. Provide slug OR url.","on_invalid":"reject","example":"air-jordan-1-retro-high-og-chicago-555088-101","aliases":["url_key","product_slug","id_slug"]},{"name":"url","type":"string","required":false,"description":"Full GOAT product URL — alternative to slug.","on_invalid":"reject","example":"https://www.goat.com/sneakers/air-jordan-1-retro-high-og-chicago-555088-101","aliases":["product_url"]},{"name":"product_id","type":"integer","required":false,"description":"GOAT productTemplateId (the numeric id from a search/detail result). Provide product_id OR slug OR url.","on_invalid":"reject","example":14741,"aliases":["product_template_id","template_id"]}],"returns":"product{product_id, slug, url, name, nickname, brand, sku, color, designer, gender, silhouette, release_date, size_range, taxonomy, images, display_price_usd, min_offer_usd, max_offer_usd}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"air-jordan-1-retro-high-og-chicago-555088-101"}},{"name":"prices","description":"Live per-size resale price grid for a product (the market-data moat). For each size of the given `condition` it returns the lowest live ask + listing count, plus the cheapest listing overall. Accepts `slug`/`url`/`product_id`. `condition` (used/new_no_defects), `country` set the market. Optional `size` narrows to one size (returns every live listing for it). Honest-empty when nothing is listed.","required_params":[],"optional_params":["slug","url","product_id","condition","country","size"],"params":[{"name":"slug","type":"string","required":false,"description":"Product slug from a GOAT URL (goat.com/sneakers/<slug>) — copy it from search results. Provide slug OR url.","on_invalid":"reject","example":"air-jordan-1-retro-high-og-chicago-555088-101","aliases":["url_key","product_slug","id_slug"]},{"name":"url","type":"string","required":false,"description":"Full GOAT product URL — alternative to slug.","on_invalid":"reject","example":"https://www.goat.com/sneakers/air-jordan-1-retro-high-og-chicago-555088-101","aliases":["product_url"]},{"name":"product_id","type":"integer","required":false,"description":"GOAT productTemplateId (the numeric id from a search/detail result). Provide product_id OR slug OR url.","on_invalid":"reject","example":14741,"aliases":["product_template_id","template_id"]},{"name":"condition","type":"enum","required":false,"description":"Listing condition for the live price grid. 'used' is the deep public resale pool; 'new_no_defects' covers brand-new pairs.","on_invalid":"reject","allowed_values":[{"value":"used","label":"Used (pre-owned resale)"},{"value":"new_no_defects","label":"New, no defects"}],"default":"used","aliases":["shoe_condition"]},{"name":"country","type":"enum","required":false,"description":"Market/country the prices are quoted for (affects asks + FX).","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"IT","label":"Italy"},{"value":"CA","label":"Canada"},{"value":"AU","label":"Australia"},{"value":"JP","label":"Japan"},{"value":"KR","label":"South Korea"},{"value":"HK","label":"Hong Kong"},{"value":"NL","label":"Netherlands"},{"value":"ES","label":"Spain"}],"default":"US","aliases":["country_code","cc"]},{"name":"size","type":"string","required":false,"description":"Optional single size (e.g. 10, 10.5) — returns every live listing for just that size instead of the whole grid.","on_invalid":"reject","example":"10","aliases":["variant_size"]}],"returns":"sizes[]{size, lowest_ask_usd, listing_count} + lowest{size, price_usd} + listings[]{listing_id, size, price_usd, shoe_condition, box_condition, instant_ship, sale_status} (when `size` given) + product reference","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"air-jordan-1-retro-high-og-chicago-555088-101","condition":"used"}},{"name":"related","description":"Products related to one product by `slug`/`url`: GOAT's recommended products plus the brand / category / silhouette grids GOAT surfaces on the page. Catalogue discovery from any starting product.","required_params":[],"optional_params":["slug","url"],"params":[{"name":"slug","type":"string","required":false,"description":"Product slug from a GOAT URL (goat.com/sneakers/<slug>) — copy it from search results. Provide slug OR url.","on_invalid":"reject","example":"air-jordan-1-retro-high-og-chicago-555088-101","aliases":["url_key","product_slug","id_slug"]},{"name":"url","type":"string","required":false,"description":"Full GOAT product URL — alternative to slug.","on_invalid":"reject","example":"https://www.goat.com/sneakers/air-jordan-1-retro-high-og-chicago-555088-101","aliases":["product_url"]}],"returns":"recommended[]{product_id, slug, url, name, image, brand} + brand_products[] + category_products[] + silhouette_products[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"air-jordan-1-retro-high-og-chicago-555088-101"}}]},{"name":"goodreads","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Goodreads API scraper — book details, ratings, reviews, author profiles & bibliographies, series, Listopia lists, genre charts, and quotes from goodreads.com (no account required)","version":"1.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/goodreads/v1","spec_available":true,"actions":[{"name":"book_detail","description":"Full book record from Goodreads by book ID or URL: title, author(s), average rating, total ratings & text-reviews counts, 1-5 star distribution, genres, series, ISBN/ISBN-13/ASIN, publisher, publication year, page count, edition count, featured characters & settings, literary awards, retailer buy links, and up to 30 embedded reader reviews.","required_params":[],"optional_params":["id","url","reviews_limit","include_pii"],"params":[{"name":"id","type":"string","required":false,"description":"Goodreads numeric book id (the digits in /book/show/<id>-slug). Supply `id` OR `url`.","on_invalid":"reject","example":"2767052","aliases":["book_id"]},{"name":"url","type":"string","required":false,"description":"Full Goodreads book URL — an alternative to `id`.","on_invalid":"reject","example":"https://www.goodreads.com/book/show/2767052"},{"name":"reviews_limit","type":"integer","required":false,"description":"Maximum number of reviews to return per book (up to ~30 are embedded on the Goodreads book page; default 30).","on_invalid":"ignore","default":30,"example":30,"minimum":1},{"name":"include_pii","type":"boolean","required":false,"description":"If true, do NOT redact reviewer display data (default redacts phone/email, keeps public name).","on_invalid":"ignore","default":false,"example":false}],"returns":"book{} — title, authors[], avg_rating, ratings_count, reviews_count, ratings_dist, genres, series, isbn/isbn13/asin, publisher, publish_year, num_pages, characters[], places[], awards[], buy_links[], editions, reviews_sample[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"2767052"}},{"name":"search","description":"Search for books or authors on Goodreads by title, author name, or keyword → returns matching results with title, author, ISBN, book ID, average rating, and cover URL.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Book/author search text (autocomplete typeahead → results[]).","on_invalid":"reject","example":"hunger games","aliases":["q"]}],"returns":"items[] (title, author, author_id, isbn, book_id, avg_rating, url, image_url), count, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"hunger games"}},{"name":"author","description":"Author profile from Goodreads by author ID or URL: name, average rating, total ratings, birth/death date & place, genres, biography, and a sample of their books.","required_params":[],"optional_params":["id","url"],"params":[{"name":"id","type":"string","required":false,"description":"Goodreads numeric author id (the digits in /author/show/<id>). Supply `id` OR `url`.","on_invalid":"reject","example":"153394","aliases":["author_id"]},{"name":"url","type":"string","required":false,"description":"Full Goodreads author URL — an alternative to `id`.","on_invalid":"reject","example":"https://www.goodreads.com/author/show/153394"}],"returns":"author{} — name, avg_rating, ratings_count, birth_date/place, genres, bio, books[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"153394"}},{"name":"author_books","description":"An author's complete bibliography on Goodreads (paginated) by author ID or URL → every book with its title, book ID, average rating, ratings count, cover, and publication year.","required_params":[],"optional_params":["id","url","page"],"params":[{"name":"id","type":"string","required":false,"description":"Goodreads numeric author id (the digits in /author/show/<id>). Supply `id` OR `url`.","on_invalid":"reject","example":"153394","aliases":["author_id"]},{"name":"url","type":"string","required":false,"description":"Full Goodreads author URL — an alternative to `id`.","on_invalid":"reject","example":"https://www.goodreads.com/author/show/153394"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more / data.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"books[] (book_id, title, url, avg_rating, ratings_count, cover, published_year), author_name, count, page, has_more","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"153394"}},{"name":"reviews","description":"Fetch reader reviews for a book on Goodreads (by ID or URL) → each review includes the user, star rating, full review text, date, likes count, and spoiler flag. Returns up to 30 reviews per request.","required_params":[],"optional_params":["id","url","book_id","include_pii"],"params":[{"name":"id","type":"string","required":false,"description":"Goodreads numeric book id (the digits in /book/show/<id>-slug). Supply `id` OR `url`.","on_invalid":"reject","example":"2767052","aliases":["book_id"]},{"name":"url","type":"string","required":false,"description":"Full Goodreads book URL — an alternative to `id`.","on_invalid":"reject","example":"https://www.goodreads.com/book/show/2767052"},{"name":"reviews_limit","type":"integer","required":false,"description":"Maximum number of reviews to return per book (up to ~30 are embedded on the Goodreads book page; default 30).","on_invalid":"ignore","default":30,"example":30,"minimum":1},{"name":"include_pii","type":"boolean","required":false,"description":"If true, do NOT redact reviewer display data (default redacts phone/email, keeps public name).","on_invalid":"ignore","default":false,"example":false}],"returns":"reviews[] (user, rating, text, date, likes, spoiler), count, book_id","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"series","description":"A Goodreads book series by series ID or URL → the ordered list of books in the series (title, book ID, URL) plus the primary/total work counts.","required_params":[],"optional_params":["id","url"],"params":[{"name":"id","type":"string","required":false,"description":"Goodreads numeric series id (the digits in /series/<id>-slug). Supply `id` OR `url`.","on_invalid":"reject","example":"73758","aliases":["series_id"]},{"name":"url","type":"string","required":false,"description":"Full Goodreads series URL — an alternative to `id`.","on_invalid":"reject","example":"https://www.goodreads.com/series/show/2767052"}],"returns":"title, primary_works_count, total_works_count, books[] (book_id, title, url), count","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"73758"}},{"name":"list","description":"A Goodreads Listopia list by list ID or URL (paginated) → its ranked books with the community score, vote count, and rating for each, plus the list title and total voters.","required_params":[],"optional_params":["id","url","page"],"params":[{"name":"id","type":"string","required":false,"description":"Goodreads Listopia list id (the digits in /list/show/<id>). Supply `id` OR `url`.","on_invalid":"reject","example":"1","aliases":["list_id"]},{"name":"url","type":"string","required":false,"description":"Full Goodreads list URL — an alternative to `id`.","on_invalid":"reject","example":"https://www.goodreads.com/list/show/2767052"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more / data.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"title, total_books, voters, description, books[] (rank, book_id, title, author, score, votes, avg_rating, ratings_count, url), count, page, has_more","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"1"}},{"name":"lists_by_tag","description":"Discover the most popular Goodreads Listopia lists for a topic tag (e.g. fantasy, romance, classics) — returns matching curated lists you can then pull with `list`.","required_params":["tag"],"optional_params":["page"],"params":[{"name":"tag","type":"string","required":true,"description":"A Listopia topic tag (e.g. fantasy, romance, classics, ya) → the most popular curated lists for that topic.","on_invalid":"reject","example":"fantasy"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more / data.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"lists[] (list_id, title, url), tag, count, page, has_more","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{"tag":"fantasy"}},{"name":"genre","description":"The most-read books in a Goodreads genre / shelf this week (e.g. fantasy, mystery, romance, science-fiction, young-adult) → trending books with cover and link.","required_params":["genre"],"optional_params":[],"params":[{"name":"genre","type":"string","required":true,"description":"A Goodreads genre / shelf slug (e.g. fantasy, fiction, mystery, romance, science-fiction, young-adult, non-fiction) → the most-read books for that genre.","on_invalid":"reject","example":"fantasy","aliases":["name"]}],"returns":"books[] (book_id, title, url, cover), genre, related_genres[], count","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"genre":"fantasy"}},{"name":"quotes","description":"Quotes from Goodreads — either every quote BY an author (author_id) or every quote FROM a book (work_id, found in book_detail.book.work_id). Paginated; each quote has its text, source title, like count, and topic tags.","required_params":[],"optional_params":["author_id","work_id","book_id","id","url","page","include_pii"],"params":[{"name":"author_id","type":"string","required":false,"description":"Goodreads author id for quotes BY that author. Supply `author_id`, OR `work_id` (book), OR a full `url`.","on_invalid":"reject","example":"153394","aliases":["id"]},{"name":"work_id","type":"string","required":false,"description":"Goodreads WORK id (from book_detail.book.work_id) for quotes FROM that book. Supply `work_id`, OR `author_id`, OR a full `url`.","on_invalid":"reject","example":"2792775","aliases":["book_id"]},{"name":"url","type":"string","required":false,"description":"Full Goodreads quotes URL (/author/quotes/<id> or /work/quotes/<id>) — an alternative to author_id / work_id.","on_invalid":"reject","example":"https://www.goodreads.com/author/quotes/153394"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more / data.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"include_pii","type":"boolean","required":false,"description":"If true, do NOT redact reviewer display data (default redacts phone/email, keeps public name).","on_invalid":"ignore","default":false,"example":false}],"returns":"quotes[] (text, author, title, likes, tags), scope, count, page, has_more","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{"author_id":"153394"}}]},{"name":"google-maps","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Google Maps API — place search, business details, public reviews, nearby search, geocoding and change monitoring: name, address, phone, website, rating, review count, categories, photos and coordinates from Google Maps (geo-biased, logged-out, no API key or quota)","version":"1.2.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/google-maps/v1","spec_available":true,"actions":[{"name":"place/search","description":"Search places by text query with optional lat/lng geo-bias. Returns up to 200 places with name, address, rating, categories, phone, website, coordinates, photos.","required_params":["query"],"optional_params":["lat","lng","altitude","maxResults","lang","region","include_contacts"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for — business name, type or free text, ideally with a place hint ('pizza Brooklyn', 'Katz's Delicatessen Manhattan').","on_invalid":"reject","example":"specialty coffee Times Square"},{"name":"lat","type":"number","required":false,"description":"Latitude to bias the search around. Strongly recommended — without it Google assumes the central US.","on_invalid":"reject","example":40.7589,"minimum":-90,"maximum":90},{"name":"lng","type":"number","required":false,"description":"Longitude to bias the search around (pair with lat).","on_invalid":"reject","example":-73.9881,"minimum":-180,"maximum":180},{"name":"maxResults","type":"integer","required":false,"description":"How many places to return (1–200). The engine pages Google's 20-per-page results internally — no page/cursor needed.","on_invalid":"reject","default":20,"minimum":1,"maximum":200},{"name":"lang","type":"string","required":false,"description":"Result language (Google hl code: en, de, tr, es…). Affects category names and localized fields.","on_invalid":"ignore","default":"en","example":"en"},{"name":"region","type":"string","required":false,"description":"Region bias (Google gl country code: us, de, tr…).","on_invalid":"ignore","default":"us","example":"us"},{"name":"altitude","type":"integer","required":false,"description":"Advanced: viewport altitude in meters — smaller = tighter local results, larger = wider area.","on_invalid":"ignore","default":15000,"minimum":100,"maximum":10000000},{"name":"include_contacts","type":"boolean","required":false,"description":"Enrich each result that has a website with contact details scraped from that site: business email(s), extra phone numbers, and social profile links (LinkedIn, Instagram, Facebook, Twitter/X, YouTube, TikTok). Adds email, emails, contact_phones and socials to each place. Off by default; turning it on fetches every result's website (through the proxy) so the response is slower — best used for lead generation. Sites that fail/block are returned without contacts.","on_invalid":"ignore","default":false,"example":true}],"returns":"places[]{fid, place_id, cid, entity_id, name, rating, review_count, category_primary, categories, address, locality, latitude, longitude, website, domain, phone, phone_display, hours_today, photos, photo_count, thumbnail, maps_url} (+ email, emails, contact_phones, socials when include_contacts=true)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"specialty coffee Times Square","lat":40.7589,"lng":-73.9881,"maxResults":10}},{"name":"place/detail","description":"The single richest matching place: name, address, phone, website, rating, total review count, categories, coordinates, opening hours and photos.","required_params":["query"],"optional_params":["lat","lng","lang","region","include_contacts"],"params":[{"name":"query","type":"string","required":true,"description":"The business to look up — name plus a location hint gives the best match.","on_invalid":"reject","example":"Katz's Delicatessen Manhattan"},{"name":"lat","type":"number","required":false,"description":"Latitude to bias the search around. Strongly recommended — without it Google assumes the central US.","on_invalid":"reject","example":40.7589,"minimum":-90,"maximum":90},{"name":"lng","type":"number","required":false,"description":"Longitude to bias the search around (pair with lat).","on_invalid":"reject","example":-73.9881,"minimum":-180,"maximum":180},{"name":"lang","type":"string","required":false,"description":"Result language (Google hl code: en, de, tr, es…). Affects category names and localized fields.","on_invalid":"ignore","default":"en","example":"en"},{"name":"region","type":"string","required":false,"description":"Region bias (Google gl country code: us, de, tr…).","on_invalid":"ignore","default":"us","example":"us"},{"name":"include_contacts","type":"boolean","required":false,"description":"Enrich each result that has a website with contact details scraped from that site: business email(s), extra phone numbers, and social profile links (LinkedIn, Instagram, Facebook, Twitter/X, YouTube, TikTok). Adds email, emails, contact_phones and socials to each place. Off by default; turning it on fetches every result's website (through the proxy) so the response is slower — best used for lead generation. Sites that fail/block are returned without contacts.","on_invalid":"ignore","default":false,"example":true}],"returns":"place{fid, place_id, cid, entity_id, name, rating, review_count, category_primary, categories, address, locality, latitude, longitude, website, domain, phone, phone_display, hours_today, photos, photo_count, thumbnail, maps_url} (+ email, emails, contact_phones, socials when include_contacts=true)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"Katz's Delicatessen Manhattan","lat":40.7223,"lng":-73.9874}},{"name":"place/by-id","description":"Fetch a place directly by its Google id — fid (0x…:0x…), place_id or numeric cid — no text query needed. Use the id returned by place/search.","required_params":[],"optional_params":["fid","place_id","cid","query","lat","lng","lang","region"],"params":[{"name":"fid","type":"string","required":false,"description":"Google feature id (ftid '0x…:0x…'). Pass this OR cid OR place_id.","on_invalid":"ignore","example":"0x89c2598f7ff4aa09:0x313547e757cb8cea"},{"name":"place_id","type":"string","required":false,"description":"Alias of fid (same 0x…:0x… value).","on_invalid":"ignore"},{"name":"cid","type":"string","required":false,"description":"Numeric Google customer id (cid). Pass this OR fid.","on_invalid":"ignore","example":"3545343783316455146"},{"name":"query","type":"string","required":false,"description":"Optional text fallback if no id is supplied.","on_invalid":"ignore"},{"name":"lat","type":"number","required":false,"description":"Latitude to bias the search around. Strongly recommended — without it Google assumes the central US.","on_invalid":"reject","example":40.7589,"minimum":-90,"maximum":90},{"name":"lng","type":"number","required":false,"description":"Longitude to bias the search around (pair with lat).","on_invalid":"reject","example":-73.9881,"minimum":-180,"maximum":180},{"name":"lang","type":"string","required":false,"description":"Result language (Google hl code: en, de, tr, es…). Affects category names and localized fields.","on_invalid":"ignore","default":"en","example":"en"},{"name":"region","type":"string","required":false,"description":"Region bias (Google gl country code: us, de, tr…).","on_invalid":"ignore","default":"us","example":"us"}],"returns":"place{fid, place_id, cid, entity_id, name, rating, review_count, category_primary, categories, address, locality, latitude, longitude, website, domain, phone, phone_display, hours_today, photos, photo_count, thumbnail, maps_url}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{"fid":"0x89c2598f7ff4aa09:0x313547e757cb8cea"}},{"name":"place/nearby","description":"Find places of a given type near coordinates (e.g. coffee shops, pharmacies, ATMs around a lat/lng). Returns up to 200 nearby places.","required_params":["lat","lng","type"],"optional_params":["radius","maxResults","lang","region"],"params":[{"name":"type","type":"string","required":true,"description":"The kind of place to find nearby — a category or keyword ('coffee shop', 'pharmacy', 'ATM', 'sushi restaurant').","on_invalid":"reject","example":"coffee shop"},{"name":"lat","type":"number","required":true,"description":"Latitude of the center point.","on_invalid":"reject","example":40.7589,"minimum":-90,"maximum":90},{"name":"lng","type":"number","required":true,"description":"Longitude of the center point.","on_invalid":"reject","example":-73.9851,"minimum":-180,"maximum":180},{"name":"radius","type":"integer","required":false,"description":"Approximate search radius in meters (wider = more area, less local precision). Default ~2 km.","on_invalid":"ignore","default":2000,"minimum":50,"maximum":50000},{"name":"maxResults","type":"integer","required":false,"description":"How many places to return (1–200).","on_invalid":"reject","default":20,"minimum":1,"maximum":200},{"name":"lang","type":"string","required":false,"description":"Result language (Google hl code: en, de, tr, es…). Affects category names and localized fields.","on_invalid":"ignore","default":"en","example":"en"},{"name":"region","type":"string","required":false,"description":"Region bias (Google gl country code: us, de, tr…).","on_invalid":"ignore","default":"us","example":"us"}],"returns":"places[]{fid, place_id, cid, entity_id, name, rating, review_count, category_primary, categories, address, locality, latitude, longitude, website, domain, phone, phone_display, hours_today, photos, photo_count, thumbnail, maps_url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"type":"coffee shop","lat":40.7589,"lng":-73.9851,"maxResults":10}},{"name":"geocode","description":"Turn an address or place name into coordinates: returns latitude, longitude and the formatted address of the best match.","required_params":["address"],"optional_params":["lang","region"],"params":[{"name":"address","type":"string","required":true,"description":"The address or place name to geocode.","on_invalid":"reject","example":"350 5th Ave, New York, NY 10118"},{"name":"lang","type":"string","required":false,"description":"Result language (Google hl code: en, de, tr, es…). Affects category names and localized fields.","on_invalid":"ignore","default":"en","example":"en"},{"name":"region","type":"string","required":false,"description":"Region bias (Google gl country code: us, de, tr…).","on_invalid":"ignore","default":"us","example":"us"}],"returns":"{query, latitude, longitude, formatted_address, locality, name, fid, place_id, maps_url}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"address":"350 5th Ave, New York, NY 10118"}},{"name":"place/reviews","description":"Public Google reviews for a place — paginated to ALL reviews. Each review carries author name, rating, text, date, photos and the owner's response. Resolve a place by query, or pass its fid/cid/place_id from place/search.","required_params":[],"optional_params":["query","fid","cid","place_id","sort","max_reviews","cursor","lat","lng","lang","region"],"params":[{"name":"query","type":"string","required":false,"description":"The business whose reviews you want (name + location). Pass this OR an id (fid/cid/place_id).","on_invalid":"ignore","example":"Katz's Delicatessen Manhattan"},{"name":"fid","type":"string","required":false,"description":"Google feature id from place/search — skips re-resolving.","on_invalid":"ignore","example":"0x89c2598f7ff4aa09:0x313547e757cb8cea"},{"name":"cid","type":"string","required":false,"description":"Numeric Google cid (alternative to fid).","on_invalid":"ignore"},{"name":"place_id","type":"string","required":false,"description":"Alias of fid.","on_invalid":"ignore"},{"name":"sort","type":"enum","required":false,"description":"Review ordering. 'newest' for the latest reviews, 'highest_rating'/'lowest_rating' to surface best/worst.","on_invalid":"ignore","allowed_values":[{"value":"most_relevant","label":"Most relevant"},{"value":"newest","label":"Newest first"},{"value":"highest_rating","label":"Highest rating first"},{"value":"lowest_rating","label":"Lowest rating first"}],"default":"most_relevant"},{"name":"max_reviews","type":"integer","required":false,"description":"How many reviews to return. The engine paginates Google's 20-per-page reviews automatically up to this many.","on_invalid":"reject","default":20,"minimum":1,"maximum":2000},{"name":"cursor","type":"string","required":false,"description":"Continue from a previous response's pagination.cursor to fetch the next batch (omit for the first page).","on_invalid":"ignore"},{"name":"lat","type":"number","required":false,"description":"Latitude to bias the search around. Strongly recommended — without it Google assumes the central US.","on_invalid":"reject","example":40.7589,"minimum":-90,"maximum":90},{"name":"lng","type":"number","required":false,"description":"Longitude to bias the search around (pair with lat).","on_invalid":"reject","example":-73.9881,"minimum":-180,"maximum":180},{"name":"lang","type":"string","required":false,"description":"Result language (Google hl code: en, de, tr, es…). Affects category names and localized fields.","on_invalid":"ignore","default":"en","example":"en"},{"name":"region","type":"string","required":false,"description":"Region bias (Google gl country code: us, de, tr…).","on_invalid":"ignore","default":"us","example":"us"}],"returns":"{place{fid,place_id,cid,name,rating,review_count,address,maps_url}, reviews[]{review_id, author_name, author_photo, author_profile_url, rating, text, language, relative_date, date, photos, photo_count, owner_response{text,relative_date}}, count, pagination{cursor, has_more}, aggregate{rating, total}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":20,"min":3},"example_params":{"query":"Katz's Delicatessen Manhattan","lat":40.7223,"lng":-73.9874,"max_reviews":20}},{"name":"place/photos","description":"Public photos for a place — the featured/hero gallery plus user-uploaded photos attached to reviews. Each is a stable image CDN URL (append '=s800' etc. for a sized variant). Resolve by query or pass an id.","required_params":[],"optional_params":["query","fid","cid","place_id","lat","lng","lang","region"],"params":[{"name":"query","type":"string","required":false,"description":"The business whose photos you want (or pass an id).","on_invalid":"ignore","example":"Katz's Delicatessen Manhattan"},{"name":"fid","type":"string","required":false,"description":"Google feature id from place/search.","on_invalid":"ignore"},{"name":"cid","type":"string","required":false,"description":"Numeric Google cid (alternative to fid).","on_invalid":"ignore"},{"name":"place_id","type":"string","required":false,"description":"Alias of fid.","on_invalid":"ignore"},{"name":"lat","type":"number","required":false,"description":"Latitude to bias the search around. Strongly recommended — without it Google assumes the central US.","on_invalid":"reject","example":40.7589,"minimum":-90,"maximum":90},{"name":"lng","type":"number","required":false,"description":"Longitude to bias the search around (pair with lat).","on_invalid":"reject","example":-73.9881,"minimum":-180,"maximum":180},{"name":"lang","type":"string","required":false,"description":"Result language (Google hl code: en, de, tr, es…). Affects category names and localized fields.","on_invalid":"ignore","default":"en","example":"en"},{"name":"region","type":"string","required":false,"description":"Region bias (Google gl country code: us, de, tr…).","on_invalid":"ignore","default":"us","example":"us"}],"returns":"{place{fid,place_id,cid,name,maps_url}, photos[] (image CDN URLs), count}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"place/freshness","description":"Monitor a place for changes: returns the current place plus a typed diff vs the snapshot you pass from a previous call (rating/review_count/phone/website/address changes).","required_params":["query"],"optional_params":["lat","lng","previous","lang","region"],"params":[{"name":"query","type":"string","required":true,"description":"The business to monitor (same query each run).","on_invalid":"reject","example":"Katz's Delicatessen Manhattan"},{"name":"lat","type":"number","required":false,"description":"Latitude to bias the search around. Strongly recommended — without it Google assumes the central US.","on_invalid":"reject","example":40.7589,"minimum":-90,"maximum":90},{"name":"lng","type":"number","required":false,"description":"Longitude to bias the search around (pair with lat).","on_invalid":"reject","example":-73.9881,"minimum":-180,"maximum":180},{"name":"previous","type":"object","required":false,"description":"The `place` object from your previous freshness call. Omit on the first run (returns first_seen: true); pass it on later runs to get the change diff.","on_invalid":"ignore"},{"name":"lang","type":"string","required":false,"description":"Result language (Google hl code: en, de, tr, es…). Affects category names and localized fields.","on_invalid":"ignore","default":"en","example":"en"},{"name":"region","type":"string","required":false,"description":"Region bias (Google gl country code: us, de, tr…).","on_invalid":"ignore","default":"us","example":"us"}],"returns":"place{...} + freshness{first_seen, changed, snapshot_hash, prev_snapshot_hash, changes{field: {old, new}}}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"Katz's Delicatessen Manhattan","lat":40.7223,"lng":-73.9874}}]},{"name":"google-trends","category":{"id":"search-seo","title":"Search & SEO"},"title":"Google Trends API — trending-now searches, realtime story-clusters, keyword suggest and the full category taxonomy. Note: Google has closed the interest-over-time, interest-by-region, related-queries and related-topics widgets to API clients; those four actions stay addressable and answer with an explicit DISABLED verdict rather than an empty result.","version":"1.2.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/google-trends/v1","spec_available":true,"actions":[{"name":"trending_now","description":"Currently trending searches for a geo (title + approx traffic + news articles)","required_params":[],"optional_params":["geo"],"params":[{"name":"geo","type":"string","required":false,"description":"Country code for the trending feed (e.g. US, GB, JP). Required by the RSS feed; defaults to US.","on_invalid":"ignore","default":"US","example":"US"}],"returns":"geo, trends[] (title/traffic/approx_traffic/link/articles[] with title/url/source)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"geo":"US"}},{"name":"suggest","description":"Keyword autocomplete — candidate topics/entities (the Google Trends suggestion list) so you can pick the right entity (e.g. the 'Apple Inc. — Technology company' topic mid vs the fruit) before querying interest_over_time/related.","required_params":["keyword"],"optional_params":["hl"],"params":[{"name":"keyword","type":"string","required":true,"description":"The term to autocomplete into Trends topics/entities.","on_invalid":"reject","example":"apple","aliases":["query","q"]},{"name":"hl","type":"string","required":false,"description":"UI language for suggestion titles (e.g. en-US, tr, de).","on_invalid":"ignore","default":"en-US","example":"en-US"}],"returns":"keyword, suggestions[]{mid, title, type}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"keyword":"bitcoin"}},{"name":"categories","description":"List the Google Trends category taxonomy (id + name, hierarchical) so you can find the right `category` id to narrow interest_over_time / related_queries / interest_by_region (e.g. 7=Finance, 5=Computers & Electronics). Optionally filter by a name substring.","required_params":[],"optional_params":["query"],"params":[{"name":"query","type":"string","required":false,"description":"Optional case-insensitive substring to filter category names (e.g. 'finance', 'sports'). Omit to list the full taxonomy.","on_invalid":"ignore","example":"finance","aliases":["q"]}],"returns":"query, total (full taxonomy size), categories[]{id, name, parent_id, parent_name, depth} — pass an `id` as the `category` param of other actions","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"realtime_trending","description":"Realtime trending story-clusters for a country (richer than trending_now): each cluster has a title, approximate search-traffic volume, the FULL related-query set, category ids, and an article count. Best for 'what is breaking right now' research.","required_params":[],"optional_params":["geo","hours","limit"],"params":[{"name":"geo","type":"string","required":false,"description":"Country code for the realtime feed (e.g. US, GB, JP, TR). Country-level only (sub-region suffixes are dropped). Country/US-state names are auto-mapped. Defaults to US.","on_invalid":"ignore","default":"US","example":"US"},{"name":"hours","type":"enum","required":false,"description":"Trailing time window for the realtime feed. Defaults to 24h.","on_invalid":"ignore","allowed_values":[{"value":4,"label":"last 4 hours"},{"value":24,"label":"last 24 hours"},{"value":48,"label":"last 48 hours"},{"value":168,"label":"last 7 days"}],"default":24,"example":24},{"name":"limit","type":"integer","required":false,"description":"Max story-clusters to return (1-300; Google returns the most trending first). Defaults to 50.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":300}],"returns":"geo, hours_window, stories[]{title, traffic, started/started_date, ended, active, category_ids[], related_queries[], article_count}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"geo":"US"}}]},{"name":"grailed","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Grailed API scraper — curated menswear, streetwear & archive-fashion resale data from grailed.com: search listings with price/size/designer/category/condition filters, full listing detail (description, measurements, photos, seller), SOLD comps for price history, designer & seller storefront listings — no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/grailed/v1","spec_available":true,"actions":[{"name":"search","description":"Search Grailed listings by keyword + filters (designer, category, size, color, condition, department, strata, location, price band) with sorting and pagination. Returns live listings with price, size, condition, designer, photos and a seller summary. The catalog-discovery surface.","required_params":[],"optional_params":["query","designer","category","category_path","department","size","color","condition","strata","location","price_from","price_to","sort","page","per_page"],"params":[{"name":"query","type":"string","required":false,"description":"Keywords to search for (give query and/or at least one filter — empty query + a filter browses that facet).","on_invalid":"reject","example":"stone island jacket","aliases":["q","search_text"]},{"name":"designer","type":"string","required":false,"description":"Filter to one designer/brand by its EXACT Grailed name (e.g. 'Stone Island', 'Rick Owens', 'Supreme'). Resolve the exact name with the `designers` action.","on_invalid":"ignore","example":"Stone Island","aliases":["brand"]},{"name":"category","type":"enum","required":false,"description":"Top-level category facet.","on_invalid":"ignore","allowed_values":[{"value":"tops","label":"Tops"},{"value":"bottoms","label":"Bottoms"},{"value":"outerwear","label":"Outerwear"},{"value":"footwear","label":"Footwear"},{"value":"tailoring","label":"Tailoring"},{"value":"accessories","label":"Accessories"},{"value":"womens_tops","label":"Women's Tops"},{"value":"womens_bottoms","label":"Women's Bottoms"},{"value":"womens_outerwear","label":"Women's Outerwear"},{"value":"womens_dresses","label":"Women's Dresses"},{"value":"womens_footwear","label":"Women's Footwear"},{"value":"womens_accessories","label":"Women's Accessories"},{"value":"womens_bags_luggage","label":"Women's Bags & Luggage"},{"value":"womens_jewelry","label":"Women's Jewelry"}]},{"name":"category_path","type":"string","required":false,"description":"Advanced: exact sub-category path (e.g. 'outerwear.denim_jackets', 'footwear.hi_top_sneakers'). Copy from a listing's category_path.","on_invalid":"ignore","example":"outerwear.denim_jackets"},{"name":"department","type":"enum","required":false,"description":"Menswear or womenswear section.","on_invalid":"ignore","allowed_values":[{"value":"menswear","label":"Menswear"},{"value":"womenswear","label":"Womenswear"}]},{"name":"size","type":"string","required":false,"description":"Size facet (e.g. 'm', 's', 'us 10', '32'). Sizes are category specific — copy the exact value from a search result's `size`.","on_invalid":"ignore","example":"m","aliases":["sizes"]},{"name":"color","type":"enum","required":false,"description":"Primary color facet.","on_invalid":"ignore","allowed_values":[{"value":"black","label":"Black"},{"value":"white","label":"White"},{"value":"gray","label":"Gray"},{"value":"brown","label":"Brown"},{"value":"beige","label":"Beige"},{"value":"blue","label":"Blue"},{"value":"green","label":"Green"},{"value":"red","label":"Red"},{"value":"purple","label":"Purple"},{"value":"pink","label":"Pink"},{"value":"yellow","label":"Yellow"},{"value":"orange","label":"Orange"},{"value":"silver","label":"Silver"},{"value":"gold","label":"Gold"},{"value":"multi","label":"Multi"}]},{"name":"condition","type":"enum","required":false,"description":"Item condition.","on_invalid":"ignore","allowed_values":[{"value":"is_new","label":"New/Never Worn"},{"value":"is_gently_used","label":"Gently Used"},{"value":"is_used","label":"Used"},{"value":"is_worn","label":"Well Worn"},{"value":"is_not_specified","label":"Not Specified"}]},{"name":"strata","type":"enum","required":false,"description":"Grailed market tier (curation level).","on_invalid":"ignore","allowed_values":[{"value":"grailed","label":"Grails — high-end designers"},{"value":"hype","label":"Hype — streetwear/hyped brands"},{"value":"sartorial","label":"Sartorial — tailored/menswear classics"},{"value":"basic","label":"Basic — entry / everyday"}]},{"name":"location","type":"enum","required":false,"description":"Seller location region.","on_invalid":"ignore","allowed_values":[{"value":"United States","label":"United States"},{"value":"Canada","label":"Canada"},{"value":"United Kingdom","label":"United Kingdom"},{"value":"Europe","label":"Europe"},{"value":"Asia","label":"Asia"},{"value":"Australia/NZ","label":"Australia / NZ"},{"value":"Other","label":"Other"}],"aliases":["region"]},{"name":"price_from","type":"number","required":false,"description":"Only listings at or above this price (USD).","on_invalid":"ignore","example":100,"minimum":0},{"name":"price_to","type":"number","required":false,"description":"Only listings at or below this price (USD).","on_invalid":"ignore","example":500,"minimum":0},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"newest","label":"Newest first"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"most_popular","label":"Most popular (heat)"},{"value":"recently_bumped","label":"Recently bumped"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Page number (Algolia serves up to 200 pages per query).","on_invalid":"ignore","default":1,"minimum":1,"maximum":200},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1–100).","on_invalid":"ignore","default":40,"minimum":1,"maximum":100}],"returns":"listings[]{id, title, url, price, currency, size, condition, condition_label, color, category, department, designers[], designer_names, strata, location, cover_photo, buy_now, make_offer, sold, seller{id, username, rating_average, rating_count}} + meta.pagination{page, has_more} + meta.total_results","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"stone island","per_page":10}},{"name":"listing_detail","description":"Full detail for one listing by `id` or `url`: title, description, price, size (pretty + exact), condition, color, category, all photos, measurements, traits, shipping table, designers, sold price, and a seller summary.","required_params":[],"optional_params":["id","url"],"params":[{"name":"id","type":"string","required":false,"description":"Grailed listing id — the digits in the listing URL (grailed.com/listings/<id>-slug). Take it from search results. Provide id OR url.","on_invalid":"reject","example":"99122353","aliases":["listing_id"]},{"name":"url","type":"string","required":false,"description":"Full Grailed listing URL — alternative to id.","on_invalid":"ignore","example":"https://www.grailed.com/listings/99122353","aliases":["listing_url"]}],"returns":"listing{id, title, url, description, price, currency, size, pretty_size, condition, condition_label, color, category, subcategory, designers[], styles, strata, buy_now, make_offer, photos[], measurements[]{name, value}, traits[], shipping, sold, sold_price, seller{id, username, rating_average, rating_count, total_bought_and_sold, trusted_seller}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"99122353"}},{"name":"sold_listings","description":"Search SOLD listings (resale comps) by keyword + the same filters as search. Each result carries its sold_price and sold_at — the price-history / market-value moat for valuing menswear, streetwear and archive pieces.","required_params":[],"optional_params":["query","designer","category","department","size","color","condition","strata","price_from","price_to","sort","page","per_page"],"params":[{"name":"query","type":"string","required":false,"description":"Keywords for the sold-comps search (give query and/or a filter).","on_invalid":"reject","example":"supreme box logo","aliases":["q","search_text"]},{"name":"designer","type":"string","required":false,"description":"Filter to one designer/brand by its EXACT Grailed name (e.g. 'Stone Island', 'Rick Owens', 'Supreme'). Resolve the exact name with the `designers` action.","on_invalid":"ignore","example":"Stone Island","aliases":["brand"]},{"name":"category","type":"enum","required":false,"description":"Top-level category facet.","on_invalid":"ignore","allowed_values":[{"value":"tops","label":"Tops"},{"value":"bottoms","label":"Bottoms"},{"value":"outerwear","label":"Outerwear"},{"value":"footwear","label":"Footwear"},{"value":"tailoring","label":"Tailoring"},{"value":"accessories","label":"Accessories"},{"value":"womens_tops","label":"Women's Tops"},{"value":"womens_bottoms","label":"Women's Bottoms"},{"value":"womens_outerwear","label":"Women's Outerwear"},{"value":"womens_dresses","label":"Women's Dresses"},{"value":"womens_footwear","label":"Women's Footwear"},{"value":"womens_accessories","label":"Women's Accessories"},{"value":"womens_bags_luggage","label":"Women's Bags & Luggage"},{"value":"womens_jewelry","label":"Women's Jewelry"}]},{"name":"department","type":"enum","required":false,"description":"Menswear or womenswear section.","on_invalid":"ignore","allowed_values":[{"value":"menswear","label":"Menswear"},{"value":"womenswear","label":"Womenswear"}]},{"name":"size","type":"string","required":false,"description":"Size facet (e.g. 'm', 's', 'us 10', '32'). Sizes are category specific — copy the exact value from a search result's `size`.","on_invalid":"ignore","example":"m","aliases":["sizes"]},{"name":"color","type":"enum","required":false,"description":"Primary color facet.","on_invalid":"ignore","allowed_values":[{"value":"black","label":"Black"},{"value":"white","label":"White"},{"value":"gray","label":"Gray"},{"value":"brown","label":"Brown"},{"value":"beige","label":"Beige"},{"value":"blue","label":"Blue"},{"value":"green","label":"Green"},{"value":"red","label":"Red"},{"value":"purple","label":"Purple"},{"value":"pink","label":"Pink"},{"value":"yellow","label":"Yellow"},{"value":"orange","label":"Orange"},{"value":"silver","label":"Silver"},{"value":"gold","label":"Gold"},{"value":"multi","label":"Multi"}]},{"name":"condition","type":"enum","required":false,"description":"Item condition.","on_invalid":"ignore","allowed_values":[{"value":"is_new","label":"New/Never Worn"},{"value":"is_gently_used","label":"Gently Used"},{"value":"is_used","label":"Used"},{"value":"is_worn","label":"Well Worn"},{"value":"is_not_specified","label":"Not Specified"}]},{"name":"strata","type":"enum","required":false,"description":"Grailed market tier (curation level).","on_invalid":"ignore","allowed_values":[{"value":"grailed","label":"Grails — high-end designers"},{"value":"hype","label":"Hype — streetwear/hyped brands"},{"value":"sartorial","label":"Sartorial — tailored/menswear classics"},{"value":"basic","label":"Basic — entry / everyday"}]},{"name":"price_from","type":"number","required":false,"description":"Only listings at or above this price (USD).","on_invalid":"ignore","example":100,"minimum":0},{"name":"price_to","type":"number","required":false,"description":"Only listings at or below this price (USD).","on_invalid":"ignore","example":500,"minimum":0},{"name":"sort","type":"enum","required":false,"description":"Sold-comp ordering.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Most recently sold"},{"value":"relevance","label":"Relevance"},{"value":"price_high","label":"Sold price: high to low"},{"value":"price_low","label":"Sold price: low to high"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Page number (Algolia serves up to 200 pages per query).","on_invalid":"ignore","default":1,"minimum":1,"maximum":200},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1–100).","on_invalid":"ignore","default":40,"minimum":1,"maximum":100}],"returns":"listings[]{id, title, url, price, sold_price, sold_at, size, condition, color, designers[], department, cover_photo, seller{username, rating_average}} + meta.pagination + meta.total_results","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"supreme","per_page":5}},{"name":"seller_listings","description":"All active listings from one seller's storefront by `seller_id`. Same listing shape as search; paginated. Resolve a seller_id from any search/detail result's seller.id.","required_params":["seller_id"],"optional_params":["query","category","designer","sort","page","per_page"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Grailed seller (user) id — take it from a listing's seller.id.","on_invalid":"reject","example":"1335538","aliases":["user_id"]},{"name":"query","type":"string","required":false,"description":"Optional keyword to search within this seller's items.","on_invalid":"ignore","aliases":["q"]},{"name":"category","type":"enum","required":false,"description":"Top-level category facet.","on_invalid":"ignore","allowed_values":[{"value":"tops","label":"Tops"},{"value":"bottoms","label":"Bottoms"},{"value":"outerwear","label":"Outerwear"},{"value":"footwear","label":"Footwear"},{"value":"tailoring","label":"Tailoring"},{"value":"accessories","label":"Accessories"},{"value":"womens_tops","label":"Women's Tops"},{"value":"womens_bottoms","label":"Women's Bottoms"},{"value":"womens_outerwear","label":"Women's Outerwear"},{"value":"womens_dresses","label":"Women's Dresses"},{"value":"womens_footwear","label":"Women's Footwear"},{"value":"womens_accessories","label":"Women's Accessories"},{"value":"womens_bags_luggage","label":"Women's Bags & Luggage"},{"value":"womens_jewelry","label":"Women's Jewelry"}]},{"name":"designer","type":"string","required":false,"description":"Filter to one designer/brand by its EXACT Grailed name (e.g. 'Stone Island', 'Rick Owens', 'Supreme'). Resolve the exact name with the `designers` action.","on_invalid":"ignore","example":"Stone Island","aliases":["brand"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"newest","label":"Newest first"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"most_popular","label":"Most popular (heat)"},{"value":"recently_bumped","label":"Recently bumped"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Page number (Algolia serves up to 200 pages per query).","on_invalid":"ignore","default":1,"minimum":1,"maximum":200},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1–100).","on_invalid":"ignore","default":40,"minimum":1,"maximum":100}],"returns":"listings[] (search shape) + seller{id, username} + meta.pagination + meta.total_results","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"designers","description":"Search Grailed's designer/brand directory by name → id, slug, listings_count, logo and departments. Use the returned exact `name` to filter search/sold_listings by designer, and the `slug` for the `designer_detail` action.","required_params":["query"],"optional_params":["page","per_page"],"params":[{"name":"query","type":"string","required":true,"description":"Designer/brand name (or part of it) to look up.","on_invalid":"reject","example":"stone","aliases":["q","name"]},{"name":"page","type":"integer","required":false,"description":"Page number (Algolia serves up to 200 pages per query).","on_invalid":"ignore","default":1,"minimum":1,"maximum":200},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1–100).","on_invalid":"ignore","default":40,"minimum":1,"maximum":100}],"returns":"designers[]{id, name, slug, url, listings_count, logo_url, departments[]} + meta.pagination","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"stone"}},{"name":"designer_detail","description":"Designer/brand profile by `slug`: id, title, description, follower count and the exact name to use as a designer filter.","required_params":["slug"],"optional_params":[],"params":[{"name":"slug","type":"string","required":true,"description":"Designer slug from a designer URL (grailed.com/designers/<slug>) or the `designers` action.","on_invalid":"reject","example":"stone-island","aliases":["designer_slug"]}],"returns":"designer{id, slug, name, description, follower_count, favorites_count, hero_url, thumbnail_url, url}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"stone-island"}}]},{"name":"gumtree","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Gumtree UK Classifieds API scraper — search listings & adverts, browse the full category tree, read category/location filters, get rich advert detail, similar listings and keyword suggestions from gumtree.com (cars, property, jobs, for-sale, pets and more). No account needed; seller PII redacted.","version":"2.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/gumtree/v1","spec_available":true,"actions":[{"name":"search","description":"Search Gumtree UK adverts and return paginated listing cards — title, price, location, posted date, images, seller type and attributes. Filter by keyword, area/postcode, category slug, price range, search radius and seller type; sort by newest, price or distance. Fetches up to 50 pages (~1,500 adverts) per call with automatic de-duplication, or pass a full Gumtree search URL.","required_params":[],"optional_params":["market","query","location","category","url","sort","min_price","max_price","distance","seller_type","featured_only","with_photos","max_pages","include_pii"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to search for. Give at least one of query / location / category / url.","on_invalid":"reject","example":"iphone","aliases":["q"]},{"name":"location","type":"string","required":false,"description":"Town / area / postcode to search in (e.g. london, manchester, SW1A). Resolve area names with the filters action.","on_invalid":"reject","example":"london","aliases":["search_location"]},{"name":"category","type":"string","required":false,"description":"Category slug from the categories action (e.g. cars-vans-motorbikes, for-sale, flats-houses, jobs, pets, business-services, community, or a sub-slug like for-sale/baby-kids-stuff). Optional.","on_invalid":"ignore","example":"cars-vans-motorbikes","aliases":["search_category"]},{"name":"url","type":"string","required":false,"description":"A full Gumtree search URL to run as-is (advanced — overrides the other search params).","on_invalid":"ignore","example":"https://www.gumtree.com/search?search_category=for-sale&q=sofa"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"date","label":"Newest first"},{"value":"price_lowest_first","label":"Price: low to high"},{"value":"price_highest_first","label":"Price: high to low"},{"value":"distance","label":"Nearest first (needs location)"},{"value":"relevance","label":"Relevance"}],"default":"date"},{"name":"min_price","type":"number","required":false,"description":"Minimum price filter (in GBP).","on_invalid":"ignore","example":2000},{"name":"max_price","type":"number","required":false,"description":"Maximum price filter (in GBP).","on_invalid":"ignore","example":5000},{"name":"distance","type":"integer","required":false,"description":"Search radius in miles around `location` (1, 3, 5, 10, 15, 25, 50, 75…). Needs location.","on_invalid":"ignore","example":10},{"name":"seller_type","type":"enum","required":false,"description":"Restrict to trade or private sellers.","on_invalid":"ignore","allowed_values":[{"value":"trade","label":"Trade / dealer sellers only"},{"value":"private","label":"Private sellers only"}],"example":"trade"},{"name":"featured_only","type":"boolean","required":false,"description":"Only return featured (promoted) adverts.","on_invalid":"ignore","default":false},{"name":"with_photos","type":"boolean","required":false,"description":"Only return adverts that include at least one photo.","on_invalid":"ignore","default":false},{"name":"max_pages","type":"integer","required":false,"description":"How many result pages to fetch + de-dup in one call (1–50, ~30 ads/page; larger values are capped at 50).","on_invalid":"ignore","default":1,"minimum":1,"maximum":50},{"name":"market","type":"enum","required":false,"description":"Which Gumtree marketplace. UK (gumtree.com) is live. Australia (gumtree.com.au) is geo-fenced to Australian connections and not yet available.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"gumtree.com — United Kingdom"},{"value":"au","label":"gumtree.com.au — Australia (coming soon)"}],"default":"uk"},{"name":"include_pii","type":"boolean","required":false,"description":"Keep phone/email contact details that sellers paste into free text (redacted by default; the public display name is always kept).","on_invalid":"ignore","default":false}],"returns":"items[]{id, title, price, price_amount, price_currency, url, location, image, images[], posted_date, seller_type, attributes[]} + count + result_count + total_pages + pages_fetched + stop_reason (~30 ads/page; Gumtree serves at most ~50 pages ≈ 1,500 ads per query — narrow with location/category/price to harvest deeper)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"market":"uk","category":"cars-vans-motorbikes","location":"london","max_pages":1}},{"name":"listing_detail","description":"Full advert detail by listing `url` OR numeric `id`: title, full description, price, all photos, every attribute (mileage, year, bedrooms, condition…), map coordinates, location/postcode, category breadcrumbs and the public seller profile (display name, rating, total adverts, ads per category, member-since).","required_params":[],"optional_params":["market","url","id","include_pii"],"params":[{"name":"url","type":"string","required":false,"description":"Full advert URL from a search result. Provide url OR id.","on_invalid":"reject","example":"https://www.gumtree.com/p/bmw/bmw-3-series-convertible-2004-semi-auto/1801400644"},{"name":"id","type":"string","required":false,"description":"Advert ID — the digits at the end of an advert URL. Alternative to url.","on_invalid":"reject","example":"1801400644","aliases":["ad_id","listing_id"]},{"name":"market","type":"enum","required":false,"description":"Which Gumtree marketplace. UK (gumtree.com) is live. Australia (gumtree.com.au) is geo-fenced to Australian connections and not yet available.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"gumtree.com — United Kingdom"},{"value":"au","label":"gumtree.com.au — Australia (coming soon)"}],"default":"uk"},{"name":"include_pii","type":"boolean","required":false,"description":"Keep phone/email contact details that sellers paste into free text (redacted by default; the public display name is always kept).","on_invalid":"ignore","default":false}],"returns":"listing{id, title, price, price_amount, price_currency, url, description, location, area, postcode, latitude, longitude, attributes[], images[], category, breadcrumbs[], seller{name, rating, total_ads, …}, similar_count}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"1801400644"}},{"name":"similar","description":"Related / similar adverts for a given listing (by `url` or `id`) — Gumtree's own 'you might also like' recommendations as clean listing cards.","required_params":[],"optional_params":["market","url","id","include_pii"],"params":[{"name":"url","type":"string","required":false,"description":"Full advert URL. Provide url OR id.","on_invalid":"reject","example":"https://www.gumtree.com/p/other-sofas/ikea-farlov-3-seater-sofa/1801880826"},{"name":"id","type":"string","required":false,"description":"Advert ID. Alternative to url.","on_invalid":"reject","example":"1801880826","aliases":["ad_id","listing_id"]},{"name":"market","type":"enum","required":false,"description":"Which Gumtree marketplace. UK (gumtree.com) is live. Australia (gumtree.com.au) is geo-fenced to Australian connections and not yet available.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"gumtree.com — United Kingdom"},{"value":"au","label":"gumtree.com.au — Australia (coming soon)"}],"default":"uk"},{"name":"include_pii","type":"boolean","required":false,"description":"Keep phone/email contact details that sellers paste into free text (redacted by default; the public display name is always kept).","on_invalid":"ignore","default":false}],"returns":"items[] (related listing cards), source_id, count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"1801880826"}},{"name":"categories","description":"Gumtree's full browse tree — the top-level categories (Motors, For Sale, Property, Jobs, Pets, Services, Community) and their sub-categories with slugs and paths. Use the slugs as the `category` parameter of search / filters.","required_params":[],"optional_params":["market"],"params":[{"name":"market","type":"enum","required":false,"description":"Which Gumtree marketplace. UK (gumtree.com) is live. Australia (gumtree.com.au) is geo-fenced to Australian connections and not yet available.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"gumtree.com — United Kingdom"},{"value":"au","label":"gumtree.com.au — Australia (coming soon)"}],"default":"uk"}],"returns":"categories[]{name, slug, path, subcategories[]{name, slug, path}}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"market":"uk"}},{"name":"filters","description":"Available filters & facets for a category and/or location: selectable sub-categories (with live advert counts), area / postcode facets (with counts), sort options, search-radius options and the price filter. Lets a caller discover valid category slugs, location values and result sizes before searching.","required_params":[],"optional_params":["market","category","location","query"],"params":[{"name":"category","type":"string","required":false,"description":"Category slug from the categories action (e.g. cars-vans-motorbikes, for-sale, flats-houses, jobs, pets, business-services, community, or a sub-slug like for-sale/baby-kids-stuff). Optional.","on_invalid":"ignore","example":"cars-vans-motorbikes","aliases":["search_category"]},{"name":"location","type":"string","required":false,"description":"Town / area / postcode to search in (e.g. london, manchester, SW1A). Resolve area names with the filters action.","on_invalid":"reject","example":"london","aliases":["search_location"]},{"name":"query","type":"string","required":false,"description":"Keyword to search for. Give at least one of query / location / category / url.","on_invalid":"reject","example":"iphone","aliases":["q"]},{"name":"market","type":"enum","required":false,"description":"Which Gumtree marketplace. UK (gumtree.com) is live. Australia (gumtree.com.au) is geo-fenced to Australian connections and not yet available.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"gumtree.com — United Kingdom"},{"value":"au","label":"gumtree.com.au — Australia (coming soon)"}],"default":"uk"}],"returns":"subcategories[]{label, slug, count}, locations[]{label, value, count}, sort_options[], distance_options[], price_filter, result_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"market":"uk","category":"cars-vans-motorbikes","location":"london"}},{"name":"suggestions","description":"Keyword suggestions & spelling corrections for a search term — Gumtree's 'did you mean' / related-keyword surface, useful for query expansion and autocomplete-style discovery.","required_params":["query"],"optional_params":["market","location","category"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to search for. Give at least one of query / location / category / url.","on_invalid":"reject","example":"iphone","aliases":["q"]},{"name":"location","type":"string","required":false,"description":"Town / area / postcode to search in (e.g. london, manchester, SW1A). Resolve area names with the filters action.","on_invalid":"reject","example":"london","aliases":["search_location"]},{"name":"category","type":"string","required":false,"description":"Category slug from the categories action (e.g. cars-vans-motorbikes, for-sale, flats-houses, jobs, pets, business-services, community, or a sub-slug like for-sale/baby-kids-stuff). Optional.","on_invalid":"ignore","example":"cars-vans-motorbikes","aliases":["search_category"]},{"name":"market","type":"enum","required":false,"description":"Which Gumtree marketplace. UK (gumtree.com) is live. Australia (gumtree.com.au) is geo-fenced to Australian connections and not yet available.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"gumtree.com — United Kingdom"},{"value":"au","label":"gumtree.com.au — Australia (coming soon)"}],"default":"uk"}],"returns":"suggestions[]{name, category_slug}, keyword_correction, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"market":"uk","query":"sofa"}}]},{"name":"guru","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Guru.com API scraper — live freelance jobs, rich job detail, the category/skill taxonomy, and freelancer/provider profiles from Guru.com in clean PII-safe JSON: budget, skills, quotes, posted date, and provider ratings. No login required.","version":"1.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/guru/v1","spec_available":true,"actions":[{"name":"search","description":"Search live freelance JOBS across the whole Guru.com board. `query` is served SERVER-SIDE via Guru's own skill/keyword path — known skills are canonicalised from the shipped slug dictionary (`nodejs` → `node.js`), unknown terms use Guru's free-text match, and `data.match` reports which. Also browsable by `category`/`skills` and paginated by `offset`. Returns title, description, budget{type,min,max,currency}, skills[], quote count (bids_count), posted date, and url. No client PII.","required_params":[],"optional_params":["query","category","skills","limit","offset"],"params":[{"name":"query","type":"string","required":false,"description":"What to search Guru's whole job board for, SERVER-SIDE — a skill (`wordpress`, `nodejs`, `data entry`) or any free-text term (`excel`, `translation`). Known skills are canonicalised first (`nodejs` → `node.js`); anything else is handed to Guru's own keyword match. `data.match` says which of the two happened. A term Guru finds nothing for returns NOT_FOUND, never an empty 200.","on_invalid":"ignore","example":"wordpress","aliases":["q","keyword","search"]},{"name":"category","type":"enum","required":false,"description":"Top-level category slug for server-side scoping (see the `categories` action). One of: programming-development, design-art, writing-translation, sales-marketing, business-finance, engineering-architecture, administrative-secretarial, legal, education-training, other.","on_invalid":"ignore","allowed_values":[{"value":"programming-development","label":"Programming & Development"},{"value":"design-art","label":"Design & Art"},{"value":"writing-translation","label":"Writing & Translation"},{"value":"sales-marketing","label":"Sales & Marketing"},{"value":"business-finance","label":"Business & Finance"},{"value":"engineering-architecture","label":"Engineering & Architecture"},{"value":"administrative-secretarial","label":"Administrative & Secretarial"},{"value":"legal","label":"Legal"},{"value":"education-training","label":"Education & Training"},{"value":"other","label":"Other"}],"example":"programming-development","aliases":["cat"]},{"name":"skills","type":"array","required":false,"description":"Skill slug to scope the search server-side, with or without a `category` (e.g. skills=['php'], or category=programming-development + skills=['php']). First value used. When BOTH `skills` and `query` are sent, `skills` picks the server-side path and `query` is applied on top as a client-side filter.","on_invalid":"ignore","example":["php"],"aliases":["skill"]},{"name":"limit","type":"integer","required":false,"description":"How many jobs to return (1–80). Use `offset` to page.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":80,"aliases":["max_results","count"]},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (0–5000); skip this many results. Works with `query`/`skills`/`category` (Guru pages the skill path too). Ignored only in the client-side fallback (`match`=`recent_feed_filter`), which always scans from the newest posting.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":5000,"aliases":["skip","page_offset"]}],"returns":"projects[]{id, title, description, type, budget{type,min,max,currency}, skills[], category, bids_count, posted_at, posted_relative, url}, returned, offset, search_term, resolved_skill, match, server_side, note","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":8}},{"name":"project","description":"Full detail for one Guru.com job by URL, slug, or numeric id — title, description, budget{type,min,max,currency}, skills[], employment type, posted date, valid-through, and the job's location requirement (country). No client PII.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"The job to fetch: the full Guru job URL or the `<slug>/<id>` path (both are returned by `search` as `url` / `seo_url`). A BARE numeric id will not work — Guru serves the detail page only at /jobs/<slug>/<id> and answers a bare id with its login wall.","on_invalid":"ignore","example":"https://www.guru.com/jobs/example/2118837","aliases":["project_id","url","seo_url"]}],"returns":"project{id, title, description, type, budget{...}, skills[], posted_at, client_country, detail{valid_through, employment_type}, url}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"https://www.guru.com/jobs/testing-our-cruise-control/2120425"}},{"name":"user","description":"PUBLIC business profile of a Guru.com freelancer/provider by profile URL or handle: display name, headline, country, skills, and rating summary. PII (email/phone/legal-name/address) is NEVER returned.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"The freelancer/provider to fetch: a Guru profile URL or handle. Returns the PUBLIC business profile only — no email / phone / legal-name / address (those are never returned).","on_invalid":"ignore","example":"https://www.guru.com/freelancers/example/","aliases":["user","user_id","id"]}],"returns":"user{username, display_name, tagline, profile_description, country, city, skills[], reputation{overall_rating, reviews}, avatar, profile_url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"List the top-level Guru.com freelance job categories (Programming, Design, Writing…) — the browse taxonomy for scoping a `search`.","required_params":[],"optional_params":[],"params":[],"returns":"categories[]{id, name, seo_url}, returned","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"hackernews","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Hacker News API — stories, comments, full comment trees, polls, front-page, user profiles and full-text search across Hacker News (news.ycombinator.com)","version":"1.2.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/hackernews/v1","spec_available":true,"actions":[{"name":"item","description":"single item by id (story/comment/job/poll/pollopt) — all official fields + time_iso/kids_count/hn_url; hydrate_kids=resolve top-level comments","required_params":["id"],"optional_params":["hydrate_kids","kids_limit"],"params":[{"name":"id","type":"integer","required":true,"description":"HackerNews item id (story/comment/job/poll/pollopt) — the digits in an item URL (news.ycombinator.com/item?id=...).","on_invalid":"reject","example":8863,"aliases":["item_id"]},{"name":"hydrate_kids","type":"boolean","required":false,"description":"If true, resolve the item's top-level comments into full objects instead of bare ids.","on_invalid":"ignore","default":false,"example":true},{"name":"kids_limit","type":"integer","required":false,"description":"When hydrate_kids=true, how many top-level comments to resolve (1-100).","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100}],"returns":"item{} — id, type, by, time/time_iso, title/text/url, score, kids/kids_count, hn_url (+ comments[] if hydrate_kids)","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"id":8863}},{"name":"item_tree","description":"full nested comment TREE for a story in ONE call; recursive children + descendants count","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"integer","required":true,"description":"HackerNews item id (story/comment/job/poll/pollopt) — the digits in an item URL (news.ycombinator.com/item?id=...).","on_invalid":"reject","example":8863,"aliases":["item_id"]}],"returns":"item{} — story with recursive children[] (nested comments), descendants count, direct children_count, author","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":8863}},{"name":"user","description":"user profile by id: karma/created/about/submitted; hydrate_submitted=resolve recent submissions","required_params":["id"],"optional_params":["hydrate_submitted","submitted_limit"],"params":[{"name":"id","type":"string","required":true,"description":"HackerNews username (case-sensitive), e.g. 'pg'.","on_invalid":"reject","example":"pg","aliases":["user","username"]},{"name":"hydrate_submitted","type":"boolean","required":false,"description":"If true, resolve the user's recent submissions into full objects instead of bare ids.","on_invalid":"ignore","default":false,"example":true},{"name":"submitted_limit","type":"integer","required":false,"description":"When hydrate_submitted=true, how many recent submissions to resolve (1-100).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100}],"returns":"user{} — id, karma, created/created_iso, about, submitted[] (+ recent_items[] if hydrate_submitted)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"pg"}},{"name":"stories","description":"story-list (list=top/new/best/ask/show/job) → ranked hydrated stories; offset/limit pagination, hydrate=false for ids only","required_params":[],"optional_params":["list","limit","offset","hydrate"],"params":[{"name":"list","type":"enum","required":false,"description":"Which HackerNews story list to return.","on_invalid":"reject","allowed_values":[{"value":"top","label":"Top stories (front page, up to 500)"},{"value":"new","label":"Newest stories (up to 500)"},{"value":"best","label":"Best stories (up to 500)"},{"value":"ask","label":"Ask HN (up to 200)"},{"value":"show","label":"Show HN (up to 200)"},{"value":"job","label":"Jobs (up to 200)"}],"default":"top","example":"top","aliases":["type"]},{"name":"limit","type":"integer","required":false,"description":"Stories to return (1-100, default 30). Out-of-range values are clamped.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100},{"name":"offset","type":"integer","required":false,"description":"Pagination offset into the story list (0-500). Skip N ranked stories.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":500},{"name":"hydrate","type":"boolean","required":false,"description":"If true, resolve each ranked story id into full objects instead of bare ids (default true).","on_invalid":"ignore","default":true,"example":true}],"returns":"list, stories[] (ranked, hydrated) or ids[] (hydrate=false), count, total, offset, max_available, stop_reason","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":{"list":"top","limit":15}},{"name":"search","description":"Full-text search: query + tags(story/comment/ask_hn/show_hn/poll/front_page/author_X/story_X) + min_points/max_points/min_comments/before/after + sort(relevance|date), paginated","required_params":[],"optional_params":["query","tags","sort","page","hits_per_page","min_points","max_points","min_comments","max_comments","before","after","numeric_filters","restrict"],"params":[{"name":"query","type":"string","required":false,"description":"Full-text search keywords. search needs query OR tags.","on_invalid":"reject","example":"python","aliases":["q"]},{"name":"tags","type":"string","required":false,"description":"Tag filter. Built-ins: story, comment, ask_hn, show_hn, poll, front_page. Dynamic: author_USERNAME, story_ID. Comma-joins = AND, (a,b) = OR. search needs query OR tags.","on_invalid":"reject","example":"story"},{"name":"sort","type":"enum","required":false,"description":"Result ordering: relevance (default) or date (newest first). Any non-date value is treated as relevance.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Most relevant (default)"},{"value":"date","label":"Newest first"}],"default":"relevance","example":"date"},{"name":"page","type":"integer","required":false,"description":"0-based search results page (0-50). Page forward via meta.nbPages.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":50},{"name":"hits_per_page","type":"integer","required":false,"description":"Search results per page (1-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["hitsPerPage","limit"]},{"name":"min_points","type":"integer","required":false,"description":"Minimum score (points) filter for search hits.","on_invalid":"ignore","example":100,"minimum":0},{"name":"max_points","type":"integer","required":false,"description":"Maximum score (points) filter for search hits.","on_invalid":"ignore","example":1000,"minimum":0},{"name":"min_comments","type":"integer","required":false,"description":"Minimum comment-count filter for search hits.","on_invalid":"ignore","example":10,"minimum":0},{"name":"max_comments","type":"integer","required":false,"description":"Maximum comment-count filter for search hits.","on_invalid":"ignore","example":500,"minimum":0},{"name":"before","type":"string","required":false,"description":"Only hits created on/before this date. Accepts a unix timestamp or an ISO date (YYYY-MM-DD).","on_invalid":"ignore","example":"2024-12-31"},{"name":"after","type":"string","required":false,"description":"Only hits created on/after this date. Accepts a unix timestamp or an ISO date (YYYY-MM-DD).","on_invalid":"ignore","example":"2024-01-01"},{"name":"numeric_filters","type":"string","required":false,"description":"Advanced: raw Algolia numericFilters string, appended to the built min/max/date filters (e.g. 'points>100,created_at_i>1700000000').","on_invalid":"ignore","example":"points>100,num_comments>10"},{"name":"restrict","type":"string","required":false,"description":"Advanced: restrictSearchableAttributes — limit matching to given Algolia fields (e.g. 'title' or 'title,story_text').","on_invalid":"ignore","example":"title"}],"returns":"hits[] (title/text, points, author, num_comments, created_at, hn_url), count, nbHits, nbPages, page, sort","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"python","tags":"story"}},{"name":"poll","description":"Poll detail by id: the question + every voting option resolved and ranked by votes, with total_votes and the comment count. (Find poll ids via search with tags=poll.)","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"integer","required":true,"description":"HackerNews poll id (the digits in a poll's item URL). Find polls with the search action using tags=poll.","on_invalid":"reject","example":126809,"aliases":["item_id"]}],"returns":"poll{} — id, title/text, by, time_iso, options[] (each id/text/score=votes, ranked), options_count, total_votes, descendants (comments), hn_url","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":126809}},{"name":"front_page","description":"Stories that recently made the Hacker News front page (newest-first), paginated. Optional after/before date window. NOTE: the front-page index only retains ~the last 7 days — it is 'what's on / recently hit the front page', not a historical archive.","required_params":[],"optional_params":["limit","page","after","before"],"params":[{"name":"limit","type":"integer","required":false,"description":"Front-page stories to return (1-100, default 30). Out-of-range values are clamped.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100},{"name":"page","type":"integer","required":false,"description":"0-based search results page (0-50). Page forward via meta.nbPages.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":50},{"name":"after","type":"string","required":false,"description":"Only front-page stories created on/after this date (unix ts or YYYY-MM-DD). Note: the front-page index only retains ~the last 7 days.","on_invalid":"ignore","example":"2026-06-18"},{"name":"before","type":"string","required":false,"description":"Only front-page stories created on/before this date (unix ts or YYYY-MM-DD).","on_invalid":"ignore","example":"2026-06-21"}],"returns":"stories[] (title, author, points, num_comments, created_at, hn_url), count, nbHits, nbPages, page","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":10}},{"name":"updates","description":"live changefeed: recently changed item ids + profiles + max_item; hydrate=resolve changed items","required_params":[],"optional_params":["hydrate","limit"],"params":[{"name":"hydrate","type":"boolean","required":false,"description":"If true, resolve the changed item ids into full objects instead of bare ids.","on_invalid":"ignore","default":false,"example":true},{"name":"limit","type":"integer","required":false,"description":"Changed items to hydrate (1-100, default 30). Out-of-range values are clamped.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100}],"returns":"items[] (changed ids), profiles[] (changed usernames), items_count, profiles_count, max_item (+ changed_items[] if hydrate)","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"max_item","description":"the current largest item id on Hacker News — the newest id, useful for backfilling / id-range walks","required_params":[],"optional_params":[],"params":[],"returns":"max_item (int)","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"hemnet","category":{"id":"real-estate","title":"Real Estate"},"title":"Hemnet.se API scraper — Sweden real estate data: for-sale (till salu) and recently-sold (slutpriser/sålda) property listings across every Swedish city, municipality and county with full filters (price SEK, rooms, living area m², plot, property type, price per m², construction year, keyword, sort), each listing with price, rooms, area, fee, square-metre price, energy class, coordinates, photos, broker agency and address, a full per-listing detail record (description, all photos, amenities, year built, sale history) and recently-sold final prices, plus a location resolver that maps a Swedish place name to Hemnet's location — no API key required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/hemnet/v1","spec_available":true,"actions":[{"name":"search","description":"Search Hemnet.se for-sale property listings by location, with structured filters: price (SEK), rooms, living area (m²), plot, property type, price-per-m², construction year, keyword and sort. Each result carries asking price, fee, square-metre price, rooms, living area, housing form, coordinates, broker agency, address and photos. Paginate with page.","required_params":["location"],"optional_params":["home_type","sort","page","price_min","price_max","rooms_min","rooms_max","living_area_min","living_area_max","land_area_min","land_area_max","price_per_m2_min","price_per_m2_max","year_min","year_max","keywords"],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — a Swedish city, municipality, county, district or postal area ('Stockholm', 'Göteborg', 'Malmö', 'Uppsala kommun', 'Vasastan'). Free text is resolved to Hemnet's location id automatically; pass a numeric Hemnet location_id directly to skip resolution.","on_invalid":"reject","example":"Stockholm","aliases":["loc","area","city","where","query"]},{"name":"home_type","type":"string","required":false,"description":"Property type — one or several comma-separated: villa (house), radhus (townhouse), bostadsratt (apartment/condo), fritidshus (holiday home), tomt (plot/land), gard (farm). e.g. 'villa,radhus'.","on_invalid":"ignore","example":"bostadsratt","aliases":["item_types","property_type","type"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Most recently published (default)"},{"value":"oldest","label":"Oldest first"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"size_high","label":"Largest living area first"},{"value":"size_low","label":"Smallest living area first"},{"value":"ppm2_low","label":"Lowest price per m²"},{"value":"ppm2_high","label":"Highest price per m²"},{"value":"fee_low","label":"Lowest monthly fee"}],"default":"newest","example":"price_low"},{"name":"page","type":"integer","required":false,"description":"Result page (50 listings per page; paginate with page += 1). Hemnet caps the viewable window at 50 pages / 2500 results.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"price_min","type":"integer","required":false,"description":"Minimum asking price in SEK.","on_invalid":"ignore","example":2000000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum asking price in SEK.","on_invalid":"ignore","example":5000000,"minimum":0},{"name":"rooms_min","type":"number","required":false,"description":"Minimum number of rooms.","on_invalid":"ignore","example":3,"minimum":1,"maximum":20,"aliases":["rooms"]},{"name":"rooms_max","type":"number","required":false,"description":"Maximum number of rooms.","on_invalid":"ignore","example":6,"minimum":1,"maximum":20},{"name":"living_area_min","type":"integer","required":false,"description":"Minimum living area in square metres (m²).","on_invalid":"ignore","example":60,"minimum":0,"aliases":["surface_min"]},{"name":"living_area_max","type":"integer","required":false,"description":"Maximum living area in square metres (m²).","on_invalid":"ignore","example":150,"minimum":0,"aliases":["surface_max"]},{"name":"land_area_min","type":"integer","required":false,"description":"Minimum plot / land area in square metres (m²).","on_invalid":"ignore","example":500,"minimum":0,"aliases":["plot_min"]},{"name":"land_area_max","type":"integer","required":false,"description":"Maximum plot / land area in square metres (m²).","on_invalid":"ignore","example":2000,"minimum":0,"aliases":["plot_max"]},{"name":"price_per_m2_min","type":"integer","required":false,"description":"Minimum price per square metre (SEK/m²).","on_invalid":"ignore","example":20000,"minimum":0},{"name":"price_per_m2_max","type":"integer","required":false,"description":"Maximum price per square metre (SEK/m²).","on_invalid":"ignore","example":80000,"minimum":0},{"name":"year_min","type":"integer","required":false,"description":"Earliest construction year.","on_invalid":"ignore","example":1950,"minimum":1700,"maximum":2035,"aliases":["construction_year_min"]},{"name":"year_max","type":"integer","required":false,"description":"Latest construction year.","on_invalid":"ignore","example":2024,"minimum":1700,"maximum":2035,"aliases":["construction_year_max"]},{"name":"keywords","type":"string","required":false,"description":"Free-text listing keyword filter ('pool', 'sjöutsikt', 'kakelugn', 'balkong').","on_invalid":"ignore","example":"balkong"}],"returns":"results[]{id, url, street_address, area, housing_form, asking_price{amount_sek}, fee, square_meter_price, rooms, living_area_m2, land_area_m2, latitude, longitude, broker_agency, labels, primary_photo_url} + total + count + page + max_pages + location + filters_applied","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"location":"Stockholm"}},{"name":"sold","description":"Recently-SOLD property prices (slutpriser) by location, with the same filters as search — the comparable-sales / price-history surface. Each record carries asking price, FINAL sold price, sold date, price change (%) and square-metre price.","required_params":["location"],"optional_params":["home_type","sort","page","price_min","price_max","rooms_min","rooms_max","living_area_min","living_area_max","land_area_min","land_area_max","price_per_m2_min","price_per_m2_max","year_min","year_max","keywords"],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — a Swedish city, municipality, county, district or postal area ('Stockholm', 'Göteborg', 'Malmö', 'Uppsala kommun', 'Vasastan'). Free text is resolved to Hemnet's location id automatically; pass a numeric Hemnet location_id directly to skip resolution.","on_invalid":"reject","example":"Stockholm","aliases":["loc","area","city","where","query"]},{"name":"home_type","type":"string","required":false,"description":"Property type — one or several comma-separated: villa (house), radhus (townhouse), bostadsratt (apartment/condo), fritidshus (holiday home), tomt (plot/land), gard (farm). e.g. 'villa,radhus'.","on_invalid":"ignore","example":"bostadsratt","aliases":["item_types","property_type","type"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Most recently published (default)"},{"value":"oldest","label":"Oldest first"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"size_high","label":"Largest living area first"},{"value":"size_low","label":"Smallest living area first"},{"value":"ppm2_low","label":"Lowest price per m²"},{"value":"ppm2_high","label":"Highest price per m²"},{"value":"fee_low","label":"Lowest monthly fee"}],"default":"newest","example":"price_low"},{"name":"page","type":"integer","required":false,"description":"Result page (50 listings per page; paginate with page += 1). Hemnet caps the viewable window at 50 pages / 2500 results.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"price_min","type":"integer","required":false,"description":"Minimum asking price in SEK.","on_invalid":"ignore","example":2000000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum asking price in SEK.","on_invalid":"ignore","example":5000000,"minimum":0},{"name":"rooms_min","type":"number","required":false,"description":"Minimum number of rooms.","on_invalid":"ignore","example":3,"minimum":1,"maximum":20,"aliases":["rooms"]},{"name":"rooms_max","type":"number","required":false,"description":"Maximum number of rooms.","on_invalid":"ignore","example":6,"minimum":1,"maximum":20},{"name":"living_area_min","type":"integer","required":false,"description":"Minimum living area in square metres (m²).","on_invalid":"ignore","example":60,"minimum":0,"aliases":["surface_min"]},{"name":"living_area_max","type":"integer","required":false,"description":"Maximum living area in square metres (m²).","on_invalid":"ignore","example":150,"minimum":0,"aliases":["surface_max"]},{"name":"land_area_min","type":"integer","required":false,"description":"Minimum plot / land area in square metres (m²).","on_invalid":"ignore","example":500,"minimum":0,"aliases":["plot_min"]},{"name":"land_area_max","type":"integer","required":false,"description":"Maximum plot / land area in square metres (m²).","on_invalid":"ignore","example":2000,"minimum":0,"aliases":["plot_max"]},{"name":"price_per_m2_min","type":"integer","required":false,"description":"Minimum price per square metre (SEK/m²).","on_invalid":"ignore","example":20000,"minimum":0},{"name":"price_per_m2_max","type":"integer","required":false,"description":"Maximum price per square metre (SEK/m²).","on_invalid":"ignore","example":80000,"minimum":0},{"name":"year_min","type":"integer","required":false,"description":"Earliest construction year.","on_invalid":"ignore","example":1950,"minimum":1700,"maximum":2035,"aliases":["construction_year_min"]},{"name":"year_max","type":"integer","required":false,"description":"Latest construction year.","on_invalid":"ignore","example":2024,"minimum":1700,"maximum":2035,"aliases":["construction_year_max"]},{"name":"keywords","type":"string","required":false,"description":"Free-text listing keyword filter ('pool', 'sjöutsikt', 'kakelugn', 'balkong').","on_invalid":"ignore","example":"balkong"}],"returns":"results[]{id, url, street_address, housing_form, asking_price, final_price{amount_sek}, sold_at_label, price_change, square_meter_price, rooms, living_area_m2, broker_agency} + total + count + page + location + filters_applied","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"location":"Malmö"}},{"name":"detail","description":"Full record for a single listing by its Hemnet listing URL, slug or id (hemnet.se/bostad/<slug>). Returns asking price, fee, rooms, living & plot area, construction year, energy class, tenure, the full description, every photo, amenities, days-on-market, view count and any sale history.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"A Hemnet listing URL, /bostad/<slug> path or slug — the `url` from a search result. A full https URL, the path or the bare slug all work.","on_invalid":"reject","example":"https://www.hemnet.se/bostad/lagenhet-2rum-s-t-knut-malmo-kommun-henrik-smithsgatan-10-21743412","aliases":["listing_url","path","detail_url","slug","id"]}],"returns":"listing{id, url, title, street_address, post_code, housing_form, tenure, asking_price, fee, square_meter_price, rooms, living_area_m2, land_area_m2, construction_year, energy_classification, description, days_on_hemnet, times_viewed, amenities[], sale_history[], photos[], agent{agency_name}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.hemnet.se/bostad/lagenhet-3rum-segevang-malmo-kommun-kronetorpsgatan-52a-21744904"}},{"name":"location","description":"Location resolver / autocomplete — map a free-text Swedish place name to Hemnet locations (city, municipality, county, district, postal area) with their ids. Use it to power a search box or to confirm the exact location a search will use.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text Swedish place to resolve — a city, municipality, county or district ('Göteborg', 'Vasastan', 'Lund').","on_invalid":"reject","example":"Göteborg","aliases":["q","input","location","city","area"]},{"name":"limit","type":"integer","required":false,"description":"Max suggestions to return (1-40).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":40}],"returns":"suggestions[]{id, name, parent_name, type} + resolved{id, name, type} + count + query","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"query":"Göteborg"}}]},{"name":"hepsiburada","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Hepsiburada API scraper — product detail, search, reviews, offers, categories & sellers on Turkey's leading marketplace (hepsiburada.com), prices in TRY","version":"0.2.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/hepsiburada/v1","spec_available":true,"actions":[{"name":"product/detail","description":"Full Hepsiburada product details by `url` or HB code (`sku`): title, brand, price, discount, images, rating, stock, seller (merchant), category, specifications, variants, top reviews, coupon/campaign badges, and all other_offers (every merchant selling the same product).","required_params":[],"optional_params":["url","sku","max_rotations"],"params":[{"name":"sku","type":"string","required":false,"description":"Hepsiburada product code (HB code) — the HBCV… token in the product URL (…-p-<code>). Take it from search results. Provide sku OR url.","on_invalid":"reject","example":"HBCV00004X9ZCK","aliases":["hb_code","id","product_id","code"]},{"name":"url","type":"string","required":false,"description":"Full Hepsiburada product URL — alternative to sku.","on_invalid":"reject","example":"https://www.hepsiburada.com/-p-HBCV00004X9ZCK","aliases":["product_url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1–14, default 8 — leave unchanged for typical use).","on_invalid":"ignore","default":8,"minimum":1,"maximum":14}],"returns":"product{title, brand, price, currency=TRY, original_price, discount_rate, images[], rating, rating_count, in_stock, seller_name (merchant), merchant{}, category, specs[], variants[], top_reviews[], coupon (str|null — public coupon COUNT for this listing, e.g. '3 kupon fırsatı mevcut'; exact amounts are gated behind a logged-in wallet and not exposed), campaign (str|null — real Hepsiburada campaign badge text, e.g. 'Lufian satıcılı ürünlerde %20 indirim'), other_offers[]{merchant_name, price, merchant_rating, free_shipping, coupon_count, campaign}, offer_count}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://www.hepsiburada.com/-p-HBCV00004X9ZCK"}},{"name":"product/reviews","description":"Paginated customer reviews for a product by `sku` or `url`, in the order you ask for. `sort=newest` puts the most recently written reviews first and holds that order across pages, so you can poll a product for new reviews; without `sort` Hepsiburada returns its own default order, which is not chronological. Every page carries the honest totals — how many reviews exist, the full star histogram, the average computed from it, total_pages for your page_size, and how deep Hepsiburada actually lets you page. Note that Hepsiburada mixes written reviews with star-only ratings in the same list: rows carry `type` ('review' or 'rating') and `has_text` so you can keep only the ones with text. Up to 100 reviews per page. Reviewer names are published by Hepsiburada already masked (e.g. 'Ahmet K***') and the row's gender/birth-date fields are deliberately not returned.","required_params":[],"optional_params":["sku","url","page","page_size","sort","max_rotations"],"params":[{"name":"sku","type":"string","required":false,"description":"Hepsiburada product code (HB code) — the HBCV… token in the product URL (…-p-<code>). Take it from search results. Provide sku OR url.","on_invalid":"reject","example":"HBCV00004X9ZCK","aliases":["hb_code","id","product_id","code"]},{"name":"url","type":"string","required":false,"description":"Full Hepsiburada product URL — alternative to sku.","on_invalid":"reject","example":"https://www.hepsiburada.com/-p-HBCV00004X9ZCK","aliases":["product_url"]},{"name":"page","type":"integer","required":false,"description":"Review page — 1-BASED (1, 2, 3…); summary.total_pages tells you how many exist.","on_invalid":"ignore","default":1,"minimum":1},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1–100, default 10). summary.total_pages is computed for this page size.","on_invalid":"ignore","default":10,"minimum":1,"maximum":100,"aliases":["pageSize"]},{"name":"sort","type":"enum","required":false,"description":"Review ordering. Use `newest` to track the most recent reviews — the order holds across pages, so page 1 is always the freshest. `relevant` (the default) is Hepsiburada's own 'Varsayılan' order and is NOT chronological. Date ordering is day-resolution upstream: non-increasing by calendar day, unordered within a single day.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first (most recent review at the top)"},{"value":"oldest","label":"Oldest first"},{"value":"helpful","label":"Most helpful first (Hepsiburada 'clap' count)"},{"value":"rating_desc","label":"Highest rating first"},{"value":"rating_asc","label":"Lowest rating first"},{"value":"relevant","label":"Hepsiburada's own default order"}],"default":"relevant"},{"name":"include_sibling_variants","type":"boolean","required":false,"description":"true (default) counts and returns reviews for the whole product group, exactly as the Hepsiburada page does; false restricts to this one variant (same colour/size). The two totals differ a lot — 25,480 vs 9,349 on the reference sku — so pick deliberately.","on_invalid":"ignore","default":true,"aliases":["include_siblings"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1–14, default 8 — leave unchanged for typical use).","on_invalid":"ignore","default":8,"minimum":1,"maximum":14}],"returns":"ai_summary (Hepsiburada's own Turkish review digest, or null) + summary{average_rating, average_rating_source, total_rating_count (every approved review AND star-only rating — what this action pages through), total_comment_count (null — Hepsiburada does not publish how many carry written text), total_pages, page_size, rating_breakdown{5..1}, reachable_reviews, reachable_pages} + page, page_size, sort, include_sibling_variants + reviews[]{id, author (masked), rating, date, updated_at, body (null on a star-only rating), type ('review'|'rating'), has_text, verified_purchase, helpful_count, unhelpful_count, merchant, variant, keywords[], images[]} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"sku":"HBCV00004X9ZCK"}},{"name":"product/offers","description":"Every merchant listing (buybox + other sellers) for a product by `sku` or `url`: compare price, seller rating, shipping and stock across all sellers of the same item.","required_params":[],"optional_params":["sku","url","max_rotations"],"params":[{"name":"sku","type":"string","required":false,"description":"Hepsiburada product code (HB code) — the HBCV… token in the product URL (…-p-<code>). Take it from search results. Provide sku OR url.","on_invalid":"reject","example":"HBCV00004X9ZCK","aliases":["hb_code","id","product_id","code"]},{"name":"url","type":"string","required":false,"description":"Full Hepsiburada product URL — alternative to sku.","on_invalid":"reject","example":"https://www.hepsiburada.com/-p-HBCV00004X9ZCK","aliases":["product_url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1–14, default 8 — leave unchanged for typical use).","on_invalid":"ignore","default":8,"minimum":1,"maximum":14}],"returns":"offers[]{merchant_name, merchant_url, price, original_price, discount_rate, currency=TRY, in_stock, quantity, free_shipping, fast_shipping, buybox_order, merchant_rating, merchant_rating_count, merchant_city, merchant_labels[]} (sorted by buybox order then price)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"sku":"HBCV00004X9ZCK"}},{"name":"search","description":"Search Hepsiburada products by keyword with optional sort and price/brand filters — returns results with SKU, title, brand, price, list price, rating, image and merchant. Results may be empty for very niche queries; try a broader keyword.","required_params":["query"],"optional_params":["page","sort","price_min","price_max","brand","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for (Turkish keywords work best).","on_invalid":"reject","example":"laptop","aliases":["q"]},{"name":"page","type":"integer","required":false,"description":"Page number (1-BASED: 1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"sort","type":"string","required":false,"description":"Result ordering. One of: default, price_asc, price_desc, best_seller, most_reviewed, highest_rated, discount, newest.","on_invalid":"ignore","allowed_values":[{"value":"default","label":"Recommended (default)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"best_seller","label":"Best sellers"},{"value":"most_reviewed","label":"Most reviewed"},{"value":"highest_rated","label":"Highest rated"},{"value":"discount","label":"Biggest discount"},{"value":"newest","label":"Newest first"}],"default":"default","aliases":["siralama"]},{"name":"price_min","type":"integer","required":false,"description":"Minimum price filter in TRY (optional).","on_invalid":"ignore","example":5000,"minimum":0,"aliases":["min_price"]},{"name":"price_max","type":"integer","required":false,"description":"Maximum price filter in TRY (optional).","on_invalid":"ignore","example":15000,"minimum":0,"aliases":["max_price"]},{"name":"brand","type":"string","required":false,"description":"Brand filter — the brand slug, lowercase (e.g. 'asus', 'apple'). Optional.","on_invalid":"ignore","example":"asus","aliases":["markalar"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1–14, default 8 — leave unchanged for typical use).","on_invalid":"ignore","default":8,"minimum":1,"maximum":14}],"returns":"results[]{sku, title, brand, url, price, original_price, discount_rate, rating, rating_count, image, merchant, installment_count}; render flag ('ssr' = full results; 'skeleton' = try a broader keyword); meta.pagination for paging","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"laptop"}},{"name":"category","description":"Browse a Hepsiburada category page by its path (`category` = '<slug>-c-<id>', e.g. 'laptop-notebook-dizustu-bilgisayarlar-c-98') with optional sort/price filters and pagination. Use it to list everything in a category, not just a keyword match.","required_params":["category"],"optional_params":["page","sort","price_min","price_max","brand","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"Category path '<slug>-c-<id>' or a full category URL. Take the …-c-<id> path from a product's breadcrumb / category link.","on_invalid":"reject","example":"laptop-notebook-dizustu-bilgisayarlar-c-98","aliases":["category_url","cat"]},{"name":"page","type":"integer","required":false,"description":"Page number (1-BASED).","on_invalid":"ignore","default":1,"minimum":1},{"name":"sort","type":"string","required":false,"description":"Result ordering. One of: default, price_asc, price_desc, best_seller, most_reviewed, highest_rated, discount, newest.","on_invalid":"ignore","allowed_values":[{"value":"default","label":"Recommended (default)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"best_seller","label":"Best sellers"},{"value":"most_reviewed","label":"Most reviewed"},{"value":"highest_rated","label":"Highest rated"},{"value":"discount","label":"Biggest discount"},{"value":"newest","label":"Newest first"}],"default":"default","aliases":["siralama"]},{"name":"price_min","type":"integer","required":false,"description":"Minimum price filter in TRY (optional).","on_invalid":"ignore","example":5000,"minimum":0,"aliases":["min_price"]},{"name":"price_max","type":"integer","required":false,"description":"Maximum price filter in TRY (optional).","on_invalid":"ignore","example":15000,"minimum":0,"aliases":["max_price"]},{"name":"brand","type":"string","required":false,"description":"Brand filter — the brand slug, lowercase (e.g. 'asus', 'apple'). Optional.","on_invalid":"ignore","example":"asus","aliases":["markalar"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1–14, default 8 — leave unchanged for typical use).","on_invalid":"ignore","default":8,"minimum":1,"maximum":14}],"returns":"results[]{sku, title, brand, url, price, original_price, discount_rate, rating, image, merchant} + category_id (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"seller","description":"Hepsiburada merchant (mağaza) profile + its product catalogue by store slug (`seller`, e.g. 'jollyshop') or full /magaza/<slug> URL. Returns seller info (name, rating, total product count) and a paginated list of the seller's products.","required_params":["seller"],"optional_params":["page","sort","price_min","price_max","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Store slug (the part after /magaza/, e.g. 'jollyshop') or a full https://www.hepsiburada.com/magaza/<slug> URL.","on_invalid":"reject","example":"jollyshop","aliases":["merchant","slug","store"]},{"name":"page","type":"integer","required":false,"description":"Product page within the store (1-BASED).","on_invalid":"ignore","default":1,"minimum":1},{"name":"sort","type":"string","required":false,"description":"Result ordering. One of: default, price_asc, price_desc, best_seller, most_reviewed, highest_rated, discount, newest.","on_invalid":"ignore","allowed_values":[{"value":"default","label":"Recommended (default)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"best_seller","label":"Best sellers"},{"value":"most_reviewed","label":"Most reviewed"},{"value":"highest_rated","label":"Highest rated"},{"value":"discount","label":"Biggest discount"},{"value":"newest","label":"Newest first"}],"default":"default","aliases":["siralama"]},{"name":"price_min","type":"integer","required":false,"description":"Minimum price filter in TRY (optional).","on_invalid":"ignore","example":5000,"minimum":0,"aliases":["min_price"]},{"name":"price_max","type":"integer","required":false,"description":"Maximum price filter in TRY (optional).","on_invalid":"ignore","example":15000,"minimum":0,"aliases":["max_price"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1–14, default 8 — leave unchanged for typical use).","on_invalid":"ignore","default":8,"minimum":1,"maximum":14}],"returns":"seller{merchant_id, name, url, rating, rating_count, total_product_count, official, city} + products[]{sku, title, price, image, ...} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":3},"example_params":null}]},{"name":"hm","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"H&M API scraper — hm.com in 41 markets: search products, read the full article with the regular, sale and H&M member prices kept apart, every colour with its own prices, sizes in stock and few-left flags, composition, materials, care and country of production, ratings; browse categories, suggestions and live size availability. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/hm/v1","spec_available":true,"actions":[{"name":"search","description":"Search H&M in any of its 41 markets by keyword. Each product comes with the price a shopper pays, the regular price when a sale price is running, the H&M member price kept separate, currency, every colour, sizes with in-stock flags, markers and availability. Sort by newest or price; filter by department, sale, colour or material. Misspellings H&M corrects are reported in matched_query.","required_params":["query"],"optional_params":["country","language","page","page_size","sort","department","sale_only","color","material","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Words a shopper would type on H&M, in the market's language.","on_invalid":"reject","example":"linen shirt","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"The H&M market. Prices, currency, language and assortment follow it. A product URL's own market is used when this is not given.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"de","label":"Germany (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"fr","label":"France (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"gr","label":"Greece (EUR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ro","label":"Romania (RON)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"ua","label":"Ukraine (UAH)"},{"value":"tr","label":"Türkiye (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"hk","label":"Hong Kong (HKD)"},{"value":"asia1","label":"H&M asia1 site (HKD)"},{"value":"asia3","label":"H&M asia3 site (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"au","label":"Australia (AUD)"},{"value":"eur","label":"H&M Europe site (English, EUR)"}],"default":"us","example":"gb"},{"name":"language","type":"enum","required":false,"description":"Only for markets with several languages: ca (en, fr), ch (de, fr, it), be (nl, fr), fi (fi, sv), hk / asia1 / asia3 (en, zh). Defaults to the market's first language.","on_invalid":"reject","allowed_values":[{"value":"bg","label":"bg"},{"value":"cs","label":"cs"},{"value":"da","label":"da"},{"value":"de","label":"de"},{"value":"el","label":"el"},{"value":"en","label":"en"},{"value":"es","label":"es"},{"value":"fi","label":"fi"},{"value":"fr","label":"fr"},{"value":"he","label":"he"},{"value":"hu","label":"hu"},{"value":"it","label":"it"},{"value":"ja","label":"ja"},{"value":"ko","label":"ko"},{"value":"nl","label":"nl"},{"value":"no","label":"no"},{"value":"pl","label":"pl"},{"value":"pt","label":"pt"},{"value":"ro","label":"ro"},{"value":"sk","label":"sk"},{"value":"sr","label":"sr"},{"value":"sv","label":"sv"},{"value":"tr","label":"tr"},{"value":"uk","label":"uk"},{"value":"vi","label":"vi"},{"value":"zh","label":"zh"}],"example":"fr"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Products per page (H&M's own page shows 36; the service allows up to 72).","on_invalid":"reject","default":36,"minimum":1,"maximum":72},{"name":"sort","type":"enum","required":false,"description":"H&M's own sort orders.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"newest","label":"New"},{"value":"price_asc","label":"Lowest price"},{"value":"price_desc","label":"Highest price"}],"default":"relevance","example":"price_asc"},{"name":"department","type":"string","required":false,"description":"Only one department, by the id `filters_available.departments` lists (ladies_all, men_all, kids_all, sale, …).","on_invalid":"reject","example":"ladies_all"},{"name":"sale_only","type":"boolean","required":false,"description":"true: only products with a sale (red) price.","on_invalid":"ignore","default":false},{"name":"color","type":"string","required":false,"description":"Only one colour, by the id `filters_available.colors` lists (black_000000).","on_invalid":"reject","example":"black_000000"},{"name":"material","type":"string","required":false,"description":"Only one material, spelled as `filters_available.materials` lists it.","on_invalid":"reject","example":"Linen"},{"name":"max_rotations","type":"integer","required":false,"description":"Attempts per upstream request before giving up (each on a fresh exit).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{article_code, product_code, name, brand, url, image, model_image, images[], price, regular_price, on_sale, discount_percent, member_price, price_formatted, price_range{min, max}, currency, color_name, color_hex, color_shades[], colors[]{article_code, color_name, hex, url, image}, color_count, sizes[]{size_code, label, in_stock}, sizes_in_stock, availability, coming_soon, online, pre_shopping, new_arrival, multipack, external_brand, markers[]{text, type}, main_category, has_video}, count, page, page_size, total_results, total_pages, has_more, page_out_of_range, country, language, locale, currency, query, matched_query, did_you_mean[], related_searches[], query_blocked, sort_applied, filters_applied{}, filters_available{departments[], colors[], materials[], sale{}, price_range{}}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"dress"}},{"name":"product/detail","description":"The full H&M article by article code, product code or URL: name, brand, category and breadcrumb, description and details, the price with the regular price and discount on sale, the member price apart, H&M's legal price note, currency, colour, images, every size with in-stock and few-left flags, composition per garment part, preferred materials, recycled share, country of production, care instructions, model height and size worn, rating and review count with the page's review sample, and every other colour of the product with its own prices and sizes.","required_params":["article_code"],"optional_params":["country","language","max_rotations"],"params":[{"name":"article_code","type":"string","required":true,"description":"An H&M article code (10 digits = product + colour, as in a product URL), a 7-digit product code (resolved to its default colour) or an hm.com product URL.","on_invalid":"reject","example":"1323075003","aliases":["product_id","id","url","product_code"]},{"name":"country","type":"enum","required":false,"description":"The H&M market. Prices, currency, language and assortment follow it. A product URL's own market is used when this is not given.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"de","label":"Germany (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"fr","label":"France (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"gr","label":"Greece (EUR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ro","label":"Romania (RON)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"ua","label":"Ukraine (UAH)"},{"value":"tr","label":"Türkiye (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"hk","label":"Hong Kong (HKD)"},{"value":"asia1","label":"H&M asia1 site (HKD)"},{"value":"asia3","label":"H&M asia3 site (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"au","label":"Australia (AUD)"},{"value":"eur","label":"H&M Europe site (English, EUR)"}],"default":"us","example":"gb"},{"name":"language","type":"enum","required":false,"description":"Only for markets with several languages: ca (en, fr), ch (de, fr, it), be (nl, fr), fi (fi, sv), hk / asia1 / asia3 (en, zh). Defaults to the market's first language.","on_invalid":"reject","allowed_values":[{"value":"bg","label":"bg"},{"value":"cs","label":"cs"},{"value":"da","label":"da"},{"value":"de","label":"de"},{"value":"el","label":"el"},{"value":"en","label":"en"},{"value":"es","label":"es"},{"value":"fi","label":"fi"},{"value":"fr","label":"fr"},{"value":"he","label":"he"},{"value":"hu","label":"hu"},{"value":"it","label":"it"},{"value":"ja","label":"ja"},{"value":"ko","label":"ko"},{"value":"nl","label":"nl"},{"value":"no","label":"no"},{"value":"pl","label":"pl"},{"value":"pt","label":"pt"},{"value":"ro","label":"ro"},{"value":"sk","label":"sk"},{"value":"sr","label":"sr"},{"value":"sv","label":"sv"},{"value":"tr","label":"tr"},{"value":"uk","label":"uk"},{"value":"vi","label":"vi"},{"value":"zh","label":"zh"}],"example":"fr"},{"name":"max_rotations","type":"integer","required":false,"description":"Attempts per upstream request before giving up (each on a fresh exit).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{article_code, product_code, name, brand, url, category, product_type, main_category, breadcrumb[]{name, url}, audience, description, details[], attributes{}, concept[], price, regular_price, on_sale, discount_percent, member_price, price_type ('sale'|'member'|null), price_note, currency, color{name, hex, color_code}, images[]{url, type, alt}, sizes[]{size_code, size, label, in_stock, few_left}, sizes_in_stock, available, composition[]{part, materials[]{name, percent}}, composition_text[], preferred_materials[]{name, percent}, material_details[]{name, description}, recycled_materials_percent, country_of_production[], care_instructions[], model_height, model_size_worn, coming_soon, new_arrival, in_store_assortment, markers[], rating, review_count, rating_scale, reviews_sample[]{rating, text, date, dimensions[]}, variants[]{article_code, color_name, hex, color_code, url, image, price, regular_price, on_sale, discount_percent, member_price, price_type, price_note, sizes[], sizes_in_stock, available, coming_soon, new_arrival}, variant_count, delivery_note, availability_source}, country, language, locale","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"article_code":"1323075003","country":"fr"}},{"name":"category","description":"Every product on one H&M category page (a department, a product type, a sale page), paged and sorted, with the same rows as search. Pass the category URL or path, or the category_id + page_id a previous call returned.","required_params":[],"optional_params":["category","category_id","page_id","country","language","page","page_size","sort","max_rotations"],"params":[{"name":"category","type":"string","required":false,"description":"An H&M category page: its URL or its path (/ladies/shop-by-product/dresses.html). `breadcrumb` on any product lists them.","on_invalid":"reject","example":"https://www2.hm.com/en_gb/ladies/shop-by-product/dresses.html","aliases":["category_url","category_path"]},{"name":"category_id","type":"string","required":false,"description":"With page_id: the listing ids a previous category call returned (skips reading the category page).","on_invalid":"reject","example":"LADIES_SHOPBYPRODUCT : DRESSES_DRESSES : VIEWALL_VIEW_ALL"},{"name":"page_id","type":"string","required":false,"description":"With category_id: the listing ids a previous category call returned.","on_invalid":"reject","example":"/ladies/shop-by-product/dresses"},{"name":"country","type":"enum","required":false,"description":"The H&M market. Prices, currency, language and assortment follow it. A product URL's own market is used when this is not given.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"de","label":"Germany (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"fr","label":"France (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"gr","label":"Greece (EUR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ro","label":"Romania (RON)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"ua","label":"Ukraine (UAH)"},{"value":"tr","label":"Türkiye (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"hk","label":"Hong Kong (HKD)"},{"value":"asia1","label":"H&M asia1 site (HKD)"},{"value":"asia3","label":"H&M asia3 site (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"au","label":"Australia (AUD)"},{"value":"eur","label":"H&M Europe site (English, EUR)"}],"default":"us","example":"gb"},{"name":"language","type":"enum","required":false,"description":"Only for markets with several languages: ca (en, fr), ch (de, fr, it), be (nl, fr), fi (fi, sv), hk / asia1 / asia3 (en, zh). Defaults to the market's first language.","on_invalid":"reject","allowed_values":[{"value":"bg","label":"bg"},{"value":"cs","label":"cs"},{"value":"da","label":"da"},{"value":"de","label":"de"},{"value":"el","label":"el"},{"value":"en","label":"en"},{"value":"es","label":"es"},{"value":"fi","label":"fi"},{"value":"fr","label":"fr"},{"value":"he","label":"he"},{"value":"hu","label":"hu"},{"value":"it","label":"it"},{"value":"ja","label":"ja"},{"value":"ko","label":"ko"},{"value":"nl","label":"nl"},{"value":"no","label":"no"},{"value":"pl","label":"pl"},{"value":"pt","label":"pt"},{"value":"ro","label":"ro"},{"value":"sk","label":"sk"},{"value":"sr","label":"sr"},{"value":"sv","label":"sv"},{"value":"tr","label":"tr"},{"value":"uk","label":"uk"},{"value":"vi","label":"vi"},{"value":"zh","label":"zh"}],"example":"fr"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Products per page (H&M's own page shows 36; the service allows up to 72).","on_invalid":"reject","default":36,"minimum":1,"maximum":72},{"name":"sort","type":"enum","required":false,"description":"H&M's own sort orders.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"newest","label":"New"},{"value":"price_asc","label":"Lowest price"},{"value":"price_desc","label":"Highest price"}],"default":"relevance","example":"price_asc"},{"name":"max_rotations","type":"integer","required":false,"description":"Attempts per upstream request before giving up (each on a fresh exit).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{article_code, product_code, name, brand, url, image, model_image, images[], price, regular_price, on_sale, discount_percent, member_price, price_formatted, price_range{min, max}, currency, color_name, color_hex, color_shades[], colors[]{article_code, color_name, hex, url, image}, color_count, sizes[]{size_code, label, in_stock}, sizes_in_stock, availability, coming_soon, online, pre_shopping, new_arrival, multipack, external_brand, markers[]{text, type}, main_category, has_video}, count, page, page_size, total_results, total_pages, has_more, page_out_of_range, country, language, locale, currency, category{url, title, category_id, page_id}, sort_applied","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"search/suggest","description":"H&M's search-box suggestions for what a shopper has typed: suggested searches and linked content pages, in the market's language.","required_params":["query"],"optional_params":["country","language","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper has typed so far.","on_invalid":"reject","example":"lin","aliases":["q","prefix"]},{"name":"country","type":"enum","required":false,"description":"The H&M market. Prices, currency, language and assortment follow it. A product URL's own market is used when this is not given.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"de","label":"Germany (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"fr","label":"France (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"gr","label":"Greece (EUR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ro","label":"Romania (RON)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"ua","label":"Ukraine (UAH)"},{"value":"tr","label":"Türkiye (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"hk","label":"Hong Kong (HKD)"},{"value":"asia1","label":"H&M asia1 site (HKD)"},{"value":"asia3","label":"H&M asia3 site (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"au","label":"Australia (AUD)"},{"value":"eur","label":"H&M Europe site (English, EUR)"}],"default":"us","example":"gb"},{"name":"language","type":"enum","required":false,"description":"Only for markets with several languages: ca (en, fr), ch (de, fr, it), be (nl, fr), fi (fi, sv), hk / asia1 / asia3 (en, zh). Defaults to the market's first language.","on_invalid":"reject","allowed_values":[{"value":"bg","label":"bg"},{"value":"cs","label":"cs"},{"value":"da","label":"da"},{"value":"de","label":"de"},{"value":"el","label":"el"},{"value":"en","label":"en"},{"value":"es","label":"es"},{"value":"fi","label":"fi"},{"value":"fr","label":"fr"},{"value":"he","label":"he"},{"value":"hu","label":"hu"},{"value":"it","label":"it"},{"value":"ja","label":"ja"},{"value":"ko","label":"ko"},{"value":"nl","label":"nl"},{"value":"no","label":"no"},{"value":"pl","label":"pl"},{"value":"pt","label":"pt"},{"value":"ro","label":"ro"},{"value":"sk","label":"sk"},{"value":"sr","label":"sr"},{"value":"sv","label":"sv"},{"value":"tr","label":"tr"},{"value":"uk","label":"uk"},{"value":"vi","label":"vi"},{"value":"zh","label":"zh"}],"example":"fr"},{"name":"max_rotations","type":"integer","required":false,"description":"Attempts per upstream request before giving up (each on a fresh exit).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"suggestions[]{text}, content[]{title, url}, count, query, country, language, locale","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"dress"}},{"name":"product/availability","description":"Live size availability for every colour of one H&M product in one market: which sizes can be ordered and which H&M flags as few pieces left. One small call — for stock monitoring.","required_params":["article_code"],"optional_params":["country","language","max_rotations"],"params":[{"name":"article_code","type":"string","required":true,"description":"An H&M article code (10 digits = product + colour, as in a product URL), a 7-digit product code (resolved to its default colour) or an hm.com product URL.","on_invalid":"reject","example":"1323075003","aliases":["product_id","id","url","product_code"]},{"name":"country","type":"enum","required":false,"description":"The H&M market. Prices, currency, language and assortment follow it. A product URL's own market is used when this is not given.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"de","label":"Germany (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"fr","label":"France (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"gr","label":"Greece (EUR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ro","label":"Romania (RON)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"ua","label":"Ukraine (UAH)"},{"value":"tr","label":"Türkiye (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"hk","label":"Hong Kong (HKD)"},{"value":"asia1","label":"H&M asia1 site (HKD)"},{"value":"asia3","label":"H&M asia3 site (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"au","label":"Australia (AUD)"},{"value":"eur","label":"H&M Europe site (English, EUR)"}],"default":"us","example":"gb"},{"name":"language","type":"enum","required":false,"description":"Only for markets with several languages: ca (en, fr), ch (de, fr, it), be (nl, fr), fi (fi, sv), hk / asia1 / asia3 (en, zh). Defaults to the market's first language.","on_invalid":"reject","allowed_values":[{"value":"bg","label":"bg"},{"value":"cs","label":"cs"},{"value":"da","label":"da"},{"value":"de","label":"de"},{"value":"el","label":"el"},{"value":"en","label":"en"},{"value":"es","label":"es"},{"value":"fi","label":"fi"},{"value":"fr","label":"fr"},{"value":"he","label":"he"},{"value":"hu","label":"hu"},{"value":"it","label":"it"},{"value":"ja","label":"ja"},{"value":"ko","label":"ko"},{"value":"nl","label":"nl"},{"value":"no","label":"no"},{"value":"pl","label":"pl"},{"value":"pt","label":"pt"},{"value":"ro","label":"ro"},{"value":"sk","label":"sk"},{"value":"sr","label":"sr"},{"value":"sv","label":"sv"},{"value":"tr","label":"tr"},{"value":"uk","label":"uk"},{"value":"vi","label":"vi"},{"value":"zh","label":"zh"}],"example":"fr"},{"name":"max_rotations","type":"integer","required":false,"description":"Attempts per upstream request before giving up (each on a fresh exit).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product_code, articles[]{article_code, sizes_in_stock[]{size_code, size}, few_left[]{size_code, size}}, article_count, sizes_in_stock, sizes_few_left, country, locale","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"article_code":"1323075003"}}]},{"name":"holidays","category":{"id":"utilities","title":"Utilities & AI"},"title":"Public Holidays & Business Days API — public holidays by country and year, working-day checks, business-day counts, upcoming holidays and a long-weekend finder","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/holidays/v1","spec_available":true,"actions":[{"name":"holidays","description":"public holidays for a country + year (full Nager fields + derived year/weekday/nationwide)","required_params":["country","year"],"optional_params":[],"params":[{"name":"country","type":"string","required":true,"description":"2-letter ISO-3166 country code (e.g. US, GB, DE, TR, JP). 123 countries supported — call action='countries' for the full set. Case-insensitive.","on_invalid":"reject","example":"US","aliases":["countryCode","cc"]},{"name":"year","type":"integer","required":true,"description":"4-digit year (supported range 1900-2200).","on_invalid":"ignore","example":2026,"minimum":1900,"maximum":2200}],"returns":"country, year, count, holidays[] (date, name, localName, types[], global, counties[], weekday, nationwide)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US","year":2026}},{"name":"is_workday","description":"is a given date a working day for a country? (weekend + public-holiday aware; reasons[] explain)","required_params":["country","date"],"optional_params":["weekend","types","subdivision"],"params":[{"name":"country","type":"string","required":true,"description":"2-letter ISO-3166 country code (e.g. US, GB, DE, TR, JP). 123 countries supported — call action='countries' for the full set. Case-insensitive.","on_invalid":"reject","example":"US","aliases":["countryCode","cc"]},{"name":"date","type":"string","required":true,"description":"The date to test, in ISO format YYYY-MM-DD.","on_invalid":"reject","example":"2026-01-01"},{"name":"weekend","type":"string","required":false,"description":"Override the weekend definition with day names (e.g. 'Sat,Sun' or 'Fri,Sat'). Defaults to Sat+Sun (Fri+Sat for EG/BD).","on_invalid":"ignore","example":"Sat,Sun"},{"name":"types","type":"string","required":false,"description":"Which holiday types count as a day off (comma-separated, case-insensitive). Defaults to Public only.","on_invalid":"ignore","allowed_values":[{"value":"Public","label":"Statutory public holiday (default)"},{"value":"Bank","label":"Bank holiday"},{"value":"School","label":"School holiday"},{"value":"Authorities","label":"Authorities"},{"value":"Optional","label":"Optional"},{"value":"Observance","label":"Observance"}],"example":"Public"},{"name":"subdivision","type":"string","required":false,"description":"Optional ISO-3166-2 subdivision code (e.g. US-CA, GB-SCT) for region-precise business days. Omit for nationwide. Case-insensitive.","on_invalid":"ignore","example":"US-CA","aliases":["county","region","location"]}],"returns":"date, country, weekday, is_workday, is_weekend, is_public_holiday, reasons[], holidays[], weekend_definition[]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US","date":"2026-01-01"}},{"name":"workday_count","description":"business-day count over a date range: workdays/weekend_days/holiday_days + the holidays in range","required_params":["country","start","end"],"optional_params":["weekend","types","subdivision"],"params":[{"name":"country","type":"string","required":true,"description":"2-letter ISO-3166 country code (e.g. US, GB, DE, TR, JP). 123 countries supported — call action='countries' for the full set. Case-insensitive.","on_invalid":"reject","example":"US","aliases":["countryCode","cc"]},{"name":"start","type":"string","required":true,"description":"Range start date (inclusive), ISO YYYY-MM-DD.","on_invalid":"reject","example":"2026-01-01","aliases":["start_date","from"]},{"name":"end","type":"string","required":true,"description":"Range end date (inclusive), ISO YYYY-MM-DD. Max range ~10 years.","on_invalid":"reject","example":"2026-01-31","aliases":["end_date","to"]},{"name":"weekend","type":"string","required":false,"description":"Override the weekend definition with day names (e.g. 'Sat,Sun' or 'Fri,Sat'). Defaults to Sat+Sun (Fri+Sat for EG/BD).","on_invalid":"ignore","example":"Sat,Sun"},{"name":"types","type":"string","required":false,"description":"Which holiday types count as a day off (comma-separated, case-insensitive). Defaults to Public only.","on_invalid":"ignore","allowed_values":[{"value":"Public","label":"Statutory public holiday (default)"},{"value":"Bank","label":"Bank holiday"},{"value":"School","label":"School holiday"},{"value":"Authorities","label":"Authorities"},{"value":"Optional","label":"Optional"},{"value":"Observance","label":"Observance"}],"example":"Public"},{"name":"subdivision","type":"string","required":false,"description":"Optional ISO-3166-2 subdivision code (e.g. US-CA, GB-SCT) for region-precise business days. Omit for nationwide. Case-insensitive.","on_invalid":"ignore","example":"US-CA","aliases":["county","region","location"]}],"returns":"country, start, end, total_days, workdays, weekend_days, holiday_days, holidays[] (in range), weekend_definition[]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US","start":"2026-01-01","end":"2026-01-31"}},{"name":"next_holidays","description":"upcoming public holidays (next ~365 days) with daysUntil","required_params":["country"],"optional_params":["today"],"params":[{"name":"country","type":"string","required":true,"description":"2-letter ISO-3166 country code (e.g. US, GB, DE, TR, JP). 123 countries supported — call action='countries' for the full set. Case-insensitive.","on_invalid":"reject","example":"US","aliases":["countryCode","cc"]},{"name":"today","type":"string","required":false,"description":"Optional 'as of' date (ISO YYYY-MM-DD) to compute daysUntil from; defaults to the current UTC date.","on_invalid":"ignore","example":"2026-06-10"}],"returns":"country, asOf, count, holidays[] (full fields + daysUntil)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US"}},{"name":"long_weekends","description":"long-weekend windows for a country + year (+ bridge-day suggestions)","required_params":["country","year"],"optional_params":[],"params":[{"name":"country","type":"string","required":true,"description":"2-letter ISO-3166 country code (e.g. US, GB, DE, TR, JP). 123 countries supported — call action='countries' for the full set. Case-insensitive.","on_invalid":"reject","example":"US","aliases":["countryCode","cc"]},{"name":"year","type":"integer","required":true,"description":"4-digit year (supported range 1900-2200).","on_invalid":"ignore","example":2026,"minimum":1900,"maximum":2200}],"returns":"country, year, count, longWeekends[] (startDate, endDate, dayCount, needBridgeDay, startWeekday)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US","year":2026}},{"name":"countries","description":"the supported country set (code → name)","required_params":[],"optional_params":[],"params":[],"returns":"count, countries[] (countryCode, name)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"hs-code","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"HS Code & Tariff API — HS/HTS commodity classification with official US (USITC HTS) and UK (HMRC) duty and VAT rates, plus a landed-cost estimator. Informational, not customs advice.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/hs-code/v1","spec_available":true,"actions":[{"name":"hs_lookup","description":"One HS/HTS/commodity code + destination (US|UK) → the official tariff line: description, units, MFN duty rate (+ parsed % when ad-valorem), VAT/GST, special/preference programs, footnotes, schedule version. A 4/6-digit code resolves to its most specific rate-bearing line and lists context.","required_params":["code","destination"],"optional_params":[],"params":[{"name":"code","type":"string","required":true,"description":"The tariff code to look up. 4-digit heading, 6-digit subheading, or 8/10-digit national line. Dots/spaces are ignored. For US it maps to an HTS line; for UK to a commodity code. A short code resolves to its most specific published rate-bearing line and lists its context.","on_invalid":"reject","example":"8471.30.0100","aliases":["hs_code","hts_code","commodity_code"]},{"name":"destination","type":"enum","required":true,"description":"Destination market whose official tariff schedule to use. v1 covers US and UK only (the two .gov schedules we fetch real data from); EU and other markets are out of scope — do not assume coverage.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USITC Harmonized Tariff Schedule"},{"value":"UK","label":"United Kingdom — HMRC Online Trade Tariff"}],"example":"US","aliases":["dest","country","market"]}],"returns":"destination, code, record{description, units[], duty{general_mfn, general_mfn_pct, special, column_2, rate_note, ...}, vat?}, context[] (sibling/parent lines), schedule_version, disclaimer","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"code":"8471.30.0100","destination":"US"}},{"name":"classify","description":"Product description (+materials) + destination → ranked candidate HS codes with a confidence band, reason, and review_required. Candidates are SUGGESTIONS for a human/broker to confirm — low-confidence candidates are clearly marked, never shown as a settled code.","required_params":["description","destination"],"optional_params":["materials","limit","min_confidence"],"params":[{"name":"description","type":"string","required":true,"description":"Free-text product description to classify into candidate HS codes. Returned candidates carry a confidence band + review_required — they are SUGGESTIONS for a human/broker to confirm, never a final code.","on_invalid":"reject","example":"leather shoes for men","aliases":["text","product","q","query"]},{"name":"destination","type":"enum","required":true,"description":"Destination market whose official tariff schedule to use. v1 covers US and UK only (the two .gov schedules we fetch real data from); EU and other markets are out of scope — do not assume coverage.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USITC Harmonized Tariff Schedule"},{"value":"UK","label":"United Kingdom — HMRC Online Trade Tariff"}],"example":"US","aliases":["dest","country","market"]},{"name":"materials","type":"string","required":false,"description":"Optional: chief material(s) of the product. Appended to the search text to sharpen classification (material drives HS chapters).","on_invalid":"ignore","example":"leather upper, rubber sole","aliases":["material"]},{"name":"limit","type":"integer","required":false,"description":"Max candidate results (1-50).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"min_confidence","type":"number","required":false,"description":"Drop classify candidates whose confidence is below this 0-1 threshold.","on_invalid":"ignore","example":0.3,"minimum":0,"maximum":1}],"returns":"destination, query, candidates[]{code, description, confidence, confidence_band, reason, duty_general_mfn?}, top_candidate, review_required, confidence_note, disclaimer","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":4},"example_params":{"description":"leather shoes for men","destination":"US"}},{"name":"landed_cost","description":"HS code (or description → auto-classified) + destination + value (+origin, currency, shipping) → estimated duty + VAT/GST + total landed cost, with an explicit assumptions[] list and the disclaimer. A simple, honest estimate — NOT a customs quote.","required_params":["destination","value"],"optional_params":["code","description","origin","currency","shipping","materials"],"params":[{"name":"destination","type":"enum","required":true,"description":"Destination market whose official tariff schedule to use. v1 covers US and UK only (the two .gov schedules we fetch real data from); EU and other markets are out of scope — do not assume coverage.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USITC Harmonized Tariff Schedule"},{"value":"UK","label":"United Kingdom — HMRC Online Trade Tariff"}],"example":"US","aliases":["dest","country","market"]},{"name":"value","type":"number","required":true,"description":"Customs/goods value of the shipment (the dutiable base) in `currency`. Duty is applied to this value; VAT/GST to value+duty(+freight where the destination taxes CIF).","on_invalid":"reject","example":1000,"minimum":0,"aliases":["customs_value","goods_value","amount"]},{"name":"code","type":"string","required":false,"description":"Either give a known HS/commodity `code` (preferred — exact duty), OR a `description` (the engine classifies it to a best code first). Code wins if both are given.","on_invalid":"ignore","example":"6403.51.95.00","aliases":["hs_code","hts_code","commodity_code"]},{"name":"description","type":"string","required":false,"description":"Free-text product description to classify into candidate HS codes. Returned candidates carry a confidence band + review_required — they are SUGGESTIONS for a human/broker to confirm, never a final code.","on_invalid":"reject","example":"leather shoes for men","aliases":["text","product","q","query"]},{"name":"origin","type":"string","required":false,"description":"Country of origin (ISO-3166 alpha-2). Recorded in the estimate and assumptions; v1 applies the GENERAL/third-country (MFN) rate and does NOT auto-apply trade-preference rates or origin-specific extra duties (e.g. Section 301) — flagged in assumptions.","on_invalid":"ignore","example":"CN","aliases":["origin_country","from"]},{"name":"currency","type":"string","required":false,"description":"ISO-4217 currency of `value`/`shipping` and of the returned figures. v1 does NOT convert currencies — all outputs are in this same currency.","on_invalid":"ignore","default":"USD","example":"USD","aliases":["ccy"]},{"name":"shipping","type":"number","required":false,"description":"Optional freight/insurance cost. Included in the VAT base for destinations that tax the CIF value (UK); recorded in assumptions.","on_invalid":"ignore","example":120,"minimum":0,"aliases":["freight","shipping_cost"]},{"name":"materials","type":"string","required":false,"description":"Optional: chief material(s) of the product. Appended to the search text to sharpen classification (material drives HS chapters).","on_invalid":"ignore","example":"leather upper, rubber sole","aliases":["material"]}],"returns":"destination, code, currency, customs_value, estimated_duty, estimated_tax{vat}, total_landed_cost, breakdown{}, duty_rate_pct, vat_rate_pct, assumptions[], review_required, disclaimer","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":8},"example_params":{"code":"8471300000","destination":"UK","value":1000,"currency":"GBP"}},{"name":"schedules_status","description":"Freshness + coverage of the underlying official schedules (US HTS revision, UK tariff reachability) — so a caller knows how current the rates are and which markets are live.","required_params":[],"optional_params":[],"params":[],"returns":"schedules{US{version, source, reachable}, UK{source, reachable}}, coverage[], checked_at, disclaimer","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"batch_classify","description":"Up to 25 products in one call (discounted). Each item is classified (or looked up if a code is given) independently; one bad item never fails the batch.","required_params":["items","destination"],"optional_params":["limit","min_confidence"],"params":[{"name":"items","type":"array","required":true,"description":"Up to 25 products, each {description, materials?} (or {code} to look up directly). Each item gets its own candidates + review_required; a bad item yields its own error entry, never failing the batch.","on_invalid":"reject","example":[{"description":"leather shoes","materials":"leather"},{"description":"laptop computer"}],"aliases":["products","skus","batch"]},{"name":"destination","type":"enum","required":true,"description":"Destination market whose official tariff schedule to use. v1 covers US and UK only (the two .gov schedules we fetch real data from); EU and other markets are out of scope — do not assume coverage.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USITC Harmonized Tariff Schedule"},{"value":"UK","label":"United Kingdom — HMRC Online Trade Tariff"}],"example":"US","aliases":["dest","country","market"]},{"name":"limit","type":"integer","required":false,"description":"Max candidate results (1-50).","on_invalid":"ignore","default":5,"example":5,"minimum":1,"maximum":50},{"name":"min_confidence","type":"number","required":false,"description":"Drop classify candidates whose confidence is below this 0-1 threshold.","on_invalid":"ignore","example":0.3,"minimum":0,"maximum":1}],"returns":"destination, count, results[]{ok, input, candidates?|record?|error, review_required}, disclaimer","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":3},"example_params":{"items":[{"description":"leather shoes"},{"description":"laptop"}],"destination":"US"}},{"name":"browse","description":"Navigate the tariff tree without knowing a keyword: list the 21 WCO sections, drill a section → chapters, a chapter (2-digit) → headings, a heading (4-digit) → subheadings/lines, a subheading (6-digit) → national lines. Each node returns its parent breadcrumb + children. The browse companion to keyword `classify`.","required_params":["destination"],"optional_params":["node"],"params":[{"name":"destination","type":"enum","required":true,"description":"Destination market whose official tariff schedule to use. v1 covers US and UK only (the two .gov schedules we fetch real data from); EU and other markets are out of scope — do not assume coverage.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USITC Harmonized Tariff Schedule"},{"value":"UK","label":"United Kingdom — HMRC Online Trade Tariff"}],"example":"US","aliases":["dest","country","market"]},{"name":"node","type":"string","required":false,"description":"Where in the tariff tree to browse. Omit (or 'root'/'sections') to list the 21 WCO sections. A 2-digit chapter (e.g. '84') lists its headings; a 4-digit heading (e.g. '8471') lists its subheadings/lines; a 6-digit subheading drills into national lines. A Roman section numeral (I-XXII) lists that section's chapters. Dots/spaces ignored.","on_invalid":"ignore","example":"84","aliases":["chapter","heading","subheading","parent"]}],"returns":"destination, level, node, breadcrumb[], children[]{code, description, level, duty_general_mfn?}, count, source, disclaimer","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"destination":"US"}},{"name":"validate","description":"Check whether a code is a real, current tariff code in the chosen market — structural check (4/6/8/10 digits) PLUS live existence in the schedule. A well-formed but unknown code returns valid=false with the nearest valid parent + sibling suggestions, so a caller can correct a typo'd or expired code before filing.","required_params":["code","destination"],"optional_params":[],"params":[{"name":"code","type":"string","required":true,"description":"The HS/HTS/commodity code to validate. Checked for structure (4/6/8/10 digits) AND existence in the chosen destination's live schedule — a well-formed but non-existent code is reported invalid with the nearest valid parent + suggestions.","on_invalid":"reject","example":"8471.30.0100","aliases":["hs_code","hts_code","commodity_code"]},{"name":"destination","type":"enum","required":true,"description":"Destination market whose official tariff schedule to use. v1 covers US and UK only (the two .gov schedules we fetch real data from); EU and other markets are out of scope — do not assume coverage.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USITC Harmonized Tariff Schedule"},{"value":"UK","label":"United Kingdom — HMRC Online Trade Tariff"}],"example":"US","aliases":["dest","country","market"]}],"returns":"destination, code, valid, declarable, level, reason, normalized, description?, nearest_valid_parent?, suggestions[], source, disclaimer","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"code":"8471.30.0100","destination":"US"}},{"name":"cross_country","description":"One 6-digit HS subheading (the WCO-international level shared by every member country) → the universal HS6 description plus the matching US (USITC HTS) and UK (HMRC) national lines side by side, with each market's duty rate. The same product, compared across the markets we cover — first 6 digits identical worldwide, national 8/10-digit detail differs.","required_params":["hs6"],"optional_params":[],"params":[{"name":"hs6","type":"string","required":true,"description":"A 6-digit HS subheading (the WCO-international level shared by all 200+ member countries). Dots/spaces ignored; a longer code is truncated to its first 6 digits. Returns the universal HS6 description plus the matching US HTS lines and UK commodity lines side by side.","on_invalid":"reject","example":"847130","aliases":["code","hs_code","subheading"]}],"returns":"hs6, hs6_formatted, universal_description, markets{US{lines[], duty_summary}, UK{lines[], duty_summary}}, note, disclaimer","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"hs6":"847130"}}]},{"name":"iaai","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"IAAI API — Insurance Auto Auctions salvage & total-loss car auction scraper: search live IAAI lots by make, model, year, damage, title type, odometer, branch and buyer licence, then pull the full lot record (VIN, damage, title, odometer, ACV, buy-now price, auction date, branch and geo) plus every auction photo. The direct counterpart to our Copart API, with matching field names. No login, no API key.","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/iaai/v1","spec_available":true,"actions":[{"name":"search","description":"Search live IAAI auction lots by free-text `query` and/or 25 structured filters (make, model, trim, year or year_min/year_max, damage, title_type, vehicle_type, loss_type, start_code, fuel_type, transmission, drive, cylinders, airbags, auction_type, who_can_buy, region, market, availability, branch, state, body_style, colour, country_of_origin, odometer_min/max). Sortable and paginated. Returns lot cards with damage, title, odometer, estimated value, auction date, branch and thumbnail, plus IAAI's own total for the query.","required_params":[],"optional_params":["query","make","model","trim","year","year_min","year_max","title_type","vehicle_type","damage","loss_type","start_code","fuel_type","transmission","drive","cylinders","airbags","auction_type","who_can_buy","region","market","availability","odometer_min","odometer_max","branch","state","body_style","color","country_of_origin","vehicle_subtype","engine_size","sort","page","size"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword across the listing (make, model, series, stock number). Leave empty to browse everything and use filters.","on_invalid":"ignore","example":"toyota prius","aliases":["q","keyword"]},{"name":"make","type":"string","required":false,"description":"Vehicle make, exactly as IAAI spells it (TOYOTA, FORD, BMW). Get the live list from the `filters` action.","on_invalid":"ignore","example":"TOYOTA"},{"name":"model","type":"string","required":false,"description":"Vehicle model (PRIUS C, F150, CIVIC). Pair with `make`.","on_invalid":"ignore","example":"PRIUS C"},{"name":"trim","type":"string","required":false,"description":"Series / trim level as IAAI spells it (e.g. TWO, LIMITED, XLE).","on_invalid":"ignore","example":"TWO","aliases":["series"]},{"name":"year","type":"integer","required":false,"description":"Exact model year. For a span use year_min / year_max.","on_invalid":"ignore","example":2018,"minimum":1900,"maximum":2030},{"name":"year_min","type":"integer","required":false,"description":"Earliest model year (inclusive).","on_invalid":"ignore","minimum":1900,"maximum":2030},{"name":"year_max","type":"integer","required":false,"description":"Latest model year (inclusive).","on_invalid":"ignore","minimum":1900,"maximum":2030},{"name":"title_type","type":"enum","required":false,"description":"Filter by title / sale document.","on_invalid":"ignore","allowed_values":[{"value":"salvage","label":"Salvage"},{"value":"clean","label":"Clear"},{"value":"non_repairable","label":"Non-Repairable"},{"value":"repairable","label":"Repairable"},{"value":"parts_only","label":"PartsOnly"},{"value":"bill_of_sale","label":"Bill Of Sale"},{"value":"none","label":"None"}]},{"name":"vehicle_type","type":"enum","required":false,"description":"Filter by vehicle category.","on_invalid":"ignore","allowed_values":[{"value":"automobile","label":"Automobiles"},{"value":"boat","label":"Boats"},{"value":"bus","label":"Buses"},{"value":"classic","label":"Classics"},{"value":"equipment","label":"Equipment"},{"value":"fleet","label":"Fleet Vehicles"},{"value":"heavy_truck","label":"Heavy Duty Trucks"},{"value":"light_truck","label":"Light Trucks"},{"value":"medium_truck","label":"Medium Trucks"},{"value":"motorcycle","label":"Motorcycles"},{"value":"pickup","label":"Pick-up Trucks"},{"value":"recreational","label":"Recreational/ Miscellaneous"},{"value":"rental","label":"Rental Vehicles"},{"value":"suv","label":"SUVs"},{"value":"trailer","label":"Trailers"},{"value":"van","label":"Vans"}]},{"name":"damage","type":"enum","required":false,"description":"Filter by primary damage type.","on_invalid":"ignore","allowed_values":[{"value":"all_over","label":"All Over"},{"value":"front_end","label":"Front End"},{"value":"front","label":"Front"},{"value":"rear","label":"Rear"},{"value":"front_and_rear","label":"Front & Rear"},{"value":"left_front","label":"Left Front"},{"value":"left_rear","label":"Left Rear"},{"value":"left_side","label":"Left Side"},{"value":"right_front","label":"Right Front"},{"value":"right_rear","label":"Right Rear"},{"value":"right_side","label":"Right Side"},{"value":"left_and_right_side","label":"Left & Right Side"},{"value":"roof","label":"Roof"},{"value":"roof_damage","label":"Roof Damage"},{"value":"rollover","label":"Rollover"},{"value":"roll_over","label":"Roll Over"},{"value":"undercarriage","label":"Undercarriage"},{"value":"under_carriage","label":"Under Carriage"},{"value":"hail","label":"Hail"},{"value":"flood","label":"Flood"},{"value":"fresh_water","label":"Fresh Water"},{"value":"salt_water","label":"Salt Water"},{"value":"water","label":"Water"},{"value":"total_burn","label":"Total Burn"},{"value":"engine_burn","label":"Engine Burn"},{"value":"interior_burn","label":"Interior Burn"},{"value":"exterior_burn","label":"Exterior Burn"},{"value":"engine_fire","label":"Engine Fire"},{"value":"interior_fire","label":"Interior Fire"},{"value":"mechanical","label":"Mechanical"},{"value":"engine","label":"Engine"},{"value":"engine_damage","label":"Engine Damage"},{"value":"transmission_damage","label":"Transmission Damage"},{"value":"suspension","label":"Suspension"},{"value":"frame","label":"Frame"},{"value":"structural","label":"Structural"},{"value":"electrical","label":"Electrical"},{"value":"theft","label":"Theft"},{"value":"vandalized","label":"Vandalized"},{"value":"stripped","label":"Strip"},{"value":"storm_damage","label":"Storm Damage"},{"value":"normal_wear","label":"Normal Wear & Tear"},{"value":"interior_damage","label":"Interior Damage"},{"value":"front_window","label":"Front Window"},{"value":"rear_window","label":"Rear Window"},{"value":"biohazard","label":"Biohazard"},{"value":"repossession","label":"Repossession"},{"value":"charity","label":"Charity"},{"value":"none","label":"None"},{"value":"unknown","label":"Unknown"}]},{"name":"loss_type","type":"enum","required":false,"description":"Filter by loss type (how the vehicle was written off).","on_invalid":"ignore","allowed_values":[{"value":"collision","label":"Collision"},{"value":"fire","label":"Fire"},{"value":"theft","label":"Theft"},{"value":"water","label":"Water"},{"value":"other","label":"Other"}]},{"name":"start_code","type":"enum","required":false,"description":"Filter by IAAI's start/run condition code.","on_invalid":"ignore","allowed_values":[{"value":"run_and_drive","label":"Run & Drive"},{"value":"starts","label":"STARTS"},{"value":"stationary","label":"Stationary"},{"value":"cannot_test","label":"Can't Test"}]},{"name":"fuel_type","type":"enum","required":false,"description":"Filter by fuel type.","on_invalid":"ignore","allowed_values":[{"value":"gasoline","label":"Gasoline"},{"value":"diesel","label":"Diesel"},{"value":"electric","label":"Electric"},{"value":"hybrid","label":"Hybrid"},{"value":"flexible","label":"Flexible"},{"value":"flexible_fuel","label":"Flexible Fuel"},{"value":"other","label":"Other"}]},{"name":"transmission","type":"enum","required":false,"description":"Filter by transmission.","on_invalid":"ignore","allowed_values":[{"value":"automatic","label":"Automatic"},{"value":"manual","label":"Manual"},{"value":"cvt","label":"CVT"},{"value":"missing","label":"Missing"},{"value":"unknown","label":"Unknown"}]},{"name":"drive","type":"enum","required":false,"description":"Filter by drive line.","on_invalid":"ignore","allowed_values":[{"value":"fwd","label":"Front Wheel Drive"},{"value":"rwd","label":"Rear Wheel Drive"},{"value":"awd","label":"All-Wheel Drive"},{"value":"four_wheel_drive","label":"Four Wheel Drive"},{"value":"4x2","label":"4X2 Drive"}]},{"name":"cylinders","type":"enum","required":false,"description":"Filter by cylinder count.","on_invalid":"ignore","allowed_values":[{"value":"1","label":"1 Cyl"},{"value":"2","label":"2 Cyl"},{"value":"3","label":"3 Cyl"},{"value":"4","label":"4 Cyl"},{"value":"5","label":"5 Cyl"},{"value":"6","label":"6 Cyl"},{"value":"8","label":"8 Cyl"},{"value":"10","label":"10 Cyl"},{"value":"12","label":"12 Cyl"},{"value":"rotary","label":"Rotary Engine"},{"value":"other","label":"All Others"}]},{"name":"airbags","type":"enum","required":false,"description":"Filter by airbag state.","on_invalid":"ignore","allowed_values":[{"value":"intact","label":"Intact Airbags"},{"value":"deployed","label":"Deployed Airbags"}]},{"name":"auction_type","type":"enum","required":false,"description":"Filter by auction format.","on_invalid":"ignore","allowed_values":[{"value":"live","label":"Live Auctions"},{"value":"timed","label":"Timed Auctions"},{"value":"buy_now","label":"Buy Now"}]},{"name":"who_can_buy","type":"enum","required":false,"description":"Filter by buyer licence required. `exporter` and `public` are the ones that matter if you are buying from outside the US.","on_invalid":"ignore","allowed_values":[{"value":"public","label":"Available to the public"},{"value":"dealer","label":"Dealer"},{"value":"dismantler","label":"Dismantler"},{"value":"exporter","label":"Exporter"},{"value":"rebuilder","label":"Rebuilder"},{"value":"scrapper","label":"Scrapper"},{"value":"non_auto_licensed_business","label":"Non-Auto Licensed Business"},{"value":"other_licensed_business","label":"Other Licensed Business"}]},{"name":"region","type":"enum","required":false,"description":"Filter by IAAI sales region.","on_invalid":"ignore","allowed_values":[{"value":"east","label":"East"},{"value":"west","label":"West"},{"value":"north","label":"North"},{"value":"south","label":"South"},{"value":"midwest","label":"Midwest"},{"value":"northeast","label":"Northeast"},{"value":"northwest","label":"Northwest"},{"value":"southeast","label":"Southeast"},{"value":"southwest","label":"Southwest"},{"value":"alaska","label":"Alaska"},{"value":"hawaii","label":"Hawaii"}]},{"name":"market","type":"enum","required":false,"description":"Filter by market (US, Canada or Ritchie Bros.).","on_invalid":"ignore","allowed_values":[{"value":"us","label":"IAA United States"},{"value":"canada","label":"IAA Canada"},{"value":"ritchie_bros","label":"Ritchie Bros."}]},{"name":"availability","type":"enum","required":false,"description":"Only lots that do / do not have a scheduled sale date.","on_invalid":"ignore","allowed_values":[{"value":"with_sale_date","label":"Items With a Sale Date"},{"value":"without_sale_date","label":"Items Without a Sale Date"}]},{"name":"odometer_min","type":"integer","required":false,"description":"Minimum odometer reading (miles).","on_invalid":"ignore","minimum":0},{"name":"odometer_max","type":"integer","required":false,"description":"Maximum odometer reading (miles).","on_invalid":"ignore","minimum":0},{"name":"branch","type":"string","required":false,"description":"Restrict to one IAAI branch by its exact name. Get names and live lot counts from the `branches` action.","on_invalid":"ignore","example":"Altoona (PA)","aliases":["yard","yard_name","branch_name"]},{"name":"state","type":"string","required":false,"description":"Vehicle location state, IAAI's spelling (full name for US states, 2-letter for Canadian provinces).","on_invalid":"ignore","example":"Pennsylvania"},{"name":"body_style","type":"string","required":false,"description":"Body style as IAAI spells it (SEDAN 4D, HATCHBACK, PICKUP...).","on_invalid":"ignore","example":"HATCHBACK"},{"name":"color","type":"string","required":false,"description":"Exterior colour.","on_invalid":"ignore","example":"Blue"},{"name":"country_of_origin","type":"string","required":false,"description":"Country the vehicle was manufactured in.","on_invalid":"ignore","example":"Japan"},{"name":"vehicle_subtype","type":"string","required":false,"description":"Sub-category for non-car inventory (ATV, Boat, Motor Home...).","on_invalid":"ignore","example":"Motor Home"},{"name":"engine_size","type":"string","required":false,"description":"Engine displacement as IAAI spells it, e.g. '2.0 L'.","on_invalid":"ignore","example":"2.0 L"},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Omit for IAAI's own default relevance order.","on_invalid":"ignore","allowed_values":[{"value":"sale_date_asc","label":"Auction date: soonest first"},{"value":"sale_date_desc","label":"Auction date: farthest first"},{"value":"year_desc","label":"Year: new to old"},{"value":"year_asc","label":"Year: old to new"},{"value":"odometer_asc","label":"Odometer: low to high"},{"value":"odometer_desc","label":"Odometer: high to low"},{"value":"make_az","label":"Make: A-Z"},{"value":"make_za","label":"Make: Z-A"},{"value":"model_az","label":"Model: A-Z"},{"value":"branch_az","label":"Branch: A-Z"},{"value":"state_az","label":"Location state: A-Z"},{"value":"stock_asc","label":"Stock #: low to high"},{"value":"stock_desc","label":"Stock #: high to low"}]},{"name":"page","type":"integer","required":false,"description":"Page number (1-based). IAAI stops paging at 500.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"size","type":"integer","required":false,"description":"Results per page (25-100). IAAI clamps anything below 25 up to 25.","on_invalid":"ignore","default":25,"minimum":25,"maximum":100}],"returns":"lots[]{lot_number, lot_id, stock_number, vin(masked by IAAI), year, make, model, trim, title, body_style, color, interior_color, engine, cylinders, fuel_type, transmission, drive, country_of_origin, primary_damage, secondary_damage, title_type, title_state, loss_type, keys_available, airbags, start_code, run_and_drive, vehicle_grade, highlights[], odometer, odometer_unit, odometer_brand, estimated_retail_value, current_bid(null — not published logged-out), buy_it_now_price, minimum_bid, bid_increment, pre_bid_count, repair_cost, currency, sale_date, sale_status, timed_auction, lane, aisle, who_can_buy[], yard_name, yard_number, branch_name, branch_number, location_city, location_state, zip, latitude, longitude, market, thumbnail, url} + meta{total_results, pagination}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"TOYOTA","size":25}},{"name":"lot_detail","description":"The full record for one lot by `lot_number`, read from IAAI's own page view-model: VIN (masked by IAAI), year/make/model/trim, primary and secondary damage, title type/state/brand, odometer with its ACTUAL/NOT-ACTUAL brand, engine, fuel, drive, transmission, airbags, start code, vehicle grade, ACV, buy-now price, minimum bid, bid increment, pre-bid participant count, auction date, lane/aisle, buyer-licence requirements and full branch location with latitude/longitude.","required_params":["lot_number"],"optional_params":["include_images"],"params":[{"name":"lot_number","type":"string","required":true,"description":"IAAI item id — the id in an iaai.com /VehicleDetail/ URL, or a search result's `lot_number`. '46677675', '46677675~US', a Canadian 'Imp_2995978~CA' and a full URL are all accepted; pass `lot_id` back verbatim to keep the tenant. NOTE: this is not the same number as the displayed Stock #.","on_invalid":"reject","example":"46677675","aliases":["lot","lot_id","item_id","id"]},{"name":"include_images","type":"boolean","required":false,"description":"Also return every auction photo in this same call. The photos come from the page this action already fetches, so lot_detail+include_images costs one call instead of calling lot_images separately.","on_invalid":"ignore","default":false}],"returns":"lot{lot_number, lot_id, stock_number, vin(masked by IAAI), year, make, model, trim, title, body_style, color, interior_color, engine, cylinders, fuel_type, transmission, drive, country_of_origin, primary_damage, secondary_damage, title_type, title_state, loss_type, keys_available, airbags, start_code, run_and_drive, vehicle_grade, highlights[], odometer, odometer_unit, odometer_brand, estimated_retail_value, current_bid(null — not published logged-out), buy_it_now_price, minimum_bid, bid_increment, pre_bid_count, repair_cost, currency, sale_date, sale_status, timed_auction, lane, aisle, who_can_buy[], yard_name, yard_number, branch_name, branch_number, location_city, location_state, zip, latitude, longitude, market, thumbnail, url, vin_status, title_brand, title_code, title_pending, vehicle_class, engine_size, restraint_system, options, catalytic_converter, operable, auction_id, slot, stall, vehicle_location, image_360_url}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"lot_images","description":"Every auction photo for one lot: ordered full-size and thumbnail URLs with the native pixel dimensions of each image, plus the 360-degree viewer URL when IAAI publishes one.","required_params":["lot_number"],"optional_params":[],"params":[{"name":"lot_number","type":"string","required":true,"description":"IAAI item id to fetch photos for.","on_invalid":"reject","example":"46677675","aliases":["lot","lot_id","item_id","id"]}],"returns":"images[]{sequence, key, width, height, full_url, thumbnail_url} + image_360_url","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"branches","description":"Live list of IAAI branches (yards) you can scope `search` to, each with its current lot count. Pass a name straight back as search's `branch` filter.","required_params":[],"optional_params":["query"],"params":[{"name":"query","type":"string","required":false,"description":"Optional case-insensitive substring to find a branch, e.g. 'dallas', '(PA)', 'phoenix'.","on_invalid":"ignore","example":"dallas","aliases":["q"]}],"returns":"branches[]{name, location, lot_count}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"filters","description":"The live filter taxonomy straight from IAAI, with a current lot count for every value: the exact strings `search` accepts for the open-ended filters it cannot enumerate up front (1,785 makes, 6,311 models, 849 branches, 229 body styles). Pass any search filter alongside `group` to get the counts WITHIN that query — e.g. group=Model with make=TOYOTA lists only Toyota models and how many lots each has right now.","required_params":[],"optional_params":["group","query","make","model","trim","year","year_min","year_max","title_type","vehicle_type","damage","loss_type","start_code","fuel_type","transmission","drive","cylinders","airbags","auction_type","who_can_buy","region","market","availability","odometer_min","odometer_max","branch","state","body_style","color","country_of_origin","vehicle_subtype","engine_size","sort","page","size"],"params":[{"name":"group","type":"string","required":false,"description":"Which taxonomy to return — Make, Model, Series, BranchName, StateDesc, BodyStyleName, PrimaryDamageDesc, InventoryTypes, SaleDocument, ExteriorColor, CountryOfOrigin, DisplLiters, Year. Omit to get every group at once.","on_invalid":"ignore","example":"Make","aliases":["facet","name"]},{"name":"query","type":"string","required":false,"description":"Free-text keyword across the listing (make, model, series, stock number). Leave empty to browse everything and use filters.","on_invalid":"ignore","example":"toyota prius","aliases":["q","keyword"]},{"name":"make","type":"string","required":false,"description":"Vehicle make, exactly as IAAI spells it (TOYOTA, FORD, BMW). Get the live list from the `filters` action.","on_invalid":"ignore","example":"TOYOTA"},{"name":"model","type":"string","required":false,"description":"Vehicle model (PRIUS C, F150, CIVIC). Pair with `make`.","on_invalid":"ignore","example":"PRIUS C"},{"name":"trim","type":"string","required":false,"description":"Series / trim level as IAAI spells it (e.g. TWO, LIMITED, XLE).","on_invalid":"ignore","example":"TWO","aliases":["series"]},{"name":"year","type":"integer","required":false,"description":"Exact model year. For a span use year_min / year_max.","on_invalid":"ignore","example":2018,"minimum":1900,"maximum":2030},{"name":"year_min","type":"integer","required":false,"description":"Earliest model year (inclusive).","on_invalid":"ignore","minimum":1900,"maximum":2030},{"name":"year_max","type":"integer","required":false,"description":"Latest model year (inclusive).","on_invalid":"ignore","minimum":1900,"maximum":2030},{"name":"title_type","type":"enum","required":false,"description":"Filter by title / sale document.","on_invalid":"ignore","allowed_values":[{"value":"salvage","label":"Salvage"},{"value":"clean","label":"Clear"},{"value":"non_repairable","label":"Non-Repairable"},{"value":"repairable","label":"Repairable"},{"value":"parts_only","label":"PartsOnly"},{"value":"bill_of_sale","label":"Bill Of Sale"},{"value":"none","label":"None"}]},{"name":"vehicle_type","type":"enum","required":false,"description":"Filter by vehicle category.","on_invalid":"ignore","allowed_values":[{"value":"automobile","label":"Automobiles"},{"value":"boat","label":"Boats"},{"value":"bus","label":"Buses"},{"value":"classic","label":"Classics"},{"value":"equipment","label":"Equipment"},{"value":"fleet","label":"Fleet Vehicles"},{"value":"heavy_truck","label":"Heavy Duty Trucks"},{"value":"light_truck","label":"Light Trucks"},{"value":"medium_truck","label":"Medium Trucks"},{"value":"motorcycle","label":"Motorcycles"},{"value":"pickup","label":"Pick-up Trucks"},{"value":"recreational","label":"Recreational/ Miscellaneous"},{"value":"rental","label":"Rental Vehicles"},{"value":"suv","label":"SUVs"},{"value":"trailer","label":"Trailers"},{"value":"van","label":"Vans"}]},{"name":"damage","type":"enum","required":false,"description":"Filter by primary damage type.","on_invalid":"ignore","allowed_values":[{"value":"all_over","label":"All Over"},{"value":"front_end","label":"Front End"},{"value":"front","label":"Front"},{"value":"rear","label":"Rear"},{"value":"front_and_rear","label":"Front & Rear"},{"value":"left_front","label":"Left Front"},{"value":"left_rear","label":"Left Rear"},{"value":"left_side","label":"Left Side"},{"value":"right_front","label":"Right Front"},{"value":"right_rear","label":"Right Rear"},{"value":"right_side","label":"Right Side"},{"value":"left_and_right_side","label":"Left & Right Side"},{"value":"roof","label":"Roof"},{"value":"roof_damage","label":"Roof Damage"},{"value":"rollover","label":"Rollover"},{"value":"roll_over","label":"Roll Over"},{"value":"undercarriage","label":"Undercarriage"},{"value":"under_carriage","label":"Under Carriage"},{"value":"hail","label":"Hail"},{"value":"flood","label":"Flood"},{"value":"fresh_water","label":"Fresh Water"},{"value":"salt_water","label":"Salt Water"},{"value":"water","label":"Water"},{"value":"total_burn","label":"Total Burn"},{"value":"engine_burn","label":"Engine Burn"},{"value":"interior_burn","label":"Interior Burn"},{"value":"exterior_burn","label":"Exterior Burn"},{"value":"engine_fire","label":"Engine Fire"},{"value":"interior_fire","label":"Interior Fire"},{"value":"mechanical","label":"Mechanical"},{"value":"engine","label":"Engine"},{"value":"engine_damage","label":"Engine Damage"},{"value":"transmission_damage","label":"Transmission Damage"},{"value":"suspension","label":"Suspension"},{"value":"frame","label":"Frame"},{"value":"structural","label":"Structural"},{"value":"electrical","label":"Electrical"},{"value":"theft","label":"Theft"},{"value":"vandalized","label":"Vandalized"},{"value":"stripped","label":"Strip"},{"value":"storm_damage","label":"Storm Damage"},{"value":"normal_wear","label":"Normal Wear & Tear"},{"value":"interior_damage","label":"Interior Damage"},{"value":"front_window","label":"Front Window"},{"value":"rear_window","label":"Rear Window"},{"value":"biohazard","label":"Biohazard"},{"value":"repossession","label":"Repossession"},{"value":"charity","label":"Charity"},{"value":"none","label":"None"},{"value":"unknown","label":"Unknown"}]},{"name":"loss_type","type":"enum","required":false,"description":"Filter by loss type (how the vehicle was written off).","on_invalid":"ignore","allowed_values":[{"value":"collision","label":"Collision"},{"value":"fire","label":"Fire"},{"value":"theft","label":"Theft"},{"value":"water","label":"Water"},{"value":"other","label":"Other"}]},{"name":"start_code","type":"enum","required":false,"description":"Filter by IAAI's start/run condition code.","on_invalid":"ignore","allowed_values":[{"value":"run_and_drive","label":"Run & Drive"},{"value":"starts","label":"STARTS"},{"value":"stationary","label":"Stationary"},{"value":"cannot_test","label":"Can't Test"}]},{"name":"fuel_type","type":"enum","required":false,"description":"Filter by fuel type.","on_invalid":"ignore","allowed_values":[{"value":"gasoline","label":"Gasoline"},{"value":"diesel","label":"Diesel"},{"value":"electric","label":"Electric"},{"value":"hybrid","label":"Hybrid"},{"value":"flexible","label":"Flexible"},{"value":"flexible_fuel","label":"Flexible Fuel"},{"value":"other","label":"Other"}]},{"name":"transmission","type":"enum","required":false,"description":"Filter by transmission.","on_invalid":"ignore","allowed_values":[{"value":"automatic","label":"Automatic"},{"value":"manual","label":"Manual"},{"value":"cvt","label":"CVT"},{"value":"missing","label":"Missing"},{"value":"unknown","label":"Unknown"}]},{"name":"drive","type":"enum","required":false,"description":"Filter by drive line.","on_invalid":"ignore","allowed_values":[{"value":"fwd","label":"Front Wheel Drive"},{"value":"rwd","label":"Rear Wheel Drive"},{"value":"awd","label":"All-Wheel Drive"},{"value":"four_wheel_drive","label":"Four Wheel Drive"},{"value":"4x2","label":"4X2 Drive"}]},{"name":"cylinders","type":"enum","required":false,"description":"Filter by cylinder count.","on_invalid":"ignore","allowed_values":[{"value":"1","label":"1 Cyl"},{"value":"2","label":"2 Cyl"},{"value":"3","label":"3 Cyl"},{"value":"4","label":"4 Cyl"},{"value":"5","label":"5 Cyl"},{"value":"6","label":"6 Cyl"},{"value":"8","label":"8 Cyl"},{"value":"10","label":"10 Cyl"},{"value":"12","label":"12 Cyl"},{"value":"rotary","label":"Rotary Engine"},{"value":"other","label":"All Others"}]},{"name":"airbags","type":"enum","required":false,"description":"Filter by airbag state.","on_invalid":"ignore","allowed_values":[{"value":"intact","label":"Intact Airbags"},{"value":"deployed","label":"Deployed Airbags"}]},{"name":"auction_type","type":"enum","required":false,"description":"Filter by auction format.","on_invalid":"ignore","allowed_values":[{"value":"live","label":"Live Auctions"},{"value":"timed","label":"Timed Auctions"},{"value":"buy_now","label":"Buy Now"}]},{"name":"who_can_buy","type":"enum","required":false,"description":"Filter by buyer licence required. `exporter` and `public` are the ones that matter if you are buying from outside the US.","on_invalid":"ignore","allowed_values":[{"value":"public","label":"Available to the public"},{"value":"dealer","label":"Dealer"},{"value":"dismantler","label":"Dismantler"},{"value":"exporter","label":"Exporter"},{"value":"rebuilder","label":"Rebuilder"},{"value":"scrapper","label":"Scrapper"},{"value":"non_auto_licensed_business","label":"Non-Auto Licensed Business"},{"value":"other_licensed_business","label":"Other Licensed Business"}]},{"name":"region","type":"enum","required":false,"description":"Filter by IAAI sales region.","on_invalid":"ignore","allowed_values":[{"value":"east","label":"East"},{"value":"west","label":"West"},{"value":"north","label":"North"},{"value":"south","label":"South"},{"value":"midwest","label":"Midwest"},{"value":"northeast","label":"Northeast"},{"value":"northwest","label":"Northwest"},{"value":"southeast","label":"Southeast"},{"value":"southwest","label":"Southwest"},{"value":"alaska","label":"Alaska"},{"value":"hawaii","label":"Hawaii"}]},{"name":"market","type":"enum","required":false,"description":"Filter by market (US, Canada or Ritchie Bros.).","on_invalid":"ignore","allowed_values":[{"value":"us","label":"IAA United States"},{"value":"canada","label":"IAA Canada"},{"value":"ritchie_bros","label":"Ritchie Bros."}]},{"name":"availability","type":"enum","required":false,"description":"Only lots that do / do not have a scheduled sale date.","on_invalid":"ignore","allowed_values":[{"value":"with_sale_date","label":"Items With a Sale Date"},{"value":"without_sale_date","label":"Items Without a Sale Date"}]},{"name":"odometer_min","type":"integer","required":false,"description":"Minimum odometer reading (miles).","on_invalid":"ignore","minimum":0},{"name":"odometer_max","type":"integer","required":false,"description":"Maximum odometer reading (miles).","on_invalid":"ignore","minimum":0},{"name":"branch","type":"string","required":false,"description":"Restrict to one IAAI branch by its exact name. Get names and live lot counts from the `branches` action.","on_invalid":"ignore","example":"Altoona (PA)","aliases":["yard","yard_name","branch_name"]},{"name":"state","type":"string","required":false,"description":"Vehicle location state, IAAI's spelling (full name for US states, 2-letter for Canadian provinces).","on_invalid":"ignore","example":"Pennsylvania"},{"name":"body_style","type":"string","required":false,"description":"Body style as IAAI spells it (SEDAN 4D, HATCHBACK, PICKUP...).","on_invalid":"ignore","example":"HATCHBACK"},{"name":"color","type":"string","required":false,"description":"Exterior colour.","on_invalid":"ignore","example":"Blue"},{"name":"country_of_origin","type":"string","required":false,"description":"Country the vehicle was manufactured in.","on_invalid":"ignore","example":"Japan"},{"name":"vehicle_subtype","type":"string","required":false,"description":"Sub-category for non-car inventory (ATV, Boat, Motor Home...).","on_invalid":"ignore","example":"Motor Home"},{"name":"engine_size","type":"string","required":false,"description":"Engine displacement as IAAI spells it, e.g. '2.0 L'.","on_invalid":"ignore","example":"2.0 L"},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Omit for IAAI's own default relevance order.","on_invalid":"ignore","allowed_values":[{"value":"sale_date_asc","label":"Auction date: soonest first"},{"value":"sale_date_desc","label":"Auction date: farthest first"},{"value":"year_desc","label":"Year: new to old"},{"value":"year_asc","label":"Year: old to new"},{"value":"odometer_asc","label":"Odometer: low to high"},{"value":"odometer_desc","label":"Odometer: high to low"},{"value":"make_az","label":"Make: A-Z"},{"value":"make_za","label":"Make: Z-A"},{"value":"model_az","label":"Model: A-Z"},{"value":"branch_az","label":"Branch: A-Z"},{"value":"state_az","label":"Location state: A-Z"},{"value":"stock_asc","label":"Stock #: low to high"},{"value":"stock_desc","label":"Stock #: high to low"}]},{"name":"page","type":"integer","required":false,"description":"Page number (1-based). IAAI stops paging at 500.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"size","type":"integer","required":false,"description":"Results per page (25-100). IAAI clamps anything below 25 up to 25.","on_invalid":"ignore","default":25,"minimum":25,"maximum":100}],"returns":"groups{<Group>: [{value, count}]} (one group when `group` is given)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"idealista","category":{"id":"real-estate","title":"Real Estate"},"title":"Idealista API scraper — Spain, Italy & Portugal real estate data: for-sale and for-rent property listings from idealista.com / idealista.it / idealista.pt with full filters (price EUR, bedrooms, surface m², property type, sort), each listing with price, rooms, bathrooms, surface, floor, features and photo, plus a full per-listing detail record (address, year built, description, gallery) — no API key required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/idealista/v1","spec_available":true,"actions":[{"name":"search","description":"Search Idealista property listings by location (Spain, Italy or Portugal; for sale or rent) with structured filters: price (EUR), bedrooms, surface (m²), property type and sort. Each result carries id, title, price, rooms, bathrooms, surface, floor, features and thumbnail. Paginate with page.","required_params":["location"],"optional_params":["country","contract","sort","home_type","page","price_min","price_max","rooms_min","surface_min"],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — a city in the selected country ('Madrid', 'Roma', 'Lisboa', 'Barcelona'). You may also pass an exact Idealista location slug (e.g. 'barcelona-barcelona').","on_invalid":"reject","example":"Madrid","aliases":["loc","city","where"]},{"name":"country","type":"enum","required":false,"description":"Which Idealista market to search.","on_invalid":"ignore","allowed_values":[{"value":"es","label":"Spain (idealista.com)"},{"value":"it","label":"Italy (idealista.it)"},{"value":"pt","label":"Portugal (idealista.pt)"}],"default":"es","example":"es"},{"name":"contract","type":"enum","required":false,"description":"Listing type.","on_invalid":"ignore","allowed_values":[{"value":"sale","label":"For sale"},{"value":"rent","label":"For rent"}],"default":"sale","example":"sale"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Most relevant"},{"value":"newest","label":"Most recent"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"}],"default":"relevance","example":"newest"},{"name":"home_type","type":"enum","required":false,"description":"Restrict to a property type.","on_invalid":"ignore","allowed_values":[{"value":"apartment","label":"Flats / apartments only"}],"example":"apartment"},{"name":"page","type":"integer","required":false,"description":"Result page (≈30 listings per page; paginate with page += 1).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"price_min","type":"integer","required":false,"description":"Minimum price in EUR (sale price, or monthly rent when contract=rent).","on_invalid":"ignore","example":200000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum price in EUR.","on_invalid":"ignore","example":500000,"minimum":0},{"name":"rooms_min","type":"integer","required":false,"description":"Minimum number of bedrooms. 3 = 3+.","on_invalid":"ignore","example":3,"minimum":1,"maximum":10,"aliases":["rooms"]},{"name":"surface_min","type":"integer","required":false,"description":"Minimum living surface in square metres (m²).","on_invalid":"ignore","example":80,"minimum":0}],"returns":"results[]{id, url, title, price, currency, rooms, bathrooms, surface_m2, floor, features[], thumbnail_url} + total + count + page + country + filters_applied","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Madrid","country":"es"}},{"name":"detail","description":"Full record for a single listing by its Idealista id (the number in an idealista.com/inmueble/<id>/ URL, or a search result's `id`). Returns title, price, address, bedrooms, bathrooms, surface, year built, the full feature list, description and all gallery image URLs.","required_params":["id"],"optional_params":["country"],"params":[{"name":"id","type":"string","required":true,"description":"Idealista listing id (the number in an idealista.<tld>/inmueble/<id>/ URL, or a search result's `id`).","on_invalid":"reject","example":"107795847","aliases":["listing_id","property_id"]},{"name":"country","type":"enum","required":false,"description":"Which Idealista market to search.","on_invalid":"ignore","allowed_values":[{"value":"es","label":"Spain (idealista.com)"},{"value":"it","label":"Italy (idealista.it)"},{"value":"pt","label":"Portugal (idealista.pt)"}],"default":"es","example":"es"}],"returns":"listing{id, url, title, address, price, currency, rooms, bathrooms, surface_m2, year_built, features[], description, images[], image_count}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"id":"109592362"}},{"name":"geography","description":"Resolve a free-text place name to the Idealista location slug + a ready-to-use search preview (the count of active listings there). Use it to confirm a location before searching, or to discover the exact slug a city resolves to.","required_params":["query"],"optional_params":["country","contract"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text place in the selected country to resolve ('Madrid', 'Roma', 'Lisboa').","on_invalid":"reject","example":"Madrid","aliases":["q","location","city"]},{"name":"country","type":"enum","required":false,"description":"Which Idealista market to search.","on_invalid":"ignore","allowed_values":[{"value":"es","label":"Spain (idealista.com)"},{"value":"it","label":"Italy (idealista.it)"},{"value":"pt","label":"Portugal (idealista.pt)"}],"default":"es","example":"es"},{"name":"contract","type":"enum","required":false,"description":"Listing type.","on_invalid":"ignore","allowed_values":[{"value":"sale","label":"For sale"},{"value":"rent","label":"For rent"}],"default":"sale","example":"sale"}],"returns":"location{query, slug, country, total_listings, url} + ok","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"query":"Madrid","country":"es"}}]},{"name":"idealo","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"idealo.de API scraper — Germany's biggest price-comparison site. One call returns EVERY merchant offer for a product (merchant name, merchant id, price, total price including shipping, delivery window, payment methods and the merchant's idealo rating), plus keyword search, category browse and full product records with the complete German spec sheet, variants with EANs, expert test grades and user opinions. Prices in EUR. No account, no browser, no API key at idealo.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/idealo/v1","spec_available":true,"actions":[{"name":"search","description":"Search idealo.de by keyword and get back comparison products: id, title, image, price floor, how many merchants sell it, the cheapest merchant's name and shipping cost, the German spec highlights and idealo's expert test grade. Feed the `product_id` of any row straight into `product/offers` to get the whole merchant table. idealo renders one page of results server-side (36 rows, or 60 when sorted by price); page 2 onward is drawn in the browser by an API that refuses anonymous callers, so `has_more` is always false and the honest totals (`total_results`, `total_products`) tell you how much exists beyond it. EAN/GTIN and exact-model queries are supported and answered specially: idealo skips the result page and lands straight on the one matching product, so you get `direct_hit: true`, a single row, AND the complete product record in `product` (the same object `product/detail` returns) without a second call.","required_params":["query"],"optional_params":["sort"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for on idealo.de. German keywords match best (idealo is a German-language site), but brand and model names work as they are — 'bose quietcomfort', 'lego technic', 'nike air max'.","on_invalid":"reject","example":"kopfhörer","aliases":["q","keyword","search"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Only these three exist on idealo's server-rendered pages: every other ordering the site offers (newest, biggest discount, best rated) is applied in the browser by a client API that refuses anonymous calls, and idealo answers an unknown ordering with HTTP 200 and the default list — so this engine rejects one instead of silently ignoring it. Note that price_asc/price_desc change WHAT is searched, not just the order: idealo drops the category it auto-detected for your keyword and sorts across all of them, so the rows widen to 60 and include single-merchant OFFER rows and accessories (searching 'kaffeevollautomat' sorted by price_asc leads with a 0,13 € descaler — measured, not a bug on our side). Each row says in `type` whether it is a comparison PRODUCT or a single OFFER, and `category_id` says where it came from. Sort inside a category with `category/products` instead when you want the cheapest of one kind of thing.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"idealo's own default ordering"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"}],"default":"relevance","aliases":["order","sortKey"]}],"returns":"results[]{product_id (null on an OFFER row), row_id, type ('product'|'offer'), title, url, image, category_id, summary, characteristics[], price_from, price_from_display, currency=EUR, offer_count, used_only, offer_key, offer_url, best_offer{seller{id, name, logo}, shipping_costs, shipping_free, delivery_information, free_return_days}, test_grade (German school grade, 1.0 best … 6.0 worst — NOT a 5-star score), review_count, is_bestseller, voucher_code} + count + total_results + total_products + total_offers + category_id + category_name + related_queries[] + has_more + direct_hit (true when idealo matched the query to exactly one product and redirected onto it) + product (the full product record on a direct hit, null otherwise)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"kopfhörer"}},{"name":"category/products","description":"Browse a whole idealo category by its id (or URL) — the same rich rows as `search`, but enumerated from idealo's own product tree instead of a keyword. Use it to sweep a market: every headphone, every washing machine, every LEGO set, with each row's price floor and merchant count. Same one-page limit as search, and `total_products` says how large the category really is.","required_params":["category"],"optional_params":["sort"],"params":[{"name":"category","type":"string","required":true,"description":"idealo category id, or a full category URL. The id is the number in /preisvergleich/ProductCategory/<id>.html. Live examples: 2520 headphones · 1941 washing machines · 4012 televisions · 19116 smartphones · 3487 bean-to-cup coffee machines · 22875 running shoes · 9552 LEGO · 3687 cordless drills · 6012 prams. You do not need a category table: every `search` row carries its own category_id, the search response names the category it landed in, and every `product/detail` returns the full category path — so keyword → whole category is two calls.","on_invalid":"reject","example":"2520","aliases":["category_id","cat","category_url"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Only these three exist on idealo's server-rendered pages: every other ordering the site offers (newest, biggest discount, best rated) is applied in the browser by a client API that refuses anonymous calls, and idealo answers an unknown ordering with HTTP 200 and the default list — so this engine rejects one instead of silently ignoring it. Note that price_asc/price_desc change WHAT is searched, not just the order: idealo drops the category it auto-detected for your keyword and sorts across all of them, so the rows widen to 60 and include single-merchant OFFER rows and accessories (searching 'kaffeevollautomat' sorted by price_asc leads with a 0,13 € descaler — measured, not a bug on our side). Each row says in `type` whether it is a comparison PRODUCT or a single OFFER, and `category_id` says where it came from. Sort inside a category with `category/products` instead when you want the cheapest of one kind of thing.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"idealo's own default ordering"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"}],"default":"relevance","aliases":["order","sortKey"]}],"returns":"results[]{…same row shape as search} + count + total_results + total_products + total_offers + category_id + category_name + has_more + direct_hit + product (null unless idealo redirected onto a single product)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"category":"2520"}},{"name":"product/detail","description":"The full idealo record for one product: title, brand, the complete category path, every image, the price range across all merchants (price_min / price_max) and how many offers make it up, the new and used price floors, the entire German spec sheet as grouped label/value rows, colour and capacity variants each with their own id, EAN and price range, idealo's expert test summary (how many magazines tested it and the average German grade), the editorial pros and cons, the product FAQ, and the user opinions idealo publishes.","required_params":["product_id"],"optional_params":[],"params":[{"name":"product_id","type":"string","required":true,"description":"idealo product id — the number in /preisvergleich/OffersOfProduct/<id>_-<slug>.html. A full product URL works too; the slug is cosmetic and the bare id resolves on its own. `search` returns this id on every PRODUCT row.","on_invalid":"reject","example":"203505482","aliases":["id","product","url","product_url"]}],"returns":"product{product_id, title, brand, url, category_id, category_name, category_path[]{category_id, name, url}, image, images[], price_min, price_max, currency=EUR, offer_count, price_new_from, price_used_from, availability, item_condition, rating (number), review_count, rating_scale, rating_worst, rating_source, test_reports{count, average_grade, grade_scale, testers[]}, highlights[], pros[], cons[], specs[]{group, label, value}, specs_count, variants[]{product_id, title, url, ean, price_min, price_max, offer_count}, variant_count, faq[]{question, answer}, user_reviews[]{author, date, rating, body, pros, cons}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"203505482"}},{"name":"product/offers","description":"THE POINT OF THIS ENGINE: every merchant selling one product, in one call. Each offer carries the merchant's name, idealo shop id and shop page, the city the shop ships from, its idealo star rating and how many ratings it has, the item price, the total price including shipping and the shipping cost derived from the two, the delivery window, which carriers deliver it, the free-return terms, the payment methods the shop accepts, and the merchant's own title for the item (which often names the exact colour variant). Sort by item price or by total price including shipping. idealo lists 20 offers per request and this action pages through them up to `max_offers`. Only NEW offers are reachable — idealo puts its used listings behind an encrypted filter token — so `price_used_from` in `product/detail` is where the used floor comes from.","required_params":["product_id"],"optional_params":["max_offers","sort"],"params":[{"name":"product_id","type":"string","required":true,"description":"idealo product id — the number in /preisvergleich/OffersOfProduct/<id>_-<slug>.html. A full product URL works too; the slug is cosmetic and the bare id resolves on its own. `search` returns this id on every PRODUCT row.","on_invalid":"reject","example":"203505482","aliases":["id","product","url","product_url"]},{"name":"max_offers","type":"integer","required":false,"description":"How many merchant offers to return (1-500, default 100). idealo serves 20 offers per request, so this decides how many requests the call makes: 20 = one, 100 = up to five. Most products have fewer than 40 offers, in which case the call stops as soon as idealo runs out.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":500,"aliases":["limit"]},{"name":"sort","type":"enum","required":false,"description":"Offer ordering. `price` sorts on the item price alone; `total_price` is idealo's 'günstigster Gesamtpreis' — item plus shipping — which reorders the table whenever a cheap listing carries expensive delivery. These are the only two orderings idealo honours on this route; anything else is accepted upstream and silently ignored, so it is rejected here.","on_invalid":"reject","allowed_values":[{"value":"price","label":"Item price, cheapest first (idealo's default)"},{"value":"total_price","label":"Total price including shipping, cheapest first"}],"default":"price"}],"returns":"product{product_id, title, url, price_min, price_max, currency=EUR, offer_count, price_new_from, price_used_from} + offers[]{position, offer_key, seller{id, name, url, location, type, rating, rating_count}, price (number), price_display, currency=EUR, total_price (number), total_price_display, shipping_cost, offer_title, offer_url, in_stock, delivery_time, delivery_by, delivery_providers[], free_return, payment_methods[], variant_product_id, variant_title, condition='new'} + count + total_offers + seller_count + has_more","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":20,"min":2},"example_params":{"product_id":"203505482","max_offers":40}}]},{"name":"iherb","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"iHerb — supplements & natural health, priced per country","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/iherb/v1","spec_available":true,"actions":[{"name":"search","description":"Keyword search on one country's storefront. Returns the storefront's own result total plus the filtered total so a filter's effect is visible.","required_params":["keyword"],"optional_params":["country","page","page_size","sort","rating_band","brand_codes","category_ids","price_ranges","health_topics","attribute_ids","in_stock_only","programs"],"params":[{"name":"keyword","type":"string","required":true,"description":"What to search for.","on_invalid":"reject","example":"vitamin c","aliases":["q","kw","query"]},{"name":"country","type":"enum","required":false,"description":"Which national storefront to price against. Prices, availability and even the number of matching products differ per storefront.","on_invalid":"reject","allowed_values":[{"value":"AE","label":"AE — AED"},{"value":"AU","label":"AU — AUD"},{"value":"BR","label":"BR — BRL"},{"value":"CA","label":"CA — CAD"},{"value":"DE","label":"DE — EUR"},{"value":"ES","label":"ES — EUR"},{"value":"FR","label":"FR — EUR"},{"value":"GB","label":"GB — GBP"},{"value":"HK","label":"HK — HKD"},{"value":"IL","label":"IL — ILS"},{"value":"IN","label":"IN — INR"},{"value":"IT","label":"IT — EUR"},{"value":"JP","label":"JP — JPY"},{"value":"KR","label":"KR — KRW"},{"value":"MX","label":"MX — MXN"},{"value":"MY","label":"MY — MYR"},{"value":"NL","label":"NL — EUR"},{"value":"NZ","label":"NZ — NZD"},{"value":"PH","label":"PH — PHP"},{"value":"PL","label":"PL — PLN"},{"value":"SA","label":"SA — SAR"},{"value":"SE","label":"SE — SEK"},{"value":"SG","label":"SG — SGD"},{"value":"TH","label":"TH — THB"},{"value":"TR","label":"TR — TRY"},{"value":"TW","label":"TW — TWD"},{"value":"UA","label":"UA — USD"},{"value":"US","label":"US — USD"},{"value":"VN","label":"VN — VND"},{"value":"ZA","label":"ZA — ZAR"}],"default":"US","example":"JP","aliases":["cc","market","storefront"]},{"name":"page","type":"integer","required":false,"description":"1-based page.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Products per page. iHerb serves at most 48.","on_invalid":"reject","default":24,"example":24,"minimum":1,"maximum":48},{"name":"sort","type":"enum","required":false,"description":"Result order. NOTE: iHerb's sorted result set is SMALLER than its unsorted one (measured 14807 -> 10559 for the same keyword), so sorting changes which products you see, not just their order.","on_invalid":"reject","allowed_values":[{"value":"featured","label":"featured"},{"value":"relevance","label":"relevance"},{"value":"best_sellers","label":"best sellers"},{"value":"top_rated","label":"top rated"},{"value":"most_rated","label":"most rated"},{"value":"price_asc","label":"price asc"},{"value":"price_desc","label":"price desc"},{"value":"newest","label":"newest"},{"value":"heaviest","label":"heaviest"},{"value":"lightest","label":"lightest"},{"value":"highest_discount","label":"highest discount"}],"example":"price_asc"},{"name":"rating_band","type":"integer","required":false,"description":"iHerb's star BAND, 1-5. This is a band, NOT a minimum: measured on one storefront, band 5 returns products rated about 4.8 and up, band 4 about 3.8-4.7, band 3 about 2.8-3.7. Asking for 3 therefore EXCLUDES 4- and 5-star products. The `filters` action prints how many products sit in each band.","on_invalid":"reject","example":5,"minimum":1,"maximum":5,"aliases":["min_rating","rating"]},{"name":"brand_codes","type":"array","required":false,"description":"iHerb brand codes, e.g. NOW. Discover them with the `filters` action.","on_invalid":"reject","example":["NOW"],"aliases":["brand_code","brand"]},{"name":"category_ids","type":"array","required":false,"description":"iHerb category ids; see the `filters` action.","on_invalid":"reject","example":["105815"]},{"name":"price_ranges","type":"array","required":false,"description":"iHerb price-band ids (they are bands, not amounts; the band's boundaries are in that storefront's own currency).","on_invalid":"reject","example":["3"]},{"name":"health_topics","type":"array","required":false,"description":"Health-topic ids, e.g. Immune Support; see the `filters` action.","on_invalid":"reject"},{"name":"attribute_ids","type":"array","required":false,"description":"Attribute value ids — diet/certification/form/age; see `filters`.","on_invalid":"reject"},{"name":"programs","type":"array","required":false,"description":"Programme ids, e.g. iTested.","on_invalid":"reject"},{"name":"in_stock_only","type":"boolean","required":false,"description":"Drop out-of-stock products.","on_invalid":"reject","default":false,"example":true}],"returns":"{ total, returned, products[], country, currency, sort_changes_population } — each product carries price_amount + currency + the storefront it came from.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"keyword":"vitamin c","country":"US"}},{"name":"category","description":"Browse one catalogue category on one country's storefront.","required_params":["slug"],"optional_params":["country","page","page_size","sort","rating_band","brand_codes","category_ids","price_ranges","health_topics","attribute_ids","in_stock_only","programs"],"params":[{"name":"slug","type":"string","required":true,"description":"Category slug from the URL, e.g. vitamin-c. List them with `categories`.","on_invalid":"reject","example":"vitamin-c","aliases":["category","category_slug"]},{"name":"country","type":"enum","required":false,"description":"Which national storefront to price against.","on_invalid":"reject","allowed_values":[{"value":"AE","label":"AE — AED"},{"value":"AU","label":"AU — AUD"},{"value":"BR","label":"BR — BRL"},{"value":"CA","label":"CA — CAD"},{"value":"DE","label":"DE — EUR"},{"value":"ES","label":"ES — EUR"},{"value":"FR","label":"FR — EUR"},{"value":"GB","label":"GB — GBP"},{"value":"HK","label":"HK — HKD"},{"value":"IL","label":"IL — ILS"},{"value":"IN","label":"IN — INR"},{"value":"IT","label":"IT — EUR"},{"value":"JP","label":"JP — JPY"},{"value":"KR","label":"KR — KRW"},{"value":"MX","label":"MX — MXN"},{"value":"MY","label":"MY — MYR"},{"value":"NL","label":"NL — EUR"},{"value":"NZ","label":"NZ — NZD"},{"value":"PH","label":"PH — PHP"},{"value":"PL","label":"PL — PLN"},{"value":"SA","label":"SA — SAR"},{"value":"SE","label":"SE — SEK"},{"value":"SG","label":"SG — SGD"},{"value":"TH","label":"TH — THB"},{"value":"TR","label":"TR — TRY"},{"value":"TW","label":"TW — TWD"},{"value":"UA","label":"UA — USD"},{"value":"US","label":"US — USD"},{"value":"VN","label":"VN — VND"},{"value":"ZA","label":"ZA — ZAR"}],"default":"US","example":"DE","aliases":["cc","market"]},{"name":"page","type":"integer","required":false,"description":"1-based page.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Max 48.","on_invalid":"reject","default":24,"minimum":1,"maximum":48},{"name":"sort","type":"enum","required":false,"description":"Result order; see the note on `search.sort` — sorting shrinks the set.","on_invalid":"reject","allowed_values":[{"value":"featured","label":"featured"},{"value":"relevance","label":"relevance"},{"value":"best_sellers","label":"best sellers"},{"value":"top_rated","label":"top rated"},{"value":"most_rated","label":"most rated"},{"value":"price_asc","label":"price asc"},{"value":"price_desc","label":"price desc"},{"value":"newest","label":"newest"},{"value":"heaviest","label":"heaviest"},{"value":"lightest","label":"lightest"},{"value":"highest_discount","label":"highest discount"}]},{"name":"rating_band","type":"integer","required":false,"description":"iHerb's star BAND, 1-5. This is a band, NOT a minimum: measured on one storefront, band 5 returns products rated about 4.8 and up, band 4 about 3.8-4.7, band 3 about 2.8-3.7. Asking for 3 therefore EXCLUDES 4- and 5-star products. The `filters` action prints how many products sit in each band.","on_invalid":"reject","example":5,"minimum":1,"maximum":5,"aliases":["min_rating","rating"]},{"name":"brand_codes","type":"array","required":false,"description":"iHerb brand codes.","on_invalid":"reject"},{"name":"category_ids","type":"array","required":false,"description":"Narrow to sub-category ids.","on_invalid":"reject"},{"name":"price_ranges","type":"array","required":false,"description":"Price-band ids.","on_invalid":"reject"},{"name":"health_topics","type":"array","required":false,"description":"Health-topic ids.","on_invalid":"reject"},{"name":"attribute_ids","type":"array","required":false,"description":"Attribute value ids.","on_invalid":"reject"},{"name":"programs","type":"array","required":false,"description":"Programme ids.","on_invalid":"reject"},{"name":"in_stock_only","type":"boolean","required":false,"description":"Drop out-of-stock products.","on_invalid":"reject","default":false}],"returns":"{ total, returned, products[], category, breadcrumbs, country, currency }","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"detail","description":"One product in full on one country's storefront: price, stock count, supplement facts, ingredients, pack size, rating, shipping weight.","required_params":["product_id"],"optional_params":["country"],"params":[{"name":"product_id","type":"integer","required":true,"description":"iHerb numeric product id — the last path segment of a product URL.","on_invalid":"reject","example":1135,"aliases":["id","pid"]},{"name":"country","type":"enum","required":false,"description":"Which national storefront to price against.","on_invalid":"reject","allowed_values":[{"value":"AE","label":"AE — AED"},{"value":"AU","label":"AU — AUD"},{"value":"BR","label":"BR — BRL"},{"value":"CA","label":"CA — CAD"},{"value":"DE","label":"DE — EUR"},{"value":"ES","label":"ES — EUR"},{"value":"FR","label":"FR — EUR"},{"value":"GB","label":"GB — GBP"},{"value":"HK","label":"HK — HKD"},{"value":"IL","label":"IL — ILS"},{"value":"IN","label":"IN — INR"},{"value":"IT","label":"IT — EUR"},{"value":"JP","label":"JP — JPY"},{"value":"KR","label":"KR — KRW"},{"value":"MX","label":"MX — MXN"},{"value":"MY","label":"MY — MYR"},{"value":"NL","label":"NL — EUR"},{"value":"NZ","label":"NZ — NZD"},{"value":"PH","label":"PH — PHP"},{"value":"PL","label":"PL — PLN"},{"value":"SA","label":"SA — SAR"},{"value":"SE","label":"SE — SEK"},{"value":"SG","label":"SG — SGD"},{"value":"TH","label":"TH — THB"},{"value":"TR","label":"TR — TRY"},{"value":"TW","label":"TW — TWD"},{"value":"UA","label":"UA — USD"},{"value":"US","label":"US — USD"},{"value":"VN","label":"VN — VND"},{"value":"ZA","label":"ZA — ZAR"}],"default":"US","example":"US","aliases":["cc","market"]}],"returns":"A product record. `supplement_facts` is a row list parsed out of iHerb's own table; `ingredients`/`warnings`/`suggested_use` are plain text.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":1135,"country":"US"}},{"name":"batch_detail","description":"Up to 20 products in one call, on one storefront. iHerb has no batch route of its own, so this fans out — but it is priced below the equivalent single calls.","required_params":["product_ids"],"optional_params":["country"],"params":[{"name":"product_ids","type":"array","required":true,"description":"Up to 20 iHerb product ids.","on_invalid":"reject","example":[1135,468,475],"aliases":["ids","pids"]},{"name":"country","type":"enum","required":false,"description":"Which national storefront to price against.","on_invalid":"reject","allowed_values":[{"value":"AE","label":"AE — AED"},{"value":"AU","label":"AU — AUD"},{"value":"BR","label":"BR — BRL"},{"value":"CA","label":"CA — CAD"},{"value":"DE","label":"DE — EUR"},{"value":"ES","label":"ES — EUR"},{"value":"FR","label":"FR — EUR"},{"value":"GB","label":"GB — GBP"},{"value":"HK","label":"HK — HKD"},{"value":"IL","label":"IL — ILS"},{"value":"IN","label":"IN — INR"},{"value":"IT","label":"IT — EUR"},{"value":"JP","label":"JP — JPY"},{"value":"KR","label":"KR — KRW"},{"value":"MX","label":"MX — MXN"},{"value":"MY","label":"MY — MYR"},{"value":"NL","label":"NL — EUR"},{"value":"NZ","label":"NZ — NZD"},{"value":"PH","label":"PH — PHP"},{"value":"PL","label":"PL — PLN"},{"value":"SA","label":"SA — SAR"},{"value":"SE","label":"SE — SEK"},{"value":"SG","label":"SG — SGD"},{"value":"TH","label":"TH — THB"},{"value":"TR","label":"TR — TRY"},{"value":"TW","label":"TW — TWD"},{"value":"UA","label":"UA — USD"},{"value":"US","label":"US — USD"},{"value":"VN","label":"VN — VND"},{"value":"ZA","label":"ZA — ZAR"}],"default":"US","aliases":["cc","market"]}],"returns":"{ requested, returned, products[], not_found[] }","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"price_by_country","description":"The same product priced across several national storefronts in one call — price, currency, availability and shipping restrictions side by side. This is what iHerb being a cross-border retailer actually means in data.","required_params":["product_id"],"optional_params":["countries"],"params":[{"name":"product_id","type":"integer","required":true,"description":"iHerb numeric product id.","on_invalid":"reject","example":1135,"aliases":["id","pid"]},{"name":"countries","type":"array","required":false,"description":"Storefronts to compare, max 12. Defaults to US, GB, DE, JP, KR.","on_invalid":"reject","example":["US","GB","DE","JP"],"aliases":["country","markets","cc"]}],"returns":"{ product_id, name, brand, markets[] } — one row per storefront with price_amount, currency, in_stock and the local display price.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"product_id":1135,"countries":["US","JP"]}},{"name":"reviews","description":"Customer reviews for a product, with the per-star breakdown and iHerb's own summary of them. Public — no account is involved.","required_params":["product_id"],"optional_params":["country","page"],"params":[{"name":"product_id","type":"integer","required":true,"description":"iHerb numeric product id.","on_invalid":"reject","example":468,"aliases":["id","pid"]},{"name":"country","type":"enum","required":false,"description":"Storefront to read reviews from — it decides the language they are shown in and which reviews are surfaced.","on_invalid":"reject","allowed_values":[{"value":"AE","label":"AE — AED"},{"value":"AU","label":"AU — AUD"},{"value":"BR","label":"BR — BRL"},{"value":"CA","label":"CA — CAD"},{"value":"DE","label":"DE — EUR"},{"value":"ES","label":"ES — EUR"},{"value":"FR","label":"FR — EUR"},{"value":"GB","label":"GB — GBP"},{"value":"HK","label":"HK — HKD"},{"value":"IL","label":"IL — ILS"},{"value":"IN","label":"IN — INR"},{"value":"IT","label":"IT — EUR"},{"value":"JP","label":"JP — JPY"},{"value":"KR","label":"KR — KRW"},{"value":"MX","label":"MX — MXN"},{"value":"MY","label":"MY — MYR"},{"value":"NL","label":"NL — EUR"},{"value":"NZ","label":"NZ — NZD"},{"value":"PH","label":"PH — PHP"},{"value":"PL","label":"PL — PLN"},{"value":"SA","label":"SA — SAR"},{"value":"SE","label":"SE — SEK"},{"value":"SG","label":"SG — SGD"},{"value":"TH","label":"TH — THB"},{"value":"TR","label":"TR — TRY"},{"value":"TW","label":"TW — TWD"},{"value":"UA","label":"UA — USD"},{"value":"US","label":"US — USD"},{"value":"VN","label":"VN — VND"},{"value":"ZA","label":"ZA — ZAR"}],"default":"US","aliases":["cc","market"]},{"name":"page","type":"integer","required":false,"description":"1-based page, 10 reviews per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":100}],"returns":"{ rating, rating_count, star_counts, summary, reviews[] } — 10 reviews per page with text, title, star rating, date and verified-purchase flag.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"product_id":1135}},{"name":"categories","description":"Every browsable catalogue category iHerb publishes (~1 480).","required_params":[],"optional_params":["search"],"params":[{"name":"search","type":"string","required":false,"description":"Keep only categories whose slug contains this text.","on_invalid":"reject","example":"vitamin","aliases":["q","filter"]}],"returns":"{ total, categories[] } with slug + url, ready for the `category` action.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"filters","description":"The filter vocabulary for a keyword or category on one storefront — brand codes, category ids, attribute ids and how many products sit behind each, so the opaque ids the other actions take are discoverable.","required_params":[],"optional_params":["keyword","slug","country"],"params":[{"name":"keyword","type":"string","required":false,"description":"Filters for this search.","on_invalid":"reject","example":"vitamin c","aliases":["q","kw"]},{"name":"slug","type":"string","required":false,"description":"Filters for this category instead.","on_invalid":"reject","example":"vitamin-c","aliases":["category"]},{"name":"country","type":"enum","required":false,"description":"Which storefront's vocabulary.","on_invalid":"reject","allowed_values":[{"value":"AE","label":"AE — AED"},{"value":"AU","label":"AU — AUD"},{"value":"BR","label":"BR — BRL"},{"value":"CA","label":"CA — CAD"},{"value":"DE","label":"DE — EUR"},{"value":"ES","label":"ES — EUR"},{"value":"FR","label":"FR — EUR"},{"value":"GB","label":"GB — GBP"},{"value":"HK","label":"HK — HKD"},{"value":"IL","label":"IL — ILS"},{"value":"IN","label":"IN — INR"},{"value":"IT","label":"IT — EUR"},{"value":"JP","label":"JP — JPY"},{"value":"KR","label":"KR — KRW"},{"value":"MX","label":"MX — MXN"},{"value":"MY","label":"MY — MYR"},{"value":"NL","label":"NL — EUR"},{"value":"NZ","label":"NZ — NZD"},{"value":"PH","label":"PH — PHP"},{"value":"PL","label":"PL — PLN"},{"value":"SA","label":"SA — SAR"},{"value":"SE","label":"SE — SEK"},{"value":"SG","label":"SG — SGD"},{"value":"TH","label":"TH — THB"},{"value":"TR","label":"TR — TRY"},{"value":"TW","label":"TW — TWD"},{"value":"UA","label":"UA — USD"},{"value":"US","label":"US — USD"},{"value":"VN","label":"VN — VND"},{"value":"ZA","label":"ZA — ZAR"}],"default":"US","aliases":["cc","market"]}],"returns":"{ total, filters[] } — each with key, label and options[{label,value,count}].","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{}}]},{"name":"ikea","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"IKEA API scraper — every ikea.com country store (50 countries): search and browse products with the regular price, the IKEA Family price and new-lower-price or clearance was-prices kept apart, read the full product record (measurements, packages, materials, assembly documents), store stock with quantities and restock dates, reviews, the category tree, stores and autocomplete. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/ikea/v1","spec_available":true,"actions":[{"name":"search","description":"Search an IKEA country store by keyword. Each product comes with its item number, price and currency, the IKEA Family price separately, the previous price of a new-lower-price, limited-time or clearance offer with its validity, in-store-only offers, rating, colours, category path and whether it can be bought online. Sort by price, rating, newest or size; filter with IKEA's own filters (colour, price band, size, material, series, subcategory) or new, last-chance and best-seller flags.","required_params":["query"],"optional_params":["country","language","page","page_size","sort","filters","new_only","last_chance_only","top_seller_only","business_only","include_variants","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper types it in the store's language ('sofa', 'Kleiderschrank', 'ソファ'). Product names (BILLY) and item numbers work too.","on_invalid":"reject","example":"sofa","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which IKEA country store. Prices come back in its currency and texts in its language. Item numbers are mostly global but not every product is sold everywhere, and some products carry a different item number per market.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"at","label":"Austria (EUR)"},{"value":"au","label":"Australia (AUD)"},{"value":"be","label":"Belgium (EUR)"},{"value":"bh","label":"Bahrain (BHD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"cl","label":"Chile (CLP)"},{"value":"co","label":"Colombia (COP)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"de","label":"Germany (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"ee","label":"Estonia (EUR)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"es","label":"Spain (EUR)"},{"value":"fi","label":"Finland (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"it","label":"Italy (EUR)"},{"value":"jo","label":"Jordan (JOD)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"lt","label":"Lithuania (EUR)"},{"value":"lv","label":"Latvia (EUR)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"no","label":"Norway (NOK)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"om","label":"Oman (OMR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"ro","label":"Romania (RON)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"th","label":"Thailand (THB)"},{"value":"us","label":"United States (USD)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions and filter labels, for countries IKEA publishes in several languages (ca: en/fr, ch: de/fr/it/en, be: nl/fr/en, es: es/ca/eu/gl/en …). Default: the country's first language (de for Germany, ja for Japan, ar for the Gulf stores). A language the country does not publish is rejected.","on_invalid":"reject","allowed_values":[{"value":"ar","label":"Arabic"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"et","label":"Estonian"},{"value":"eu","label":"Basque"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"gl","label":"Galician"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"}],"example":"en"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-48, default 24).","on_invalid":"reject","default":24,"minimum":1,"maximum":48},{"name":"sort","type":"enum","required":false,"description":"Result order. A listing's `sort_options` says which orders that listing supports (the all-products category has no `newest`).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"IKEA's own order (best sellers first)"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"newest","label":"New products first"},{"value":"rating","label":"Customer rating"},{"value":"most_popular","label":"Most popular"},{"value":"name","label":"Name A-Z"},{"value":"width","label":"Width"},{"value":"height","label":"Height"},{"value":"depth","label":"Depth"}],"default":"relevance"},{"name":"filters","type":"object","required":false,"description":"IKEA's own filters, keyed by `filters_available[].parameter` with value ids from `filters_available[].values[].id`: colour (f-colors), price band (f-price-buckets), size band (f-measurement-buckets), material, series, subcategory (f-subcategories), rating (f-ratings) … Several values of one filter are OR-ed, different filters AND-ed. A filter the listing does not have is reported in `filters_not_applied`.","on_invalid":"reject","example":{"f-colors":["10003"]}},{"name":"new_only","type":"boolean","required":false,"description":"true: only products IKEA marks as new.","on_invalid":"ignore","default":false},{"name":"last_chance_only","type":"boolean","required":false,"description":"true: only 'last chance' products (being phased out).","on_invalid":"ignore","default":false},{"name":"top_seller_only","type":"boolean","required":false,"description":"true: only IKEA best sellers.","on_invalid":"ignore","default":false},{"name":"business_only","type":"boolean","required":false,"description":"true: only products IKEA marks as suitable for business use.","on_invalid":"ignore","default":false},{"name":"include_variants","type":"boolean","required":false,"description":"true: each row also lists up to 12 colour/size variants with their own id, price and image (the page gets about three times larger). `variant_count` is always returned.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id ('s39399112' for combinations), item_no (8 digits), item_no_global, item_type ('ART' article | 'SPR' combination), title, name, type_name, design, measure, url, image, contextual_image, price (what a shopper without IKEA Family pays online; null on an IKEA Family price with no published regular price), currency, price_type ('regular' | 'new_lower_price' | 'time_restricted_offer' | 'discontinued' | 'family_price' | 'lower_price_in_store'), original_price (the previous price of a new-lower-price, limited-time or clearance price), discount_percent, member_price (IKEA Family price), member_program, member_discount_percent, lowest_previous_price (EU: lowest price in the 30 days before the reduction), price_valid_from, price_valid_to, price_disclaimer, price_basis ('per_item' | 'per_pack' — the price is for pack_quantity pieces, e.g. 4 chairs | 'per_quantity' — the price is for a pack holding `quantity` `unit`, e.g. 0.5 kg of jam), pack_quantity, quantity, unit, price_unit (IKEA's own text, e.g. '4 szt.', '0,5 kg'), in_store_offer{text, members_only, valid_from, valid_to} (a price valid only in the store, never the online price), low_price_item, online_sellable, last_chance, is_new, top_seller, rating, rating_count (all markets), rating_scale, colours[]{id, name, hex}, category_path[]{key, name}, product_area, home_furnishing_business, variant_count, min_order_quantity, energy_class, variants[] (include_variants=true)}, count, total_results, page, page_size, page_count, filters_available[]{parameter, name, kind, selected, values[]{id, name, group, count, selected}}, sort_options[], sort_applied, filters_applied{}, filters_not_applied[], country, language, currency, query","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"sofa"}},{"name":"category","description":"Every product in one IKEA category (e.g. Sofas, Table lamps), paged, with the same rows, sorting and filters as search.","required_params":["category_id"],"optional_params":["country","language","page","page_size","sort","filters","new_only","last_chance_only","top_seller_only","business_only","include_variants","max_rotations"],"params":[{"name":"category_id","type":"string","required":true,"description":"IKEA category key ('fu003' = Sofas, '10732' = Table lamps) from `categories`, a row's `category_path`, `suggest`, or the end of a category URL (/cat/sofas-fu003/).","on_invalid":"reject","example":"fu003","aliases":["category","key"]},{"name":"country","type":"enum","required":false,"description":"Which IKEA country store. Prices come back in its currency and texts in its language. Item numbers are mostly global but not every product is sold everywhere, and some products carry a different item number per market.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"at","label":"Austria (EUR)"},{"value":"au","label":"Australia (AUD)"},{"value":"be","label":"Belgium (EUR)"},{"value":"bh","label":"Bahrain (BHD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"cl","label":"Chile (CLP)"},{"value":"co","label":"Colombia (COP)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"de","label":"Germany (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"ee","label":"Estonia (EUR)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"es","label":"Spain (EUR)"},{"value":"fi","label":"Finland (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"it","label":"Italy (EUR)"},{"value":"jo","label":"Jordan (JOD)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"lt","label":"Lithuania (EUR)"},{"value":"lv","label":"Latvia (EUR)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"no","label":"Norway (NOK)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"om","label":"Oman (OMR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"ro","label":"Romania (RON)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"th","label":"Thailand (THB)"},{"value":"us","label":"United States (USD)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions and filter labels, for countries IKEA publishes in several languages (ca: en/fr, ch: de/fr/it/en, be: nl/fr/en, es: es/ca/eu/gl/en …). Default: the country's first language (de for Germany, ja for Japan, ar for the Gulf stores). A language the country does not publish is rejected.","on_invalid":"reject","allowed_values":[{"value":"ar","label":"Arabic"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"et","label":"Estonian"},{"value":"eu","label":"Basque"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"gl","label":"Galician"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"}],"example":"en"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-48, default 24).","on_invalid":"reject","default":24,"minimum":1,"maximum":48},{"name":"sort","type":"enum","required":false,"description":"Result order. A listing's `sort_options` says which orders that listing supports (the all-products category has no `newest`).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"IKEA's own order (best sellers first)"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"newest","label":"New products first"},{"value":"rating","label":"Customer rating"},{"value":"most_popular","label":"Most popular"},{"value":"name","label":"Name A-Z"},{"value":"width","label":"Width"},{"value":"height","label":"Height"},{"value":"depth","label":"Depth"}],"default":"relevance"},{"name":"filters","type":"object","required":false,"description":"IKEA's own filters, keyed by `filters_available[].parameter` with value ids from `filters_available[].values[].id`: colour (f-colors), price band (f-price-buckets), size band (f-measurement-buckets), material, series, subcategory (f-subcategories), rating (f-ratings) … Several values of one filter are OR-ed, different filters AND-ed. A filter the listing does not have is reported in `filters_not_applied`.","on_invalid":"reject","example":{"f-colors":["10003"]}},{"name":"new_only","type":"boolean","required":false,"description":"true: only products IKEA marks as new.","on_invalid":"ignore","default":false},{"name":"last_chance_only","type":"boolean","required":false,"description":"true: only 'last chance' products (being phased out).","on_invalid":"ignore","default":false},{"name":"top_seller_only","type":"boolean","required":false,"description":"true: only IKEA best sellers.","on_invalid":"ignore","default":false},{"name":"business_only","type":"boolean","required":false,"description":"true: only products IKEA marks as suitable for business use.","on_invalid":"ignore","default":false},{"name":"include_variants","type":"boolean","required":false,"description":"true: each row also lists up to 12 colour/size variants with their own id, price and image (the page gets about three times larger). `variant_count` is always returned.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id ('s39399112' for combinations), item_no (8 digits), item_no_global, item_type ('ART' article | 'SPR' combination), title, name, type_name, design, measure, url, image, contextual_image, price (what a shopper without IKEA Family pays online; null on an IKEA Family price with no published regular price), currency, price_type ('regular' | 'new_lower_price' | 'time_restricted_offer' | 'discontinued' | 'family_price' | 'lower_price_in_store'), original_price (the previous price of a new-lower-price, limited-time or clearance price), discount_percent, member_price (IKEA Family price), member_program, member_discount_percent, lowest_previous_price (EU: lowest price in the 30 days before the reduction), price_valid_from, price_valid_to, price_disclaimer, price_basis ('per_item' | 'per_pack' — the price is for pack_quantity pieces, e.g. 4 chairs | 'per_quantity' — the price is for a pack holding `quantity` `unit`, e.g. 0.5 kg of jam), pack_quantity, quantity, unit, price_unit (IKEA's own text, e.g. '4 szt.', '0,5 kg'), in_store_offer{text, members_only, valid_from, valid_to} (a price valid only in the store, never the online price), low_price_item, online_sellable, last_chance, is_new, top_seller, rating, rating_count (all markets), rating_scale, colours[]{id, name, hex}, category_path[]{key, name}, product_area, home_furnishing_business, variant_count, min_order_quantity, energy_class, variants[] (include_variants=true)}, count, total_results, page, page_size, page_count, filters_available[]{parameter, name, kind, selected, values[]{id, name, group, count, selected}}, sort_options[], sort_applied, filters_applied{}, filters_not_applied[], country, language, currency, category_id","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"IKEA's category tree, one level at a time: a category with its product count and its child categories (key, name, product count). Start at the root for the top-level departments.","required_params":[],"optional_params":["category_id","country","language","max_rotations"],"params":[{"name":"category_id","type":"string","required":false,"description":"Category key to open. Default: the root ('products'), whose children are the top-level departments.","on_invalid":"reject","example":"700640","aliases":["category","key"]},{"name":"country","type":"enum","required":false,"description":"Which IKEA country store. Prices come back in its currency and texts in its language. Item numbers are mostly global but not every product is sold everywhere, and some products carry a different item number per market.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"at","label":"Austria (EUR)"},{"value":"au","label":"Australia (AUD)"},{"value":"be","label":"Belgium (EUR)"},{"value":"bh","label":"Bahrain (BHD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"cl","label":"Chile (CLP)"},{"value":"co","label":"Colombia (COP)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"de","label":"Germany (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"ee","label":"Estonia (EUR)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"es","label":"Spain (EUR)"},{"value":"fi","label":"Finland (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"it","label":"Italy (EUR)"},{"value":"jo","label":"Jordan (JOD)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"lt","label":"Lithuania (EUR)"},{"value":"lv","label":"Latvia (EUR)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"no","label":"Norway (NOK)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"om","label":"Oman (OMR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"ro","label":"Romania (RON)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"th","label":"Thailand (THB)"},{"value":"us","label":"United States (USD)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions and filter labels, for countries IKEA publishes in several languages (ca: en/fr, ch: de/fr/it/en, be: nl/fr/en, es: es/ca/eu/gl/en …). Default: the country's first language (de for Germany, ja for Japan, ar for the Gulf stores). A language the country does not publish is rejected.","on_invalid":"reject","allowed_values":[{"value":"ar","label":"Arabic"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"et","label":"Estonian"},{"value":"eu","label":"Basque"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"gl","label":"Galician"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"}],"example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"category{key, name, url, image, product_count}, children[]{key, name, product_count}, count, country, language","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"product/detail","description":"The full IKEA product record by item number or URL: every price kept apart (regular, IKEA Family, previous, lowest 30-day, in-store-only), description, designer, key facts, measurements, every package with its dimensions and weight, the articles a combination consists of, materials and care instructions, safety notes, assembly instructions and manuals, energy labels, guarantee, return period, series, breadcrumb, colour/size options, images and rating.","required_params":["product_id"],"optional_params":["country","language","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"IKEA item number (8 digits, with or without dots: 205.220.46; combinations may carry an 's' prefix: s39399112) or an ikea.com product URL, which also sets country and language.","on_invalid":"reject","example":"20522046","aliases":["id","item_no","url"]},{"name":"country","type":"enum","required":false,"description":"Which IKEA country store. Prices come back in its currency and texts in its language. Item numbers are mostly global but not every product is sold everywhere, and some products carry a different item number per market.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"at","label":"Austria (EUR)"},{"value":"au","label":"Australia (AUD)"},{"value":"be","label":"Belgium (EUR)"},{"value":"bh","label":"Bahrain (BHD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"cl","label":"Chile (CLP)"},{"value":"co","label":"Colombia (COP)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"de","label":"Germany (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"ee","label":"Estonia (EUR)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"es","label":"Spain (EUR)"},{"value":"fi","label":"Finland (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"it","label":"Italy (EUR)"},{"value":"jo","label":"Jordan (JOD)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"lt","label":"Lithuania (EUR)"},{"value":"lv","label":"Latvia (EUR)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"no","label":"Norway (NOK)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"om","label":"Oman (OMR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"ro","label":"Romania (RON)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"th","label":"Thailand (THB)"},{"value":"us","label":"United States (USD)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions and filter labels, for countries IKEA publishes in several languages (ca: en/fr, ch: de/fr/it/en, be: nl/fr/en, es: es/ca/eu/gl/en …). Default: the country's first language (de for Germany, ja for Japan, ar for the Gulf stores). A language the country does not publish is rejected.","on_invalid":"reject","allowed_values":[{"value":"ar","label":"Arabic"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"et","label":"Estonian"},{"value":"eu","label":"Basque"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"gl","label":"Galician"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"}],"example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id, item_no, visible_item_no, item_no_global, item_type, title, name, type_name, design, measure, url, brand, price (what a shopper without IKEA Family pays online; null on an IKEA Family price with no published regular price), currency, price_type ('regular' | 'new_lower_price' | 'time_restricted_offer' | 'discontinued' | 'family_price' | 'lower_price_in_store'), original_price (the previous price of a new-lower-price, limited-time or clearance price), discount_percent, member_price (IKEA Family price), member_program, member_discount_percent, lowest_previous_price (EU: lowest price in the 30 days before the reduction), price_valid_from, price_valid_to, price_disclaimer, price_basis ('per_item' | 'per_pack' — the price is for pack_quantity pieces, e.g. 4 chairs | 'per_quantity' — the price is for a pack holding `quantity` `unit`, e.g. 0.5 kg of jam), pack_quantity, quantity, unit, price_unit (IKEA's own text, e.g. '4 szt.', '0,5 kg'), in_store_offer{text, members_only, valid_from, valid_to} (a price valid only in the store, never the online price), low_price_item, online_sellable, last_chance, is_new, top_seller, coming_soon, is_food, is_mattress, min_order_quantity, rating, rating_count, rating_scale, secondary_ratings{}, short_description, description[], designer, key_facts[]{type, label, value}, measurements[]{name, value, type}, number_of_packages, packaging[]{item_no, article_number, name, type_name, quantity, packages[]{width|height|length|weight|volume: {text, value, unit}}}, sub_products[]{item_no, item_type, name, type_name, quantity, url}, materials[]{product_type, parts[]{part, material}}, care_instructions[], good_to_know[]{name, text}, safety_and_compliance[]{name, text}, documents[]{kind, label, item, url}, energy_labels[], guarantee_years, guarantee, return_days, series{name, url}, breadcrumb[]{name, url}, category_path[], colours[], variant_count, style_options[]{code, title, selected, options[]{title, product_id, url, selected}}, images[]{url, type, alt}, videos[], product_area}, country, language","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"20522046"}},{"name":"product/availability","description":"Stock of up to 10 IKEA products in every store of a country (or one store): quantity in the store where IKEA publishes it, stock status, expected restock dates and quantities, the aisle and bin to pick it from, click & collect, and whether home delivery is available.","required_params":[],"optional_params":["product_id","product_ids","store_id","country","language","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"IKEA item number (8 digits, with or without dots: 205.220.46; combinations may carry an 's' prefix: s39399112) or an ikea.com product URL, which also sets country and language.","on_invalid":"reject","example":"20522046","aliases":["id","item_no","url"]},{"name":"product_ids","type":"array","required":false,"description":"Up to 10 item numbers in one call (alternative to `product_id`).","on_invalid":"reject","example":["20522046","70096377"],"aliases":["item_nos"]},{"name":"store_id","type":"string","required":false,"description":"Only this store (the id from `stores`, e.g. '211'). Default: every store in the country.","on_invalid":"reject","example":"211"},{"name":"country","type":"enum","required":false,"description":"Which IKEA country store. Prices come back in its currency and texts in its language. Item numbers are mostly global but not every product is sold everywhere, and some products carry a different item number per market.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"at","label":"Austria (EUR)"},{"value":"au","label":"Australia (AUD)"},{"value":"be","label":"Belgium (EUR)"},{"value":"bh","label":"Bahrain (BHD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"cl","label":"Chile (CLP)"},{"value":"co","label":"Colombia (COP)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"de","label":"Germany (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"ee","label":"Estonia (EUR)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"es","label":"Spain (EUR)"},{"value":"fi","label":"Finland (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"it","label":"Italy (EUR)"},{"value":"jo","label":"Jordan (JOD)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"lt","label":"Lithuania (EUR)"},{"value":"lv","label":"Latvia (EUR)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"no","label":"Norway (NOK)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"om","label":"Oman (OMR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"ro","label":"Romania (RON)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"th","label":"Thailand (THB)"},{"value":"us","label":"United States (USD)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions and filter labels, for countries IKEA publishes in several languages (ca: en/fr, ch: de/fr/it/en, be: nl/fr/en, es: es/ca/eu/gl/en …). Default: the country's first language (de for Germany, ja for Japan, ar for the Gulf stores). A language the country does not publish is rejected.","on_invalid":"reject","allowed_values":[{"value":"ar","label":"Arabic"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"et","label":"Estonian"},{"value":"eu","label":"Basque"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"gl","label":"Galician"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"}],"example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"items[]{item_no, item_type, online{home_delivery_available, click_collect_available, home_delivery_status, parcel, max_order_quantity, updated_at}, stores[]{store_id, store_name, in_range, cash_carry_available, click_collect_available, quantity, status ('high_in_stock' | 'low_in_stock' | 'out_of_stock' | null), restocks[]{earliest_date, latest_date, quantity, reliability}, pickup[], sales_locations[]{type, division, aisle, bin}, updated_at}, store_count, in_stock_store_count}, not_found[], count, country","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"20522046"}},{"name":"product/reviews","description":"Customer reviews of one IKEA product, paged: title, text, star rating, sub-ratings (quality, value for money, assembly …), recommendation, verified purchase, helpful votes, IKEA's public reply and photos, plus the rating summary and distribution. Filter by star rating, verified purchases or reviews from other countries.","required_params":["product_id"],"optional_params":["country","language","page","page_size","sort","ratings","scope","verified_only","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"IKEA item number (8 digits, with or without dots: 205.220.46; combinations may carry an 's' prefix: s39399112) or an ikea.com product URL, which also sets country and language.","on_invalid":"reject","example":"20522046","aliases":["id","item_no","url"]},{"name":"country","type":"enum","required":false,"description":"Which IKEA country store. Prices come back in its currency and texts in its language. Item numbers are mostly global but not every product is sold everywhere, and some products carry a different item number per market.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"at","label":"Austria (EUR)"},{"value":"au","label":"Australia (AUD)"},{"value":"be","label":"Belgium (EUR)"},{"value":"bh","label":"Bahrain (BHD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"cl","label":"Chile (CLP)"},{"value":"co","label":"Colombia (COP)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"de","label":"Germany (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"ee","label":"Estonia (EUR)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"es","label":"Spain (EUR)"},{"value":"fi","label":"Finland (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"it","label":"Italy (EUR)"},{"value":"jo","label":"Jordan (JOD)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"lt","label":"Lithuania (EUR)"},{"value":"lv","label":"Latvia (EUR)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"no","label":"Norway (NOK)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"om","label":"Oman (OMR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"ro","label":"Romania (RON)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"th","label":"Thailand (THB)"},{"value":"us","label":"United States (USD)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions and filter labels, for countries IKEA publishes in several languages (ca: en/fr, ch: de/fr/it/en, be: nl/fr/en, es: es/ca/eu/gl/en …). Default: the country's first language (de for Germany, ja for Japan, ar for the Gulf stores). A language the country does not publish is rejected.","on_invalid":"reject","allowed_values":[{"value":"ar","label":"Arabic"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"et","label":"Estonian"},{"value":"eu","label":"Basque"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"gl","label":"Galician"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"}],"example":"en"},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1-50, default 20).","on_invalid":"reject","default":20,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"highest_rating","label":"Highest rating first"},{"value":"lowest_rating","label":"Lowest rating first"},{"value":"most_helpful","label":"Most helpful first"}],"default":"newest"},{"name":"ratings","type":"array","required":false,"description":"Only reviews with these star ratings (1-5).","on_invalid":"reject","example":[1,2]},{"name":"scope","type":"enum","required":false,"description":"IKEA shares reviews between countries. `local` = written in this country (default); `other_markets` = everywhere else.","on_invalid":"reject","allowed_values":[{"value":"local","label":"Reviews written in this country"},{"value":"other_markets","label":"Reviews of the same product from every other IKEA country"}],"default":"local"},{"name":"verified_only","type":"boolean","required":false,"description":"true: only reviews from verified purchases.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"item_no, summary{rating, rating_scale, total_reviews_all_markets, total_ratings_all_markets, recommended_count, not_recommended_count, rating_distribution{1..5}, secondary_ratings{}, first_review_at, last_review_at}, reviews[]{review_id, title, text, rating, rating_scale, secondary_ratings{}, recommended, verified_purchase, author, submitted_at, updated_at, source_country, source_language, reviewed_item_no, helpful_count, unhelpful_count, ikea_response{text, by, at}, media[]}, count, page, page_size, has_more, sort_applied, scope, country, language","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"20522046"}},{"name":"stores","description":"Every IKEA store in a country with its store id (used by product/availability), name, coordinates, type and opening date.","required_params":[],"optional_params":["country","language","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Which IKEA country store. Prices come back in its currency and texts in its language. Item numbers are mostly global but not every product is sold everywhere, and some products carry a different item number per market.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"at","label":"Austria (EUR)"},{"value":"au","label":"Australia (AUD)"},{"value":"be","label":"Belgium (EUR)"},{"value":"bh","label":"Bahrain (BHD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"cl","label":"Chile (CLP)"},{"value":"co","label":"Colombia (COP)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"de","label":"Germany (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"ee","label":"Estonia (EUR)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"es","label":"Spain (EUR)"},{"value":"fi","label":"Finland (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"it","label":"Italy (EUR)"},{"value":"jo","label":"Jordan (JOD)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"lt","label":"Lithuania (EUR)"},{"value":"lv","label":"Latvia (EUR)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"no","label":"Norway (NOK)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"om","label":"Oman (OMR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"ro","label":"Romania (RON)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"th","label":"Thailand (THB)"},{"value":"us","label":"United States (USD)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions and filter labels, for countries IKEA publishes in several languages (ca: en/fr, ch: de/fr/it/en, be: nl/fr/en, es: es/ca/eu/gl/en …). Default: the country's first language (de for Germany, ja for Japan, ar for the Gulf stores). A language the country does not publish is rejected.","on_invalid":"reject","allowed_values":[{"value":"ar","label":"Arabic"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"et","label":"Estonian"},{"value":"eu","label":"Basque"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"gl","label":"Galician"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"}],"example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"stores[]{store_id, name, display_name, lat, lng, type, opening_date}, count, country","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"IKEA's search autocomplete for what a shopper has typed: suggested searches, matching categories and products.","required_params":["query"],"optional_params":["country","language","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the shopper has typed so far.","on_invalid":"reject","example":"sof","aliases":["q","prefix"]},{"name":"country","type":"enum","required":false,"description":"Which IKEA country store. Prices come back in its currency and texts in its language. Item numbers are mostly global but not every product is sold everywhere, and some products carry a different item number per market.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"at","label":"Austria (EUR)"},{"value":"au","label":"Australia (AUD)"},{"value":"be","label":"Belgium (EUR)"},{"value":"bh","label":"Bahrain (BHD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"cl","label":"Chile (CLP)"},{"value":"co","label":"Colombia (COP)"},{"value":"cz","label":"Czechia (CZK)"},{"value":"de","label":"Germany (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"ee","label":"Estonia (EUR)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"es","label":"Spain (EUR)"},{"value":"fi","label":"Finland (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"hu","label":"Hungary (HUF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"il","label":"Israel (ILS)"},{"value":"in","label":"India (INR)"},{"value":"it","label":"Italy (EUR)"},{"value":"jo","label":"Jordan (JOD)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"lt","label":"Lithuania (EUR)"},{"value":"lv","label":"Latvia (EUR)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"no","label":"Norway (NOK)"},{"value":"nz","label":"New Zealand (NZD)"},{"value":"om","label":"Oman (OMR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"ro","label":"Romania (RON)"},{"value":"rs","label":"Serbia (RSD)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"th","label":"Thailand (THB)"},{"value":"us","label":"United States (USD)"}],"default":"us","example":"us"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions and filter labels, for countries IKEA publishes in several languages (ca: en/fr, ch: de/fr/it/en, be: nl/fr/en, es: es/ca/eu/gl/en …). Default: the country's first language (de for Germany, ja for Japan, ar for the Gulf stores). A language the country does not publish is rejected.","on_invalid":"reject","allowed_values":[{"value":"ar","label":"Arabic"},{"value":"ca","label":"Catalan"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"de","label":"German"},{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"et","label":"Estonian"},{"value":"eu","label":"Basque"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"gl","label":"Galician"},{"value":"he","label":"Hebrew"},{"value":"hr","label":"Croatian"},{"value":"hu","label":"Hungarian"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"ko","label":"Korean"},{"value":"lt","label":"Lithuanian"},{"value":"lv","label":"Latvian"},{"value":"ms","label":"Malay"},{"value":"nl","label":"Dutch"},{"value":"no","label":"Norwegian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"sr","label":"Serbian"},{"value":"sv","label":"Swedish"},{"value":"th","label":"Thai"}],"example":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"completions[], categories[]{key, name, url}, products[]{product_id, title, url, image, online_sellable, rating, rating_count}, query, country, language","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"sofa"}}]},{"name":"imdb","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"IMDb API scraper — movie & TV ratings, vote counts, Top 250 charts, cast, crew and people data: search IMDb for any film, series or person and pull the IMDb user rating, number of votes, release year, runtime, genres, certificate, plot, full cast & characters, directors, writers, episode lists with per-episode ratings, actor/director filmographies, the IMDb Top 250 / Most Popular charts, paginated user reviews, trailers & video clips, photo galleries, awards & nominations, trivia, keywords, parental guide, full cast & crew by department, and 'what's new' lists (coming-soon, weekend box-office, trending) — by IMDb id (tt… / nm…), no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/imdb/v1","spec_available":true,"actions":[{"name":"search","description":"Search IMDb for movies, TV shows and people by name. Uses IMDb's own type-ahead, so one query returns titles AND people mixed, each with its IMDb id (tt…/nm…), a subtitle, poster image, popularity rank and (for titles) type and year. Use the returned id with the `title`, `person` or `episodes` actions.","required_params":["query"],"optional_params":["kind"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for — a movie/show title or a person's name ('the matrix', 'tom hanks', 'breaking bad', 'nolan').","on_invalid":"reject","example":"the matrix","aliases":["q","text","name","title"]},{"name":"kind","type":"enum","required":false,"description":"Filter the results to titles only, people only, or both (default both).","on_invalid":"ignore","allowed_values":[{"value":"all","label":"Titles and people"},{"value":"title","label":"Movies & TV only"},{"value":"name","label":"People only"}],"default":"all"}],"returns":"results[]{id, kind(title|name), label, subtitle, image, rank, title_type, year}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"the matrix"}},{"name":"title","description":"Full IMDb title card for one movie or TV show by its tt… id: IMDb user rating and vote count, year(s), runtime, genres, certificate, plot, countries, languages, directors, writers, top cast with character names, poster and popularity rank. For series it also returns the total episode count.","required_params":["imdb_id"],"optional_params":[],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb title id — the 'tt…' in an IMDb URL (tt0133093 = The Matrix). Get one from the `search` action.","on_invalid":"reject","example":"tt0133093","aliases":["id","title_id","tconst"]}],"returns":"title{id, title, original_title, type, is_series, year, end_year, release_date, runtime_minutes, rating, vote_count, certificate, genres[], plot, image, popularity_rank, countries[], languages[], directors[], writers[], cast[]{id,name,characters[]}, cast_total, episode_count}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"tt0133093"}},{"name":"person","description":"Full IMDb name card for one person by their nm… id: biography, birth/death dates, birthplace, professions, IMDb popularity rank, their best-known titles and a paginated filmography (each credit with the title, year, IMDb rating, the job and — for acting credits — the character played).","required_params":["imdb_id"],"optional_params":["role","limit"],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb name id — the 'nm…' in an IMDb person URL (nm0000158 = Tom Hanks). Get one from the `search` action.","on_invalid":"reject","example":"nm0000158","aliases":["id","name_id","nconst"]},{"name":"role","type":"enum","required":false,"description":"Filter the filmography to one job category (default all).","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All credits"},{"value":"actor","label":"Acting (actor)"},{"value":"actress","label":"Acting (actress)"},{"value":"director","label":"Director"},{"value":"writer","label":"Writer"},{"value":"producer","label":"Producer"},{"value":"self","label":"Self / appearances"}],"default":"all"},{"name":"limit","type":"integer","required":false,"description":"How many filmography credits to return (1-250, newest first). filmography_total reports the full count.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":250}],"returns":"person{id, name, image, bio, birth_date, death_date, birth_location, professions[], popularity_rank, known_for[], filmography[]{id,title,year,rating,type,job,characters[]}, filmography_total}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"nm0000158"}},{"name":"episodes","description":"Episode list for a TV series by its tt… id, with each episode's IMDb rating, vote count, air date, season/episode number and plot. Page one season at a time with `season`; meta lists every available season number and the total episode count.","required_params":["imdb_id"],"optional_params":["season","limit"],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb title id — the 'tt…' in an IMDb URL (tt0133093 = The Matrix). Get one from the `search` action.","on_invalid":"reject","example":"tt0133093","aliases":["id","title_id","tconst"]},{"name":"season","type":"integer","required":false,"description":"Season number to list (e.g. 1). Omit to get the first season; meta.seasons lists all available seasons.","on_invalid":"ignore","example":1,"minimum":1,"maximum":100},{"name":"limit","type":"integer","required":false,"description":"Max episodes to return for the season (1-250).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250}],"returns":"episodes[]{id, title, season, episode, rating, vote_count, air_date, plot} + meta{seasons[], total_episodes, season}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"tt0903747","season":1}},{"name":"charts","description":"An IMDb chart: the Top 250 movies, Top 250 TV, Bottom 100, or a Most-Popular / Top-Rated meter board. Returns ranked titles with their IMDb chart rating, vote count, year, type and poster.","required_params":[],"optional_params":["chart","limit"],"params":[{"name":"chart","type":"enum","required":false,"description":"Which IMDb chart to return (default top_250).","on_invalid":"ignore","allowed_values":[{"value":"top_250","label":"Top 250 movies"},{"value":"top_250_tv","label":"Top 250 TV shows"},{"value":"top_250_english","label":"Top 250 English-language movies"},{"value":"top_250_india","label":"Top 250 Indian movies"},{"value":"bottom_100","label":"Bottom 100 (lowest rated) movies"},{"value":"most_popular_movies","label":"Most popular movies (MOVIEmeter)"},{"value":"most_popular_tv","label":"Most popular TV shows"},{"value":"top_rated_movies","label":"Top rated movies"},{"value":"top_rated_tv","label":"Top rated TV shows"},{"value":"lowest_rated_movies","label":"Lowest rated movies"},{"value":"top_rated_english","label":"Top rated English movies"},{"value":"top_rated_indian","label":"Top rated Indian movies"}],"default":"top_250"},{"name":"limit","type":"integer","required":false,"description":"How many ranked entries to return (1-250).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250}],"returns":"results[]{rank, id, title, year, type, rating, vote_count, image}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"chart":"top_250","limit":10}},{"name":"reviews","description":"User reviews for a movie or TV show by its tt… id — the full IMDb review text plus the reviewer's star rating, headline, date, spoiler flag and helpful up/down votes. Cursor-paginated: pass the returned `next_cursor` back as `cursor` to walk through every review (titles can have thousands). meta.total reports the full review count.","required_params":["imdb_id"],"optional_params":["sort","cursor","limit"],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb title id — the 'tt…' in an IMDb URL (tt0133093 = The Matrix). Get one from the `search` action.","on_invalid":"reject","example":"tt0133093","aliases":["id","title_id","tconst"]},{"name":"sort","type":"enum","required":false,"description":"Order reviews by helpfulness, date, rating or total votes (default helpful).","on_invalid":"ignore","allowed_values":[{"value":"helpful","label":"Most helpful first"},{"value":"recent","label":"Newest first"},{"value":"rating","label":"Highest user rating first"},{"value":"votes","label":"Most total votes first"}],"default":"helpful"},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous call's meta.next_cursor. Omit for the first page.","on_invalid":"ignore","aliases":["after"]},{"name":"limit","type":"integer","required":false,"description":"Reviews per page (1-100). Page with `cursor`.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"reviews[]{id, author, rating, title, text, date, helpful_up, helpful_down, spoiler} + meta{total, next_cursor, has_more}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"tt0133093","limit":5}},{"name":"videos","description":"Trailers and video clips for a movie or TV show by its tt… id, each with a playable MP4 URL (multiple qualities), title, type (Trailer/Clip/Featurette), runtime, description and thumbnail. Note: playback URLs are IMDb-signed and time-limited.","required_params":["imdb_id"],"optional_params":["limit"],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb title id — the 'tt…' in an IMDb URL (tt0133093 = The Matrix). Get one from the `search` action.","on_invalid":"reject","example":"tt0133093","aliases":["id","title_id","tconst"]},{"name":"limit","type":"integer","required":false,"description":"Max videos to return (1-100).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"videos[]{id, name, type, runtime_seconds, description, thumbnail, playback_urls[]{quality,url,mime_type,definition}} + meta{total}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"tt0133093","limit":5}},{"name":"photos","description":"Image gallery for a movie or TV show by its tt… id — posters, stills and event photos with full-resolution URLs, dimensions and captions. Cursor-paginated: pass the returned `next_cursor` back as `cursor`. meta.total reports the gallery size.","required_params":["imdb_id"],"optional_params":["cursor","limit"],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb title id — the 'tt…' in an IMDb URL (tt0133093 = The Matrix). Get one from the `search` action.","on_invalid":"reject","example":"tt0133093","aliases":["id","title_id","tconst"]},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous call's meta.next_cursor. Omit for the first page.","on_invalid":"ignore","aliases":["after"]},{"name":"limit","type":"integer","required":false,"description":"Photos per page (1-100). Page with `cursor`.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100}],"returns":"photos[]{id, url, width, height, caption} + meta{total, next_cursor, has_more}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"tt0133093","limit":5}},{"name":"awards","description":"Awards and nominations for a movie or TV show by its tt… id — Oscars, Golden Globes, BAFTAs, Emmys and more, each with the event, year, category, win/nomination flag and the people nominated. Cursor-paginated; meta.total reports the full count.","required_params":["imdb_id"],"optional_params":["cursor","limit"],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb title id — the 'tt…' in an IMDb URL (tt0133093 = The Matrix). Get one from the `search` action.","on_invalid":"reject","example":"tt0133093","aliases":["id","title_id","tconst"]},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous call's meta.next_cursor. Omit for the first page.","on_invalid":"ignore","aliases":["after"]},{"name":"limit","type":"integer","required":false,"description":"Awards per page (1-100). Page with `cursor`.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100}],"returns":"awards[]{id, is_winner, award, category, event, year, notes} + meta{total, next_cursor, has_more}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"tt0133093","limit":5}},{"name":"extras","description":"Extra IMDb detail for a movie or TV show by its tt… id in one call: trivia, plot keywords, goofs, memorable quotes, alternate titles (AKAs), country release dates, taglines and the parental guide (Sex/Nudity, Violence, Profanity, etc. with severity and example items). Each section is capped by `limit`; section totals are reported.","required_params":["imdb_id"],"optional_params":["limit"],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb title id — the 'tt…' in an IMDb URL (tt0133093 = The Matrix). Get one from the `search` action.","on_invalid":"reject","example":"tt0133093","aliases":["id","title_id","tconst"]},{"name":"limit","type":"integer","required":false,"description":"Max items per section (trivia/keywords/goofs/quotes/akas/release_dates/taglines), 1-100.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100}],"returns":"extras{trivia[], keywords[], goofs[], quotes[], akas[], release_dates[], taglines[], parental_guide[]} + per-section totals in meta.section_totals","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"tt0133093","limit":5}},{"name":"credits","description":"Full cast & crew for a movie or TV show by its tt… id, grouped by department (director, writer, cast, producer, cinematographer, editor, composer, …) — beyond the top-20 cast in `title`. Omit `category` for every department (first N each); pass one `category` to page that department fully with `cursor`.","required_params":["imdb_id"],"optional_params":["category","cursor","limit"],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb title id — the 'tt…' in an IMDb URL (tt0133093 = The Matrix). Get one from the `search` action.","on_invalid":"reject","example":"tt0133093","aliases":["id","title_id","tconst"]},{"name":"category","type":"string","required":false,"description":"One department id to page fully (e.g. cast, director, writer, producer, cinematographer, editor, composer, casting_director). Omit to get every department grouped.","on_invalid":"ignore","example":"cast"},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor (single-category mode) from a previous call's meta.next_cursor.","on_invalid":"ignore","aliases":["after"]},{"name":"limit","type":"integer","required":false,"description":"Members per department (grouped) or per page (single category), 1-250.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250}],"returns":"departments[]{category, total, members[]{id,name,job,characters[],attributes[]}} (grouped) OR credits[]{...} + meta{category,total,next_cursor,has_more} (single category)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"tt0133093"}},{"name":"person_extras","description":"Extra IMDb detail for a person by their nm… id: their photo gallery (full-res URLs + captions), awards and nominations (with the titles they were for), height and alternate names. Complements `person` (bio + filmography).","required_params":["imdb_id"],"optional_params":["cursor","limit"],"params":[{"name":"imdb_id","type":"string","required":true,"description":"IMDb name id — the 'nm…' in an IMDb person URL (nm0000158 = Tom Hanks). Get one from the `search` action.","on_invalid":"reject","example":"nm0000158","aliases":["id","name_id","nconst"]},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor for awards, from a previous call's meta.next_cursor.","on_invalid":"ignore","aliases":["after"]},{"name":"limit","type":"integer","required":false,"description":"Max photos and awards to return (1-100). Awards page with `cursor`.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"person_extras{id, name, height_cm, akas[], photos[]{id,url,caption}, awards[]{id,is_winner,award,category,event,year,for_titles[]}} + meta{photos_total, awards_total, next_cursor, has_more}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"nm0634240","limit":5}},{"name":"whats_new","description":"IMDb's 'what's new' lists: upcoming movies (coming_soon_movies) or TV (coming_soon_tv) with release dates, the weekend box-office top 10 (box_office) with gross earnings, or the currently trending titles (trending). One friendly `list` value picks the board; coming-soon lists are cursor-paginated and region-aware.","required_params":[],"optional_params":["list","region","cursor","limit"],"params":[{"name":"list","type":"enum","required":false,"description":"Which 'what's new' list to return (default coming_soon_movies).","on_invalid":"ignore","allowed_values":[{"value":"coming_soon_movies","label":"Upcoming / not-yet-released movies"},{"value":"coming_soon_tv","label":"Upcoming TV shows"},{"value":"box_office","label":"Weekend box-office top 10 (with gross)"},{"value":"trending","label":"Currently trending titles"}],"default":"coming_soon_movies"},{"name":"region","type":"string","required":false,"description":"2-letter region for coming-soon release dates (e.g. US, GB, DE, IN, TR). Ignored for box_office/trending.","on_invalid":"ignore","default":"US","example":"US"},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor (coming-soon lists) from a previous call's meta.next_cursor.","on_invalid":"ignore","aliases":["after"]},{"name":"limit","type":"integer","required":false,"description":"How many entries to return (1-100).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"results[]{id, title, type, year, release_date, rating, vote_count, weekend_gross, image, genres[]} + meta{list, region, next_cursor, has_more, weekend_start, weekend_end}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"list":"box_office"}}]},{"name":"immobiliare","category":{"id":"real-estate","title":"Real Estate"},"title":"Immobiliare.it API scraper — Italy real estate data: for-sale and for-rent property listings across every Italian city, province and region with full filters (price, rooms, surface m², bathrooms, property type, sort), each listing with price, rooms, bathrooms, surface, floor, typology, features, photos, agency and map coordinates, plus location autocomplete that resolves a city name to the search geo-ids — no API key required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/immobiliare/v1","spec_available":true,"actions":[{"name":"search","description":"Search Immobiliare.it property listings by location (for sale or for rent), with structured filters: price (EUR), rooms, surface (m²), bathrooms, property type and sort. Each result carries price, rooms, bathrooms, surface, floor, typology, features, agency, map coordinates and the primary photo. Paginate with page.","required_params":["location"],"optional_params":["contract","category","sort","home_type","page","price_min","price_max","rooms_min","rooms_max","surface_min","surface_max","baths_min"],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — an Italian city, province or region ('Roma', 'Milano', 'Napoli', 'Toscana'). Resolved to Immobiliare's geo-ids automatically (deepest match: city > province > region).","on_invalid":"reject","example":"Roma","aliases":["loc","city","where"]},{"name":"contract","type":"enum","required":false,"description":"Listing type.","on_invalid":"ignore","allowed_values":[{"value":"sale","label":"For sale (vendita)"},{"value":"rent","label":"For rent (affitto)"}],"default":"sale","example":"sale"},{"name":"category","type":"enum","required":false,"description":"Property category.","on_invalid":"ignore","allowed_values":[{"value":"residential","label":"Residential homes"},{"value":"rooms","label":"Rooms / garages / boxes"}],"default":"residential","example":"residential"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Most relevant"},{"value":"newest","label":"Most recently updated"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"surface_high","label":"Largest surface first"}],"default":"relevance","example":"newest"},{"name":"home_type","type":"string","required":false,"description":"Property typology — one or several comma-separated: apartment, penthouse, villa, villa_terraced, townhouse, farmhouse, building, garage. e.g. 'apartment,penthouse'.","on_invalid":"ignore","example":"apartment"},{"name":"page","type":"integer","required":false,"description":"Result page (25 listings per page; paginate with page += 1).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"price_min","type":"integer","required":false,"description":"Minimum price in EUR (sale price, or monthly rent when contract=rent).","on_invalid":"ignore","example":200000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum price in EUR.","on_invalid":"ignore","example":400000,"minimum":0},{"name":"rooms_min","type":"integer","required":false,"description":"Minimum number of rooms (locali). 3 = 3+.","on_invalid":"ignore","example":3,"minimum":1,"maximum":20,"aliases":["rooms"]},{"name":"rooms_max","type":"integer","required":false,"description":"Maximum number of rooms (locali).","on_invalid":"ignore","example":5,"minimum":1,"maximum":20},{"name":"surface_min","type":"integer","required":false,"description":"Minimum living surface in square metres (m²).","on_invalid":"ignore","example":80,"minimum":0},{"name":"surface_max","type":"integer","required":false,"description":"Maximum living surface in square metres (m²).","on_invalid":"ignore","example":150,"minimum":0},{"name":"baths_min","type":"integer","required":false,"description":"Minimum number of bathrooms. 2 = 2+.","on_invalid":"ignore","example":2,"minimum":1,"maximum":10,"aliases":["baths"]}],"returns":"results[]{id, url, price_eur, contract, typology, rooms, bedrooms, bathrooms, surface_m2, floor, elevator, heating, condition, features[], location{city, province, latitude, longitude}, agency{name, url}, primary_photo_url} + total + count + page + max_pages + filters_applied + geo","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"location":"Roma"}},{"name":"detail","description":"Full record for a single listing by its Immobiliare id (from a search result's `id`, or the number in an immobiliare.it/annunci/<id>/ URL). Returns every structured field plus all photos at full resolution. Note: the long description text is the portal preview (~600 chars); the complete prose is only on the listing page itself.","required_params":["id"],"optional_params":["location"],"params":[{"name":"id","type":"string","required":true,"description":"Immobiliare listing id (the number in an immobiliare.it/annunci/<id>/ URL, or a search result's `id`).","on_invalid":"reject","example":"129504906","aliases":["listing_id","property_id"]},{"name":"location","type":"string","required":false,"description":"Optional hint of the listing's city to speed up the lookup (otherwise the listing's own city is resolved from search).","on_invalid":"ignore","example":"Roma","aliases":["loc","city"]}],"returns":"listing{id, url, price_eur, typology, rooms, bathrooms, surface_m2, floor, elevator, heating, condition, features[], photos[], location{}, agency{}, description_preview, description_truncated}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"130988676","location":"Roma"}},{"name":"geography","description":"Location autocomplete — resolve a free-text Italian place name to Immobiliare's geo-ids (comune / province / region) with centre coordinates. Use it to power a search box or to get the exact ids the search needs. Returns ready-to-use search_params for each match.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text Italian place to autocomplete — a partial city, province or region ('Rom', 'Mil', 'Tosc').","on_invalid":"reject","example":"Mil","aliases":["q","input","location","city"]},{"name":"limit","type":"integer","required":false,"description":"Max suggestions to return (1-20).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":20}],"returns":"suggestions[]{geo_id, type_name, label, province_id, region_id, latitude, longitude, search_params{}} + count + query","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"query":"Roma"}}]},{"name":"importyeti","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"ImportYeti API — US import & customs bill-of-lading records: find which overseas factory manufactures for a US brand, and which US brands a factory ships to. Company and supplier lookup, supplier/customer rankings by shipment count, the underlying bills of lading with HS codes, product text, weight, containers and trade lanes, plus top importers and suppliers per HS code. Public logged-out data, no account.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/importyeti/v1","spec_available":true,"actions":[{"name":"search","description":"Search US importers and overseas suppliers by name. Returns the slug you feed to every other action, plus lifetime shipment count and the date of the most recent shipment for each hit.","required_params":["query"],"optional_params":["page","type"],"params":[{"name":"query","type":"string","required":true,"description":"Company or supplier name to search for. Matches US importers and overseas suppliers by name; partial names work.","on_invalid":"reject","example":"nike","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 10 results per page. The logged-out surface serves at most 14 pages (140 results) however large the reported total is — page 15 and beyond return nothing upstream, so they are rejected rather than answered empty.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":14},{"name":"type","type":"enum","required":false,"description":"Restrict results to one side of the trade. Omit for both.","on_invalid":"reject","allowed_values":[{"value":"company","label":"US importer (the buyer)"},{"value":"supplier","label":"Overseas shipper (the seller)"}],"example":"company"}],"returns":"results[] (name, kind, slug, url, address, country_code, total_shipments, last_shipment_date, other_addresses_count, other_names_count), page, page_size, total_hits, total_hits_is_floor, total_pages_claimed, max_page, results_cap, reachable_results, has_more, next_page. The source's total_pages_claimed over-states what it will serve — results_cap (140) is the measured truth.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike"}},{"name":"company","description":"Full report for a US importer: profile and totals, its overseas suppliers ranked by shipments, its most recent bills of lading, HS-code breakdown, trade lanes, carriers and container mix. One call; you do not also need `suppliers` and `shipments` for the same company.","required_params":["company"],"optional_params":[],"params":[{"name":"company","type":"string","required":true,"description":"The US importer: its ImportYeti slug (`nike-usa`), the path or URL of its page (`/company/nike-usa`), or a plain company name to resolve through search (costs one extra upstream request; the row picked is reported as `resolved_from`).","on_invalid":"reject","example":"nike-usa","aliases":["slug","name","buyer"]}],"returns":"subject{}, suppliers[] (ranked), shipments[], shipments_with_declared_value[], hs_codes[], trade_lanes[], carriers[], containers[], database_updated, truncated flags.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":3},"example_params":{"company":"nike-usa"}},{"name":"supplier","description":"Full report for an overseas supplier: profile and totals, its US customers ranked by shipments, its most recent bills of lading, HS-code breakdown, trade lanes, carriers and container mix.","required_params":["supplier"],"optional_params":[],"params":[{"name":"supplier","type":"string","required":true,"description":"The overseas supplier: its ImportYeti slug (`apl-logistics-vietnam`), the path or URL of its page, or a plain name to resolve through search (costs one extra upstream request).","on_invalid":"reject","example":"apl-logistics-vietnam","aliases":["slug","name","vendor"]}],"returns":"subject{}, customers[] (ranked), shipments[], shipments_with_declared_value[], hs_codes[], trade_lanes[], carriers[], containers[], database_updated, truncated flags.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":3},"example_params":{"supplier":"apl-logistics-vietnam"}},{"name":"suppliers","description":"Who manufactures for this US brand. The overseas suppliers of one US importer, ranked by the number of shipments between the two, with country, HS chapters and the product text from those shipments.","required_params":["company"],"optional_params":["limit","country_code"],"params":[{"name":"company","type":"string","required":true,"description":"The US importer: its ImportYeti slug (`nike-usa`), the path or URL of its page (`/company/nike-usa`), or a plain company name to resolve through search (costs one extra upstream request; the row picked is reported as `resolved_from`).","on_invalid":"reject","example":"nike-usa","aliases":["slug","name","buyer"]},{"name":"limit","type":"integer","required":false,"description":"Trim the returned list. The logged-out surface publishes at most 50 rows whatever you pass, so this only makes the response smaller — it never reaches further back.","on_invalid":"ignore","example":25,"minimum":1,"maximum":50},{"name":"country_code","type":"string","required":false,"description":"Keep only counterparties in this ISO-2 country (applied by this API to the top-50 the source publishes, not by the source — so it filters that list, it does not search deeper than it).","on_invalid":"ignore","example":"VN"}],"returns":"subject{}, suppliers[] (rank, name, slug, country, shipments, shipments_last_12m, weight_kg, teu, hs_chapters[], product_descriptions), count, truncated, source_cap.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":3},"example_params":{"company":"nike-usa"}},{"name":"customers","description":"Who this factory ships to. The US importers buying from one overseas supplier, ranked by the number of shipments between the two.","required_params":["supplier"],"optional_params":["limit","country_code"],"params":[{"name":"supplier","type":"string","required":true,"description":"The overseas supplier: its ImportYeti slug (`apl-logistics-vietnam`), the path or URL of its page, or a plain name to resolve through search (costs one extra upstream request).","on_invalid":"reject","example":"apl-logistics-vietnam","aliases":["slug","name","vendor"]},{"name":"limit","type":"integer","required":false,"description":"Trim the returned list. The logged-out surface publishes at most 50 rows whatever you pass, so this only makes the response smaller — it never reaches further back.","on_invalid":"ignore","example":25,"minimum":1,"maximum":50},{"name":"country_code","type":"string","required":false,"description":"Keep only counterparties in this ISO-2 country (applied by this API to the top-50 the source publishes, not by the source — so it filters that list, it does not search deeper than it).","on_invalid":"ignore","example":"VN"}],"returns":"subject{}, customers[] (rank, name, slug, country, shipments, shipments_last_12m, weight_kg, teu, hs_chapters[], product_descriptions), count, truncated, source_cap.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":3},"example_params":{"supplier":"apl-logistics-vietnam"}},{"name":"shipments","description":"The bills of lading behind a company or a supplier: date, counterparty, product description, weight, container and package counts, trade lane, and the declared CIF value where the manifest carries one. Pass either `company` or `supplier`.","required_params":[],"optional_params":["company","supplier","limit"],"params":[{"name":"company","type":"string","required":false,"description":"The US importer whose bills of lading to return. Pass this OR `supplier`, not both.","on_invalid":"reject","example":"nike-usa","aliases":["slug","name"]},{"name":"supplier","type":"string","required":false,"description":"The overseas supplier whose bills of lading to return. Pass this OR `company`, not both.","on_invalid":"reject","example":"apl-logistics-vietnam"},{"name":"limit","type":"integer","required":false,"description":"Trim the returned list. The logged-out surface publishes at most 50 rows whatever you pass, so this only makes the response smaller — it never reaches further back.","on_invalid":"ignore","example":25,"minimum":1,"maximum":50}],"returns":"subject{}, shipments[] (date, bill_of_lading, master/house bol, counterparty{}, product_description, weight_kg, containers, quantity, quantity_unit, shipping_route, estimated_shipping_cost_usd), shipments_with_declared_value[] (adds cif_value_usd), count, truncated, source_cap, date_range.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":3},"example_params":{"company":"nike-usa"}},{"name":"hs_code","description":"Trade in one HS code: the top US importers and the top overseas suppliers moving goods under it, ranked by shipments, plus recent bills of lading. Pairs with the `hs-code` engine — classify there, then find who actually ships it here.","required_params":["hs_code"],"optional_params":["limit"],"params":[{"name":"hs_code","type":"string","required":true,"description":"An HS chapter (2-digit, e.g. `61`), a 6-digit subheading (e.g. `610910`), or the full ImportYeti slug (`61-articles-of-apparel-and-clothing`). 2- and 6-digit codes are resolved against the site's own HS index; 4-digit headings are NOT listed in that index, so for those pass the slug, which every company/supplier response hands you in `hs_codes[].url`.","on_invalid":"reject","example":"61","aliases":["code","hs"]},{"name":"limit","type":"integer","required":false,"description":"Trim the returned list. The logged-out surface publishes at most 50 rows whatever you pass, so this only makes the response smaller — it never reaches further back.","on_invalid":"ignore","example":25,"minimum":1,"maximum":50}],"returns":"hs_code, slug, url, description, top_importers[], top_suppliers[], shipments[], first_shipment_date, last_shipment_date, truncated, source_cap.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":3},"example_params":{"hs_code":"61"}}]},{"name":"indeed","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Indeed API — live job search, salary data & company profiles from indeed.com (60+ country sites)","version":"1.3.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/indeed/v1","spec_available":true,"actions":[{"name":"jobs/search","description":"Search live job postings on Indeed by keyword and location. Each result includes the full job description, salary range, employer details, posting date, apply link, employment type and remote flag. Filter by job type, remote/hybrid, seniority, posting date and radius. Covers 60+ Indeed country sites.","required_params":["query"],"optional_params":["country","location","max_results","sort_by","include_detail","job_type","remote","hybrid","level","from_days","radius"],"params":[{"name":"query","type":"string","required":true,"description":"What job to search for — job title, skill or company keyword.","on_invalid":"reject","example":"python developer","aliases":["keyword"]},{"name":"country","type":"enum","required":false,"description":"Indeed country site to search. Each country is a separate Indeed site with its own jobs.","on_invalid":"ignore","allowed_values":[{"value":"US","label":"United States"},{"value":"CA","label":"Canada"},{"value":"MX","label":"Mexico"},{"value":"UK","label":"United Kingdom"},{"value":"IE","label":"Ireland"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"ES","label":"Spain"},{"value":"IT","label":"Italy"},{"value":"NL","label":"Netherlands"},{"value":"CH","label":"Switzerland"},{"value":"AT","label":"Austria"},{"value":"BE","label":"Belgium"},{"value":"LU","label":"Luxembourg"},{"value":"PT","label":"Portugal"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"FI","label":"Finland"},{"value":"PL","label":"Poland"},{"value":"CZ","label":"Czechia"},{"value":"HU","label":"Hungary"},{"value":"RO","label":"Romania"},{"value":"GR","label":"Greece"},{"value":"UA","label":"Ukraine"},{"value":"TR","label":"Türkiye"},{"value":"AE","label":"United Arab Emirates"},{"value":"SA","label":"Saudi Arabia"},{"value":"QA","label":"Qatar"},{"value":"KW","label":"Kuwait"},{"value":"BH","label":"Bahrain"},{"value":"OM","label":"Oman"},{"value":"IL","label":"Israel"},{"value":"ZA","label":"South Africa"},{"value":"EG","label":"Egypt"},{"value":"MA","label":"Morocco"},{"value":"NG","label":"Nigeria"},{"value":"IN","label":"India"},{"value":"PK","label":"Pakistan"},{"value":"SG","label":"Singapore"},{"value":"HK","label":"Hong Kong"},{"value":"PH","label":"Philippines"},{"value":"MY","label":"Malaysia"},{"value":"ID","label":"Indonesia"},{"value":"JP","label":"Japan"},{"value":"KR","label":"South Korea"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"},{"value":"VN","label":"Vietnam"},{"value":"AU","label":"Australia"},{"value":"NZ","label":"New Zealand"},{"value":"BR","label":"Brazil"},{"value":"AR","label":"Argentina"},{"value":"CL","label":"Chile"},{"value":"CO","label":"Colombia"},{"value":"PE","label":"Peru"},{"value":"EC","label":"Ecuador"},{"value":"CR","label":"Costa Rica"},{"value":"PA","label":"Panama"},{"value":"UY","label":"Uruguay"},{"value":"VE","label":"Venezuela"}],"default":"US","example":"US"},{"name":"location","type":"string","required":false,"description":"City, region or postal code to search around. Leave empty to search the whole country.","on_invalid":"reject","example":"New York"},{"name":"max_results","type":"integer","required":false,"description":"How many jobs to return (1–1000). The engine pages internally — no page/cursor needed.","on_invalid":"reject","default":60,"minimum":1,"maximum":1000},{"name":"sort_by","type":"enum","required":false,"description":"Result ordering.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Most relevant first"},{"value":"date","label":"Newest first"}],"default":"relevance"},{"name":"job_type","type":"enum","required":false,"description":"Only return jobs of this employment type.","on_invalid":"reject","allowed_values":[{"value":"fulltime","label":"Full-time"},{"value":"parttime","label":"Part-time"},{"value":"contract","label":"Contract"},{"value":"internship","label":"Internship"},{"value":"temporary","label":"Temporary"},{"value":"permanent","label":"Permanent"},{"value":"seasonal","label":"Seasonal"}]},{"name":"remote","type":"boolean","required":false,"description":"Only remote jobs.","on_invalid":"reject","default":false},{"name":"hybrid","type":"boolean","required":false,"description":"Only hybrid (part-remote) jobs.","on_invalid":"reject","default":false},{"name":"level","type":"enum","required":false,"description":"Only jobs at this seniority level.","on_invalid":"reject","allowed_values":[{"value":"entry_level","label":"Entry level"},{"value":"mid_level","label":"Mid level"},{"value":"senior_level","label":"Senior level"}]},{"name":"from_days","type":"enum","required":false,"description":"Only jobs posted within the last N days. Dropdown values work everywhere; other day-counts work on the primary API path.","on_invalid":"ignore","allowed_values":[{"value":"1","label":"Last 24 hours"},{"value":"3","label":"Last 3 days"},{"value":"7","label":"Last 7 days"},{"value":"14","label":"Last 14 days"}]},{"name":"radius","type":"enum","required":false,"description":"Search radius in miles around `location` (only used when a location is given). Dropdown values work everywhere; other mile-counts work on the primary API path.","on_invalid":"ignore","allowed_values":[{"value":"0","label":"Exact location only"},{"value":"5","label":"5 miles"},{"value":"10","label":"10 miles"},{"value":"15","label":"15 miles"},{"value":"25","label":"25 miles"},{"value":"35","label":"35 miles"},{"value":"50","label":"50 miles"},{"value":"100","label":"100 miles"}]},{"name":"include_detail","type":"boolean","required":false,"description":"Force-fetch the full job description per job on the slow fallback path. Normally unnecessary — descriptions come inline.","on_invalid":"ignore","default":false}],"returns":"jobs[]{jobkey, title, company, formatted_location, city, state, country, remote, employment_types, job_level, salary_min, salary_max, salary_period, posted_iso, description, indeed_url, company_url}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"query":"python developer","location":"New York","country":"US","max_results":60}},{"name":"job","description":"Get the full detail of one or more specific jobs by their Indeed job key (or job URL). Returns the complete job description, salary, employer details, location, posting date, skills, benefits and apply link for each. Pass several keys at once to fetch them in a single call.","required_params":["jobkey"],"optional_params":["country"],"params":[{"name":"jobkey","type":"array","required":true,"description":"One or more Indeed job keys (the 16-character id from a job URL, e.g. ?jk=c64905855731be67) or full Indeed job URLs. Accepts a single value or a list.","on_invalid":"reject","example":"c64905855731be67","aliases":["jobkeys","job_url","url"]},{"name":"country","type":"enum","required":false,"description":"Indeed country site to search. Each country is a separate Indeed site with its own jobs.","on_invalid":"ignore","allowed_values":[{"value":"US","label":"United States"},{"value":"CA","label":"Canada"},{"value":"MX","label":"Mexico"},{"value":"UK","label":"United Kingdom"},{"value":"IE","label":"Ireland"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"ES","label":"Spain"},{"value":"IT","label":"Italy"},{"value":"NL","label":"Netherlands"},{"value":"CH","label":"Switzerland"},{"value":"AT","label":"Austria"},{"value":"BE","label":"Belgium"},{"value":"LU","label":"Luxembourg"},{"value":"PT","label":"Portugal"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"FI","label":"Finland"},{"value":"PL","label":"Poland"},{"value":"CZ","label":"Czechia"},{"value":"HU","label":"Hungary"},{"value":"RO","label":"Romania"},{"value":"GR","label":"Greece"},{"value":"UA","label":"Ukraine"},{"value":"TR","label":"Türkiye"},{"value":"AE","label":"United Arab Emirates"},{"value":"SA","label":"Saudi Arabia"},{"value":"QA","label":"Qatar"},{"value":"KW","label":"Kuwait"},{"value":"BH","label":"Bahrain"},{"value":"OM","label":"Oman"},{"value":"IL","label":"Israel"},{"value":"ZA","label":"South Africa"},{"value":"EG","label":"Egypt"},{"value":"MA","label":"Morocco"},{"value":"NG","label":"Nigeria"},{"value":"IN","label":"India"},{"value":"PK","label":"Pakistan"},{"value":"SG","label":"Singapore"},{"value":"HK","label":"Hong Kong"},{"value":"PH","label":"Philippines"},{"value":"MY","label":"Malaysia"},{"value":"ID","label":"Indonesia"},{"value":"JP","label":"Japan"},{"value":"KR","label":"South Korea"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"},{"value":"VN","label":"Vietnam"},{"value":"AU","label":"Australia"},{"value":"NZ","label":"New Zealand"},{"value":"BR","label":"Brazil"},{"value":"AR","label":"Argentina"},{"value":"CL","label":"Chile"},{"value":"CO","label":"Colombia"},{"value":"PE","label":"Peru"},{"value":"EC","label":"Ecuador"},{"value":"CR","label":"Costa Rica"},{"value":"PA","label":"Panama"},{"value":"UY","label":"Uruguay"},{"value":"VE","label":"Venezuela"}],"default":"US","example":"US"}],"returns":"jobs[]{jobkey, title, company, formatted_location, salary_min, salary_max, salary_period, posted_iso, description, indeed_skills, benefits, employment_types, job_level, apply_url, company_industry, company_url}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"company","description":"Look up a company on Indeed: profile (industry, size, revenue, HQ, founded year, description, website), reputation (overall rating, review count, CEO approval) and optionally the company's open jobs.","required_params":["company"],"optional_params":["country","include_jobs","max_jobs"],"params":[{"name":"company","type":"string","required":true,"description":"Company name or Indeed company slug (the part after indeed.com/cmp/).","on_invalid":"reject","example":"Microsoft"},{"name":"country","type":"enum","required":false,"description":"Indeed country site to search. Each country is a separate Indeed site with its own jobs.","on_invalid":"ignore","allowed_values":[{"value":"US","label":"United States"},{"value":"CA","label":"Canada"},{"value":"MX","label":"Mexico"},{"value":"UK","label":"United Kingdom"},{"value":"IE","label":"Ireland"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"ES","label":"Spain"},{"value":"IT","label":"Italy"},{"value":"NL","label":"Netherlands"},{"value":"CH","label":"Switzerland"},{"value":"AT","label":"Austria"},{"value":"BE","label":"Belgium"},{"value":"LU","label":"Luxembourg"},{"value":"PT","label":"Portugal"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"FI","label":"Finland"},{"value":"PL","label":"Poland"},{"value":"CZ","label":"Czechia"},{"value":"HU","label":"Hungary"},{"value":"RO","label":"Romania"},{"value":"GR","label":"Greece"},{"value":"UA","label":"Ukraine"},{"value":"TR","label":"Türkiye"},{"value":"AE","label":"United Arab Emirates"},{"value":"SA","label":"Saudi Arabia"},{"value":"QA","label":"Qatar"},{"value":"KW","label":"Kuwait"},{"value":"BH","label":"Bahrain"},{"value":"OM","label":"Oman"},{"value":"IL","label":"Israel"},{"value":"ZA","label":"South Africa"},{"value":"EG","label":"Egypt"},{"value":"MA","label":"Morocco"},{"value":"NG","label":"Nigeria"},{"value":"IN","label":"India"},{"value":"PK","label":"Pakistan"},{"value":"SG","label":"Singapore"},{"value":"HK","label":"Hong Kong"},{"value":"PH","label":"Philippines"},{"value":"MY","label":"Malaysia"},{"value":"ID","label":"Indonesia"},{"value":"JP","label":"Japan"},{"value":"KR","label":"South Korea"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"},{"value":"VN","label":"Vietnam"},{"value":"AU","label":"Australia"},{"value":"NZ","label":"New Zealand"},{"value":"BR","label":"Brazil"},{"value":"AR","label":"Argentina"},{"value":"CL","label":"Chile"},{"value":"CO","label":"Colombia"},{"value":"PE","label":"Peru"},{"value":"EC","label":"Ecuador"},{"value":"CR","label":"Costa Rica"},{"value":"PA","label":"Panama"},{"value":"UY","label":"Uruguay"},{"value":"VE","label":"Venezuela"}],"default":"US","example":"US"},{"name":"include_jobs","type":"boolean","required":false,"description":"Also list the company's open jobs.","on_invalid":"reject","default":true},{"name":"max_jobs","type":"integer","required":false,"description":"How many of the company's jobs to return (1–500).","on_invalid":"reject","default":50,"minimum":1,"maximum":500}],"returns":"company{name, industry, sectors, description, founded_year, headquarters, employee_range, revenue_range, website, rating, review_count, ceo_approval_pct, company_url} + jobs[]{title, formatted_location, salary_text, posted_relative, indeed_url, …}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"company/search","description":"Find companies on Indeed by name or keyword (optionally near a location). Returns a ranked list of companies with each one's overall rating, review count, industry sectors, logo and links to its Indeed profile, jobs, reviews and salaries pages.","required_params":["query"],"optional_params":["country","location","max_results"],"params":[{"name":"query","type":"string","required":true,"description":"Company name or keyword to search for (e.g. a name, industry or product).","on_invalid":"reject","example":"software","aliases":["keyword","q","name"]},{"name":"country","type":"enum","required":false,"description":"Indeed country site to search. Each country is a separate Indeed site with its own jobs.","on_invalid":"ignore","allowed_values":[{"value":"US","label":"United States"},{"value":"CA","label":"Canada"},{"value":"MX","label":"Mexico"},{"value":"UK","label":"United Kingdom"},{"value":"IE","label":"Ireland"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"ES","label":"Spain"},{"value":"IT","label":"Italy"},{"value":"NL","label":"Netherlands"},{"value":"CH","label":"Switzerland"},{"value":"AT","label":"Austria"},{"value":"BE","label":"Belgium"},{"value":"LU","label":"Luxembourg"},{"value":"PT","label":"Portugal"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"FI","label":"Finland"},{"value":"PL","label":"Poland"},{"value":"CZ","label":"Czechia"},{"value":"HU","label":"Hungary"},{"value":"RO","label":"Romania"},{"value":"GR","label":"Greece"},{"value":"UA","label":"Ukraine"},{"value":"TR","label":"Türkiye"},{"value":"AE","label":"United Arab Emirates"},{"value":"SA","label":"Saudi Arabia"},{"value":"QA","label":"Qatar"},{"value":"KW","label":"Kuwait"},{"value":"BH","label":"Bahrain"},{"value":"OM","label":"Oman"},{"value":"IL","label":"Israel"},{"value":"ZA","label":"South Africa"},{"value":"EG","label":"Egypt"},{"value":"MA","label":"Morocco"},{"value":"NG","label":"Nigeria"},{"value":"IN","label":"India"},{"value":"PK","label":"Pakistan"},{"value":"SG","label":"Singapore"},{"value":"HK","label":"Hong Kong"},{"value":"PH","label":"Philippines"},{"value":"MY","label":"Malaysia"},{"value":"ID","label":"Indonesia"},{"value":"JP","label":"Japan"},{"value":"KR","label":"South Korea"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"},{"value":"VN","label":"Vietnam"},{"value":"AU","label":"Australia"},{"value":"NZ","label":"New Zealand"},{"value":"BR","label":"Brazil"},{"value":"AR","label":"Argentina"},{"value":"CL","label":"Chile"},{"value":"CO","label":"Colombia"},{"value":"PE","label":"Peru"},{"value":"EC","label":"Ecuador"},{"value":"CR","label":"Costa Rica"},{"value":"PA","label":"Panama"},{"value":"UY","label":"Uruguay"},{"value":"VE","label":"Venezuela"}],"default":"US","example":"US"},{"name":"location","type":"string","required":false,"description":"Optional city or region to bias the company search.","on_invalid":"reject","example":"Seattle"},{"name":"max_results","type":"integer","required":false,"description":"How many companies to return (1–50, one page).","on_invalid":"reject","default":50,"minimum":1,"maximum":50}],"returns":"companies[]{name, company_slug, company_url, rating, review_count, sectors, logo_url, description, jobs_url, reviews_url, salaries_url}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"software","country":"US","max_results":20}},{"name":"company/reviews","description":"Get a company's employee reviews from Indeed (review text, overall rating, the 5 sub-ratings — work/life balance, compensation, management, culture, job security — job title, location and date). Pass the company name or Indeed /cmp slug; paginate with `start`.","required_params":["company"],"optional_params":["max_reviews","start","sort"],"params":[{"name":"company","type":"string","required":true,"description":"Company name or Indeed /cmp slug.","on_invalid":"reject","example":"Microsoft"},{"name":"max_reviews","type":"integer","required":false,"description":"How many reviews to return from this page (1–20).","on_invalid":"ignore","default":20,"minimum":1,"maximum":20},{"name":"start","type":"integer","required":false,"description":"Pagination offset (0, 20, 40 …).","on_invalid":"ignore","default":0,"minimum":0},{"name":"sort","type":"enum","required":false,"description":"How to order the reviews.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Most relevant (Indeed default)"},{"value":"helpfulness","label":"Most helpful first"},{"value":"rating_desc","label":"Highest rating first"},{"value":"rating_asc","label":"Lowest rating first"},{"value":"date_desc","label":"Newest first"}],"default":"relevance"}],"returns":"company, encoded_fcc_id, review_count_total, reviews[]{title, text, overall_rating, ratings{work_life_balance,compensation_benefits,management,culture_values,job_security_advancement}, job_title, location, submitted, current_employee, helpful, review_url}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"company/salaries","description":"Get a company's salary breakdown by job title from Indeed (average pay, pay period and the number of salaries reported per role). Pass the company name or Indeed /cmp slug.","required_params":["company"],"optional_params":[],"params":[{"name":"company","type":"string","required":true,"description":"Company name or Indeed /cmp slug.","on_invalid":"reject","example":"Microsoft"}],"returns":"company, salaries[]{job_title, average_pay, period, currency, salaries_reported, url}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"estimated_salary","description":"Estimate the market salary for a job title (optionally in a specific US location) from Indeed's salary data — median/mean/min/max/std + sample size + average cash bonus, plus the top-paying companies, top-paid cities, related job titles and a per-US-state average map. Both the location-specific estimate and the national estimate are returned.","required_params":["job_title"],"optional_params":["location"],"params":[{"name":"job_title","type":"string","required":true,"description":"The job title to estimate pay for (e.g. 'software engineer', 'registered nurse', 'truck driver').","on_invalid":"reject","example":"software engineer","aliases":["title","query"]},{"name":"location","type":"string","required":false,"description":"Optional US city or state to localise the estimate (e.g. 'Austin, TX', 'California'). Omit for the national figure.","on_invalid":"reject","example":"New York, NY"}],"returns":"job_title, location, currency, local_estimate{median,min,max,mean,std,sample_size,period,cash_bonus_mean}, national_estimate{…}, top_paying_companies[]{name,salary_mean,salary_period,review_count}, top_paid_cities[]{city,mean}, related_titles[], avg_salary_by_us_state{ST:amount}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"job_title":"software engineer"}}]},{"name":"instacart","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Instacart API scraper — instacart.com (United States) and instacart.ca (Canada): one grocery product's price at every retailer serving a postal code, the retailers that deliver there, and keyword search across Costco, Kroger, Safeway, Walmart, ALDI and hundreds more with was-price, loyalty-card price, promotions, unit price and stock level. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/instacart/v1","spec_available":true,"actions":[{"name":"search","description":"Search Instacart by keyword at a postal code. Products come back grouped by retailer, each priced at that retailer's store serving the postal code: regular price, was-price and discount, loyalty-card price, promotions such as Buy 1 get 1, unit price, weight-estimated package price, stock level including 'Likely out of stock', dietary badges and Instacart's best-seller badge. Optionally one retailer only.","required_params":["query","postal_code"],"optional_params":["country","retailer","max_retailers","per_retailer","page","include_unmatched","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper would type it on Instacart ('milk', 'ben jerrys').","on_invalid":"reject","example":"milk","aliases":["q","keyword","search"]},{"name":"postal_code","type":"string","required":true,"description":"The delivery postal code prices and stores are for: a 5-digit ZIP for us (90210), a Canadian postal code for ca (M5V 3L9).","on_invalid":"reject","example":"90210","aliases":["zip","zip_code","postcode"]},{"name":"country","type":"enum","required":false,"description":"Which Instacart: us (instacart.com, USD, 5-digit ZIP) or ca (instacart.ca, CAD, postal code like M5V 3L9).","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — instacart.com, prices in USD"},{"value":"ca","label":"Canada — instacart.ca, prices in CAD"}],"default":"us","example":"us"},{"name":"retailer","type":"string","required":false,"description":"Optional: one retailer, by the `slug` or `retailer_id` that `retailers` returns for the same postal code (costco, ralphs, walmart, aldi …).","on_invalid":"reject","example":"costco","aliases":["store","retailer_slug","retailer_id"]},{"name":"max_retailers","type":"integer","required":false,"description":"How many retailers' products to return per page (1-20, default 5), in a fixed order by Instacart retailer id so pages never overlap. Each retailer is priced at its own store.","on_invalid":"ignore","default":5,"minimum":1,"maximum":20},{"name":"per_retailer","type":"integer","required":false,"description":"Products per retailer (1-40, default 10). Instacart returns at most 40 matches per retailer for one query.","on_invalid":"ignore","default":10,"minimum":1,"maximum":40},{"name":"page","type":"integer","required":false,"description":"Page of retailers (1-based): page 2 returns the next `max_retailers` retailers. Read `retailers_total` and `has_more`.","on_invalid":"ignore","default":1,"minimum":1,"maximum":50},{"name":"include_unmatched","type":"boolean","required":false,"description":"Instacart fills no-match queries with unrelated products and does not flag them. false (default) drops rows that share no word with the query and counts them in `unmatched_dropped`; true keeps every row.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"groups[]{retailer{retailer_id,slug,name,shop_id,service_type,retailer_location_id}, items_total (matches at this retailer, ≤40), items[]{product_id, item_id, name, brand (lower-cased as Instacart publishes it on item rows), size, url, image, currency, price (the retailer's regular Instacart price; for weight-estimated packages the estimated package price), price_display, original_price (was-price, only when on sale), discount_percent, savings, loyalty_price (the with-loyalty-card price, when lower), loyalty_label, loyalty_card_offer, unit_price_text ('$0.09/fl oz', '$8.97 / lb'), size_text, price_is_estimate, estimated_weight_text, promotions[]{label ('Buy 1, get 1 free', 'Spend $20, save $4', 'Rollback'),type,coupon}, deal_terms ('Add 2 to qualify for deal', 'Sale ends in 2 days'), great_price, available, stock_level ('many_in_stock'|'in_stock'|'likely_out_of_stock'|'out_of_stock'), stock_label, likely_out_of_stock, sold_by ('each'|'weight'), weight_option, par_weight{quantity,unit}, max_order_quantity, on_sale, buy_one_get_one, coupon_available, store_brand, dietary[], nutrition_highlights[]{name,value,unit}, variant_values[], retailer_reference_code, retailer_lookup_code, badge ('Best seller'), retailer{retailer_id,slug,name,shop_id,service_type,retailer_location_id}}}, count, retailers_total, page, has_more, unmatched_dropped, query, location{country,postal_code,place,zone_id,latitude,longitude}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"milk","postal_code":"90210"}},{"name":"product/detail","description":"One Instacart product: name, brand, size, category and breadcrumb, description, ingredients, directions, warnings, every image, rating and rating count — and, with a postal code, its current price at every retailer selling it there (lowest first, with was-prices). Add a retailer for that store's full item record: stock level, unit price, loyalty price and promotions.","required_params":["product_id"],"optional_params":["postal_code","country","retailer","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Instacart product id (every row's `product_id`) or an instacart.com / instacart.ca /products/ URL.","on_invalid":"reject","example":"81103","aliases":["id","url"]},{"name":"postal_code","type":"string","required":false,"description":"Optional. With a postal code the product comes back with its price at every retailer that sells it there (`offers`). Without one, only the product record and Instacart's national 'starting at' price.","on_invalid":"reject","example":"90210","aliases":["zip","zip_code","postcode"]},{"name":"country","type":"enum","required":false,"description":"Which Instacart: us (instacart.com, USD, 5-digit ZIP) or ca (instacart.ca, CAD, postal code like M5V 3L9).","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — instacart.com, prices in USD"},{"value":"ca","label":"Canada — instacart.ca, prices in CAD"}],"default":"us","example":"us"},{"name":"retailer","type":"string","required":false,"description":"Optional: one retailer, by the `slug` or `retailer_id` that `retailers` returns for the same postal code (costco, ralphs, walmart, aldi …).","on_invalid":"reject","example":"costco","aliases":["store","retailer_slug","retailer_id"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id, name, brand, size, category{id,name}, url, description, details, ingredients, directions, nutrition_text, warnings, other_sections[]{title,text}, images[], breadcrumb[]{name,url}, rating (0-5), rating_count, rating_scale, rating_distribution{5..1}, starting_price (Instacart's national 'starting at' price, no postal code), starting_price_note, currency}, offers[]{retailer_id,slug,name,shop_id,service_types[],price,original_price,discount_percent,discount_text,loyalty_price,price_unit,source ('multi_shop' | 'store_item' — the store's own price for a retailer Instacart's comparison list left out, identical to that store's search row),comparable (false = the store sells a different pack, e.g. a 12-jar case),item_name,item_size,pack_count,price_each (set when a price far above the rest was checked against the store's item)} (lowest price first; only with postal_code), offer_price_unit ('lb' for a product Instacart sells by weight: every offer price is then per lb, not per package; null = per item), offer_count, lowest_price, highest_price (both over comparable offers only), offers_not_comparable, retailers_carrying, retailer_item{product_id, item_id, name, brand (lower-cased as Instacart publishes it on item rows), size, url, image, currency, price (the retailer's regular Instacart price; for weight-estimated packages the estimated package price), price_display, original_price (was-price, only when on sale), discount_percent, savings, loyalty_price (the with-loyalty-card price, when lower), loyalty_label, loyalty_card_offer, unit_price_text ('$0.09/fl oz', '$8.97 / lb'), size_text, price_is_estimate, estimated_weight_text, promotions[]{label ('Buy 1, get 1 free', 'Spend $20, save $4', 'Rollback'),type,coupon}, deal_terms ('Add 2 to qualify for deal', 'Sale ends in 2 days'), great_price, available, stock_level ('many_in_stock'|'in_stock'|'likely_out_of_stock'|'out_of_stock'), stock_label, likely_out_of_stock, sold_by ('each'|'weight'), weight_option, par_weight{quantity,unit}, max_order_quantity, on_sale, buy_one_get_one, coupon_available, store_brand, dietary[], nutrition_highlights[]{name,value,unit}, variant_values[], retailer_reference_code, retailer_lookup_code, badge ('Best seller'), retailer{retailer_id,slug,name,shop_id,service_type,retailer_location_id}} (only with retailer), location{country,postal_code,place,zone_id,latitude,longitude}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"81103","postal_code":"90210"}},{"name":"retailers","description":"The retailers Instacart serves at a postal code — supermarkets, warehouse clubs, pharmacies, liquor, pet and specialty stores — with their slug and id for search and product/detail, retailer type, categories, logo, and whether they deliver, offer pickup, or both.","required_params":["postal_code"],"optional_params":["country","service_type","category","max_rotations"],"params":[{"name":"postal_code","type":"string","required":true,"description":"The delivery postal code prices and stores are for: a 5-digit ZIP for us (90210), a Canadian postal code for ca (M5V 3L9).","on_invalid":"reject","example":"90210","aliases":["zip","zip_code","postcode"]},{"name":"country","type":"enum","required":false,"description":"Which Instacart: us (instacart.com, USD, 5-digit ZIP) or ca (instacart.ca, CAD, postal code like M5V 3L9).","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — instacart.com, prices in USD"},{"value":"ca","label":"Canada — instacart.ca, prices in CAD"}],"default":"us","example":"us"},{"name":"service_type","type":"enum","required":false,"description":"Which kind of store service to list.","on_invalid":"reject","allowed_values":[{"value":"all","label":"Delivery and pickup"},{"value":"delivery","label":"Delivery only"},{"value":"pickup","label":"Pickup only"}],"default":"all"},{"name":"category","type":"string","required":false,"description":"Optional: only retailers in this Instacart category (grocery, alcohol, pets, pharmacy, office …) as shown in each retailer's `categories`.","on_invalid":"reject","example":"grocery"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"retailers[]{retailer_id, slug, name, retailer_type, categories[], logo, storefront_url, services[]{service_type,shop_id,retailer_location_id}}, count, location{country,postal_code,place,zone_id,latitude,longitude}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"postal_code":"90210"}},{"name":"suggest","description":"Instacart search-box suggestions for a partial query at a postal code.","required_params":["query","postal_code"],"optional_params":["country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper would type it on Instacart ('milk', 'ben jerrys').","on_invalid":"reject","example":"milk","aliases":["q","keyword","search"]},{"name":"postal_code","type":"string","required":true,"description":"The delivery postal code prices and stores are for: a 5-digit ZIP for us (90210), a Canadian postal code for ca (M5V 3L9).","on_invalid":"reject","example":"90210","aliases":["zip","zip_code","postcode"]},{"name":"country","type":"enum","required":false,"description":"Which Instacart: us (instacart.com, USD, 5-digit ZIP) or ca (instacart.ca, CAD, postal code like M5V 3L9).","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — instacart.com, prices in USD"},{"value":"ca","label":"Canada — instacart.ca, prices in CAD"}],"default":"us","example":"us"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"suggestions[]{term,image}, query, location{country,postal_code,place,zone_id,latitude,longitude}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"milk","postal_code":"90210"}}]},{"name":"instagram","category":{"id":"social","title":"Social Media"},"title":"Instagram Public Data API — profiles, posts, reels, hashtags, comments and search (no login required, public content only)","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/instagram/v1","spec_available":true,"actions":[{"name":"profile","description":"public profile facts and first-page recent posts","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"Instagram handle without the @ (the name in instagram.com/<username>).","on_invalid":"reject","example":"nasa"}],"returns":"profile{} — username, full_name, biography, follower_count, following_count, post_count, is_verified/private/business, category, profile_pic, external_url, user_id, recent_posts[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"nike"}},{"name":"posts","description":"public profile grid posts, newest first, with max_id pagination","required_params":["username"],"optional_params":["limit","max_id","cursor","rich"],"params":[{"name":"username","type":"string","required":true,"description":"Instagram handle without the @ (the name in instagram.com/<username>).","on_invalid":"reject","example":"nasa"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":12,"example":12,"minimum":1,"maximum":50},{"name":"max_id","type":"string","required":false,"description":"Pagination cursor from a previous response's page_info.next_max_id (also accepted as 'cursor'). Omit for the first page.","on_invalid":"ignore","example":"","aliases":["cursor"]},{"name":"rich","type":"boolean","required":false,"description":"Read the richer surface: adds tagged_users, coauthor_producers, like_count, comment_count, timestamp, location and carousel media to every post. Costs noticeably more bandwidth per page and is slightly less reliable.","on_invalid":"ignore","default":false,"example":true,"aliases":["full","with_tags"]}],"returns":"posts[] (media_id, shortcode, media_type image/video/carousel, product_type, caption, accessibility_caption, display_url, is_video, carousel_media_count, user{user_id, username}) + page_info{next_max_id, has_next_page}. Newest first (pinned posts lead). A PRIVATE account returns ok with an empty posts[] (Instagram publishes no grid for it) — check profile.is_private to tell that from an account that simply has no posts; an unknown handle is NOT_FOUND. NOTE: Instagram no longer publishes like_count, comment_count or a timestamp on the public profile grid — those fields are returned by `post_info` for a given shortcode, and `reels` carries its counts. Instagram publishes no tagged users or collaborators on the grid either: set `rich: true` to read the surface that does, which adds tagged_users[], coauthor_producers[], like_count, comment_count, timestamp, location{} and carousel_media[] to every post at roughly 33x the bandwidth per page.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"username":"nike"}},{"name":"reels","description":"public profile reels tab, newest first, with max_id pagination","required_params":["username"],"optional_params":["limit","max_id","cursor"],"params":[{"name":"username","type":"string","required":true,"description":"Instagram handle without the @ (the name in instagram.com/<username>).","on_invalid":"reject","example":"nasa"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":12,"example":12,"minimum":1,"maximum":50},{"name":"max_id","type":"string","required":false,"description":"Pagination cursor from a previous response's page_info.next_max_id (also accepted as 'cursor'). Omit for the first page.","on_invalid":"ignore","example":"","aliases":["cursor"]}],"returns":"reels[] (media_id, shortcode, media_type, product_type, display_url, like_count, comment_count, play_count/view_count, user{user_id}) + page_info{max_id, next_max_id, has_next_page}. Engagement counts are published here; they are null with like_and_view_counts_hidden=true when the account has switched them off. The reels tab carries no caption — use `post_info` per shortcode for caption, timestamp and full media detail. A private account or one with no reels returns ok with an empty reels[]; an unknown handle is NOT_FOUND.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"username":"nike"}},{"name":"similar_accounts","description":"public related profiles from web_profile_info","required_params":["username"],"optional_params":["limit"],"params":[{"name":"username","type":"string","required":true,"description":"Instagram handle without the @ (the name in instagram.com/<username>).","on_invalid":"reject","example":"nasa"},{"name":"limit","type":"integer","required":false,"description":"Max related accounts to return (Instagram returns up to ~80).","on_invalid":"ignore","example":20,"minimum":1}],"returns":"accounts[] — related profiles (user_id, username, full_name, is_verified, profile_pic)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"nike"}},{"name":"search","description":"topsearch blended public users, hashtags, and places","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search term (matches users / hashtags / places).","on_invalid":"reject","example":"nasa"}],"returns":"users[], hashtags[], places[] — blended public topsearch results","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"users_search","description":"public user lookup by handle (exact / near-exact match)","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search term (matches users / hashtags / places).","on_invalid":"reject","example":"nasa"}],"returns":"users[] — matching public accounts (user_id, username, full_name, is_verified, follower_count, post_count). NOTE: logged-out access resolves the account whose handle matches the query (exact / near-exact). Full fuzzy 'find similar names' search is login-gated by Instagram and is not available without an account.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"hashtag_search","description":"topsearch public hashtags only","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search term (matches users / hashtags / places).","on_invalid":"reject","example":"nasa"}],"returns":"hashtags[] — matching tags (name, id, media_count, formatted_media_count)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"post_info","description":"maximally-complete public post/reel detail by shortcode (URL) or media_id","required_params":[],"optional_params":["shortcode","media_id"],"params":[{"name":"shortcode","type":"string","required":false,"description":"Post shortcode — the code in instagram.com/p/<shortcode>/ or /reel/<shortcode>/ (a full post/reel URL is also accepted). Provide shortcode OR media_id.","on_invalid":"ignore","example":"DZz4bjIjhdm"},{"name":"media_id","type":"string","required":false,"description":"Numeric media id (from a post's media_id field). Provide media_id OR shortcode.","on_invalid":"ignore","example":"3325034892012345678"}],"returns":"post{} — media_id, shortcode, media_type, caption, like_count, comment_count, view_count, display_url/video_url, dimensions, video_duration, accessibility_caption, owner, tagged_users[], location{}, music{audio_id,song,artist}, coauthor_producers[], and carousel_media[] (every image/video of an album). Richest detail comes from a shortcode; media_id resolves the same media.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"post_comments","description":"public comments for a post/reel by shortcode (URL) or media_id, with CURSOR pagination","required_params":[],"optional_params":["shortcode","media_id","limit","cursor"],"params":[{"name":"shortcode","type":"string","required":false,"description":"Post shortcode — the code in instagram.com/p/<shortcode>/ or /reel/<shortcode>/ (a full post/reel URL is also accepted). Provide shortcode OR media_id.","on_invalid":"ignore","example":"DZz4bjIjhdm"},{"name":"media_id","type":"string","required":false,"description":"Numeric media id (from a post's media_id field). Provide media_id OR shortcode.","on_invalid":"ignore","example":"3325034892012345678"},{"name":"limit","type":"integer","required":false,"description":"Comments per call (default 50; one call returns up to ~1200 within the time budget). For MORE, chunk with `cursor`.","on_invalid":"ignore","example":20,"minimum":1},{"name":"cursor","type":"string","required":false,"description":"Resume token from a previous call's `next_cursor` — page UNLIMITED depth across short calls (no timeout). Omit for page 1.","on_invalid":"ignore"}],"returns":"comments[] (comment_id, text, created_at, username, user{user_id,username,is_verified,profile_pic}) + comment_count (total on post) + returned_count + next_cursor (pass back as `cursor` for the next batch; null = exhausted) + has_more. Works on posts AND reels. Logged-out.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{}},{"name":"audio_media","description":"public reels feed that use a given audio/music track, with pagination","required_params":["audio_id"],"optional_params":["limit","max_id","cursor"],"params":[{"name":"audio_id","type":"string","required":true,"description":"Numeric audio/music id. Get it from a reel/post via post_info (post.music.audio_id) — every reel that uses a sound exposes one. Returns the public reels feed built on that sound.","on_invalid":"reject","example":"28125316597069162","aliases":["audio_cluster_id","music_id"]},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":12,"example":12,"minimum":1,"maximum":50},{"name":"max_id","type":"string","required":false,"description":"Pagination cursor from a previous response's page_info.next_max_id (also accepted as 'cursor'). Omit for the first page.","on_invalid":"ignore","example":"","aliases":["cursor"]}],"returns":"audio{audio_id, media_count, formatted_media_count, song_name, artist_name}, media[] (media_id, shortcode, caption, like/comment/play count, video/display url, user), page_info{max_id, has_next_page}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":null}]},{"name":"internet-archive","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Internet Archive API — search and scrape archive.org's open catalogue of free books, texts, audio, music, concerts, movies, TV, software, games and images: full-text search with mediatype/collection/creator/year filters, complete item metadata with every downloadable file and direct download URLs, collection browsing, user reviews and ratings, and in-book full-text 'search inside' — no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/internet-archive/v1","spec_available":true,"actions":[{"name":"search","description":"Search archive.org's catalogue. Filter by mediatype (texts/audio/movies/software/image/etree…), collection, creator, subject, language and year range; sort and paginate. Returns items with identifier, title, mediatype, creator, year, downloads, rating, collections and thumbnail/details URLs.","required_params":[],"optional_params":["query","mediatype","collection","creator","subject","language","year_from","year_to","sort","rows","page"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text search across titles, descriptions, creators and subjects. Accepts Lucene syntax (e.g. 'title:moon AND year:[1960 TO 1970]'). Optional if you pass a mediatype/collection/creator filter instead.","on_invalid":"reject","example":"apollo 11","aliases":["q"]},{"name":"mediatype","type":"enum","required":false,"description":"Filter to one archive.org media bucket: texts, audio, movies, software, image, etree (concerts), data, web, collection.","on_invalid":"ignore","allowed_values":[{"value":"texts","label":"Texts / books / documents"},{"value":"audio","label":"Audio / music / podcasts / radio"},{"value":"movies","label":"Video / movies / TV / film"},{"value":"software","label":"Software / games / apps"},{"value":"image","label":"Images / photos"},{"value":"etree","label":"Live music concerts (etree)"},{"value":"data","label":"Datasets"},{"value":"web","label":"Web / archived sites"},{"value":"collection","label":"Collections"},{"value":"account","label":"User accounts"}],"example":"audio"},{"name":"collection","type":"string","required":false,"description":"Restrict to items in a named collection (its identifier, e.g. 'nasa', 'librivoxaudio', 'prelinger', 'GratefulDead').","on_invalid":"ignore","example":"nasa"},{"name":"creator","type":"string","required":false,"description":"Restrict to items by a creator/author/artist name.","on_invalid":"ignore","example":"Mark Twain"},{"name":"subject","type":"string","required":false,"description":"Restrict to items tagged with a subject/topic keyword.","on_invalid":"ignore","example":"space exploration"},{"name":"language","type":"string","required":false,"description":"Restrict to a language (e.g. 'English', 'French', 'Spanish').","on_invalid":"ignore","example":"English"},{"name":"year_from","type":"integer","required":false,"description":"Only items from this year onward.","on_invalid":"ignore","example":1960},{"name":"year_to","type":"integer","required":false,"description":"Only items up to and including this year.","on_invalid":"ignore","example":1970},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Defaults to most-downloaded.","on_invalid":"ignore","allowed_values":[{"value":"downloads desc","label":"Most downloaded first (default)"},{"value":"downloads asc","label":"Least downloaded first"},{"value":"week desc","label":"Trending this week"},{"value":"publicdate desc","label":"Newest added first"},{"value":"publicdate asc","label":"Oldest added first"},{"value":"date desc","label":"Newest by item date"},{"value":"date asc","label":"Oldest by item date"},{"value":"avg_rating desc","label":"Highest rated first"},{"value":"titleSorter asc","label":"Title A→Z"},{"value":"titleSorter desc","label":"Title Z→A"}],"example":"downloads desc"},{"name":"rows","type":"integer","required":false,"description":"Results per page (1-100, default 25); clamped.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"page","type":"integer","required":false,"description":"Page number (1-based). Page until meta.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000}],"returns":"results[]{identifier, title, mediatype, creator[], year, date, description, downloads, item_size, collections[], subjects[], languages[], num_reviews, avg_rating, details_url, thumbnail_url} + meta{num_found, page, has_more}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"apollo 11"}},{"name":"item","description":"Full metadata for one archive.org item by identifier: title, creator, description, date, publisher, language, subjects, collections, license, rating — plus the COMPLETE file list (name, format, size, duration, source) with direct download URLs, and the item's reviews. Set include_files=false / include_reviews=false to slim the payload.","required_params":["identifier"],"optional_params":["include_files","include_reviews","files_limit"],"params":[{"name":"identifier","type":"string","required":true,"description":"The archive.org item identifier (the slug in archive.org/details/<identifier>). From a search result's 'identifier'.","on_invalid":"reject","example":"OTRR_Dragnet_Singles","aliases":["id","item"]},{"name":"include_files","type":"boolean","required":false,"description":"Include the full file list with download URLs (default true).","on_invalid":"ignore","default":true,"example":true},{"name":"include_reviews","type":"boolean","required":false,"description":"Include the item's reviews (default true).","on_invalid":"ignore","default":true,"example":true},{"name":"files_limit","type":"integer","required":false,"description":"Cap on files returned (1-2000, default 200); clamped.","on_invalid":"ignore","default":200,"example":200,"minimum":1,"maximum":2000}],"returns":"item{identifier, title, mediatype, creator[], description, date, publisher, language[], subjects[], collections[], licenseurl, uploader, num_reviews, avg_rating, item_size, files_count, files[]{name,format,size,length,source,download_url}, reviews[]{reviewer,stars,title,body,date}, details_url, thumbnail_url}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"identifier":"OTRR_Dragnet_Singles"}},{"name":"collection","description":"Browse the items inside an archive.org collection by its identifier (e.g. 'nasa', 'librivoxaudio', 'prelinger', 'GratefulDead'). Same rich item rows as search, paginated and sortable; optionally narrow by mediatype within the collection.","required_params":["collection"],"optional_params":["mediatype","query","sort","rows","page"],"params":[{"name":"collection","type":"string","required":true,"description":"The collection identifier to browse (from a search result's 'collections', or a known name).","on_invalid":"reject","example":"librivoxaudio","aliases":["id"]},{"name":"mediatype","type":"enum","required":false,"description":"Filter to one archive.org media bucket: texts, audio, movies, software, image, etree (concerts), data, web, collection.","on_invalid":"ignore","allowed_values":[{"value":"texts","label":"Texts / books / documents"},{"value":"audio","label":"Audio / music / podcasts / radio"},{"value":"movies","label":"Video / movies / TV / film"},{"value":"software","label":"Software / games / apps"},{"value":"image","label":"Images / photos"},{"value":"etree","label":"Live music concerts (etree)"},{"value":"data","label":"Datasets"},{"value":"web","label":"Web / archived sites"},{"value":"collection","label":"Collections"},{"value":"account","label":"User accounts"}],"example":"audio"},{"name":"query","type":"string","required":false,"description":"Free-text search across titles, descriptions, creators and subjects. Accepts Lucene syntax (e.g. 'title:moon AND year:[1960 TO 1970]'). Optional if you pass a mediatype/collection/creator filter instead.","on_invalid":"reject","example":"apollo 11","aliases":["q"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Defaults to most-downloaded.","on_invalid":"ignore","allowed_values":[{"value":"downloads desc","label":"Most downloaded first (default)"},{"value":"downloads asc","label":"Least downloaded first"},{"value":"week desc","label":"Trending this week"},{"value":"publicdate desc","label":"Newest added first"},{"value":"publicdate asc","label":"Oldest added first"},{"value":"date desc","label":"Newest by item date"},{"value":"date asc","label":"Oldest by item date"},{"value":"avg_rating desc","label":"Highest rated first"},{"value":"titleSorter asc","label":"Title A→Z"},{"value":"titleSorter desc","label":"Title Z→A"}],"example":"downloads desc"},{"name":"rows","type":"integer","required":false,"description":"Results per page (1-100, default 25); clamped.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"page","type":"integer","required":false,"description":"Page number (1-based). Page until meta.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000}],"returns":"results[] (same shape as search) + meta{num_found, page, has_more, collection}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"collection":"librivoxaudio"}},{"name":"reviews","description":"All public reviews and star ratings for one archive.org item: reviewer handle, star rating (0-5), review title, body and date. Reviews are embedded in the item record, so this returns every review in one call (no pagination needed).","required_params":["identifier"],"optional_params":[],"params":[{"name":"identifier","type":"string","required":true,"description":"The archive.org item identifier (the slug in archive.org/details/<identifier>). From a search result's 'identifier'.","on_invalid":"reject","example":"OTRR_Dragnet_Singles","aliases":["id","item"]}],"returns":"reviews[]{reviewer, title, body, stars, date} + meta{record_count, avg_rating, num_reviews}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"identifier":"OTRR_Dragnet_Singles"}},{"name":"files","description":"Just the downloadable files for one archive.org item (no heavy metadata/reviews): name, format, size, duration, source and a direct download URL for each. Useful for fetching the actual book PDF / MP3 / video / ZIP.","required_params":["identifier"],"optional_params":["format","files_limit"],"params":[{"name":"identifier","type":"string","required":true,"description":"The archive.org item identifier (the slug in archive.org/details/<identifier>). From a search result's 'identifier'.","on_invalid":"reject","example":"OTRR_Dragnet_Singles","aliases":["id","item"]},{"name":"format","type":"string","required":false,"description":"Optional case-insensitive substring filter on the file format (e.g. 'PDF', 'MP3', 'MPEG4', 'EPUB').","on_invalid":"ignore","example":"MP3"},{"name":"files_limit","type":"integer","required":false,"description":"Cap on files returned (1-5000, default 500); clamped.","on_invalid":"ignore","default":500,"example":500,"minimum":1,"maximum":5000}],"returns":"files[]{name, format, size, length, source, md5, download_url} + meta{record_count, files_count, server, dir}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"identifier":"OTRR_Dragnet_Singles"}},{"name":"search_inside","description":"Full-text 'search inside' one digitized book on archive.org: find a phrase within the book's OCR text and get the matching snippets with page numbers. The item must be a texts/book item with OCR (most scanned books are).","required_params":["identifier","query"],"optional_params":[],"params":[{"name":"identifier","type":"string","required":true,"description":"The archive.org item identifier (the slug in archive.org/details/<identifier>). From a search result's 'identifier'.","on_invalid":"reject","example":"OTRR_Dragnet_Singles","aliases":["id","item"]},{"name":"query","type":"string","required":true,"description":"The phrase to find inside the book's text.","on_invalid":"reject","example":"whale","aliases":["q"]}],"returns":"matches[]{text, page, par[]} + meta{record_count, query}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"identifier":"adventuresoftoms00twaiiala","query":"whitewash"}}]},{"name":"ip-geolocation","category":{"id":"utilities","title":"Utilities & AI"},"title":"IP Geolocation API — locate any IPv4/IPv6 address: country, region, city, coordinates, timezone, ASN, ISP and hosting/datacenter flag","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/ip-geolocation/v1","spec_available":true,"actions":[{"name":"lookup","description":"geolocate ONE IPv4/IPv6 → country/region/city/lat-lon/timezone/ASN/ISP/org + hosting flag","required_params":["ip"],"optional_params":["lang"],"params":[{"name":"ip","type":"string","required":true,"description":"A single IPv4 or IPv6 address to geolocate (e.g. 8.8.8.8 or 2001:4860:4860::8888).","on_invalid":"reject","example":"8.8.8.8","aliases":["address","query","ip_address"]},{"name":"lang","type":"string","required":false,"description":"Preferred language for place names (country/region/city), e.g. en, de, fr, es, ru, ja. Falls back to English when a locale name is unavailable.","on_invalid":"ignore","default":"en","example":"en"}],"returns":"flat record: status, country_code/name, region(+code), city, latitude, longitude, timezone, utc_offset, asn, as_org, isp, network, security{is_hosting,is_proxy,is_vpn,is_tor}, country{} metadata bundle","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"ip":"8.8.8.8"}},{"name":"batch","description":"geolocate up to 100 IPs in one call","required_params":["ips"],"optional_params":["lang"],"params":[{"name":"ips","type":"array","required":true,"description":"Up to 100 IPv4/IPv6 addresses. A JSON array, OR a comma/space/newline-separated string. Bad/private IPs are kept (per-item status) so one bad entry never fails the call.","on_invalid":"reject","example":["8.8.8.8","1.1.1.1","208.67.222.222"],"aliases":["addresses"]},{"name":"lang","type":"string","required":false,"description":"Preferred language for place names (country/region/city), e.g. en, de, fr, es, ru, ja. Falls back to English when a locale name is unavailable.","on_invalid":"ignore","default":"en","example":"en"}],"returns":"count, found_count, results[] (each the same flat record as lookup)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"ips":["8.8.8.8","1.1.1.1","192.168.0.1","nonsense"]}}]},{"name":"japan-re","category":{"id":"real-estate","title":"Real Estate"},"title":"Japan Real Estate API (SUUMO scraper) — rent & buy property listings across all 47 prefectures (Tokyo, Osaka, Kyoto, Fukuoka, Hokkaido…) with filters for price, area, station walk-time and building age, plus full listing detail (rent/deposit/key-money, madori layout, m², floor, orientation, structure, station access and photos) and a prefecture/area code lookup — no API key required","version":"2.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/japan-re/v1","spec_available":true,"actions":[{"name":"search","description":"Search SUUMO property listings in any of Japan's 47 prefectures — rentals or homes for sale (used house / used condo / land / new house) — filtered by max price (万円), min area (m²), max station walk-time, building age and a free-text station/area keyword. Paginate with page + max_pages.","required_params":["prefecture"],"optional_params":["listing_type","page","max_pages","max_price_man","min_area_m2","max_walk_minutes","building_age","keyword"],"params":[{"name":"prefecture","type":"enum","required":true,"description":"Prefecture to search — any of Japan's 47 prefectures by romaji slug (tokyo, osaka, kyoto, hokkaido, fukuoka…) or its kanji name (東京都, 大阪府).","on_invalid":"reject","allowed_values":[{"value":"hokkaido","label":"北海道 (Hokkaido)"},{"value":"aomori","label":"青森県 (Aomori)"},{"value":"iwate","label":"岩手県 (Iwate)"},{"value":"miyagi","label":"宮城県 (Miyagi)"},{"value":"akita","label":"秋田県 (Akita)"},{"value":"yamagata","label":"山形県 (Yamagata)"},{"value":"fukushima","label":"福島県 (Fukushima)"},{"value":"ibaraki","label":"茨城県 (Ibaraki)"},{"value":"tochigi","label":"栃木県 (Tochigi)"},{"value":"gunma","label":"群馬県 (Gunma)"},{"value":"saitama","label":"埼玉県 (Saitama)"},{"value":"chiba","label":"千葉県 (Chiba)"},{"value":"tokyo","label":"東京都 (Tokyo)"},{"value":"kanagawa","label":"神奈川県 (Kanagawa)"},{"value":"niigata","label":"新潟県 (Niigata)"},{"value":"toyama","label":"富山県 (Toyama)"},{"value":"ishikawa","label":"石川県 (Ishikawa)"},{"value":"fukui","label":"福井県 (Fukui)"},{"value":"yamanashi","label":"山梨県 (Yamanashi)"},{"value":"nagano","label":"長野県 (Nagano)"},{"value":"gifu","label":"岐阜県 (Gifu)"},{"value":"shizuoka","label":"静岡県 (Shizuoka)"},{"value":"aichi","label":"愛知県 (Aichi)"},{"value":"mie","label":"三重県 (Mie)"},{"value":"shiga","label":"滋賀県 (Shiga)"},{"value":"kyoto","label":"京都府 (Kyoto)"},{"value":"osaka","label":"大阪府 (Osaka)"},{"value":"hyogo","label":"兵庫県 (Hyogo)"},{"value":"nara","label":"奈良県 (Nara)"},{"value":"wakayama","label":"和歌山県 (Wakayama)"},{"value":"tottori","label":"鳥取県 (Tottori)"},{"value":"shimane","label":"島根県 (Shimane)"},{"value":"okayama","label":"岡山県 (Okayama)"},{"value":"hiroshima","label":"広島県 (Hiroshima)"},{"value":"yamaguchi","label":"山口県 (Yamaguchi)"},{"value":"tokushima","label":"徳島県 (Tokushima)"},{"value":"kagawa","label":"香川県 (Kagawa)"},{"value":"ehime","label":"愛媛県 (Ehime)"},{"value":"kochi","label":"高知県 (Kochi)"},{"value":"fukuoka","label":"福岡県 (Fukuoka)"},{"value":"saga","label":"佐賀県 (Saga)"},{"value":"nagasaki","label":"長崎県 (Nagasaki)"},{"value":"kumamoto","label":"熊本県 (Kumamoto)"},{"value":"oita","label":"大分県 (Oita)"},{"value":"miyazaki","label":"宮崎県 (Miyazaki)"},{"value":"kagoshima","label":"鹿児島県 (Kagoshima)"},{"value":"okinawa","label":"沖縄県 (Okinawa)"}],"example":"tokyo"},{"name":"listing_type","type":"enum","required":false,"description":"Transaction & property type. Legacy values sale_used_house / sale_used_condo still work.","on_invalid":"reject","allowed_values":[{"value":"rent","label":"Rentals (賃貸 chintai)"},{"value":"buy_house","label":"Used houses for sale (中古一戸建て)"},{"value":"buy_apartment","label":"Used condos/apartments for sale (中古マンション)"},{"value":"buy_land","label":"Land for sale (土地)"},{"value":"buy_new_house","label":"New houses for sale (新築一戸建て)"}],"default":"rent","example":"rent"},{"name":"page","type":"integer","required":false,"description":"1-based results page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"Fetch and merge this many pages from `page` onward (stops on an empty page). Each page ~30 listings.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":20},{"name":"max_price_man","type":"number","required":false,"description":"Maximum price in 万円 (man-yen, ×10,000 JPY). For rent this is the monthly rent ceiling (e.g. 10 = ¥100,000/mo); for sale the total price ceiling (e.g. 5000 = ¥50,000,000).","on_invalid":"ignore","example":10,"minimum":0,"aliases":["max_price"]},{"name":"min_area_m2","type":"number","required":false,"description":"Minimum floor/building area in square metres.","on_invalid":"ignore","example":25,"minimum":0,"aliases":["min_area"]},{"name":"max_walk_minutes","type":"integer","required":false,"description":"Maximum walking minutes from the nearest train station.","on_invalid":"ignore","example":10,"minimum":1,"maximum":60,"aliases":["max_walk"]},{"name":"building_age","type":"integer","required":false,"description":"Maximum building age in years (e.g. 10 = built within the last 10 years).","on_invalid":"ignore","example":10,"minimum":0,"maximum":100},{"name":"keyword","type":"string","required":false,"description":"Free-text filter — a station, line, ward/area or building name (Japanese works best, e.g. 新宿, 山手線, 渋谷区).","on_invalid":"ignore","example":"新宿","aliases":["q"]}],"returns":"items[]{listing_id, url, title_ja, address_ja, price_jpy, price_ja, madori, area_m2 (+land_area_m2/building_area_m2 for sale), station_access[], building_age_years, photos[]} + count + page + pages_fetched + has_next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"prefecture":"tokyo","listing_type":"rent","max_pages":1}},{"name":"detail","description":"Full detail for one SUUMO listing — rent/deposit/key-money or sale price, madori layout, floor area, floor, orientation, building structure & age, station access and the photo gallery. For RENT pass listing_id; for SALE pass the listing's `url` from a search result (SUUMO sale pages have no id-only URL). listing_type picks the right parser.","required_params":[],"optional_params":["listing_id","url","listing_type"],"params":[{"name":"listing_id","type":"string","required":false,"description":"SUUMO RENT listing id — the digits in a jnc_<id> URL, or a rent search result's listing_id. (For SALE listings pass `url` from the search result instead, since SUUMO sale pages have no id-only URL.)","on_invalid":"reject","example":"000107669299","aliases":["id"]},{"name":"url","type":"string","required":false,"description":"Full SUUMO listing URL (copy the `url` from a search result). REQUIRED for sale listings; optional for rent (listing_id works too).","on_invalid":"ignore","example":"https://suumo.jp/chukoikkodate/tokyo/sc_hachioji/nc_20015074/"},{"name":"listing_type","type":"enum","required":false,"description":"Transaction & property type. Legacy values sale_used_house / sale_used_condo still work.","on_invalid":"reject","allowed_values":[{"value":"rent","label":"Rentals (賃貸 chintai)"},{"value":"buy_house","label":"Used houses for sale (中古一戸建て)"},{"value":"buy_apartment","label":"Used condos/apartments for sale (中古マンション)"},{"value":"buy_land","label":"Land for sale (土地)"},{"value":"buy_new_house","label":"New houses for sale (新築一戸建て)"}],"default":"rent","example":"rent"}],"returns":"listing{} — full record (fields vary by rent vs sale; price_jpy, deposit_jpy, key_money_jpy, madori, area_m2, floor_ja, orientation_ja, structure_ja, building_age_years, station_access[], photos[])","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"listing_id":"000109252250"}},{"name":"areas","description":"List Japan's 47 prefectures with their romaji slug, kanji name and SUUMO region/JIS codes — use it to discover or validate the `prefecture` value before searching. Pass an optional query to filter by name.","required_params":[],"optional_params":["query"],"params":[{"name":"query","type":"string","required":false,"description":"Optional filter — match a prefecture by romaji or kanji name substring (e.g. 'osa' → osaka, '東京' → tokyo).","on_invalid":"ignore","example":"osa","aliases":["q"]}],"returns":"prefectures[]{slug, name_ja, ar, ta} + count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"listings/search","description":"Legacy name for `search`, kept so older integrations keep working. It runs the exact same code and returns the exact same body (verified byte-for-byte, 2026-08-28). New code should call `search`.","required_params":["prefecture"],"optional_params":["listing_type","page","max_pages","max_price_man","min_area_m2","max_walk_minutes","building_age","keyword"],"params":[{"name":"prefecture","type":"enum","required":true,"description":"Prefecture to search — any of Japan's 47 prefectures by romaji slug (tokyo, osaka, kyoto, hokkaido, fukuoka…) or its kanji name (東京都, 大阪府).","on_invalid":"reject","allowed_values":[{"value":"hokkaido","label":"北海道 (Hokkaido)"},{"value":"aomori","label":"青森県 (Aomori)"},{"value":"iwate","label":"岩手県 (Iwate)"},{"value":"miyagi","label":"宮城県 (Miyagi)"},{"value":"akita","label":"秋田県 (Akita)"},{"value":"yamagata","label":"山形県 (Yamagata)"},{"value":"fukushima","label":"福島県 (Fukushima)"},{"value":"ibaraki","label":"茨城県 (Ibaraki)"},{"value":"tochigi","label":"栃木県 (Tochigi)"},{"value":"gunma","label":"群馬県 (Gunma)"},{"value":"saitama","label":"埼玉県 (Saitama)"},{"value":"chiba","label":"千葉県 (Chiba)"},{"value":"tokyo","label":"東京都 (Tokyo)"},{"value":"kanagawa","label":"神奈川県 (Kanagawa)"},{"value":"niigata","label":"新潟県 (Niigata)"},{"value":"toyama","label":"富山県 (Toyama)"},{"value":"ishikawa","label":"石川県 (Ishikawa)"},{"value":"fukui","label":"福井県 (Fukui)"},{"value":"yamanashi","label":"山梨県 (Yamanashi)"},{"value":"nagano","label":"長野県 (Nagano)"},{"value":"gifu","label":"岐阜県 (Gifu)"},{"value":"shizuoka","label":"静岡県 (Shizuoka)"},{"value":"aichi","label":"愛知県 (Aichi)"},{"value":"mie","label":"三重県 (Mie)"},{"value":"shiga","label":"滋賀県 (Shiga)"},{"value":"kyoto","label":"京都府 (Kyoto)"},{"value":"osaka","label":"大阪府 (Osaka)"},{"value":"hyogo","label":"兵庫県 (Hyogo)"},{"value":"nara","label":"奈良県 (Nara)"},{"value":"wakayama","label":"和歌山県 (Wakayama)"},{"value":"tottori","label":"鳥取県 (Tottori)"},{"value":"shimane","label":"島根県 (Shimane)"},{"value":"okayama","label":"岡山県 (Okayama)"},{"value":"hiroshima","label":"広島県 (Hiroshima)"},{"value":"yamaguchi","label":"山口県 (Yamaguchi)"},{"value":"tokushima","label":"徳島県 (Tokushima)"},{"value":"kagawa","label":"香川県 (Kagawa)"},{"value":"ehime","label":"愛媛県 (Ehime)"},{"value":"kochi","label":"高知県 (Kochi)"},{"value":"fukuoka","label":"福岡県 (Fukuoka)"},{"value":"saga","label":"佐賀県 (Saga)"},{"value":"nagasaki","label":"長崎県 (Nagasaki)"},{"value":"kumamoto","label":"熊本県 (Kumamoto)"},{"value":"oita","label":"大分県 (Oita)"},{"value":"miyazaki","label":"宮崎県 (Miyazaki)"},{"value":"kagoshima","label":"鹿児島県 (Kagoshima)"},{"value":"okinawa","label":"沖縄県 (Okinawa)"}],"example":"tokyo"},{"name":"listing_type","type":"enum","required":false,"description":"Transaction & property type. Legacy values sale_used_house / sale_used_condo still work.","on_invalid":"reject","allowed_values":[{"value":"rent","label":"Rentals (賃貸 chintai)"},{"value":"buy_house","label":"Used houses for sale (中古一戸建て)"},{"value":"buy_apartment","label":"Used condos/apartments for sale (中古マンション)"},{"value":"buy_land","label":"Land for sale (土地)"},{"value":"buy_new_house","label":"New houses for sale (新築一戸建て)"}],"default":"rent","example":"rent"},{"name":"page","type":"integer","required":false,"description":"1-based results page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"Fetch and merge this many pages from `page` onward (stops on an empty page). Each page ~30 listings.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":20},{"name":"max_price_man","type":"number","required":false,"description":"Maximum price in 万円 (man-yen, ×10,000 JPY). For rent this is the monthly rent ceiling (e.g. 10 = ¥100,000/mo); for sale the total price ceiling (e.g. 5000 = ¥50,000,000).","on_invalid":"ignore","example":10,"minimum":0,"aliases":["max_price"]},{"name":"min_area_m2","type":"number","required":false,"description":"Minimum floor/building area in square metres.","on_invalid":"ignore","example":25,"minimum":0,"aliases":["min_area"]},{"name":"max_walk_minutes","type":"integer","required":false,"description":"Maximum walking minutes from the nearest train station.","on_invalid":"ignore","example":10,"minimum":1,"maximum":60,"aliases":["max_walk"]},{"name":"building_age","type":"integer","required":false,"description":"Maximum building age in years (e.g. 10 = built within the last 10 years).","on_invalid":"ignore","example":10,"minimum":0,"maximum":100},{"name":"keyword","type":"string","required":false,"description":"Free-text filter — a station, line, ward/area or building name (Japanese works best, e.g. 新宿, 山手線, 渋谷区).","on_invalid":"ignore","example":"新宿","aliases":["q"]}],"returns":"See `search`.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"prefecture":"tokyo"}},{"name":"listings/detail","description":"Legacy name for `detail`, kept so older integrations keep working. It runs the exact same code and returns the exact same body. New code should call `detail`.","required_params":[],"optional_params":["listing_id","url","listing_type"],"params":[{"name":"listing_id","type":"string","required":false,"description":"SUUMO RENT listing id — the digits in a jnc_<id> URL, or a rent search result's listing_id. (For SALE listings pass `url` from the search result instead, since SUUMO sale pages have no id-only URL.)","on_invalid":"reject","example":"000107669299","aliases":["id"]},{"name":"url","type":"string","required":false,"description":"Full SUUMO listing URL (copy the `url` from a search result). REQUIRED for sale listings; optional for rent (listing_id works too).","on_invalid":"ignore","example":"https://suumo.jp/chukoikkodate/tokyo/sc_hachioji/nc_20015074/"},{"name":"listing_type","type":"enum","required":false,"description":"Transaction & property type. Legacy values sale_used_house / sale_used_condo still work.","on_invalid":"reject","allowed_values":[{"value":"rent","label":"Rentals (賃貸 chintai)"},{"value":"buy_house","label":"Used houses for sale (中古一戸建て)"},{"value":"buy_apartment","label":"Used condos/apartments for sale (中古マンション)"},{"value":"buy_land","label":"Land for sale (土地)"},{"value":"buy_new_house","label":"New houses for sale (新築一戸建て)"}],"default":"rent","example":"rent"}],"returns":"See `detail`.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"jumia","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Jumia API scraper — Africa's largest marketplace in Egypt, Nigeria, Kenya, Morocco, Côte d'Ivoire, Ghana, Uganda and Senegal: search, categories, flash sales, full product records with seller score and other sellers' offers, reviews and suggestions, in local currency. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/jumia/v1","spec_available":true,"actions":[{"name":"search","description":"Search one Jumia storefront by keyword: Jumia SKU, title, brand, image, price in local currency with the struck price and discount, variant price range, rating and review count, Jumia Express flag, seller id, category path, campaign badge, stock label, other sellers' offer count and lowest price, and size variants. Sort by popularity, newest, price or rating; filter by price, minimum rating, minimum discount, Jumia Express and official stores. 40 products per page.","required_params":["query"],"optional_params":["country","language","page","sort","price_min","price_max","min_rating","min_discount","express_only","official_store_only","include_sponsored","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for. Jumia sometimes answers a keyword with a category page; that is followed and reported as `redirected_to`.","on_invalid":"reject","example":"iphone","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed.","on_invalid":"reject","allowed_values":[{"value":"eg","label":"Egypt (EGP)"},{"value":"ng","label":"Nigeria (NGN)"},{"value":"ke","label":"Kenya (KES)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"ci","label":"Côte d'Ivoire (XOF)"},{"value":"gh","label":"Ghana (GHS)"},{"value":"ug","label":"Uganda (UGX)"},{"value":"sn","label":"Senegal (XOF)"}],"default":"eg","example":"ng"},{"name":"language","type":"enum","required":false,"description":"Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English (eg, ng, ke, gh, ug)"},{"value":"fr","label":"French (ma, ci, sn)"},{"value":"ar","label":"Arabic (eg, ma)"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-50, 40 products per page (Jumia shows at most 50 pages). A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Order of results — only orderings Jumia offers.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"Jumia's default ranking"},{"value":"newest","label":"Newest arrivals"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"rating","label":"Best rated first"}],"default":"popular"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in the country's currency.","on_invalid":"reject","minimum":0},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars (1-4).","on_invalid":"reject","minimum":1,"maximum":4},{"name":"min_discount","type":"enum","required":false,"description":"Only products discounted by at least this percentage.","on_invalid":"reject","allowed_values":[{"value":"10","label":"10% off or more"},{"value":"20","label":"20% off or more"},{"value":"30","label":"30% off or more"},{"value":"40","label":"40% off or more"},{"value":"50","label":"50% off or more"}]},{"name":"express_only","type":"boolean","required":false,"description":"Only products shipped by Jumia Express.","on_invalid":"reject","default":false},{"name":"official_store_only","type":"boolean","required":false,"description":"Only products from official brand stores.","on_invalid":"reject","default":false},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep rows Jumia marks as sponsored (flagged `sponsored: true`). Off by default; `sponsored_dropped` counts what was removed.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id (Jumia SKU), jumia_id, product_group_id, title, name, brand, brand_key, url, image, price (number, local currency; the lowest variant price when sizes differ), price_max (highest variant price, else null), price_before_discount (struck price), price_before_discount_max, discount_percent, currency, search_index_rating, search_index_review_count (Jumia's search-index figures; product/detail carries the product page's own rating), rating_scale (5), jumia_express, buyable, seller_id, categories[], category_key, campaign (e.g. 'Jumia Festival Deal'), promotion (a conditional offer, never subtracted), stock_text, stock_quantity (only when a number is printed), other_offers{count, lowest_price}, variant_count, variants[]{variant_sku, name, buyable}, second_chance, sponsored}, count, total_results, total_pages, sponsored_dropped, breadcrumbs, currency, language, country, query, redirected_to","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone","country":"eg"}},{"name":"category/products","description":"Browse one Jumia category (or brand page) by its path, with the same product rows, sorts, filters and paging as `search`, plus the category breadcrumb.","required_params":["category"],"optional_params":["country","language","page","sort","price_min","price_max","min_rating","min_discount","express_only","official_store_only","include_sponsored","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"Jumia category path — the part of a category URL after the domain (https://www.jumia.com.ng/phones-tablets/ → phones-tablets). A full category URL is accepted. Paths differ per country (French storefronts use French paths); `breadcrumbs[].url` on a product returns them.","on_invalid":"reject","example":"phones-tablets","aliases":["category_path","url"]},{"name":"country","type":"enum","required":false,"description":"Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed.","on_invalid":"reject","allowed_values":[{"value":"eg","label":"Egypt (EGP)"},{"value":"ng","label":"Nigeria (NGN)"},{"value":"ke","label":"Kenya (KES)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"ci","label":"Côte d'Ivoire (XOF)"},{"value":"gh","label":"Ghana (GHS)"},{"value":"ug","label":"Uganda (UGX)"},{"value":"sn","label":"Senegal (XOF)"}],"default":"eg","example":"ng"},{"name":"language","type":"enum","required":false,"description":"Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English (eg, ng, ke, gh, ug)"},{"value":"fr","label":"French (ma, ci, sn)"},{"value":"ar","label":"Arabic (eg, ma)"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-50, 40 products per page (Jumia shows at most 50 pages). A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Order of results — only orderings Jumia offers.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"Jumia's default ranking"},{"value":"newest","label":"Newest arrivals"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"rating","label":"Best rated first"}],"default":"popular"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in the country's currency.","on_invalid":"reject","minimum":0},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars (1-4).","on_invalid":"reject","minimum":1,"maximum":4},{"name":"min_discount","type":"enum","required":false,"description":"Only products discounted by at least this percentage.","on_invalid":"reject","allowed_values":[{"value":"10","label":"10% off or more"},{"value":"20","label":"20% off or more"},{"value":"30","label":"30% off or more"},{"value":"40","label":"40% off or more"},{"value":"50","label":"50% off or more"}]},{"name":"express_only","type":"boolean","required":false,"description":"Only products shipped by Jumia Express.","on_invalid":"reject","default":false},{"name":"official_store_only","type":"boolean","required":false,"description":"Only products from official brand stores.","on_invalid":"reject","default":false},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep rows Jumia marks as sponsored (flagged `sponsored: true`). Off by default; `sponsored_dropped` counts what was removed.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id (Jumia SKU), jumia_id, product_group_id, title, name, brand, brand_key, url, image, price (number, local currency; the lowest variant price when sizes differ), price_max (highest variant price, else null), price_before_discount (struck price), price_before_discount_max, discount_percent, currency, search_index_rating, search_index_review_count (Jumia's search-index figures; product/detail carries the product page's own rating), rating_scale (5), jumia_express, buyable, seller_id, categories[], category_key, campaign (e.g. 'Jumia Festival Deal'), promotion (a conditional offer, never subtracted), stock_text, stock_quantity (only when a number is printed), other_offers{count, lowest_price}, variant_count, variants[]{variant_sku, name, buyable}, second_chance, sponsored}, count, total_results, total_pages, sponsored_dropped, breadcrumbs, currency, language, country, category","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"deals/flash-sales","description":"Jumia's current Flash Sales page for one storefront: the same product rows as `search`, including the stock label Jumia prints on flash-sale items, with sorts, filters and paging.","required_params":[],"optional_params":["country","language","page","sort","price_min","price_max","min_rating","min_discount","express_only","official_store_only","include_sponsored","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed.","on_invalid":"reject","allowed_values":[{"value":"eg","label":"Egypt (EGP)"},{"value":"ng","label":"Nigeria (NGN)"},{"value":"ke","label":"Kenya (KES)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"ci","label":"Côte d'Ivoire (XOF)"},{"value":"gh","label":"Ghana (GHS)"},{"value":"ug","label":"Uganda (UGX)"},{"value":"sn","label":"Senegal (XOF)"}],"default":"eg","example":"ng"},{"name":"language","type":"enum","required":false,"description":"Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English (eg, ng, ke, gh, ug)"},{"value":"fr","label":"French (ma, ci, sn)"},{"value":"ar","label":"Arabic (eg, ma)"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-50, 40 products per page (Jumia shows at most 50 pages). A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Order of results — only orderings Jumia offers.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"Jumia's default ranking"},{"value":"newest","label":"Newest arrivals"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"rating","label":"Best rated first"}],"default":"popular"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in the country's currency.","on_invalid":"reject","minimum":0},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars (1-4).","on_invalid":"reject","minimum":1,"maximum":4},{"name":"min_discount","type":"enum","required":false,"description":"Only products discounted by at least this percentage.","on_invalid":"reject","allowed_values":[{"value":"10","label":"10% off or more"},{"value":"20","label":"20% off or more"},{"value":"30","label":"30% off or more"},{"value":"40","label":"40% off or more"},{"value":"50","label":"50% off or more"}]},{"name":"express_only","type":"boolean","required":false,"description":"Only products shipped by Jumia Express.","on_invalid":"reject","default":false},{"name":"official_store_only","type":"boolean","required":false,"description":"Only products from official brand stores.","on_invalid":"reject","default":false},{"name":"include_sponsored","type":"boolean","required":false,"description":"Keep rows Jumia marks as sponsored (flagged `sponsored: true`). Off by default; `sponsored_dropped` counts what was removed.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id (Jumia SKU), jumia_id, product_group_id, title, name, brand, brand_key, url, image, price (number, local currency; the lowest variant price when sizes differ), price_max (highest variant price, else null), price_before_discount (struck price), price_before_discount_max, discount_percent, currency, search_index_rating, search_index_review_count (Jumia's search-index figures; product/detail carries the product page's own rating), rating_scale (5), jumia_express, buyable, seller_id, categories[], category_key, campaign (e.g. 'Jumia Festival Deal'), promotion (a conditional offer, never subtracted), stock_text, stock_quantity (only when a number is printed), other_offers{count, lowest_price}, variant_count, variants[]{variant_sku, name, buyable}, second_chance, sponsored}, count, total_results, total_pages, sponsored_dropped, breadcrumbs, currency, language, country","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"product/detail","description":"The full Jumia product record by SKU, numeric id or URL: title, brand, description, key features, what's in the box, gallery, specification table (model, weight, colour, material, barcode when published), price with struck price, discount and variant price range, availability and stock label, flash-sale status and end time, official-store and Jumia Express flags, promotions, return and warranty policy, rating and review count, the seller with its score, followers and performance grades, other sellers' offers, breadcrumb and every size variant with its own price and stock label.","required_params":["product_id"],"optional_params":["country","language","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Jumia product: the SKU every search row returns as `product_id` (e.g. AP848MP26KIKRNAFAMZ), the numeric id at the end of a product URL (…-134276913.html → 134276913), or a full Jumia product URL (its country is used when `country` is not given). A SKU costs one extra lookup; a URL or numeric id is read directly.","on_invalid":"reject","example":"AP848MP26KIKRNAFAMZ","aliases":["sku","id","url"]},{"name":"country","type":"enum","required":false,"description":"Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed.","on_invalid":"reject","allowed_values":[{"value":"eg","label":"Egypt (EGP)"},{"value":"ng","label":"Nigeria (NGN)"},{"value":"ke","label":"Kenya (KES)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"ci","label":"Côte d'Ivoire (XOF)"},{"value":"gh","label":"Ghana (GHS)"},{"value":"ug","label":"Uganda (UGX)"},{"value":"sn","label":"Senegal (XOF)"}],"default":"eg","example":"ng"},{"name":"language","type":"enum","required":false,"description":"Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English (eg, ng, ke, gh, ug)"},{"value":"fr","label":"French (ma, ci, sn)"},{"value":"ar","label":"Arabic (eg, ma)"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id (SKU), jumia_id, product_group_id, title, name, brand, url, description, key_features[], whats_in_the_box, images[], gtin (null unless Jumia publishes a barcode), model, weight_kg, color, main_material, production_country, shop_type, product_line, price (number, lowest variant price), price_max, price_before_discount, price_before_discount_max, discount_percent, currency, availability (in_stock|out_of_stock), stock_text, stock_quantity, flash_sale{status (active|upcoming), ends_at, starts_text}, official_store, official_store_label, campaign, jumia_express, promotions[] (conditional offers, never subtracted), delivery_note (for Jumia's default delivery location), policies[]{title, text}, rating, review_count, rating_scale, rating_count_page, seller{id, name, url, score_percent, followers, performance[]{metric, grade}}, featured_offer{price, price_before_discount, currency, seller}, offer_count, offers_lowest_price, other_offers[]{price, price_before_discount, currency, seller{name, url, score_percent}, warranty}, categories[], breadcrumbs[]{name, url}, variants[]{variant_sku, name, available, price, price_before_discount, discount_percent, stock_text, stock_quantity, stock_status}, country, language}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"https://www.jumia.com.eg/apple-iphone-17-pro-max-6.9-256gb-rom-ios-26-5g-cosmic-orange-134276913.html"}},{"name":"product/offers","description":"Every seller offering one Jumia product: the featured (buy-box) seller with its score, followers and performance grades, and each other seller's price, seller score and warranty, cheapest first, with the offer count Jumia shows.","required_params":["product_id"],"optional_params":["country","language","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Jumia product: the SKU every search row returns as `product_id` (e.g. AP848MP26KIKRNAFAMZ), the numeric id at the end of a product URL (…-134276913.html → 134276913), or a full Jumia product URL (its country is used when `country` is not given). A SKU costs one extra lookup; a URL or numeric id is read directly.","on_invalid":"reject","example":"AP848MP26KIKRNAFAMZ","aliases":["sku","id","url"]},{"name":"country","type":"enum","required":false,"description":"Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed.","on_invalid":"reject","allowed_values":[{"value":"eg","label":"Egypt (EGP)"},{"value":"ng","label":"Nigeria (NGN)"},{"value":"ke","label":"Kenya (KES)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"ci","label":"Côte d'Ivoire (XOF)"},{"value":"gh","label":"Ghana (GHS)"},{"value":"ug","label":"Uganda (UGX)"},{"value":"sn","label":"Senegal (XOF)"}],"default":"eg","example":"ng"},{"name":"language","type":"enum","required":false,"description":"Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English (eg, ng, ke, gh, ug)"},{"value":"fr","label":"French (ma, ci, sn)"},{"value":"ar","label":"Arabic (eg, ma)"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, jumia_id, title, brand, url, currency, price, availability, offer_count, offers_lowest_price} + offers[]{position, featured, price, price_before_discount, currency, seller{id, name, url, score_percent, followers, performance[]}, warranty} + count","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"https://www.jumia.com.eg/apple-iphone-17-pro-max-6.9-256gb-rom-ios-26-5g-cosmic-orange-134276913.html"}},{"name":"product/reviews","description":"Verified customer reviews of one Jumia product, 10 per page: average rating, number of ratings, star histogram, number of written reviews, and each review's stars, title, text, date, reviewer name as Jumia shows it and verified-purchase flag.","required_params":["product_id"],"optional_params":["country","language","page","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Jumia product: the SKU every search row returns as `product_id` (e.g. AP848MP26KIKRNAFAMZ), the numeric id at the end of a product URL (…-134276913.html → 134276913), or a full Jumia product URL (its country is used when `country` is not given). A SKU costs one extra lookup; a URL or numeric id is read directly.","on_invalid":"reject","example":"AP848MP26KIKRNAFAMZ","aliases":["sku","id","url"]},{"name":"country","type":"enum","required":false,"description":"Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed.","on_invalid":"reject","allowed_values":[{"value":"eg","label":"Egypt (EGP)"},{"value":"ng","label":"Nigeria (NGN)"},{"value":"ke","label":"Kenya (KES)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"ci","label":"Côte d'Ivoire (XOF)"},{"value":"gh","label":"Ghana (GHS)"},{"value":"ug","label":"Uganda (UGX)"},{"value":"sn","label":"Senegal (XOF)"}],"default":"eg","example":"ng"},{"name":"language","type":"enum","required":false,"description":"Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English (eg, ng, ke, gh, ug)"},{"value":"fr","label":"French (ma, ci, sn)"},{"value":"ar","label":"Arabic (eg, ma)"}]},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based, 10 reviews per page. Past the end → empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product_id, rating, rating_scale, rating_count, rating_histogram{1..5}, review_count, reviews[]{rating, title, body, date, author, verified_purchase}, count, page, total_pages, country, language","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"https://www.jumia.com.eg/apple-iphone-17-pro-max-6.9-256gb-rom-ios-26-5g-cosmic-orange-134276913.html"}},{"name":"search/suggest","description":"Jumia's search-box suggestions for a partial query in one storefront: completed search phrases and suggested official stores or brand pages.","required_params":["query"],"optional_params":["country","language","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The beginning of a search, as typed.","on_invalid":"reject","example":"ipho","aliases":["q","prefix"]},{"name":"country","type":"enum","required":false,"description":"Jumia storefront: eg Egypt (EGP), ng Nigeria (NGN), ke Kenya (KES), ma Morocco (MAD), ci Côte d'Ivoire (XOF), gh Ghana (GHS), ug Uganda (UGX), sn Senegal (XOF). Prices come back in that country's currency. Jumia Tunisia and Algeria are closed.","on_invalid":"reject","allowed_values":[{"value":"eg","label":"Egypt (EGP)"},{"value":"ng","label":"Nigeria (NGN)"},{"value":"ke","label":"Kenya (KES)"},{"value":"ma","label":"Morocco (MAD)"},{"value":"ci","label":"Côte d'Ivoire (XOF)"},{"value":"gh","label":"Ghana (GHS)"},{"value":"ug","label":"Uganda (UGX)"},{"value":"sn","label":"Senegal (XOF)"}],"default":"eg","example":"ng"},{"name":"language","type":"enum","required":false,"description":"Page language. Defaults to the storefront's own language (English, or French for Morocco, Côte d'Ivoire and Senegal). Arabic exists for Egypt and Morocco only.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English (eg, ng, ke, gh, ug)"},{"value":"fr","label":"French (ma, ci, sn)"},{"value":"ar","label":"Arabic (eg, ma)"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"query, suggestions[], stores[]{name, url, image}, other[], count, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone"}}]},{"name":"kabum","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"KaBuM! API — Brazil's biggest PC hardware and electronics retailer as JSON: product search with filters that bite, category browsing, full product detail with the PIX/cash price and every instalment plan, stock, ratings, marketplace seller and specs, plus a 20-product batch price lookup from kabum.com.br — no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/kabum/v1","spec_available":true,"actions":[{"name":"search","description":"Search KaBuM! by keyword. Every row carries BOTH Brazilian prices — `price_brl` (the instalment/card reference) and `cash_price_brl` (the à-vista PIX/boleto price) — plus stock, the instalment plan, whether KaBuM or a marketplace seller ships it, and the `product_id` every other action takes. `facets` in the response lists the brands and category facets this query accepts, so the next call can filter without guessing.","required_params":["query"],"optional_params":["brands","price_min","price_max","only_offers","only_kabum","only_prime","only_free_shipping","only_open_box","attributes","sort","page","limit"],"params":[{"name":"query","type":"string","required":true,"description":"What a Brazilian shopper would type: a product name, a model ('rtx 5070', 'ryzen 7 9800x3d'), or a category phrase in Portuguese ('ssd nvme', 'teclado mecanico').","on_invalid":"reject","example":"placa de video rtx 5070","aliases":["q","keyword","term"]},{"name":"brands","type":"array","required":false,"description":"Manufacturer names, exactly as `facets.brands` in a previous response spells them ('Kingston', 'ASUS', 'Gigabyte'). Several are OR-ed. A name KaBuM does not know returns zero results, not an error.","on_invalid":"ignore","example":["Kingston","Samsung"],"aliases":["brand","manufacturer"]},{"name":"price_min","type":"number","required":false,"description":"Minimum price in BRL (reais, not cents).","on_invalid":"ignore","example":100,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in BRL (reais, not cents).","on_invalid":"ignore","example":300,"minimum":0},{"name":"only_offers","type":"boolean","required":false,"description":"Only products KaBuM currently flags as on offer (ssd: 864 → 39 on 2026-09-23).","on_invalid":"ignore","default":false},{"name":"only_kabum","type":"boolean","required":false,"description":"Only KaBuM's own 1P stock, excluding marketplace sellers (ssd: 864 → 103).","on_invalid":"ignore","default":false},{"name":"only_prime","type":"boolean","required":false,"description":"Only products with a KaBuM Prime exclusive price.","on_invalid":"ignore","default":false},{"name":"only_free_shipping","type":"boolean","required":false,"description":"Only products KaBuM highlights as free shipping (ssd: 864 → 88).","on_invalid":"ignore","default":false},{"name":"only_open_box","type":"boolean","required":false,"description":"Only open-box (returned/repackaged) units.","on_invalid":"ignore","default":false},{"name":"attributes","type":"object","required":false,"description":"Category-specific facets, as `{facet name: [values]}` taken verbatim from `facets.attributes` of a previous response — e.g. {\"Memória\": [\"8 GB\"]} on graphics cards (447 → 79).","on_invalid":"ignore","example":{"Memória":["8 GB"]}},{"name":"sort","type":"enum","required":false,"description":"Result order. KaBuM silently ignores an order it does not know (an unknown value returns its default order with no error), so only the seven it actually applies are accepted here.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"KaBuM's own default order"},{"value":"most_searched","label":"Most searched first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"offers","label":"Products on offer first"},{"value":"newest","label":"Most recently added first"},{"value":"most_rated","label":"Most-rated first"},{"value":"brand","label":"By manufacturer name"}],"default":"relevance","example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. `total_results` and `total_pages` in the response tell you how far you can go.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page (1-120). The source serves at most 120 however many you ask for.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":120,"aliases":["page_size","per_page"]}],"returns":"products[]{product_id, title, url, brand, category_path, price_brl (card/instalment reference), cash_price_brl (the a-vista PIX/boleto price the site headlines), list_price_brl (pre-campaign reference, only while a campaign runs), old_price_brl, discount_percent, campaign{id, name, starts_at, ends_at, units_available}, installments{count, amount_brl, text}, in_stock, stock, rating_rounded, rating_count, sold_by_kabum, seller{seller_id, name, company, cnpj, state}, free_shipping, is_prime_exclusive, is_open_box, is_pre_order, on_offer, image}, total_results, total_pages, page, limit, sort, facets{brands[], categories[], attributes[], flags[], price_range}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"category","description":"Walk one KaBuM! category without a keyword — the way to build a price database for a whole department. Takes the category's URL path (`hardware/placa-de-video-vga`), supports the same filters and sorts as `search`, and returns the source's own breadcrumb so you know exactly which shelf you are reading.","required_params":["category"],"optional_params":["brands","price_min","price_max","only_offers","only_kabum","only_prime","only_free_shipping","only_open_box","attributes","sort","page","limit"],"params":[{"name":"category","type":"string","required":true,"description":"Category path as it appears in a kabum.com.br URL: 'hardware', 'hardware/placa-de-video-vga' or 'hardware/placa-de-video-vga/placa-de-video-amd'. A full kabum.com.br category URL is accepted too. Read a product's `category_slugs` to discover valid paths.","on_invalid":"reject","example":"hardware/placa-de-video-vga","aliases":["category_path","path","url"]},{"name":"brands","type":"array","required":false,"description":"Manufacturer names, exactly as `facets.brands` in a previous response spells them ('Kingston', 'ASUS', 'Gigabyte'). Several are OR-ed. A name KaBuM does not know returns zero results, not an error.","on_invalid":"ignore","example":["Kingston","Samsung"],"aliases":["brand","manufacturer"]},{"name":"price_min","type":"number","required":false,"description":"Minimum price in BRL (reais, not cents).","on_invalid":"ignore","example":100,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in BRL (reais, not cents).","on_invalid":"ignore","example":300,"minimum":0},{"name":"only_offers","type":"boolean","required":false,"description":"Only products KaBuM currently flags as on offer (ssd: 864 → 39 on 2026-09-23).","on_invalid":"ignore","default":false},{"name":"only_kabum","type":"boolean","required":false,"description":"Only KaBuM's own 1P stock, excluding marketplace sellers (ssd: 864 → 103).","on_invalid":"ignore","default":false},{"name":"only_prime","type":"boolean","required":false,"description":"Only products with a KaBuM Prime exclusive price.","on_invalid":"ignore","default":false},{"name":"only_free_shipping","type":"boolean","required":false,"description":"Only products KaBuM highlights as free shipping (ssd: 864 → 88).","on_invalid":"ignore","default":false},{"name":"only_open_box","type":"boolean","required":false,"description":"Only open-box (returned/repackaged) units.","on_invalid":"ignore","default":false},{"name":"attributes","type":"object","required":false,"description":"Category-specific facets, as `{facet name: [values]}` taken verbatim from `facets.attributes` of a previous response — e.g. {\"Memória\": [\"8 GB\"]} on graphics cards (447 → 79).","on_invalid":"ignore","example":{"Memória":["8 GB"]}},{"name":"sort","type":"enum","required":false,"description":"Result order. KaBuM silently ignores an order it does not know (an unknown value returns its default order with no error), so only the seven it actually applies are accepted here.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"KaBuM's own default order"},{"value":"most_searched","label":"Most searched first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"offers","label":"Products on offer first"},{"value":"newest","label":"Most recently added first"},{"value":"most_rated","label":"Most-rated first"},{"value":"brand","label":"By manufacturer name"}],"default":"relevance","example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. `total_results` and `total_pages` in the response tell you how far you can go.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page (1-120). The source serves at most 120 however many you ask for.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":120,"aliases":["page_size","per_page"]}],"returns":"products[] (same shape as search), breadcrumb[]{id, name, path}, total_results, total_pages, page, limit, sort, category, facets{…}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"product","description":"One product in full: both prices, the exact PIX price and EVERY instalment plan KaBuM offers (boleto, PIX, credit card 1-12x, NuPay) with the real amount per plan, live stock, the unrounded rating, the marketplace seller with its company name and CNPJ when it is not KaBuM's own stock, the spec sheet parsed into sections, warranty, weight and the Anatel/Inmetro codes. Two upstream calls are merged into this one answer.","required_params":["product_id"],"optional_params":["include_specs"],"params":[{"name":"product_id","type":"string","required":true,"description":"The numeric KaBuM product code (459144) or a kabum.com.br/produto/... URL. Every search row returns it.","on_invalid":"reject","example":"459144","aliases":["id","code","url"]},{"name":"include_specs","type":"boolean","required":false,"description":"Fetch the spec sheet, the unrounded rating and the regulatory codes (one extra upstream call, ~12 KB). Turn it off for a price-only read.","on_invalid":"ignore","default":true}],"returns":"product{…every search field…, rating, rating_rounded, pix_price_brl, payment_options[]{method, label, plans[]{installments, amount_brl, total_brl, interest_free, discount_percent, terms}}, specifications[]{name, values[]}, description, summary_ai, warranty, weight_grams, anatel_code, inmetro_code, limit_per_order, category_ids, category_slugs, images[], cross_sell_ids[], bought_together_ids[]}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"products","description":"Up to 20 products in ONE upstream call: both prices, the instalment plan, stock, rating and seller for each. This is how a catalogue of thousands is re-priced every morning without spending a call per product. Ids KaBuM no longer serves are simply absent and listed in `missing`.","required_params":["product_ids"],"optional_params":[],"params":[{"name":"product_ids","type":"array","required":true,"description":"Up to 20 KaBuM product codes or product URLs. Accepts a JSON array or a comma-separated string. The source returns at most 20 rows per call and silently drops the rest, so more than that is rejected here instead.","on_invalid":"reject","example":[459144,1027061],"maximum":20,"aliases":["ids","codes","product_id"]}],"returns":"products[] (same shape as search, without description/specs), requested, returned, missing[]","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"suggest","description":"What KaBuM's own search box suggests for a prefix — the phrases Brazilian shoppers actually type, straight from the site's autocomplete. ~200 bytes a call, so it is the cheap way to expand a keyword list before searching.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"A partial search phrase, at least 2 characters. KaBuM rejects a single character.","on_invalid":"reject","example":"ssd","aliases":["q","keyword","term","prefix"]}],"returns":"suggestions[] (plain strings), query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":null},{"name":"deals","description":"The products inside one of KaBuM's running campaigns (its 'promoção' pages). Same rows as `search`, with the campaign's own title. KaBuM publishes no campaign index, so the slugs that answered when this engine was built are listed on the parameter.","required_params":[],"optional_params":["campaign","page","limit","brands","price_min","price_max","only_kabum","sort"],"params":[{"name":"campaign","type":"enum","required":false,"description":"Which campaign to read. An unknown slug returns NOT_FOUND — KaBuM publishes no campaign index, so these are the ones verified live.","on_invalid":"reject","allowed_values":[{"value":"HARDWAREKABUM","label":"Hardware campaign"},{"value":"COMPUTADORKABUM","label":"Computers campaign"},{"value":"perifericoskabum","label":"Peripherals campaign"},{"value":"MUNDOGAMER","label":"Gaming campaign (widest)"},{"value":"ESPACOGAMER","label":"Gaming furniture campaign"}],"default":"HARDWAREKABUM","example":"HARDWAREKABUM","aliases":["promotion","slug"]},{"name":"brands","type":"array","required":false,"description":"Manufacturer names, exactly as `facets.brands` in a previous response spells them ('Kingston', 'ASUS', 'Gigabyte'). Several are OR-ed. A name KaBuM does not know returns zero results, not an error.","on_invalid":"ignore","example":["Kingston","Samsung"],"aliases":["brand","manufacturer"]},{"name":"price_min","type":"number","required":false,"description":"Minimum price in BRL (reais, not cents).","on_invalid":"ignore","example":100,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in BRL (reais, not cents).","on_invalid":"ignore","example":300,"minimum":0},{"name":"only_kabum","type":"boolean","required":false,"description":"Only KaBuM's own 1P stock, excluding marketplace sellers (ssd: 864 → 103).","on_invalid":"ignore","default":false},{"name":"sort","type":"enum","required":false,"description":"Result order. KaBuM silently ignores an order it does not know (an unknown value returns its default order with no error), so only the seven it actually applies are accepted here.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"KaBuM's own default order"},{"value":"most_searched","label":"Most searched first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"offers","label":"Products on offer first"},{"value":"newest","label":"Most recently added first"},{"value":"most_rated","label":"Most-rated first"},{"value":"brand","label":"By manufacturer name"}],"default":"relevance","example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. `total_results` and `total_pages` in the response tell you how far you can go.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page (1-120). The source serves at most 120 however many you ask for.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":120,"aliases":["page_size","per_page"]}],"returns":"products[] (same shape as search), campaign, campaign_title, total_results, total_pages, page, limit, facets{…}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":{}},{"name":"featured","description":"KaBuM's own curated front-page lists: `highlights` (what it is pushing right now) and `releases` (what has just arrived). Same rows as `search`. Useful for catching new SKUs and price moves without knowing a keyword.","required_params":[],"optional_params":["list","page","limit","brands","price_min","price_max","only_kabum","sort"],"params":[{"name":"list","type":"enum","required":false,"description":"Which curated list to read.","on_invalid":"reject","allowed_values":[{"value":"highlights","label":"KaBuM's highlighted products"},{"value":"releases","label":"Newly released products"}],"default":"highlights","example":"releases","aliases":["type","kind"]},{"name":"brands","type":"array","required":false,"description":"Manufacturer names, exactly as `facets.brands` in a previous response spells them ('Kingston', 'ASUS', 'Gigabyte'). Several are OR-ed. A name KaBuM does not know returns zero results, not an error.","on_invalid":"ignore","example":["Kingston","Samsung"],"aliases":["brand","manufacturer"]},{"name":"price_min","type":"number","required":false,"description":"Minimum price in BRL (reais, not cents).","on_invalid":"ignore","example":100,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in BRL (reais, not cents).","on_invalid":"ignore","example":300,"minimum":0},{"name":"only_kabum","type":"boolean","required":false,"description":"Only KaBuM's own 1P stock, excluding marketplace sellers (ssd: 864 → 103).","on_invalid":"ignore","default":false},{"name":"sort","type":"enum","required":false,"description":"Result order. KaBuM silently ignores an order it does not know (an unknown value returns its default order with no error), so only the seven it actually applies are accepted here.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"KaBuM's own default order"},{"value":"most_searched","label":"Most searched first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"offers","label":"Products on offer first"},{"value":"newest","label":"Most recently added first"},{"value":"most_rated","label":"Most-rated first"},{"value":"brand","label":"By manufacturer name"}],"default":"relevance","example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. `total_results` and `total_pages` in the response tell you how far you can go.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page (1-120). The source serves at most 120 however many you ask for.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":120,"aliases":["page_size","per_page"]}],"returns":"products[] (same shape as search), list, total_results, total_pages, page, limit, facets{…}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{}}]},{"name":"kaspi","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Kaspi.kz API scraper — Kazakhstan's #1 marketplace: search by keyword or category with Kaspi's sort orders and filters, and read every product with specifications, variants, rating breakdown, every merchant's price and delivery promise per city, reviews and seller profiles. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/kaspi/v1","spec_available":true,"actions":[{"name":"search","description":"Search Kaspi Магазин by keyword or browse a category, with Kaspi's five sort orders and its own filters (brand, price band, category-specific attributes). 12 products a page: product id, title, brand, URL, images, price in KZT, Kaspi bonus amount, instalment plan, rating and review count, category path, delivery speed. Page 1 also returns the total, the filter list with counts and the category tree.","required_params":[],"optional_params":["query","category","filters","sort","page","city","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword, as typed on kaspi.kz (Russian, Kazakh or Latin). Optional when `category` is given.","on_invalid":"reject","example":"iphone","aliases":["q","text","keyword"]},{"name":"category","type":"string","required":false,"description":"A Kaspi category id (Smartphones, Refrigerators, Headphones — the `category` values search returns in `categories`) or a category URL (https://kaspi.kz/shop/c/smartphones/).","on_invalid":"reject","example":"Smartphones","aliases":["category_url"]},{"name":"filters","type":"array","required":false,"description":"Filter value ids exactly as returned in available_filters[].values[].id, e.g. ':manufacturerName:Samsung', ':price:100 000 - 149 999 т'. Ids the site does not apply come back in `ignored_filters`.","on_invalid":"reject","example":[":manufacturerName:Samsung"]},{"name":"sort","type":"enum","required":false,"description":"Kaspi's own five search orders.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Popular (site default)"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"rating","label":"Highest rated"},{"value":"newest","label":"Newest"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based, 12 products per page (Kaspi's page size).","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"city","type":"string","required":false,"description":"Buyer city: a Kaspi city code (almaty, nur-sultan = Astana, shymkent, karaganda, aktobe, taraz, pavlodar, ust-kamenogorsk, semey, atyrau, kostanai, kyzylorda, uralsk, petropavlovsk, aktau, turkestan, taldykorgan …, 320 in total) or its numeric id (750000000). Delivery promises, the set of merchants that deliver and search availability follow the city. Unknown → INVALID_PARAM.","on_invalid":"ignore","default":"almaty","example":"almaty"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many exits to try for a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[{position, product_id, group_id (variant group id ending in 'b', else null), title, brand, url, image, images[], price (the listing's lowest-offer price; product/detail price_min is live), currency, bonus_amount (Kaspi bonus cashback, not a discount), price_after_bonus, installment{months, monthly_payment}, credit_available, rating, rating_scale, review_count, category_id, category_path[], delivery_duration, has_variants, brand_official_partner, top_merchant_id, stickers[], sold_by_unit, unit_label, listed_at}], count, page, page_size, total_results (page 1), total_pages (page 1), available_filters (page 1)[{key, title, type, values[{id, label, count, active}]}], applied_filters[], ignored_filters[], categories (page 1)[{category, title, count, active, depth}], category, category_title, completions[], sponsored_dropped, page_notice, city{id, code, name, name_ru}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"iphone"}},{"name":"product/detail","description":"One Kaspi product by id or URL: title, brand, images, category path, full specifications, description, variants (colour / size with their product ids), exact rating with 1-5 breakdown and counts, the cheapest price across merchants and the first page of merchant offers with price, pre-discount price, seller rating and delivery dates for the chosen city.","required_params":[],"optional_params":["product_id","url","city","offers_limit","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Kaspi product id (the number at the end of a product URL; search rows return it as product_id).","on_invalid":"reject","example":"113137790","aliases":["id","sku"]},{"name":"url","type":"string","required":false,"description":"Alternative to product_id: a kaspi.kz product URL.","on_invalid":"reject","example":"https://kaspi.kz/shop/p/apple-iphone-15-128gb-nanosim-esim-chernyi-113137790/","aliases":["product_url"]},{"name":"city","type":"string","required":false,"description":"Buyer city: a Kaspi city code (almaty, nur-sultan = Astana, shymkent, karaganda, aktobe, taraz, pavlodar, ust-kamenogorsk, semey, atyrau, kostanai, kyzylorda, uralsk, petropavlovsk, aktau, turkestan, taldykorgan …, 320 in total) or its numeric id (750000000). Delivery promises, the set of merchants that deliver and search availability follow the city. Unknown → INVALID_PARAM.","on_invalid":"ignore","default":"almaty","example":"almaty"},{"name":"offers_limit","type":"integer","required":false,"description":"How many merchant offers (cheapest first) to include, 1-50.","on_invalid":"reject","default":10,"minimum":1,"maximum":50},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many exits to try for a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id, title, name, brand, url, images[], category_path[], category_ids[], master_category, description, description_ai_generated, specifications[{group, name, code, value, unit}], refund_period_days, max_quantity_per_order, age_restricted, listed_at, size_table_code, group_id, variants[{product_id, attributes[{name, value, size_system}], selected, image}], rating, rating_scale, rating_count, review_count, review_photo_count, rating_breakdown{'5'..'1'}, price_min (cheapest live offer), price_max (only when every offer was read), currency, offers_total, offers_returned, offers[{position, seller{id, name, rating, rating_scale, review_count}, price, was_price (only when the merchant shows a higher pre-discount price), discount_percent, currency, seller_sku, title, delivery_duration (EXPRESS|TODAY|TOMORROW|TILL_2_DAYS|TILL_5_DAYS|TILL_7_DAYS|OTHER), delivery_type, earliest_delivery_at, pickup_at, postomat_at, kaspi_delivery, preorder_days, delivery_options[{type, delivery_at, days, cost, free_from_order_total, kaspi_delivery, intercity}]}], delivery_duration_counts{}, available (any offer in this city)}, city{id, code, name, name_ru}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"113137790"}},{"name":"product/offers","description":"Every merchant offer for one Kaspi product in a city, paged: seller with rating and review count, price, pre-discount price, delivery speed and dates for courier, pickup and postomat, delivery cost and free-delivery threshold, preorder days.","required_params":[],"optional_params":["product_id","url","city","sort","page","limit","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Kaspi product id (the number at the end of a product URL; search rows return it as product_id).","on_invalid":"reject","example":"113137790","aliases":["id","sku"]},{"name":"url","type":"string","required":false,"description":"Alternative to product_id: a kaspi.kz product URL.","on_invalid":"reject","example":"https://kaspi.kz/shop/p/apple-iphone-15-128gb-nanosim-esim-chernyi-113137790/","aliases":["product_url"]},{"name":"city","type":"string","required":false,"description":"Buyer city: a Kaspi city code (almaty, nur-sultan = Astana, shymkent, karaganda, aktobe, taraz, pavlodar, ust-kamenogorsk, semey, atyrau, kostanai, kyzylorda, uralsk, petropavlovsk, aktau, turkestan, taldykorgan …, 320 in total) or its numeric id (750000000). Delivery promises, the set of merchants that deliver and search availability follow the city. Unknown → INVALID_PARAM.","on_invalid":"ignore","default":"almaty","example":"almaty"},{"name":"sort","type":"enum","required":false,"description":"Kaspi's own three offer orders.","on_invalid":"reject","allowed_values":[{"value":"price","label":"Cheapest first"},{"value":"rating","label":"Best-rated merchant first"},{"value":"popular","label":"Most popular merchant first"}],"default":"price"},{"name":"page","type":"integer","required":false,"description":"Offer page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Offers per page, 1-50.","on_invalid":"reject","default":20,"minimum":1,"maximum":50},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many exits to try for a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product_id, offers[{position, seller{id, name, rating, rating_scale, review_count}, price, was_price (only when the merchant shows a higher pre-discount price), discount_percent, currency, seller_sku, title, delivery_duration (EXPRESS|TODAY|TOMORROW|TILL_2_DAYS|TILL_5_DAYS|TILL_7_DAYS|OTHER), delivery_type, earliest_delivery_at, pickup_at, postomat_at, kaspi_delivery, preorder_days, delivery_options[{type, delivery_at, days, cost, free_from_order_total, kaspi_delivery, intercity}]}], offers_returned, offers_total, total_pages, page, limit, sort, delivery_duration_counts{}, city{id, code, name, name_ru}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"product/reviews","description":"Reviews of one Kaspi product, paged: stars, date, text, pros and cons, helpful count, photos and the merchant it was bought from, plus the exact average, the 1-5 breakdown and the size of each review group. Reviewer names and order numbers are never returned.","required_params":[],"optional_params":["product_id","url","sort","filter","page","limit","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Kaspi product id (the number at the end of a product URL; search rows return it as product_id).","on_invalid":"reject","example":"113137790","aliases":["id","sku"]},{"name":"url","type":"string","required":false,"description":"Alternative to product_id: a kaspi.kz product URL.","on_invalid":"reject","example":"https://kaspi.kz/shop/p/apple-iphone-15-128gb-nanosim-esim-chernyi-113137790/","aliases":["product_url"]},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"Most helpful first (site default)"},{"value":"newest","label":"Newest first"}],"default":"popular"},{"name":"filter","type":"enum","required":false,"description":"Which reviews to list; `counts` returns the size of every group.","on_invalid":"reject","allowed_values":[{"value":"with_text","label":"Reviews with text (site default)"},{"value":"all","label":"All ratings"},{"value":"with_photos","label":"With photos"},{"value":"positive","label":"Positive"},{"value":"negative","label":"Negative"}],"default":"with_text"},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":5000},{"name":"limit","type":"integer","required":false,"description":"Reviews per page, 1-100.","on_invalid":"reject","default":20,"minimum":1,"maximum":100},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many exits to try for a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product_id, reviews[{review_id, rating, date, text, pros, cons, helpful_count, images[], seller{code, name}, edited}], reviews_returned, reviews_total (for the chosen filter), total_pages, page, limit, sort, filter, rating, rating_scale, rating_breakdown{'5'..'1'}, counts{all, with_text, with_photos, positive, negative}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"seller/detail","description":"A Kaspi merchant's public profile: name, logo, rating and review count, Kaspi status, the share of cancelled, returned and late orders, order-volume bracket and legal address.","required_params":["seller_id"],"optional_params":["city","max_rotations"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Kaspi merchant id, as returned in offers[].seller.id.","on_invalid":"reject","example":"30027560","aliases":["merchant_id"]},{"name":"city","type":"string","required":false,"description":"Buyer city: a Kaspi city code (almaty, nur-sultan = Astana, shymkent, karaganda, aktobe, taraz, pavlodar, ust-kamenogorsk, semey, atyrau, kostanai, kyzylorda, uralsk, petropavlovsk, aktau, turkestan, taldykorgan …, 320 in total) or its numeric id (750000000). Delivery promises, the set of merchants that deliver and search availability follow the city. Unknown → INVALID_PARAM.","on_invalid":"ignore","default":"almaty","example":"almaty"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many exits to try for a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"seller{seller_id, name, logo, active, rating, rating_scale, review_count, status, new_seller, cancelled_orders_percent, returned_orders_percent, late_delivery_percent, orders_total_bracket, legal_address}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"kaufland","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Kaufland marketplace API scraper — search kaufland.de, .cz, .sk, .pl and .at and read full product records: buy-box price with UVP and struck price kept apart, every seller's new and used offer with shipping, EAN, specifications, variants, ratings and reviews. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/kaufland/v1","spec_available":true,"actions":[{"name":"search","description":"Search a Kaufland storefront by keyword or browse a category, 40 rows per page: product id, title, brand, EAN, image, price with the site's struck price and the manufacturer's UVP as separate fields, unit price, coupon, condition (new / refurbished / used), seller and whether Kaufland itself sells it, shipping cost, delivery window, rating and review count, lowest used and refurbished offer price, and whether the row is a sponsored ad. Filter by price range, manufacturer, minimum rating, deals only or any storefront facet; sort the way the site does.","required_params":[],"optional_params":["query","category","country","page","sort","min_price","max_price","brand_id","min_rating","deals_only","filters","include_filters","include_sponsored","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"What to search for on the storefront, in its language ('staubsauger', 'kava', 'kawa'). Optional when `category` is given.","on_invalid":"reject","example":"kaffeevollautomat","aliases":["q","keyword","search_value"]},{"name":"category","type":"string","required":false,"description":"Browse (or narrow a search to) a category: its numeric id (5921) or a Kaufland category URL (…/c/kaffeepulver/~5921/). Ids come from `filters.categories`, `category` on rows and `breadcrumb` on product/detail.","on_invalid":"reject","example":"5921","aliases":["category_id","category_url"]},{"name":"country","type":"enum","required":false,"description":"Which Kaufland storefront to read. Currency follows the country: EUR for de, sk and at, CZK for cz, PLN for pl. A kaufland.* URL in product_id/category sets it automatically. Unknown values are rejected.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — kaufland.de (EUR)"},{"value":"cz","label":"Czechia — kaufland.cz (CZK)"},{"value":"sk","label":"Slovakia — kaufland.sk (EUR)"},{"value":"pl","label":"Poland — kaufland.pl (PLN)"},{"value":"at","label":"Austria — kaufland.at (EUR)"}],"default":"de","example":"de","aliases":["market"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. 40 rows per page; the site stops at 10 000 results (page 250).","on_invalid":"reject","default":1,"minimum":1,"maximum":250},{"name":"sort","type":"enum","required":false,"description":"Result order — the orderings the storefront itself offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Kaufland's default order (includes sponsored rows)"},{"value":"price_asc","label":"Price, lowest first"},{"value":"price_desc","label":"Price, highest first"},{"value":"rating","label":"Best customer rating first"},{"value":"newest","label":"Newest listings first"},{"value":"bestsellers","label":"Best sellers first"}],"default":"relevance"},{"name":"min_price","type":"number","required":false,"description":"Lowest price in the storefront currency (inclusive).","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in the storefront currency (inclusive).","on_invalid":"reject","minimum":0},{"name":"brand_id","type":"string","required":false,"description":"Only this manufacturer: the numeric `id` from `filters.brands` (51451 = Jacobs on kaufland.de), or `brand_id` from product/detail.","on_invalid":"reject","example":"51451","aliases":["manufacturer_id"]},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars (1-4).","on_invalid":"reject","minimum":1,"maximum":4},{"name":"deals_only","type":"boolean","required":false,"description":"Only products currently on a deal (the storefront's 'Angebote' filter).","on_invalid":"reject","default":false},{"name":"filters","type":"object","required":false,"description":"Advanced: extra storefront facets as {key: value}, using `filters.attributes[].key` and a `values[].value` from a previous search with include_filters=true (e.g. {\"3284\": \"1394137\"}).","on_invalid":"reject"},{"name":"include_filters","type":"boolean","required":false,"description":"Also return the facet panel (categories, manufacturers, price bands, attribute filters) for this search. One extra upstream call.","on_invalid":"reject","default":false},{"name":"include_sponsored","type":"boolean","required":false,"description":"Kaufland mixes paid (sponsored) products into the default order. Default false: they are left out and counted in sponsored_dropped. true: they are returned in place with sponsored: true.","on_invalid":"reject","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no product on page 1 contains a query word, Kaufland's rows are loose matches. Default false: results is empty and fallback_results_dropped counts them. true: they are returned apart, in fallback_results.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id, offer_id, title, brand, ean (GTIN-validated), url, image, images[], sponsored, price, currency, was_price (the storefront's struck price, null when none), discount_percent, rrp (UVP manufacturer's recommended price — NOT a was-price), rrp_discount_percent, unit_price{price, unit}, voucher{code_title, discount, discount_type, discount_amount, vouchers_total, vouchers_redeemed} (a coupon to redeem — NOT applied to price), price_with_voucher (the coupon price the product page headlines; null without a coupon), top_price, condition{key, code, is_new}, seller{id, name, company_name, is_kaufland}, shipping_cost, delivery{min_workdays, max_workdays, earliest_date, latest_date}, available, sold_out, rating (1-5, null when unrated), review_count, rating_scale, refurbished_offers_from_price (cheapest used/refurbished offer), category{id, name}, badges[]}, count (organic rows), sponsored_dropped, sponsored_included, unavailable_dropped, page, page_size (40), total_results (the site's count), total_results_capped (true when the site's 10 000 cap is hit), total_pages, has_more, page_notice, query, category_id, sort, country, currency, applied_filters, keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[] (opt-in), filters{categories[]{id, name}, brands[]{id, name}, price_bands[]{min, max}, min_rating[], attributes[]{key, name, type, unit, values[]{value, label}}} (with include_filters=true)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"kaffee"}},{"name":"product/detail","description":"The full Kaufland product record by id or URL: title, brand, EAN, MPN, category and breadcrumb, buy-box price with shipping cost and total, UVP and the site's struck price kept apart, unit price, coupon, condition of the buy-box offer, seller with return period and whether it is Kaufland itself, delivery window and ships-from country, every other seller's new and used/refurbished offer with shipping and total price, the cheapest offer vs the buy box, rating with per-star breakdown, all images, description, the full specifications table and colour/size variants.","required_params":["product_id"],"optional_params":["country","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Kaufland product id as returned in `product_id` by `search` (434682098), or a full kaufland.* product URL (…/product/434682098/). Ids are shared across storefronts, prices are not.","on_invalid":"reject","example":"434682098","aliases":["id","url","item_id"]},{"name":"country","type":"enum","required":false,"description":"Which Kaufland storefront to read. Currency follows the country: EUR for de, sk and at, CZK for cz, PLN for pl. A kaufland.* URL in product_id/category sets it automatically. Unknown values are rejected.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — kaufland.de (EUR)"},{"value":"cz","label":"Czechia — kaufland.cz (CZK)"},{"value":"sk","label":"Slovakia — kaufland.sk (EUR)"},{"value":"pl","label":"Poland — kaufland.pl (PLN)"},{"value":"at","label":"Austria — kaufland.at (EUR)"}],"default":"de","example":"de","aliases":["market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, url, title, brand, brand_id, brand_url, ean, eans[] (every GTIN the product carries), mpn, category{id, name}, breadcrumb[]{id, name, url}, price, currency, was_price, discount_percent, rrp, rrp_discount_percent, unit_price, voucher, price_with_voucher, top_price, in_stock, buy_box{offer_id, price, currency, shipping_cost, total_price, condition{key, code, is_new, seller_note}, seller{id, name, is_kaufland, return_period_days, shop_url}, delivery{text, max_workdays, earliest_date, latest_date, ships_from_country, fulfillment_type, next_day_available}, stock_quantity, other_new_offers, other_used_offers}, sold_by_kaufland, offers_summary{offers_count, new_offers_count, used_or_refurbished_offers_count, cheapest_offer, cheapest_new_offer, buy_box_is_cheapest_new}, offers[]{offer_id, is_buy_box, price, shipping_cost, total_price, currency, condition, seller, delivery, fulfillment_type}, refurbished_alternatives[], rating, review_count, rating_scale, rating_breakdown{'1'..'5'}, images[], description, specifications[]{id, name, value}, variants[]{dimension, dimension_name, options[]{title, product_id, selected, url}}, is_bestseller, adult_only, listed_in_countries[], country}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"434682098"}},{"name":"product/offers","description":"Every offer on one Kaufland product: each seller's new and used/refurbished offer with price, shipping cost, total price, condition and seller note, delivery window and return period, which offer holds the buy box, the cheapest offer and cheapest new offer by total price, and refurbished alternatives. Cheaper than product/detail when only prices and sellers are needed.","required_params":["product_id"],"optional_params":["country","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Kaufland product id as returned in `product_id` by `search` (434682098), or a full kaufland.* product URL (…/product/434682098/). Ids are shared across storefronts, prices are not.","on_invalid":"reject","example":"434682098","aliases":["id","url","item_id"]},{"name":"country","type":"enum","required":false,"description":"Which Kaufland storefront to read. Currency follows the country: EUR for de, sk and at, CZK for cz, PLN for pl. A kaufland.* URL in product_id/category sets it automatically. Unknown values are rejected.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — kaufland.de (EUR)"},{"value":"cz","label":"Czechia — kaufland.cz (CZK)"},{"value":"sk","label":"Slovakia — kaufland.sk (EUR)"},{"value":"pl","label":"Poland — kaufland.pl (PLN)"},{"value":"at","label":"Austria — kaufland.at (EUR)"}],"default":"de","example":"de","aliases":["market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product_id, url, country, currency, buy_box{…as in product/detail}, offers[]{offer_id, is_buy_box, price, shipping_cost, total_price, currency, condition{key, code, is_new, seller_note}, seller{id, name, is_kaufland, return_period_days, shop_url}, delivery{text, earliest_date, latest_date}, fulfillment_type}, offers_count, new_offers_count, used_or_refurbished_offers_count, cheapest_offer, cheapest_new_offer, buy_box_is_cheapest_new, refurbished_alternatives[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"434682098"}},{"name":"product/reviews","description":"Customer reviews of one Kaufland product: star rating, title, text, date, verified purchase, product-test flag, which storefront it was written on with any translation, plus the product's average rating, total review count, per-star breakdown and Kaufland's AI summary of the reviews. Sort newest, oldest or by stars; page through all of them.","required_params":["product_id"],"optional_params":["country","page","page_size","sort","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Kaufland product id as returned in `product_id` by `search` (434682098), or a full kaufland.* product URL (…/product/434682098/). Ids are shared across storefronts, prices are not.","on_invalid":"reject","example":"434682098","aliases":["id","url","item_id"]},{"name":"country","type":"enum","required":false,"description":"Which Kaufland storefront to read. Currency follows the country: EUR for de, sk and at, CZK for cz, PLN for pl. A kaufland.* URL in product_id/category sets it automatically. Unknown values are rejected.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — kaufland.de (EUR)"},{"value":"cz","label":"Czechia — kaufland.cz (CZK)"},{"value":"sk","label":"Slovakia — kaufland.sk (EUR)"},{"value":"pl","label":"Poland — kaufland.pl (PLN)"},{"value":"at","label":"Austria — kaufland.at (EUR)"}],"default":"de","example":"de","aliases":["market"]},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1-100, default 20).","on_invalid":"reject","default":20,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"rating_desc","label":"Highest star rating first"},{"value":"rating_asc","label":"Lowest star rating first"},{"value":"site_default","label":"Kaufland's default order (helpfulness score)"}],"default":"newest"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"reviews[]{review_id, rating, title, text, date (YYYY-MM-DD), verified_purchase, product_test, external_source, storefront, language, translated_title, translated_text, media_count, variant}, count, page, page_size, total_reviews, total_pages, has_more, sort, average_rating, rating_scale, rating_breakdown{'1'..'5'}, ai_summary, product_id, country","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"434682098"}},{"name":"search/suggest","description":"Kaufland's own search-box suggestions for a partial keyword on the chosen storefront.","required_params":["query"],"optional_params":["country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the shopper has typed so far (at least 2 characters).","on_invalid":"reject","example":"kaffee","aliases":["q","term","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Kaufland storefront to read. Currency follows the country: EUR for de, sk and at, CZK for cz, PLN for pl. A kaufland.* URL in product_id/category sets it automatically. Unknown values are rejected.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — kaufland.de (EUR)"},{"value":"cz","label":"Czechia — kaufland.cz (CZK)"},{"value":"sk","label":"Slovakia — kaufland.sk (EUR)"},{"value":"pl","label":"Poland — kaufland.pl (PLN)"},{"value":"at","label":"Austria — kaufland.at (EUR)"}],"default":"de","example":"de","aliases":["market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"suggestions[], count, query, country","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"kaffee"}}]},{"name":"kijiji","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Kijiji API — Canada's #1 classifieds (kijiji.ca): search the marketplace, cars and real estate, read the full listing with seller and category path, browse categories, autocomplete and a seller's other listings. Prices in CAD, English or French labels. No account, no browser; private sellers' data stays private.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/kijiji/v1","spec_available":true,"actions":[{"name":"search","description":"Search kijiji.ca listings across every category (Buy & Sell, Cars & Vehicles, Real Estate, Pets, Services …) by keyword, category, location or postal code + radius: listing id, title, price in CAD with its type (fixed, please contact, swap/trade, free), wanted or offered, city, province and postal prefix, posting date, private or dealer seller, vehicle and property details, photo, and the true total. Paid top ads come back separately. Filter by price, free / contact-only, wanted ads, seller type and any category filter (make, year, bedrooms …); sort by newest, oldest or price.","required_params":[],"optional_params":["query","category_id","location_id","postal_code","radius_km","page","sort","price_min","price_max","price_type","ad_type","seller_type","filters","include_facets","language","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword. Optional when category_id, location_id or postal_code narrows the search.","on_invalid":"reject","example":"mountain bike","aliases":["q","keyword","keywords"]},{"name":"category_id","type":"integer","required":false,"description":"kijiji category id from `categories` or a search's category_facets — e.g. 10 Buy & Sell, 644 Bikes, 27 Cars & Vehicles, 174 Cars & Trucks, 34 Real Estate, 37 Apartments & Condos for rent, 17220001 Free Stuff. 0 = all categories.","on_invalid":"reject","example":644,"minimum":0,"aliases":["category"]},{"name":"location_id","type":"integer","required":false,"description":"kijiji location id from a search's location_facets — provinces (9004 Ontario, 9001 Quebec, 9003 Alberta, 9007 British Columbia …) and cities/regions (1700273 City of Toronto, 1700281 Montreal …). 0 = all of Canada.","on_invalid":"reject","example":9004,"minimum":0,"aliases":["location"]},{"name":"postal_code","type":"string","required":false,"description":"Canadian postal code (M5V 3L9) or its first three characters (M5V). Searches around it within radius_km; rows then carry location.distance_m.","on_invalid":"reject","example":"M5V 3L9","aliases":["postcode","zip"]},{"name":"radius_km","type":"number","required":false,"description":"Search radius around postal_code, in km (1-1000).","on_invalid":"reject","default":10,"minimum":1,"maximum":1000,"aliases":["radius"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-100 (40 listings per page). kijiji serves no more than 100 pages.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order of results. A sort the site does not apply to this search is rejected instead of silently falling back to newest.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first (site default)"},{"value":"oldest","label":"Oldest first"},{"value":"price_asc","label":"Lowest price first — free and 'please contact' ads come first"},{"value":"price_desc","label":"Highest price first"}],"default":"newest"},{"name":"price_min","type":"number","required":false,"description":"Lowest asking price in CAD (whole dollars).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest asking price in CAD (whole dollars).","on_invalid":"reject","minimum":0},{"name":"price_type","type":"enum","required":false,"description":"Only give-away ads or only ads without a published price.","on_invalid":"reject","allowed_values":[{"value":"free","label":"Free / give-away only"},{"value":"contact","label":"'Please contact' only (no price shown)"}]},{"name":"ad_type","type":"enum","required":false,"description":"kijiji returns offers unless wanted ads are asked for. A wanted ad's price is the buyer's budget.","on_invalid":"reject","allowed_values":[{"value":"offer","label":"Offering (site default)"},{"value":"wanted","label":"Wanted — buyers looking for an item"}],"default":"offer"},{"name":"seller_type","type":"enum","required":false,"description":"Only private sellers or only dealers (categories that publish 'For Sale By').","on_invalid":"reject","allowed_values":[{"value":"owner","label":"Private owner"},{"value":"dealer","label":"Dealer / business"}]},{"name":"filters","type":"object","required":false,"description":"Category-specific filters by the site's own names, from filters_available (include_facets=true): a value (`{\"carmake\": \"honda\"}`), several values (`[\"honda\", \"toyota\"]`) or a range (`\"2015__2018\"` or `{\"min\": 2015, \"max\": 2018}`). A filter the site does not apply is rejected.","on_invalid":"reject","example":{"carmake":"honda","caryear":"2015__2018"}},{"name":"include_facets","type":"boolean","required":false,"description":"Also return category_facets, location_facets and filters_available with counts.","on_invalid":"reject","default":false},{"name":"language","type":"enum","required":false,"description":"Language of category names, attribute labels and values. Titles and descriptions stay as the seller wrote them.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"}],"default":"en","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, url, listing_format (standard|autos|real_estate — the site's record type, not the category), listing_type (offer|wanted), price (CAD, null unless an amount is published), currency, price_type (fixed|contact|swap_trade|give_away), is_free, price_before_drop, msrp, price_extras (e.g. PLUS_TAXES), price_rating (vehicles), category_id, location{location_id, location_name, city, province, postal_prefix, neighbourhood, distance_m — every seller; address, postal_code, nearest_intersection, latitude, longitude — businesses, or with include_pii}, posted_at, sorted_at, seller_type (private|business), seller_id, seller_rating, seller_verified, is_top_ad, ad_source, price_drop, highlighted, shipped_by_seller, description_excerpt, image, image_count, vehicle{make, model, trim, year, mileage_km, condition, body_type, transmission, drivetrain, fuel_type, colour, doors, seats, vin}, property{bedrooms, bathrooms, area_sqft, unit_type, furnished, pets_allowed, parking_spots, date_available, agreement_type, rented_by, utilities_included, smoking_permitted}, attributes[]{name, codes}, duplicate_of}, count, total_results, page, page_size, last_page, has_more, sort_applied, filters_applied[], category{category_id, name, path[]}, location{location_id, name}, radius_km, keywords, site_search_url, top_ads[] (paid placements, same row shape), category_facets[], location_facets[], filters_available[] (include_facets), currency","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"bike"}},{"name":"cars/search","description":"Search cars and trucks (and other vehicles) on kijiji.ca — Canada's largest used-car marketplace: make, model, trim, year, mileage in km, body type, transmission, drivetrain, fuel, colour, VIN, price in CAD with dealer extras (plus taxes, MSRP, kijiji's price rating) and dealer or private seller. Filter by make, model, year, mileage, body type, fuel, drivetrain, condition, price, seller type, location or postal code; sort by newest, oldest, price or mileage.","required_params":[],"optional_params":["make","model","year_min","year_max","mileage_min_km","mileage_max_km","body_type","fuel_type","drivetrain","condition","query","category_id","location_id","postal_code","radius_km","page","sort","price_min","price_max","price_type","ad_type","seller_type","filters","include_facets","language","max_rotations"],"params":[{"name":"make","type":"string","required":false,"description":"Make code as kijiji writes it (honda, toyota, mercedesbenz …; see filters_available).","on_invalid":"reject","example":"honda","aliases":["carmake"]},{"name":"model","type":"string","required":false,"description":"Model code (civic, corolla …).","on_invalid":"reject","example":"civic","aliases":["carmodel"]},{"name":"year_min","type":"integer","required":false,"description":"","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"mileage_min_km","type":"integer","required":false,"description":"","on_invalid":"reject","minimum":0},{"name":"mileage_max_km","type":"integer","required":false,"description":"","on_invalid":"reject","minimum":0},{"name":"body_type","type":"string","required":false,"description":"Body type code (sedan, suvcrossover, pickuptruck, coup, htchbck, conv, minivan …).","on_invalid":"reject","example":"suvcrossover"},{"name":"fuel_type","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"gas","label":"Gas"},{"value":"diesel","label":"Diesel"},{"value":"electric","label":"Electric"},{"value":"hybrid","label":"Hybrid"},{"value":"other","label":"Other"}]},{"name":"drivetrain","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"4x4","label":"4x4"},{"value":"awd","label":"AWD"},{"value":"fwd","label":"FWD"},{"value":"rwd","label":"RWD"}]},{"name":"condition","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"used","label":"Used"},{"value":"lease","label":"Lease takeover"},{"value":"damaged","label":"Damaged"}]},{"name":"category_id","type":"integer","required":false,"description":"Vehicle category, default 174 Cars & Trucks (27 = all Cars & Vehicles).","on_invalid":"reject","default":174,"minimum":0,"aliases":["category"]},{"name":"query","type":"string","required":false,"description":"Keyword. Optional when category_id, location_id or postal_code narrows the search.","on_invalid":"reject","example":"mountain bike","aliases":["q","keyword","keywords"]},{"name":"location_id","type":"integer","required":false,"description":"kijiji location id from a search's location_facets — provinces (9004 Ontario, 9001 Quebec, 9003 Alberta, 9007 British Columbia …) and cities/regions (1700273 City of Toronto, 1700281 Montreal …). 0 = all of Canada.","on_invalid":"reject","example":9004,"minimum":0,"aliases":["location"]},{"name":"postal_code","type":"string","required":false,"description":"Canadian postal code (M5V 3L9) or its first three characters (M5V). Searches around it within radius_km; rows then carry location.distance_m.","on_invalid":"reject","example":"M5V 3L9","aliases":["postcode","zip"]},{"name":"radius_km","type":"number","required":false,"description":"Search radius around postal_code, in km (1-1000).","on_invalid":"reject","default":10,"minimum":1,"maximum":1000,"aliases":["radius"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-100 (40 listings per page). kijiji serves no more than 100 pages.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order of results.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first (site default)"},{"value":"oldest","label":"Oldest first"},{"value":"price_asc","label":"Lowest price first — free and 'please contact' ads come first"},{"value":"price_desc","label":"Highest price first"},{"value":"mileage_asc","label":"Lowest mileage first"},{"value":"mileage_desc","label":"Highest mileage first"}],"default":"newest"},{"name":"price_min","type":"number","required":false,"description":"Lowest asking price in CAD (whole dollars).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest asking price in CAD (whole dollars).","on_invalid":"reject","minimum":0},{"name":"seller_type","type":"enum","required":false,"description":"Only private sellers or only dealers (categories that publish 'For Sale By').","on_invalid":"reject","allowed_values":[{"value":"owner","label":"Private owner"},{"value":"dealer","label":"Dealer / business"}]},{"name":"filters","type":"object","required":false,"description":"Category-specific filters by the site's own names, from filters_available (include_facets=true): a value (`{\"carmake\": \"honda\"}`), several values (`[\"honda\", \"toyota\"]`) or a range (`\"2015__2018\"` or `{\"min\": 2015, \"max\": 2018}`). A filter the site does not apply is rejected.","on_invalid":"reject","example":{"carmake":"honda","caryear":"2015__2018"}},{"name":"include_facets","type":"boolean","required":false,"description":"Also return category_facets, location_facets and filters_available with counts.","on_invalid":"reject","default":false},{"name":"language","type":"enum","required":false,"description":"Language of category names, attribute labels and values. Titles and descriptions stay as the seller wrote them.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"}],"default":"en","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, url, listing_format (standard|autos|real_estate — the site's record type, not the category), listing_type (offer|wanted), price (CAD, null unless an amount is published), currency, price_type (fixed|contact|swap_trade|give_away), is_free, price_before_drop, msrp, price_extras (e.g. PLUS_TAXES), price_rating (vehicles), category_id, location{location_id, location_name, city, province, postal_prefix, neighbourhood, distance_m — every seller; address, postal_code, nearest_intersection, latitude, longitude — businesses, or with include_pii}, posted_at, sorted_at, seller_type (private|business), seller_id, seller_rating, seller_verified, is_top_ad, ad_source, price_drop, highlighted, shipped_by_seller, description_excerpt, image, image_count, vehicle{make, model, trim, year, mileage_km, condition, body_type, transmission, drivetrain, fuel_type, colour, doors, seats, vin}, property{bedrooms, bathrooms, area_sqft, unit_type, furnished, pets_allowed, parking_spots, date_available, agreement_type, rented_by, utilities_included, smoking_permitted}, attributes[]{name, codes}, duplicate_of}, count, total_results, page, page_size, last_page, has_more, sort_applied, filters_applied[], category{category_id, name, path[]}, location{location_id, name}, radius_km, keywords, site_search_url, top_ads[] (paid placements, same row shape), category_facets[], location_facets[], filters_available[] (include_facets), currency","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"honda"}},{"name":"real_estate/search","description":"Search kijiji.ca real estate — apartments and condos for rent, houses for rent and for sale, rooms, land and commercial space: rent or price in CAD, bedrooms, bathrooms, size in sq ft, unit type, furnished, pets, parking, move-in date, utilities included, neighbourhood, and whether the owner or a property manager lists it. Filter by bedrooms, bathrooms, unit type, furnished, pets, size, price, landlord type, location or postal code; sort by newest, oldest or price.","required_params":[],"optional_params":["bedrooms","bathrooms","unit_type","furnished","pets_allowed","rented_by","area_min_sqft","area_max_sqft","query","category_id","location_id","postal_code","radius_km","page","sort","price_min","price_max","price_type","ad_type","seller_type","filters","include_facets","language","max_rotations"],"params":[{"name":"bedrooms","type":"string","required":false,"description":"Bedroom count as kijiji lists it: 0 (bachelor/studio), 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5.","on_invalid":"reject","example":"2"},{"name":"bathrooms","type":"number","required":false,"description":"Bathroom count (1, 1.5, 2 …).","on_invalid":"reject","minimum":1,"maximum":10},{"name":"unit_type","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"apartment","label":"Apartment"},{"value":"condo","label":"Condo"},{"value":"basement-apartment","label":"Basement apartment"},{"value":"house","label":"House"},{"value":"townhouse","label":"Townhouse"},{"value":"duplex-triplex","label":"Duplex / triplex"}]},{"name":"furnished","type":"boolean","required":false,"description":"","on_invalid":"reject"},{"name":"pets_allowed","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"1","label":"Yes"},{"value":"0","label":"No"},{"value":"limited","label":"Limited"}]},{"name":"rented_by","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"owner","label":"Owner"},{"value":"professional","label":"Professional / property manager"}]},{"name":"area_min_sqft","type":"integer","required":false,"description":"","on_invalid":"reject","minimum":0},{"name":"area_max_sqft","type":"integer","required":false,"description":"","on_invalid":"reject","minimum":0},{"name":"category_id","type":"integer","required":false,"description":"Real-estate category, default 34 (all real estate). 37 Apartments & Condos for rent, 30349001 For Rent, 35 Houses for Sale, 641 Land for Sale, 40 Commercial & Office Space — more in category_facets.","on_invalid":"reject","default":34,"minimum":0,"aliases":["category"]},{"name":"query","type":"string","required":false,"description":"Keyword. Optional when category_id, location_id or postal_code narrows the search.","on_invalid":"reject","example":"mountain bike","aliases":["q","keyword","keywords"]},{"name":"location_id","type":"integer","required":false,"description":"kijiji location id from a search's location_facets — provinces (9004 Ontario, 9001 Quebec, 9003 Alberta, 9007 British Columbia …) and cities/regions (1700273 City of Toronto, 1700281 Montreal …). 0 = all of Canada.","on_invalid":"reject","example":9004,"minimum":0,"aliases":["location"]},{"name":"postal_code","type":"string","required":false,"description":"Canadian postal code (M5V 3L9) or its first three characters (M5V). Searches around it within radius_km; rows then carry location.distance_m.","on_invalid":"reject","example":"M5V 3L9","aliases":["postcode","zip"]},{"name":"radius_km","type":"number","required":false,"description":"Search radius around postal_code, in km (1-1000).","on_invalid":"reject","default":10,"minimum":1,"maximum":1000,"aliases":["radius"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-100 (40 listings per page). kijiji serves no more than 100 pages.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order of results. A sort the site does not apply to this search is rejected instead of silently falling back to newest.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first (site default)"},{"value":"oldest","label":"Oldest first"},{"value":"price_asc","label":"Lowest price first — free and 'please contact' ads come first"},{"value":"price_desc","label":"Highest price first"}],"default":"newest"},{"name":"price_min","type":"number","required":false,"description":"Lowest asking price in CAD (whole dollars).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest asking price in CAD (whole dollars).","on_invalid":"reject","minimum":0},{"name":"filters","type":"object","required":false,"description":"Category-specific filters by the site's own names, from filters_available (include_facets=true): a value (`{\"carmake\": \"honda\"}`), several values (`[\"honda\", \"toyota\"]`) or a range (`\"2015__2018\"` or `{\"min\": 2015, \"max\": 2018}`). A filter the site does not apply is rejected.","on_invalid":"reject","example":{"carmake":"honda","caryear":"2015__2018"}},{"name":"include_facets","type":"boolean","required":false,"description":"Also return category_facets, location_facets and filters_available with counts.","on_invalid":"reject","default":false},{"name":"language","type":"enum","required":false,"description":"Language of category names, attribute labels and values. Titles and descriptions stay as the seller wrote them.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"}],"default":"en","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, url, listing_format (standard|autos|real_estate — the site's record type, not the category), listing_type (offer|wanted), price (CAD, null unless an amount is published), currency, price_type (fixed|contact|swap_trade|give_away), is_free, price_before_drop, msrp, price_extras (e.g. PLUS_TAXES), price_rating (vehicles), category_id, location{location_id, location_name, city, province, postal_prefix, neighbourhood, distance_m — every seller; address, postal_code, nearest_intersection, latitude, longitude — businesses, or with include_pii}, posted_at, sorted_at, seller_type (private|business), seller_id, seller_rating, seller_verified, is_top_ad, ad_source, price_drop, highlighted, shipped_by_seller, description_excerpt, image, image_count, vehicle{make, model, trim, year, mileage_km, condition, body_type, transmission, drivetrain, fuel_type, colour, doors, seats, vin}, property{bedrooms, bathrooms, area_sqft, unit_type, furnished, pets_allowed, parking_spots, date_available, agreement_type, rented_by, utilities_included, smoking_permitted}, attributes[]{name, codes}, duplicate_of}, count, total_results, page, page_size, last_page, has_more, sort_applied, filters_applied[], category{category_id, name, path[]}, location{location_id, name}, radius_km, keywords, site_search_url, top_ads[] (paid placements, same row shape), category_facets[], location_facets[], filters_available[] (include_facets), currency","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"listing","description":"The full kijiji.ca listing by id or URL: title, full description, price in CAD with its type, status (active, deleted, expired), wanted or offered, category path, every attribute with its label, every photo, video and virtual-tour links, city, province and postal prefix, posting and expiry dates, view count, vehicle details (make, model, year, km, VIN, dealer price extras and market price rating) or property details (bedrooms, bathrooms, size, utilities, neighbourhood walk/transit scores), and the seller — for businesses the dealer or agency name, website, profile and member-since date; for private sellers only type, member-since and listing count.","required_params":["listing_id"],"optional_params":["language","max_rotations"],"params":[{"name":"listing_id","type":"string","required":true,"description":"Listing id (the number at the end of a kijiji.ca/v-… URL) or the full listing URL.","on_invalid":"reject","example":"1743275135","aliases":["id","ad_id","url"]},{"name":"language","type":"enum","required":false,"description":"Language of category names, attribute labels and values. Titles and descriptions stay as the seller wrote them.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"}],"default":"en","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{listing_id, title, url, status (active|deleted|expired|…), is_active, listing_format, listing_type, price, currency, price_type, is_free, price_before_drop, msrp, price_extras, price_rating, market_average_price, description, category_id, category, category_path[]{category_id, name}, location{…}, neighbourhood{name, summary, walk_score, transit_score, cycle_score}, posted_at, sorted_at, expires_at, views, images[], image_count, video_url, virtual_tour_url, is_mls_listing, rental_badge, vehicle{…}, property{…}, attributes[]{name, codes, label, values}, flags{is_top_ad_listing, price_drop, highlighted, from_dealer, financing_available, trade_in_accepted, commission_free}, seller{type, id, name (businesses), verified, has_phone, member_since, listing_count, profile_url, website_url, account_type}}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"kijiji.ca's category tree one level at a time, with live listing counts: the sub-categories of a category (all of Canada or one location), plus the locations below the chosen one and the filters that category supports. Pass a node's category_id back to walk down.","required_params":[],"optional_params":["category_id","location_id","query","language","max_rotations"],"params":[{"name":"category_id","type":"integer","required":false,"description":"kijiji category id from `categories` or a search's category_facets — e.g. 10 Buy & Sell, 644 Bikes, 27 Cars & Vehicles, 174 Cars & Trucks, 34 Real Estate, 37 Apartments & Condos for rent, 17220001 Free Stuff. 0 = all categories.","on_invalid":"reject","example":644,"minimum":0,"aliases":["category"]},{"name":"location_id","type":"integer","required":false,"description":"kijiji location id from a search's location_facets — provinces (9004 Ontario, 9001 Quebec, 9003 Alberta, 9007 British Columbia …) and cities/regions (1700273 City of Toronto, 1700281 Montreal …). 0 = all of Canada.","on_invalid":"reject","example":9004,"minimum":0,"aliases":["location"]},{"name":"query","type":"string","required":false,"description":"Optional keyword: counts are then for that keyword.","on_invalid":"reject","example":"bike","aliases":["q"]},{"name":"language","type":"enum","required":false,"description":"Language of category names, attribute labels and values. Titles and descriptions stay as the seller wrote them.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"}],"default":"en","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"category{category_id, name, path[]}, categories[]{category_id, name, count}, count, total_results, locations[]{location_id, name, count}, filters_available[]{name, label, group, kind, values[], min, max}, location{location_id, name}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"kijiji.ca search autocomplete: completed keywords for a partial term, each with the categories it is most often searched in.","required_params":["query"],"optional_params":["language","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The partial keyword.","on_invalid":"reject","example":"mountain bi","aliases":["q","prefix"]},{"name":"language","type":"enum","required":false,"description":"Language of category names, attribute labels and values. Titles and descriptions stay as the seller wrote them.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"}],"default":"en","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"suggestions[]{keyword, categories[]{category_id, name}}, count, query","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"bike"}},{"name":"seller_listings","description":"All current listings of one kijiji.ca seller (a dealer, agency or private seller), newest first: listing id, title, price, city, category and photo — with the business name for dealers.","required_params":["seller_id"],"optional_params":["page","language","max_rotations"],"params":[{"name":"seller_id","type":"string","required":true,"description":"The seller id from a search row (seller_id) or listing (seller.id).","on_invalid":"reject","example":"1013972214","aliases":["poster_id","profile_id"]},{"name":"page","type":"integer","required":false,"description":"Page, 20 listings per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"language","type":"enum","required":false,"description":"Language of category names, attribute labels and values. Titles and descriptions stay as the seller wrote them.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"}],"default":"en","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"seller{id, type, name (businesses), listing_count, member_since, profile_url}, results[]{listing_id, title, url, price, price_type, is_free, city, category_id, image, posted_at, is_top_ad}, count, page, has_more","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"kleinanzeigen","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Kleinanzeigen API scraper — search Germany's #1 classifieds (kleinanzeigen.de): listings with prices, photos & attributes, full listing detail, similar ads, category tree, live filter facets, location autocomplete, seller profiles & inventory. No account needed; German locale, seller PII redacted.","version":"0.3.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/kleinanzeigen/v1","spec_available":true,"actions":[{"name":"search","description":"Search Kleinanzeigen classifieds by keyword and/or category with price, location + radius, seller-type and sort filters. Returns normalized listings (title, price, photos, location, seller type) with the true total. Page pagination.","required_params":[],"optional_params":["query","category_id","category_slug","location_id","radius","location","price_min","price_max","seller_type","sort","page"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword. (search needs query OR category_id/category_slug.)","on_invalid":"reject","example":"iphone 13"},{"name":"category_id","type":"integer","required":false,"description":"Numeric category id (the c<NNN> in a category URL; discover via the categories action).","on_invalid":"ignore","example":161},{"name":"category_slug","type":"string","required":false,"description":"Category slug for sorted/HTML browse, e.g. handy-telefon (from a category URL s-<slug>).","on_invalid":"reject"},{"name":"location_id","type":"integer","required":false,"description":"Location id from the location_suggestions action (enables radius search).","on_invalid":"ignore","example":3331},{"name":"radius","type":"integer","required":false,"description":"Search radius in km around location_id (e.g. 10, 20, 50).","on_invalid":"ignore","example":20},{"name":"location","type":"string","required":false,"description":"City/postal-code SLUG for the result URL. It is cosmetic on the current search page — measured 2026-09-05, a city name alone still returns all of Germany. To actually restrict by area pass location_id (from location_suggestions) plus radius.","on_invalid":"reject","example":"Berlin"},{"name":"price_min","type":"integer","required":false,"description":"Minimum price in EUR (whole euros).","on_invalid":"ignore","example":100},{"name":"price_max","type":"integer","required":false,"description":"Maximum price in EUR.","on_invalid":"ignore","example":500},{"name":"seller_type","type":"enum","required":false,"description":"Filter by seller type. privat = private, gewerblich = commercial dealer.","on_invalid":"ignore","allowed_values":[{"value":"privat","label":"Private seller"},{"value":"gewerblich","label":"Commercial dealer"}],"example":"privat"},{"name":"sort","type":"enum","required":false,"description":"Result ordering. 'newest' = most recently posted first; omit for Kleinanzeigen's default relevance ordering.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Newest first"}],"example":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"listings[] (adid, title, price, location, images, seller_type, posted_date), total, page, has_more, next_page","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone"}},{"name":"listing","description":"Full listing detail by url, slug or adid: title, price, description, all photos, attributes (e.g. car specs), category breadcrumb, seller id & badges, posted date.","required_params":[],"optional_params":["url","slug","adid"],"params":[{"name":"url","type":"string","required":false,"description":"Full Kleinanzeigen listing URL. (listing needs url OR slug OR adid.)","on_invalid":"reject","example":"https://www.kleinanzeigen.de/s-anzeige/.../3372412834-173-1563"},{"name":"slug","type":"string","required":false,"description":"Listing slug/path (the s-anzeige/... part).","on_invalid":"reject"},{"name":"adid","type":"integer","required":false,"description":"Numeric ad id (from a search result's adid).","on_invalid":"ignore"}],"returns":"listing{} — title, price, description, images, attributes, breadcrumb, seller_id, seller_badges, posted_date","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.kleinanzeigen.de/s-anzeige/.../3372412834-173-1563"}},{"name":"similar","description":"Related/similar listings shown on an ad's detail page (\"Das könnte dich auch interessieren\") — by url, slug or adid.","required_params":[],"optional_params":["url","slug","adid"],"params":[{"name":"url","type":"string","required":false,"description":"Full listing URL. (similar needs url OR slug OR adid.)","on_invalid":"reject","example":"https://www.kleinanzeigen.de/s-anzeige/.../308066172-226-6444"},{"name":"slug","type":"string","required":false,"description":"Listing slug/path.","on_invalid":"reject"},{"name":"adid","type":"integer","required":false,"description":"Numeric ad id of the source listing — the shortest locator (get one from the search action's adid).","on_invalid":"ignore","example":308066172}],"returns":"listings[] — related ads (adid, title, price, location, image)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"adid":308066172}},{"name":"categories","description":"Full Kleinanzeigen category tree (id, name, nested children) for discovering category_id values to use in search.","required_params":[],"optional_params":[],"params":[],"returns":"categories[] — nested {id, name, children[]}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"filters","description":"Live filter facets for a query/category from the search filter tree: category, location (state) and attribute facets, each with a result count — so you know which filter values are available and how many listings match.","required_params":[],"optional_params":["query","category_id"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to scope facets to (filters needs query OR category_id).","on_invalid":"reject","example":"iphone 13"},{"name":"category_id","type":"integer","required":false,"description":"Category id to scope facets to.","on_invalid":"ignore","example":161}],"returns":"category_facets[], location_facets[], attribute_facets[] (each {name, count, url/value}), total","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone"}},{"name":"location_suggestions","description":"Autocomplete location names + ids for a partial query — use the returned location_id with search's location_id + radius.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Partial location text to autocomplete (e.g. Munc).","on_invalid":"reject","example":"Berlin"}],"returns":"suggestions[] — {location_id, name}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Berlin"}},{"name":"user_listings","description":"All active listings for a seller (by user/seller id), with page pagination.","required_params":["user_id"],"optional_params":["page"],"params":[{"name":"user_id","type":"integer","required":true,"description":"Seller user/seller id (a listing's seller_id).","on_invalid":"ignore","example":92546099},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"listings[] for this seller, user_id, page, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"user_id":92546099}},{"name":"seller","description":"Public seller profile by user/seller id: display name (redacted by default), member since, reputation badges, rating count, and listing count.","required_params":["user_id"],"optional_params":[],"params":[{"name":"user_id","type":"integer","required":true,"description":"Seller user/seller id.","on_invalid":"ignore","example":92546099}],"returns":"seller{} — seller_id, name (redacted), active_since, badges, rating_count, listing_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"user_id":92546099}}]},{"name":"kream","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"KREAM API scraper — KREAM (kream.co.kr), South Korea's sneaker and streetwear resale market: search products, read the live market (lowest ask, highest bid, last trade, premium over release price) overall and per size with fast-delivery prices apart, recent trades, price charts, categories. Prices in KRW. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/kream/v1","spec_available":true,"actions":[{"name":"search","description":"Search KREAM by keyword. Each product comes with its immediate-buy price (lowest ask), its discount against the release price, English and Korean names, brand, style code, category, fast-delivery availability and wish / review / trade counts. Sort by popularity, price, premium, wishes, reviews or release date and filter by brand, category, gender, shoe or clothing size, price range, delivery type and below-release-price. KREAM DRAW entries are removed unless you ask for them.","required_params":["query"],"optional_params":["page","sort","category_id","brand","gender","shoe_size","clothing_size","price_min","price_max","delivery","hide_sold_out","below_release_price","include_draws","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as typed on kream.co.kr: a brand, a model, a style code ('DD1391-100') or Korean text ('나이키'). KREAM corrects misspellings on its own — read `query_used` and `corrected`.","on_invalid":"reject","example":"nike","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. KREAM returns 50 products per page; `has_more` says whether another page exists. Measured on 'nike' (42,489 results): pages 1-500 all distinct, page 999 empty.","on_invalid":"ignore","default":1,"minimum":1,"maximum":1000},{"name":"sort","type":"enum","required":false,"description":"Result order. `sort_applied` is KREAM's own confirmation of the order used.","on_invalid":"reject","allowed_values":[{"value":"recommended","label":"KREAM's default order (추천순)"},{"value":"popular","label":"Most sold (인기순)"},{"value":"popular_men","label":"Most popular with men"},{"value":"popular_women","label":"Most popular with women"},{"value":"premium_desc","label":"Highest price over release price first"},{"value":"premium_asc","label":"Lowest price over release price first"},{"value":"lowest_ask","label":"Lowest immediate-buy price first"},{"value":"highest_bid","label":"Highest immediate-sell price first"},{"value":"most_wished","label":"Most wish-listed first"},{"value":"most_reviewed","label":"Most reviewed first"},{"value":"newest_release","label":"Newest release date first (upcoming releases included)"}]},{"name":"category_id","type":"array","required":false,"description":"Only these KREAM categories — ids from `categories` (1 = sneakers, 34 = all shoes). Several ids are OR-ed.","on_invalid":"reject","example":["1"],"aliases":["category_ids"]},{"name":"brand","type":"array","required":false,"description":"Only these brands, by KREAM's English brand name ('Nike', 'New Balance', 'Jordan'). Several brands are OR-ed.","on_invalid":"reject","example":["New Balance"],"aliases":["brands","brand_name"]},{"name":"gender","type":"enum","required":false,"description":"Only products for this gender.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Men"},{"value":"women","label":"Women"},{"value":"kids","label":"Kids"}]},{"name":"shoe_size","type":"array","required":false,"description":"Only products with this shoe size in stock, in millimetres as KREAM lists them ('250', '270'). Prices on the rows become that size's prices.","on_invalid":"reject","example":["270"]},{"name":"clothing_size","type":"array","required":false,"description":"Only products with this clothing size ('S', 'M', 'L', 'XL', or a waist size such as '30'). Prices on the rows become that size's prices.","on_invalid":"reject","example":["M"]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in KRW (inclusive). KREAM keeps a product when ANY of its sizes is priced in the range, so a row's `price` (the overall lowest ask) can fall outside it.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in KRW (inclusive). Same any-size rule as price_min.","on_invalid":"reject","minimum":0},{"name":"delivery","type":"array","required":false,"description":"Only products available with this delivery: fast (KREAM warehouse stock), fast_95 (warehouse stock with a minor box/condition note), normal (seller ships through inspection), overseas, brand (sent by the brand), free_shipping, warehouse_storage.","on_invalid":"reject","example":["fast"]},{"name":"hide_sold_out","type":"boolean","required":false,"description":"true hides products with no immediate-buy offer.","on_invalid":"ignore","default":false},{"name":"below_release_price","type":"boolean","required":false,"description":"true keeps only products currently priced below their release price (정가이하).","on_invalid":"ignore","default":false},{"name":"include_draws","type":"boolean","required":false,"description":"KREAM DRAW entries appear among products with a 100 KRW entry fee as their price. false (default) drops them and counts them in `draws_dropped`; true keeps them flagged `listing_type: draw`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string), url, name (English), name_ko, name_tag (bracketed tag KREAM puts before some names: a coupon or refurbished grade), brand{id,name}, style_code, style_codes[], category{id, path[]}, listing_type ('resale' | 'brand_store' | 'draw'), product_type, image, price (number, KRW: the immediate-buy price = lowest ask for resale; the fixed price for brand-store rows; null when nobody is selling), price_display, price_type ('lowest_ask' | 'brand_store_price' | 'draw_entry_fee'), currency=KRW, pre_coupon_price (brand-store rows showing a KREAM coupon: the price before it — `price` is after the coupon), coupon_applied, discount_percent (KREAM's percentage below the release price, or below the list price on brand-store rows), discount_basis ('release_price' | 'list_price'), fast_delivery, sold_out_temporarily, upcoming_release_date, wish_count_approx / wish_count_display, review_count_approx / review_count_display, trade_count_approx / trade_count_display (KREAM abbreviates these on cards: '23.4만' ≈ 234,000), badges[], rating / rating_scale (null)}, count, total_results, page, page_size (50), has_more, next_page, draws_dropped, sort_applied (KREAM's own echo), query_used (the query KREAM actually searched), corrected, correction_type, rows_matching_query_words, query","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"nike"}},{"name":"product/detail","description":"The full KREAM product by `product_id` (or URL): English and Korean names, brand, style code, colorway, release price and date, every image, and the live market — lowest ask, highest bid, last trade and its change, total trades, premium over the release price, last trade per delivery channel — plus every size with its own lowest ask, highest bid and normal / fast / 95점 fast-delivery asks, the 5 most recent trades, the 5 best asks and bids, wish and review counts and delivery options. Brand-store listings return their fixed price, list price and discount instead.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"KREAM product id (the number in kream.co.kr/products/12831, returned by every search row), or the product URL.","on_invalid":"reject","example":"12831","aliases":["id","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id, url, name, name_ko, name_tag, listing_type ('resale' | 'brand_store'), brand{id, name, name_ko, type, saved_count}, style_code, style_codes[], colorway, gender, category, shop_category{id, path[]}, release_price, release_price_display, release_date, listed_at (brand-store only), image, images[], price (lowest ask; brand-store price), price_display, price_type, currency=KRW, original_price (brand-store list price, else null), discount_percent (brand-store only), price_label, in_stock, is_tradable, is_active, allowed_transactions[], market{lowest_ask, lowest_ask_display, highest_bid, highest_bid_display, last_sale_price, last_sale_change, last_sale_change_percent, total_sales, price_premium (lowest ask minus release price), price_premium_percent, fast_delivery_available, last_sale_by_channel{normal_delivery, fast_delivery, fast_delivery_95, overseas_delivery, verified_fast, integrated_inventory}{price, change, change_percent}} (null on brand-store), brand_store_sale{price, price_display, list_price, discount_percent, status, status_display, stock_quantity, store_name, store_url} (null on resale), size_count, sizes[]{size, option_key, lowest_ask, highest_bid, lowest_ask_normal_delivery, lowest_ask_fast_delivery, lowest_ask_fast_delivery_95}, recent_sales[]{price, size, fast_delivery, traded_at} (5), top_asks[]{price, size, fast_delivery, quantity} (5), top_bids[] (5), wish_count, review_count, rating / rating_scale (null), delivery_options[]{method, label, fee, note, description, applies_to[]}, notice{title, description}}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"12831"}},{"name":"product/price_history","description":"KREAM's price chart for a product over 1 month, 3 months, 6 months, 1 year or all time — for all sizes or for one size — as dated points with the first, last, lowest and highest price in the period.","required_params":["product_id"],"optional_params":["size","period","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"KREAM product id (the number in kream.co.kr/products/12831, returned by every search row), or the product URL.","on_invalid":"reject","example":"12831","aliases":["id","url"]},{"name":"size","type":"string","required":false,"description":"Optional: one size exactly as `product/detail` lists it in `sizes[].size` ('270', 'M', 'ONE SIZE'). Leave empty for the all-sizes chart.","on_invalid":"reject","example":"270","aliases":["option"]},{"name":"period","type":"enum","required":false,"description":"Chart span. Each span is KREAM's own series; spans are not merged.","on_invalid":"reject","allowed_values":[{"value":"1m","label":"Last month"},{"value":"3m","label":"Last 3 months"},{"value":"6m","label":"Last 6 months"},{"value":"1y","label":"Last year"},{"value":"all","label":"Since the first trade"}],"default":"1y"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product_id, name, size (null = all sizes), option_key, period, points[]{date, price}, points_count, empty_days_dropped, first_date, last_date, first_price, last_price, min_price, max_price, currency=KRW, market{lowest_ask, highest_bid, last_sale_price} (for that size when a size is given)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"12831","period":"1m"}},{"name":"category","description":"Every product in one KREAM category, paged, with the same rows, sorts and filters as search. Category ids come from `categories`.","required_params":["category_id"],"optional_params":["page","sort","brand","gender","shoe_size","clothing_size","price_min","price_max","delivery","hide_sold_out","below_release_price","include_draws","max_rotations"],"params":[{"name":"category_id","type":"string","required":true,"description":"A KREAM category id from `categories` (level-1 ids such as 34 = shoes, or level-2 ids such as 1 = sneakers).","on_invalid":"reject","example":"1","aliases":["category"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. KREAM returns 50 products per page; `has_more` says whether another page exists. Measured on 'nike' (42,489 results): pages 1-500 all distinct, page 999 empty.","on_invalid":"ignore","default":1,"minimum":1,"maximum":1000},{"name":"sort","type":"enum","required":false,"description":"Result order. `sort_applied` is KREAM's own confirmation of the order used.","on_invalid":"reject","allowed_values":[{"value":"recommended","label":"KREAM's default order (추천순)"},{"value":"popular","label":"Most sold (인기순)"},{"value":"popular_men","label":"Most popular with men"},{"value":"popular_women","label":"Most popular with women"},{"value":"premium_desc","label":"Highest price over release price first"},{"value":"premium_asc","label":"Lowest price over release price first"},{"value":"lowest_ask","label":"Lowest immediate-buy price first"},{"value":"highest_bid","label":"Highest immediate-sell price first"},{"value":"most_wished","label":"Most wish-listed first"},{"value":"most_reviewed","label":"Most reviewed first"},{"value":"newest_release","label":"Newest release date first (upcoming releases included)"}]},{"name":"brand","type":"array","required":false,"description":"Only these brands, by KREAM's English brand name ('Nike', 'New Balance', 'Jordan'). Several brands are OR-ed.","on_invalid":"reject","example":["New Balance"],"aliases":["brands","brand_name"]},{"name":"gender","type":"enum","required":false,"description":"Only products for this gender.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Men"},{"value":"women","label":"Women"},{"value":"kids","label":"Kids"}]},{"name":"shoe_size","type":"array","required":false,"description":"Only products with this shoe size in stock, in millimetres as KREAM lists them ('250', '270'). Prices on the rows become that size's prices.","on_invalid":"reject","example":["270"]},{"name":"clothing_size","type":"array","required":false,"description":"Only products with this clothing size ('S', 'M', 'L', 'XL', or a waist size such as '30'). Prices on the rows become that size's prices.","on_invalid":"reject","example":["M"]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in KRW (inclusive). KREAM keeps a product when ANY of its sizes is priced in the range, so a row's `price` (the overall lowest ask) can fall outside it.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in KRW (inclusive). Same any-size rule as price_min.","on_invalid":"reject","minimum":0},{"name":"delivery","type":"array","required":false,"description":"Only products available with this delivery: fast (KREAM warehouse stock), fast_95 (warehouse stock with a minor box/condition note), normal (seller ships through inspection), overseas, brand (sent by the brand), free_shipping, warehouse_storage.","on_invalid":"reject","example":["fast"]},{"name":"hide_sold_out","type":"boolean","required":false,"description":"true hides products with no immediate-buy offer.","on_invalid":"ignore","default":false},{"name":"below_release_price","type":"boolean","required":false,"description":"true keeps only products currently priced below their release price (정가이하).","on_invalid":"ignore","default":false},{"name":"include_draws","type":"boolean","required":false,"description":"KREAM DRAW entries appear among products with a 100 KRW entry fee as their price. false (default) drops them and counts them in `draws_dropped`; true keeps them flagged `listing_type: draw`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string), url, name (English), name_ko, name_tag (bracketed tag KREAM puts before some names: a coupon or refurbished grade), brand{id,name}, style_code, style_codes[], category{id, path[]}, listing_type ('resale' | 'brand_store' | 'draw'), product_type, image, price (number, KRW: the immediate-buy price = lowest ask for resale; the fixed price for brand-store rows; null when nobody is selling), price_display, price_type ('lowest_ask' | 'brand_store_price' | 'draw_entry_fee'), currency=KRW, pre_coupon_price (brand-store rows showing a KREAM coupon: the price before it — `price` is after the coupon), coupon_applied, discount_percent (KREAM's percentage below the release price, or below the list price on brand-store rows), discount_basis ('release_price' | 'list_price'), fast_delivery, sold_out_temporarily, upcoming_release_date, wish_count_approx / wish_count_display, review_count_approx / review_count_display, trade_count_approx / trade_count_display (KREAM abbreviates these on cards: '23.4만' ≈ 234,000), badges[], rating / rating_scale (null)}, count, total_results, page, page_size (50), has_more, next_page, draws_dropped, sort_applied (KREAM's own echo), query_used (the query KREAM actually searched), corrected, correction_type, rows_matching_query_words, category_id","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"categories","description":"KREAM's category tree: the top-level categories, or the sub-categories of one of them, with the `category_id` to pass to `category` or to search's category filter.","required_params":[],"optional_params":["parent","max_rotations"],"params":[{"name":"parent","type":"string","required":false,"description":"Optional: a level-1 `key` (or its `category_id`) from `categories` to list its sub-categories. Leave empty for the top level.","on_invalid":"reject","example":"44","aliases":["parent_key"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"categories[]{name (Korean, as KREAM names it), key, category_id, level}, count, parent","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"lcw","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"LC Waikiki API scraper — lcw.com and 20 LC Waikiki country shops: search by keyword, category, brand or outlet with sort and filters, and read every colour option with per-size stock and prices, grid, campaign and struck price, composition, model measurements, colour siblings, ratings and reviews. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/lcw/v1","spec_available":true,"actions":[{"name":"search","description":"Search an LC Waikiki shop by keyword, or browse any category, brand, store or outlet listing, with the shop's sort orders and filters. 100 products a page: option id, product code, title, brand, URL, images, the grid price, the struck price, the campaign price (e.g. 'Sepette İndirim') and the price you finally pay, lowest price of the last 30 days, multi-buy campaigns, stock count, rating and review count, category path, seller. Also returns every filter the shop offers for the result, with value ids and counts.","required_params":[],"optional_params":["country","query","url","page","sort","filters","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"LC Waikiki shop. tr = lcw.com (the main shop, Turkish lira); the others are LC Waikiki's own country shops on the same platform, each in its own currency and language. A `url` parameter sets the country from its host.","on_invalid":"reject","allowed_values":[{"value":"tr","label":"Turkey (lcw.com, TRY)"},{"value":"ro","label":"Romania (lcwaikiki.ro, RON)"},{"value":"ua","label":"Ukraine (lcwaikiki.ua, UAH)"},{"value":"ba","label":"Bosnia and Herzegovina (lcwaikiki.ba, BAM)"},{"value":"rs","label":"Serbia (lcwaikiki.rs, RSD)"},{"value":"bg","label":"Bulgaria (lcwaikiki.bg, EUR)"},{"value":"de","label":"Germany (lcwaikiki.de, EUR)"},{"value":"al","label":"Albania (lcwaikiki.al, ALL)"},{"value":"mk","label":"North Macedonia (lcwaikiki.mk, MKD)"},{"value":"ru","label":"Russia (lcwaikiki.ru, RUB)"},{"value":"fr","label":"France (lcwaikiki.fr, EUR)"},{"value":"gr","label":"Greece (lcwaikiki.gr, EUR)"},{"value":"hr","label":"Croatia (lcwaikiki.hr, EUR)"},{"value":"it","label":"Italy (lcwaikiki.it, EUR)"},{"value":"me","label":"Montenegro (lcwaikiki.me, EUR)"},{"value":"xk","label":"Kosovo (lcwaikiki-ks.com, EUR)"},{"value":"kz","label":"Kazakhstan (lcwaikiki.kz, KZT)"},{"value":"eg","label":"Egypt (lcwaikiki.eg, EGP)"},{"value":"ma","label":"Morocco (lcwaikiki.ma, MAD)"},{"value":"ge","label":"Georgia (lcwaikiki.ge, GEL)"},{"value":"iq","label":"Iraq (lcwaikiki.iq, IQD)"}],"default":"tr","example":"tr"},{"name":"query","type":"string","required":false,"description":"Keyword, in the shop's language ('tişört', 'erkek jean', 'kadın mont'). Optional when `url` is given.","on_invalid":"reject","example":"tişört","aliases":["q","keyword"]},{"name":"url","type":"string","required":false,"description":"An LC Waikiki LISTING URL to browse: a category (…-t-345, …-u-6000061), a brand (/marka/lcw-kids-b-724), a store (/magaza/lc-waikiki-s-1), the outlet (/outlet) or a search page. Every breadcrumb and campaign URL this API returns is one.","on_invalid":"reject","example":"https://www.lcw.com/erkek-tisort-t-345","aliases":["category_url","listing_url"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. LC Waikiki serves 100 products per page; `total_pages` says how many exist. A page past the end comes back empty.","on_invalid":"reject","default":1,"minimum":1,"maximum":1500},{"name":"sort","type":"enum","required":false,"description":"Order of the results — the orderings the shop itself offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"LC Waikiki's default order"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"newest","label":"Newest first"},{"value":"newest_discounts","label":"Most recently discounted first"},{"value":"best_selling","label":"Best sellers first"},{"value":"most_favorited","label":"Most favourited first"},{"value":"most_reviewed","label":"Most reviewed first"}],"default":"relevance"},{"name":"filters","type":"object","required":false,"description":"The shop's own filters, as {key: value}. Keys and value ids come from the `available_filters` of a previous search on the same keyword or URL (m_color = colour, m_size = size, m_8 = brand, m_price = price band, m_campaigntype = discounted items …). Several ids for one key: \"141,145\".","on_invalid":"reject","example":{"m_color":"141"}},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{position, option_id, model_id, product_code, model_code, title, brand, url, image, images[], color_hex, price (grid price), price_display, original_price (struck, null when none), campaign_price (badge price such as 'Sepette İndirim', null when none), campaign_label, campaign_discount_percent, campaign_ends_at, final_price, lowest_price_30_days, currency, campaigns[{campaign_id, label, starts_at, ends_at, url}], search_index_stock_count, in_stock, search_index_rating, search_index_review_count (the listing index's figures, which can lag the product page; product/detail has the page's own), rating_scale, category, category_path[], product_group, seller{id, name}, is_outlet}, count, total_results, total_pages, page, served_page, page_size, sort, applied_filters, available_filters[{key, title, values[{value, label, count, selected}]}], breadcrumb[], category_name, did_you_mean, no_match_notice, page_notice, fallback_results_dropped, country, currency, route ('keyword', 'keyword_to_listing' when the shop maps the keyword to a listing, 'keyword_search_page', 'category', 'brand', 'store', 'outlet'), resolved_url (the listing a mapped keyword resolved to, else null)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"tişört"}},{"name":"product/detail","description":"One LC Waikiki colour option by URL or option id: title, brand, colour, every size (and waist × length for trousers) with its own stock count and price, the grid price, campaign price, final price and struck price, barcode, composition, materials, model measurements and the size the model wears, attributes, care instructions, description, colour siblings with their stock state, rating and count, newest reviews, breadcrumb, seller, shipping cost and delivery window, return days.","required_params":[],"optional_params":["country","url","option_id","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"LC Waikiki shop. tr = lcw.com (the main shop, Turkish lira); the others are LC Waikiki's own country shops on the same platform, each in its own currency and language. A `url` parameter sets the country from its host.","on_invalid":"reject","allowed_values":[{"value":"tr","label":"Turkey (lcw.com, TRY)"},{"value":"ro","label":"Romania (lcwaikiki.ro, RON)"},{"value":"ua","label":"Ukraine (lcwaikiki.ua, UAH)"},{"value":"ba","label":"Bosnia and Herzegovina (lcwaikiki.ba, BAM)"},{"value":"rs","label":"Serbia (lcwaikiki.rs, RSD)"},{"value":"bg","label":"Bulgaria (lcwaikiki.bg, EUR)"},{"value":"de","label":"Germany (lcwaikiki.de, EUR)"},{"value":"al","label":"Albania (lcwaikiki.al, ALL)"},{"value":"mk","label":"North Macedonia (lcwaikiki.mk, MKD)"},{"value":"ru","label":"Russia (lcwaikiki.ru, RUB)"},{"value":"fr","label":"France (lcwaikiki.fr, EUR)"},{"value":"gr","label":"Greece (lcwaikiki.gr, EUR)"},{"value":"hr","label":"Croatia (lcwaikiki.hr, EUR)"},{"value":"it","label":"Italy (lcwaikiki.it, EUR)"},{"value":"me","label":"Montenegro (lcwaikiki.me, EUR)"},{"value":"xk","label":"Kosovo (lcwaikiki-ks.com, EUR)"},{"value":"kz","label":"Kazakhstan (lcwaikiki.kz, KZT)"},{"value":"eg","label":"Egypt (lcwaikiki.eg, EGP)"},{"value":"ma","label":"Morocco (lcwaikiki.ma, MAD)"},{"value":"ge","label":"Georgia (lcwaikiki.ge, GEL)"},{"value":"iq","label":"Iraq (lcwaikiki.iq, IQD)"}],"default":"tr","example":"tr"},{"name":"url","type":"string","required":false,"description":"An LC Waikiki product URL (…-o-<option id>) on any country shop; it also sets the country. Every search row returns one.","on_invalid":"reject","example":"https://www.lcw.com/slim-fit-modal-kumas-tisort-02-murdum-o-5373859","aliases":["product_url"]},{"name":"option_id","type":"integer","required":false,"description":"Alternative to `url`: the colour option id (the number after -o-). Every search row returns it. Ids are shared across country shops.","on_invalid":"reject","example":5373859,"aliases":["id"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{option_id, model_id, product_code, model_code, color_code, gtin13 (one barcode for the option; null unless a valid GTIN), title, full_name, brand, brand_url, url, color, price (grid price), campaign_price, campaign_discount_percent, final_price (the headline price), original_price (struck), currency, sizes_have_different_prices, availability, in_stock, stock_count (sum of sizes), variants[{size, length, size_id, length_id, display_order, stock_count, in_stock, final_price, original_price, sku_ref, product_id}], sizes[], materials[], composition[{part, value}], images[], rating (one decimal, as the page prints it), rating_count, rating_scale, top_reviews[{review_id, rating, text, seller}], color_options[{option_id, color, url, image, selected, in_stock}], color_option_count, description, model_measurements[{label, value}], model_size, specifications[{name, value}], attributes[{name, value, property_id}], care_instructions[], manufacturer, category, breadcrumb[], gender, seller{id, name, url}, shipping{cost, currency, handling_days_min/max, transit_days_min/max, cutoff_time}, return_days, free_returns, multi_buy_campaigns (null — not on the product page; search rows carry them)}, country","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"option_id":5248220}},{"name":"product/reviews","description":"Every published review of an LC Waikiki colour option: exact average and count, the 1-5 breakdown, how buyers rate the fit (runs small / true to size / runs large) and each review with its stars, text, date, the size bought, the reviewer's height and weight when given, likes and photos. Reviewer names are never returned.","required_params":[],"optional_params":["country","url","option_id","page","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"LC Waikiki shop. tr = lcw.com (the main shop, Turkish lira); the others are LC Waikiki's own country shops on the same platform, each in its own currency and language. A `url` parameter sets the country from its host.","on_invalid":"reject","allowed_values":[{"value":"tr","label":"Turkey (lcw.com, TRY)"},{"value":"ro","label":"Romania (lcwaikiki.ro, RON)"},{"value":"ua","label":"Ukraine (lcwaikiki.ua, UAH)"},{"value":"ba","label":"Bosnia and Herzegovina (lcwaikiki.ba, BAM)"},{"value":"rs","label":"Serbia (lcwaikiki.rs, RSD)"},{"value":"bg","label":"Bulgaria (lcwaikiki.bg, EUR)"},{"value":"de","label":"Germany (lcwaikiki.de, EUR)"},{"value":"al","label":"Albania (lcwaikiki.al, ALL)"},{"value":"mk","label":"North Macedonia (lcwaikiki.mk, MKD)"},{"value":"ru","label":"Russia (lcwaikiki.ru, RUB)"},{"value":"fr","label":"France (lcwaikiki.fr, EUR)"},{"value":"gr","label":"Greece (lcwaikiki.gr, EUR)"},{"value":"hr","label":"Croatia (lcwaikiki.hr, EUR)"},{"value":"it","label":"Italy (lcwaikiki.it, EUR)"},{"value":"me","label":"Montenegro (lcwaikiki.me, EUR)"},{"value":"xk","label":"Kosovo (lcwaikiki-ks.com, EUR)"},{"value":"kz","label":"Kazakhstan (lcwaikiki.kz, KZT)"},{"value":"eg","label":"Egypt (lcwaikiki.eg, EGP)"},{"value":"ma","label":"Morocco (lcwaikiki.ma, MAD)"},{"value":"ge","label":"Georgia (lcwaikiki.ge, GEL)"},{"value":"iq","label":"Iraq (lcwaikiki.iq, IQD)"}],"default":"tr","example":"tr"},{"name":"url","type":"string","required":false,"description":"An LC Waikiki product URL (…-o-<option id>) on any country shop; it also sets the country. Every search row returns one.","on_invalid":"reject","example":"https://www.lcw.com/slim-fit-modal-kumas-tisort-02-murdum-o-5373859","aliases":["product_url"]},{"name":"option_id","type":"integer","required":false,"description":"Alternative to `url`: the colour option id (the number after -o-). Every search row returns it. Ids are shared across country shops.","on_invalid":"reject","example":5373859,"aliases":["id"]},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based, 100 reviews per page (newest first); `total_pages` says how many exist.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"option_id, rating (exact), rating_count, rating_scale, rating_breakdown{'1'..'5'}, page, total_pages, reviews_source ('review_list', or 'product_page_newest' for an option whose reviews are pooled with paired options: then only the page's rounded rating, its count and the newest reviews it prints), reviews_note, size_fit{runs_small_percent, true_to_size_percent, runs_large_percent} (null when none), reviews_listed, reviews_returned, reviews[{review_id, rating, title, text, date, size_purchased, color_code, like_count, dislike_count, seller, reviewer_height_cm, reviewer_weight_kg, images[]}], country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"LC Waikiki's search autocomplete for the characters typed so far: category suggestions with their listing URL (usable in search `url`) and popular searches.","required_params":["query"],"optional_params":["country","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"LC Waikiki shop. tr = lcw.com (the main shop, Turkish lira); the others are LC Waikiki's own country shops on the same platform, each in its own currency and language. A `url` parameter sets the country from its host.","on_invalid":"reject","allowed_values":[{"value":"tr","label":"Turkey (lcw.com, TRY)"},{"value":"ro","label":"Romania (lcwaikiki.ro, RON)"},{"value":"ua","label":"Ukraine (lcwaikiki.ua, UAH)"},{"value":"ba","label":"Bosnia and Herzegovina (lcwaikiki.ba, BAM)"},{"value":"rs","label":"Serbia (lcwaikiki.rs, RSD)"},{"value":"bg","label":"Bulgaria (lcwaikiki.bg, EUR)"},{"value":"de","label":"Germany (lcwaikiki.de, EUR)"},{"value":"al","label":"Albania (lcwaikiki.al, ALL)"},{"value":"mk","label":"North Macedonia (lcwaikiki.mk, MKD)"},{"value":"ru","label":"Russia (lcwaikiki.ru, RUB)"},{"value":"fr","label":"France (lcwaikiki.fr, EUR)"},{"value":"gr","label":"Greece (lcwaikiki.gr, EUR)"},{"value":"hr","label":"Croatia (lcwaikiki.hr, EUR)"},{"value":"it","label":"Italy (lcwaikiki.it, EUR)"},{"value":"me","label":"Montenegro (lcwaikiki.me, EUR)"},{"value":"xk","label":"Kosovo (lcwaikiki-ks.com, EUR)"},{"value":"kz","label":"Kazakhstan (lcwaikiki.kz, KZT)"},{"value":"eg","label":"Egypt (lcwaikiki.eg, EGP)"},{"value":"ma","label":"Morocco (lcwaikiki.ma, MAD)"},{"value":"ge","label":"Georgia (lcwaikiki.ge, GEL)"},{"value":"iq","label":"Iraq (lcwaikiki.iq, IQD)"}],"default":"tr","example":"tr"},{"name":"query","type":"string","required":true,"description":"The characters typed so far, in the shop's language.","on_invalid":"reject","example":"kaz","aliases":["q","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"query, suggestions[{text, type ('category'|'search_history'|…), id, url}], count, did_you_mean, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"tişört"}}]},{"name":"leboncoin","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"leboncoin API scraper — France's largest classifieds site: marketplace search with condition, shipping, free-item and pro/private filters, real estate (sales, rentals, flat-shares, commercial) and vehicles (cars, motorcycles, vans, campervans), and the full ad record. No account, no browser; private sellers' personal data withheld.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/leboncoin/v1","spec_available":true,"actions":[{"name":"search","description":"Search leboncoin, France's largest classifieds site, by keyword and/or category: price (free 'Don' items and placeholder prices labelled, price drops with the earlier price), town, postcode, department and region, pro or private seller, condition, shipping available, urgent and paid options, publication and re-publication dates, images and description. Filter by price, category, location or radius, condition, shipping, free only, urgent only, seller type or seller; sort by relevance, newest, oldest or price.","required_params":[],"optional_params":["query","titles_only","category","condition","shippable","free_only","urgent_only","ad_type","price_min","price_max","city","zipcode","department","region","latitude","longitude","radius_km","seller_type","seller_id","sort","page","page_token","limit","include_sponsored","include_pii","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into leboncoin's search box.","on_invalid":"reject","example":"velo"},{"name":"titles_only","type":"boolean","required":false,"description":"Match the keyword in ad titles only.","on_invalid":"reject"},{"name":"category","type":"string","required":false,"description":"leboncoin category id (55 = Vélos, 19 = Ameublement, 17 = Téléphones…); the categories action lists them.","on_invalid":"reject","example":"55"},{"name":"condition","type":"array","required":false,"description":"One or more of new_with_tags, new_without_tags, new, very_good, good, fair, refurbished, for_parts.","on_invalid":"reject","allowed_values":[{"value":"new_with_tags","label":"new_with_tags"},{"value":"new_without_tags","label":"new_without_tags"},{"value":"new","label":"new"},{"value":"very_good","label":"very_good"},{"value":"good","label":"good"},{"value":"fair","label":"fair"},{"value":"refurbished","label":"refurbished"},{"value":"for_parts","label":"for_parts"}]},{"name":"shippable","type":"boolean","required":false,"description":"Only ads the seller will ship.","on_invalid":"reject"},{"name":"free_only","type":"boolean","required":false,"description":"Only free give-away ('Don') ads.","on_invalid":"reject"},{"name":"urgent_only","type":"boolean","required":false,"description":"Only ads marked urgent.","on_invalid":"reject"},{"name":"ad_type","type":"enum","required":false,"description":"offer (default) or demand (wanted ads).","on_invalid":"reject","allowed_values":[{"value":"offer","label":"Offers"},{"value":"demand","label":"Wanted ads"}],"default":"offer"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"city","type":"string","required":false,"description":"Town name, e.g. Lyon. Combine with zipcode for one arrondissement.","on_invalid":"reject","example":"Lyon"},{"name":"zipcode","type":"string","required":false,"description":"5-digit postcode; needs city.","on_invalid":"reject","example":"69001"},{"name":"department","type":"string","required":false,"description":"French department number, e.g. 13, 69, 75.","on_invalid":"reject","example":"13"},{"name":"region","type":"string","required":false,"description":"leboncoin region id, e.g. 12 = Ile-de-France (see categories).","on_invalid":"reject"},{"name":"latitude","type":"number","required":false,"description":"Centre of a radius search (with longitude).","on_invalid":"reject"},{"name":"longitude","type":"number","required":false,"description":"Centre of a radius search (with latitude).","on_invalid":"reject"},{"name":"radius_km","type":"number","required":false,"description":"Radius around latitude/longitude, km.","on_invalid":"reject","default":10,"minimum":1,"maximum":200},{"name":"seller_type","type":"enum","required":false,"description":"Only professional or only private sellers.","on_invalid":"reject","allowed_values":[{"value":"pro","label":"Professional"},{"value":"private","label":"Private"}]},{"name":"seller_id","type":"string","required":false,"description":"A seller's seller_id (UUID) or store_id from a result row: that seller's ads.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"relevance, newest (last re-published first), oldest, price_asc or price_desc.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"relevance"},{"value":"newest","label":"newest"},{"value":"oldest","label":"oldest"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page (leboncoin serves the first 3,500 results).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":3500},{"name":"page_token","type":"string","required":false,"description":"next_page_token from the previous page of the same search. Relevance order is re-ranked on every request; without the token, page 2 can repeat ads from page 1.","on_invalid":"reject"},{"name":"limit","type":"integer","required":false,"description":"Rows per page, up to 100.","on_invalid":"reject","default":35,"example":35,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return leboncoin's paid 'À la une' placements, apart, under sponsored[].","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' display names, exact coordinates and unmasked descriptions.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, title, url, category_id, category, ad_type, status, price, currency, is_free, price_not_published, price_looks_placeholder, price_before_reduction, discount_pct, published_at, republished_at, expires_at, location{city, zipcode, district, department_id, department, region_id, region, latitude, longitude, coordinates_precision}, seller{type, seller_id, store_id, name (pro), siren, shop_name, has_phone, rating_score, rating_scale, rating_count}, brand, condition, condition_label, shippable, shipping_type, is_urgent, is_boosted, paid_options[], thumbnail, image_count, images[], description}, count, total, total_pro, total_private, page, limit, has_more, next_page_token, sort_applied, dropped_outside_price_range, sponsored_available, sponsored[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"velo"}},{"name":"real_estate/search","description":"Search leboncoin real estate — sales, rentals, flat-shares and commercial property: price or rent, price per m², surface, land surface, rooms, bedrooms, floor, energy and climate class, heating, building year, furnished, charges and deposit, agency fees and who pays them, new-build programmes with their units, town, postcode, district and department, agency or private owner, images. Filter by transaction, property type, price, surface, rooms, bedrooms, energy class, sale type, furnished and location or radius; sort by relevance, newest or price.","required_params":["transaction"],"optional_params":["query","property_type","sell_type","price_min","price_max","surface_min","surface_max","land_surface_min","land_surface_max","rooms_min","rooms_max","bedrooms_min","bedrooms_max","energy_class","furnished","city","zipcode","department","region","latitude","longitude","radius_km","seller_type","seller_id","sort","page","page_token","limit","include_sponsored","include_pii","max_rotations"],"params":[{"name":"transaction","type":"enum","required":true,"description":"sale, rent, flatshare or commercial.","on_invalid":"reject","allowed_values":[{"value":"sale","label":"sale"},{"value":"rent","label":"rent"},{"value":"flatshare","label":"flatshare"},{"value":"commercial","label":"commercial"}],"example":"sale"},{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into leboncoin's search box.","on_invalid":"reject","example":"velo"},{"name":"property_type","type":"array","required":false,"description":"One or more of house, apartment, land, parking, other.","on_invalid":"reject","allowed_values":[{"value":"house","label":"house"},{"value":"apartment","label":"apartment"},{"value":"land","label":"land"},{"value":"parking","label":"parking"},{"value":"other","label":"other"}]},{"name":"sell_type","type":"array","required":false,"description":"Sales only: old, new (new-build) or life_annuity (viager).","on_invalid":"reject","allowed_values":[{"value":"old","label":"old"},{"value":"new","label":"new"},{"value":"life_annuity","label":"life_annuity"}]},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"surface_min","type":"number","required":false,"description":"Smallest living surface, m².","on_invalid":"reject","minimum":0},{"name":"surface_max","type":"number","required":false,"description":"Largest living surface, m².","on_invalid":"reject","minimum":0},{"name":"land_surface_min","type":"number","required":false,"description":"Smallest plot, m².","on_invalid":"reject","minimum":0},{"name":"land_surface_max","type":"number","required":false,"description":"Largest plot, m².","on_invalid":"reject","minimum":0},{"name":"rooms_min","type":"integer","required":false,"description":"Fewest rooms.","on_invalid":"reject","minimum":1,"maximum":20},{"name":"rooms_max","type":"integer","required":false,"description":"Most rooms.","on_invalid":"reject","minimum":1,"maximum":20},{"name":"bedrooms_min","type":"integer","required":false,"description":"Fewest bedrooms.","on_invalid":"reject","minimum":1,"maximum":20},{"name":"bedrooms_max","type":"integer","required":false,"description":"Most bedrooms.","on_invalid":"reject","minimum":1,"maximum":20},{"name":"energy_class","type":"array","required":false,"description":"Energy (DPE) classes, e.g. [\"a\", \"b\"].","on_invalid":"reject","allowed_values":[{"value":"a","label":"A"},{"value":"b","label":"B"},{"value":"c","label":"C"},{"value":"d","label":"D"},{"value":"e","label":"E"},{"value":"f","label":"F"},{"value":"g","label":"G"}]},{"name":"furnished","type":"boolean","required":false,"description":"Rentals: true furnished only, false unfurnished only.","on_invalid":"reject"},{"name":"city","type":"string","required":false,"description":"Town name, e.g. Lyon. Combine with zipcode for one arrondissement.","on_invalid":"reject","example":"Lyon"},{"name":"zipcode","type":"string","required":false,"description":"5-digit postcode; needs city.","on_invalid":"reject","example":"69001"},{"name":"department","type":"string","required":false,"description":"French department number, e.g. 13, 69, 75.","on_invalid":"reject","example":"13"},{"name":"region","type":"string","required":false,"description":"leboncoin region id, e.g. 12 = Ile-de-France (see categories).","on_invalid":"reject"},{"name":"latitude","type":"number","required":false,"description":"Centre of a radius search (with longitude).","on_invalid":"reject"},{"name":"longitude","type":"number","required":false,"description":"Centre of a radius search (with latitude).","on_invalid":"reject"},{"name":"radius_km","type":"number","required":false,"description":"Radius around latitude/longitude, km.","on_invalid":"reject","default":10,"minimum":1,"maximum":200},{"name":"seller_type","type":"enum","required":false,"description":"Only professional or only private sellers.","on_invalid":"reject","allowed_values":[{"value":"pro","label":"Professional"},{"value":"private","label":"Private"}]},{"name":"seller_id","type":"string","required":false,"description":"A seller's seller_id (UUID) or store_id from a result row: that seller's ads.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"relevance, newest (last re-published first), oldest, price_asc or price_desc.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"relevance"},{"value":"newest","label":"newest"},{"value":"oldest","label":"oldest"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page (leboncoin serves the first 3,500 results).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":3500},{"name":"page_token","type":"string","required":false,"description":"next_page_token from the previous page of the same search. Relevance order is re-ranked on every request; without the token, page 2 can repeat ads from page 1.","on_invalid":"reject"},{"name":"limit","type":"integer","required":false,"description":"Rows per page, up to 100.","on_invalid":"reject","default":35,"example":35,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return leboncoin's paid 'À la une' placements, apart, under sponsored[].","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' display names, exact coordinates and unmasked descriptions.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, title, url, category_id, category, ad_type, status, price, currency, is_free, price_not_published, price_looks_placeholder, price_before_reduction, discount_pct, published_at, republished_at, expires_at, location{city, zipcode, district, department_id, department, region_id, region, latitude, longitude, coordinates_precision}, seller{type, seller_id, store_id, name (pro), siren, shop_name, has_phone, rating_score, rating_scale, rating_count}, brand, condition, condition_label, shippable, shipping_type, is_urgent, is_boosted, paid_options[], thumbnail, image_count, images[], description, price_is_from, property{property_type, transaction, sell_type, surface_m2, land_surface_m2, rooms, bedrooms, bathrooms, floor, floors_in_building, elevator, energy_class, ghg_class, heating_type, building_year, furnished, price_per_m2, rent_excluding_charges, monthly_charges, charges_included, security_deposit, agency_fees_paid_by, agency_fees, estimated_notary_fees, is_new_build_programme, units[]{unit_id, surface_m2, price}, …}}, count, total, total_pro, total_private, page, limit, has_more, next_page_token, sort_applied","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"transaction":"rent","department":"75"}},{"name":"cars/search","description":"Search leboncoin vehicles — cars, motorcycles, vans and campervans: price and price drops, make, model, version, trim, model year, first registration, mileage, fuel, gearbox, body type, doors, seats, fiscal and DIN horsepower, engine size, colour, condition, Crit'Air, inspection, battery health, equipment, leboncoin's market price estimate, dealer or private seller, town and department. Filter by vehicle type, make, model, year, mileage, fuel, gearbox, body type, engine size, price, seller type and location; sort by relevance, newest or price.","required_params":[],"optional_params":["vehicle_type","query","make","model","year_min","year_max","mileage_min","mileage_max","fuel","gearbox","body_type","cubic_capacity_min","cubic_capacity_max","price_min","price_max","city","zipcode","department","region","latitude","longitude","radius_km","seller_type","seller_id","sort","page","page_token","limit","include_sponsored","include_pii","max_rotations"],"params":[{"name":"vehicle_type","type":"enum","required":false,"description":"car (default), motorcycle, van or caravan.","on_invalid":"reject","allowed_values":[{"value":"car","label":"car"},{"value":"motorcycle","label":"motorcycle"},{"value":"caravan","label":"caravan"},{"value":"van","label":"van"}],"default":"car"},{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into leboncoin's search box.","on_invalid":"reject","example":"velo"},{"name":"make","type":"string","required":false,"description":"Make as leboncoin lists it, e.g. VOLKSWAGEN, PEUGEOT, YAMAHA (cars, motorcycles, vans).","on_invalid":"reject","example":"VOLKSWAGEN"},{"name":"model","type":"string","required":false,"description":"Cars: model name, with make (e.g. Golf).","on_invalid":"reject","example":"Golf"},{"name":"year_min","type":"integer","required":false,"description":"Earliest model year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest model year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"mileage_min","type":"number","required":false,"description":"Lowest mileage, km.","on_invalid":"reject","minimum":0},{"name":"mileage_max","type":"number","required":false,"description":"Highest mileage, km.","on_invalid":"reject","minimum":0},{"name":"fuel","type":"array","required":false,"description":"petrol, diesel, hybrid, plug_in_hybrid, electric, lpg, natural_gas, hydrogen, other.","on_invalid":"reject","allowed_values":[{"value":"petrol","label":"petrol"},{"value":"diesel","label":"diesel"},{"value":"lpg","label":"lpg"},{"value":"electric","label":"electric"},{"value":"other","label":"other"},{"value":"hybrid","label":"hybrid"},{"value":"natural_gas","label":"natural_gas"},{"value":"plug_in_hybrid","label":"plug_in_hybrid"},{"value":"hydrogen","label":"hydrogen"}]},{"name":"gearbox","type":"enum","required":false,"description":"manual or automatic.","on_invalid":"reject","allowed_values":[{"value":"manual","label":"manual"},{"value":"automatic","label":"automatic"}]},{"name":"body_type","type":"array","required":false,"description":"Cars: suv, sedan, estate, convertible, city_car, coupe, mpv, company_car, other. Motorcycles: motorcycle, scooter, quad, moped, other.","on_invalid":"reject","allowed_values":[{"value":"suv","label":"suv"},{"value":"sedan","label":"sedan"},{"value":"estate","label":"estate"},{"value":"convertible","label":"convertible"},{"value":"city_car","label":"city_car"},{"value":"coupe","label":"coupe"},{"value":"mpv","label":"mpv"},{"value":"company_car","label":"company_car"},{"value":"other","label":"other"},{"value":"motorcycle","label":"motorcycle"},{"value":"scooter","label":"scooter"},{"value":"quad","label":"quad"},{"value":"moped","label":"moped"}]},{"name":"cubic_capacity_min","type":"number","required":false,"description":"Motorcycles: smallest engine, cm³.","on_invalid":"reject","minimum":0},{"name":"cubic_capacity_max","type":"number","required":false,"description":"Motorcycles: largest engine, cm³.","on_invalid":"reject","minimum":0},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"city","type":"string","required":false,"description":"Town name, e.g. Lyon. Combine with zipcode for one arrondissement.","on_invalid":"reject","example":"Lyon"},{"name":"zipcode","type":"string","required":false,"description":"5-digit postcode; needs city.","on_invalid":"reject","example":"69001"},{"name":"department","type":"string","required":false,"description":"French department number, e.g. 13, 69, 75.","on_invalid":"reject","example":"13"},{"name":"region","type":"string","required":false,"description":"leboncoin region id, e.g. 12 = Ile-de-France (see categories).","on_invalid":"reject"},{"name":"latitude","type":"number","required":false,"description":"Centre of a radius search (with longitude).","on_invalid":"reject"},{"name":"longitude","type":"number","required":false,"description":"Centre of a radius search (with latitude).","on_invalid":"reject"},{"name":"radius_km","type":"number","required":false,"description":"Radius around latitude/longitude, km.","on_invalid":"reject","default":10,"minimum":1,"maximum":200},{"name":"seller_type","type":"enum","required":false,"description":"Only professional or only private sellers.","on_invalid":"reject","allowed_values":[{"value":"pro","label":"Professional"},{"value":"private","label":"Private"}]},{"name":"seller_id","type":"string","required":false,"description":"A seller's seller_id (UUID) or store_id from a result row: that seller's ads.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"relevance, newest (last re-published first), oldest, price_asc or price_desc.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"relevance"},{"value":"newest","label":"newest"},{"value":"oldest","label":"oldest"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page (leboncoin serves the first 3,500 results).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":3500},{"name":"page_token","type":"string","required":false,"description":"next_page_token from the previous page of the same search. Relevance order is re-ranked on every request; without the token, page 2 can repeat ads from page 1.","on_invalid":"reject"},{"name":"limit","type":"integer","required":false,"description":"Rows per page, up to 100.","on_invalid":"reject","default":35,"example":35,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return leboncoin's paid 'À la une' placements, apart, under sponsored[].","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' display names, exact coordinates and unmasked descriptions.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, title, url, category_id, category, ad_type, status, price, currency, is_free, price_not_published, price_looks_placeholder, price_before_reduction, discount_pct, published_at, republished_at, expires_at, location{city, zipcode, district, department_id, department, region_id, region, latitude, longitude, coordinates_precision}, seller{type, seller_id, store_id, name (pro), siren, shop_name, has_phone, rating_score, rating_scale, rating_count}, brand, condition, condition_label, shippable, shipping_type, is_urgent, is_boosted, paid_options[], thumbnail, image_count, images[], description, vehicle{make, model, version, trim, model_year, first_registration, mileage_km, fuel, gearbox, body_type, doors, seats, fiscal_horsepower, power_din_hp, cubic_capacity_cc, colour, condition, critair, technical_inspection_valid, battery_health_pct, equipment[], history[], market_price_estimate{min, max, positioning}, …}}, count, total, total_pro, total_private, page, limit, has_more, next_page_token","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"make":"VOLKSWAGEN","query":"golf"}},{"name":"listing","description":"The full leboncoin ad by id or URL, in any category: title, price (free, placeholder and price-drop labelled), description, all images, status, condition, shipping, every published attribute with its French label, publication, re-publication and expiry dates, location, vehicle or property details, paid options, and the seller — a pro's company, SIREN and shop; a private seller's name withheld.","required_params":["ad_id"],"optional_params":["include_pii","max_rotations"],"params":[{"name":"ad_id","type":"string","required":true,"description":"The leboncoin ad id (the digits at the end of an ad URL) or the full URL.","on_invalid":"reject","example":"3266471918"},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' display names, exact coordinates and unmasked descriptions.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{ad_id, title, url, category_id, category, ad_type, status, price, currency, is_free, price_not_published, price_looks_placeholder, price_before_reduction, discount_pct, published_at, republished_at, expires_at, location{city, zipcode, district, department_id, department, region_id, region, latitude, longitude, coordinates_precision}, seller{type, seller_id, store_id, name (pro), siren, shop_name, has_phone, rating_score, rating_scale, rating_count}, brand, condition, condition_label, shippable, shipping_type, is_urgent, is_boosted, paid_options[], thumbnail, image_count, images[], description, attributes[]{key, label, value, value_label, values[]}, reference, vehicle{} | property{}, price_is_from}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"leboncoin's category tree (ids, names, parents, and which shortcut categories map to another) and its regions with their departments — the ids the search actions accept.","required_params":[],"optional_params":["max_rotations"],"params":[{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"categories[]{category_id, name, parent_id, same_as}, count, regions[]{region_id, name, departments[]{department_id, name}}","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":2},"example_params":{}}]},{"name":"lei","category":{"id":"finance","title":"Finance & Data"},"title":"Legal Entity & LEI API (GLEIF) — verified company and legal-entity records, fuzzy company search, corporate ownership hierarchy and ISIN/BIC/MIC-to-LEI mapping","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/lei/v1","spec_available":true,"actions":[{"name":"lookup","description":"One LEI → the full verified legal-entity record (Level-1 who-is-who): legal name, addresses, jurisdiction, legal form, registration status + honesty note, authority ids, renewal dates, BIC/ISIN-adjacent identifiers.","required_params":["lei"],"optional_params":["resolve_codes","history"],"params":[{"name":"lei","type":"string","required":true,"description":"The 20-character Legal Entity Identifier (ISO 17442). Spaces/dashes are ignored; case-insensitive. Format + MOD-97-10 checksum are validated offline first — a malformed LEI returns a clean error with the reason, never an upstream call.","on_invalid":"reject","example":"HWUPKR0MPOU8FGXBT394","aliases":["lei_code","id"]},{"name":"resolve_codes","type":"boolean","required":false,"description":"If true, also resolve the legal-form ELF code and registration-authority code to their human-readable names (2 extra cached GLEIF calls; silently skipped if unavailable).","on_invalid":"ignore","default":false,"example":true},{"name":"history","type":"boolean","required":false,"description":"If true, append the record's field-modification audit trail (what changed, when, old/new value) — GLEIF Level-1 history.","on_invalid":"ignore","default":false,"example":true,"aliases":["field_modifications"]}],"returns":"entity{lei, legal_name, other_names[], entity_status, jurisdiction, category, legal_form{code,name?}, legal_address{}, hq_address{}, registration{status, status_note, authority_id, entity_id_at_authority, initial, last_update, next_renewal, managing_lou, corroboration_level}, expiration, successor, bic[], mic, spglobal[], conformity_flag} (+ field_modifications[] when history=true)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"lei":"HWUPKR0MPOU8FGXBT394"}},{"name":"search","description":"Company name → ranked candidate entities with match_confidence for disambiguation (same-name entities across countries/legal-forms). Filters: country, status, jurisdiction, entity_status.","required_params":["name"],"optional_params":["scope","country","status","entity_status","jurisdiction","limit","page","min_confidence","typo"],"params":[{"name":"name","type":"string","required":true,"description":"Company/entity name to search for. Matching is word-based on the GLEIF data pool; results are ranked by `match_confidence` (an explicit string-similarity heuristic) so same-name entities in different countries/forms are easy to disambiguate.","on_invalid":"reject","example":"Apple Inc","aliases":["q","query","company"]},{"name":"scope","type":"enum","required":false,"description":"Which name surface to search. `auto` (default) queries BOTH the fulltext and the legal-name surface and merges by LEI — GLEIF's fulltext relevance alone can bury an exact legal-name match below the page cut. `fulltext` also matches former and transliterated names; `name` is strict legal-name matching.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"merge fulltext + legal-name surfaces, rank by confidence (best disambiguation)"},{"value":"fulltext","label":"match legal name + other/trade/transliterated names (broadest)"},{"value":"name","label":"match the registered legal name only"}],"default":"auto","example":"auto"},{"name":"country","type":"string","required":false,"description":"Filter by the entity's legal-address country (ISO-3166 alpha-2, e.g. US, DE).","on_invalid":"ignore","example":"US","aliases":["country_code","cc"]},{"name":"status","type":"string","required":false,"description":"Filter by registration status (case-insensitive). Common values: ISSUED, LAPSED, RETIRED, ANNULLED, MERGED, DUPLICATE, PENDING_TRANSFER, PENDING_ARCHIVAL. NOTE: LAPSED only means the record's re-certification is overdue — not that the company is gone.","on_invalid":"ignore","example":"ISSUED","aliases":["registration_status"]},{"name":"entity_status","type":"string","required":false,"description":"Filter by entity status: ACTIVE or INACTIVE (INACTIVE = the legal entity itself ceased to exist; different axis than `status`).","on_invalid":"ignore","example":"ACTIVE"},{"name":"jurisdiction","type":"string","required":false,"description":"Filter by legal jurisdiction (ISO-3166 code, may include region subdivisions like US-DE for Delaware).","on_invalid":"ignore","example":"DE"},{"name":"limit","type":"integer","required":false,"description":"Max results to return (1-200; GLEIF page cap is 200).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":200},{"name":"page","type":"integer","required":false,"description":"Result page number (1-based).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":10000},{"name":"min_confidence","type":"number","required":false,"description":"Drop candidates whose match_confidence is below this 0-1 threshold.","on_invalid":"ignore","example":0.6,"minimum":0,"maximum":1},{"name":"typo","type":"boolean","required":false,"description":"When the name has NO exact matches, attempt typo-recovery: probe GLEIF autocompletions with bounded misspelling-candidates and re-run the search on the best correction (did_you_mean). Recovers common typos (gogle→Google, deutsche bnk→Deutsche Bank); best-effort, never blocks an exact-match query. Set false to skip.","on_invalid":"ignore","default":true,"example":true,"aliases":["fuzzy","did_you_mean"]}],"returns":"candidates[]{lei, legal_name, match_confidence, jurisdiction, entity_status, registration_status, status_note, city, country, legal_form_code}, count, total (full GLEIF match count), page, confidence_note, did_you_mean + typo_recovered (when a zero-result query was recovered from a misspelling)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"Apple Inc","country":"US"}},{"name":"autocomplete","description":"Type-ahead suggestions for a partial company name (GLEIF autocompletions surface) — each suggestion carries its LEI for direct lookup.","required_params":["name"],"optional_params":[],"params":[{"name":"name","type":"string","required":true,"description":"Partial name (min 2 chars) to complete.","on_invalid":"reject","example":"apple i","aliases":["q","query","prefix"]}],"returns":"suggestions[]{value, highlighted, lei}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"apple"}},{"name":"relationships","description":"One LEI → Level-2 corporate hierarchy: direct & ultimate parent (entity OR the entity's declared reporting-exception with reason+meaning OR no_data), children list + total counts. detail=true adds the auditable relationship provenance.","required_params":["lei"],"optional_params":["children_limit","detail"],"params":[{"name":"lei","type":"string","required":true,"description":"The 20-character Legal Entity Identifier (ISO 17442). Spaces/dashes are ignored; case-insensitive. Format + MOD-97-10 checksum are validated offline first — a malformed LEI returns a clean error with the reason, never an upstream call.","on_invalid":"reject","example":"HWUPKR0MPOU8FGXBT394","aliases":["lei_code","id"]},{"name":"children_limit","type":"integer","required":false,"description":"Max direct/ultimate children to list (0-200). The TOTAL count is always returned in children_total regardless of this cap.","on_invalid":"ignore","default":50,"example":50,"minimum":0,"maximum":200},{"name":"detail","type":"boolean","required":false,"description":"If true, include the raw relationship-record provenance for each parent link (valid_from, accounting periods, corroboration level/documents) — the auditable Level-2 trail.","on_invalid":"ignore","default":false,"example":true}],"returns":"lei, direct_parent{type: entity|reporting_exception|no_data, ...record|reason+meaning}, ultimate_parent{same}, direct_children[]/ultimate_children[]{lei, legal_name, country, registration_status} (capped at children_limit), direct_children_total, ultimate_children_total (+ direct_parent.provenance/ultimate_parent.provenance when detail=true)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"lei":"5493006MHB84DD0ZWV18"}},{"name":"map","description":"Identifier mapping: ISIN / BIC / MIC / QCC / S&P-Global-ID → LEI record(s), or reverse LEI → all its ISINs.","required_params":["type","value"],"optional_params":["limit"],"params":[{"name":"type","type":"enum","required":true,"description":"Which identifier system to map. isin/bic/mic/qcc/spglobal map TO LEI records; lei_to_isin maps an LEI to its issued ISINs.","on_invalid":"reject","allowed_values":[{"value":"isin","label":"ISIN security identifier → issuing entity's LEI record"},{"value":"bic","label":"SWIFT/BIC bank code → the bank's LEI record"},{"value":"mic","label":"Market Identifier Code → venue operator's LEI record (GLEIF + ISO 10383 registry supplement for venues GLEIF lacks)"},{"value":"qcc","label":"Quoted Currency Code identifier → LEI record"},{"value":"spglobal","label":"S&P Global company ID → LEI record"},{"value":"lei_to_isin","label":"reverse: LEI → all ISINs issued by that entity"}],"example":"isin","aliases":["map_type","kind"]},{"name":"value","type":"string","required":true,"description":"The identifier to map: an ISIN (e.g. US0378331005), BIC (e.g. DEUTDEFFXXX), MIC, QCC, S&P Global ID — or the LEI itself for type=lei_to_isin.","on_invalid":"reject","example":"US0378331005","aliases":["identifier","code"]},{"name":"limit","type":"integer","required":false,"description":"Max results to return (1-200; GLEIF page cap is 200).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":200}],"returns":"type, value, entities[]{lei, legal_name, jurisdiction, registration_status, bic[], ...} for *→LEI types; isins[] + count for type=lei_to_isin","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"isin","value":"US0378331005"}},{"name":"reference","description":"GLEIF reference collections: ISO-20275 legal forms, registration authorities, LEI issuers (LOUs), jurisdictions, countries, regions, field catalog — list or fetch one by code.","required_params":["kind"],"optional_params":["code","limit","page"],"params":[{"name":"kind","type":"enum","required":true,"description":"Which reference list to query. All are GLEIF live except 'mic', which is served from the embedded ISO 10383 registry snapshot.","on_invalid":"reject","allowed_values":[{"value":"legal-forms","label":"ISO 20275 entity legal forms (ELF codes)"},{"value":"registration-authorities","label":"business-register authorities (RA codes)"},{"value":"lei-issuers","label":"LEI issuing organizations (LOUs)"},{"value":"jurisdictions","label":"legal jurisdictions"},{"value":"countries","label":"ISO 3166 countries"},{"value":"regions","label":"ISO 3166-2 regions"},{"value":"fields","label":"queryable LEI-record field catalog"},{"value":"mic","label":"ISO 10383 Market Identifier Codes (embedded registry; supports country=)"}],"example":"legal-forms","aliases":["type"]},{"name":"code","type":"string","required":false,"description":"Optional: fetch ONE reference item by its code/id (e.g. ELF code '8888', RA code 'RA000602', LOU LEI). Omit to list.","on_invalid":"ignore","example":"8888","aliases":["id"]},{"name":"limit","type":"integer","required":false,"description":"Max results to return (1-200; GLEIF page cap is 200).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":200},{"name":"page","type":"integer","required":false,"description":"Result page number (1-based).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":10000}],"returns":"kind, items[] (raw GLEIF attributes per item, id included), count, total — or item{} when code= is given","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"kind":"legal-forms"}},{"name":"batch","description":"Up to 50 mixed lookup/search items in one call. Lookups are collapsed into one upstream request per 50 LEIs (GLEIF rate-friendly); searches are spaced.","required_params":["items"],"optional_params":[],"params":[{"name":"items","type":"array","required":true,"description":"Up to 50 items. Each is {type: lookup|search, ...}: lookup items carry `lei`; search items carry `name` (+ optional `country`). Lookups are collapsed into ONE upstream call per 50 LEIs (rate-friendly); searches run sequentially, spaced. A bad item yields its own error entry — it never fails the batch.","on_invalid":"reject","example":[{"type":"lookup","lei":"HWUPKR0MPOU8FGXBT394"},{"type":"search","name":"Apple Inc","country":"US"}],"aliases":["inputs","batch"]}],"returns":"count, ok_count, results[] (each: {type, ok, entity|candidates|error, input echo}) in input order","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"items":[{"type":"lookup","lei":"HWUPKR0MPOU8FGXBT394"},{"type":"search","name":"Deutsche Bank","country":"DE"}]}}]},{"name":"letterboxd","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Letterboxd API scraper — film details (rating, runtime, cast, crew, similar films), reviews, member profiles, diary, curated lists, and search from Letterboxd.com","version":"0.2.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/letterboxd/v1","spec_available":true,"actions":[{"name":"film","description":"Full Letterboxd film detail by film slug or URL: title, year, directors, cast, genres, runtime, poster, IMDb/TMDb IDs, average rating, total ratings, watch count, like count, and list appearances.","required_params":[],"optional_params":["film","film_slug","url"],"params":[{"name":"film","type":"string","required":false,"description":"Letterboxd film slug, OR a full film URL (https://letterboxd.com/film/parasite-2019/) — the path is parsed to the slug.","on_invalid":"reject","example":"parasite-2019","aliases":["film_slug","url"]}],"returns":"film{} — title, year, directors, cast[], genres, runtime, poster, imdb_id/tmdb_id, avg_rating, rating_count, watch_count, like_count, list_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"film":"parasite-2019"}},{"name":"user","description":"Public Letterboxd member profile and stats by username: display name, avatar, bio, film/list/follower counts, and the member's favourite films.","required_params":["user"],"optional_params":[],"params":[{"name":"user","type":"string","required":true,"description":"Letterboxd username (the handle in a profile URL), OR a profile URL.","on_invalid":"reject","example":"dave","aliases":["username"]}],"returns":"profile{} — display_name, avatar, bio, films/lists/following/followers counts, favorite_films[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"user":"dave"}},{"name":"user_films","description":"Paginated list of films a Letterboxd member has watched and rated, with their personal star rating for each.","required_params":["user"],"optional_params":["page","per_page"],"params":[{"name":"user","type":"string","required":true,"description":"Letterboxd username (the handle in a profile URL), OR a profile URL.","on_invalid":"reject","example":"dave","aliases":["username"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Hint only — Letterboxd fixes the page size per view (films 72, reviews 12, diary/list 100); reported back in meta.per_page.","on_invalid":"ignore","example":72}],"returns":"films[] (slug, name, url, user_rating); meta.page/per_page/has_more","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"user":"dave"}},{"name":"user_diary","description":"Paginated diary entries for a Letterboxd member: film slug, name, watch date, and star rating for each viewing.","required_params":["user"],"optional_params":["page","per_page"],"params":[{"name":"user","type":"string","required":true,"description":"Letterboxd username (the handle in a profile URL), OR a profile URL.","on_invalid":"reject","example":"dave","aliases":["username"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Hint only — Letterboxd fixes the page size per view (films 72, reviews 12, diary/list 100); reported back in meta.per_page.","on_invalid":"ignore","example":72}],"returns":"entries[] (slug, name, watched_date, rating); meta.page/per_page/has_more","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"user":"dave"}},{"name":"list","description":"A public Letterboxd curated film list: title, description, and the paginated film entries with user ratings.","required_params":["user","list"],"optional_params":["page","per_page"],"params":[{"name":"user","type":"string","required":true,"description":"Letterboxd username (the handle in a profile URL), OR a profile URL.","on_invalid":"reject","example":"dave","aliases":["username"]},{"name":"list","type":"string","required":true,"description":"List slug (the segment after /list/ in a list URL).","on_invalid":"reject","example":"official-top-250-narrative-feature-films","aliases":["list_slug"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Hint only — Letterboxd fixes the page size per view (films 72, reviews 12, diary/list 100); reported back in meta.per_page.","on_invalid":"ignore","example":72}],"returns":"username, slug, title, description, films[]; meta.page/per_page/has_more","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"film_reviews","description":"Paginated public reviews for a Letterboxd film: reviewer username, display name, star rating, review text, and like count.","required_params":[],"optional_params":["film","film_slug","url","page","per_page"],"params":[{"name":"film","type":"string","required":false,"description":"Letterboxd film slug, OR a full film URL (https://letterboxd.com/film/parasite-2019/) — the path is parsed to the slug.","on_invalid":"reject","example":"parasite-2019","aliases":["film_slug","url"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Hint only — Letterboxd fixes the page size per view (films 72, reviews 12, diary/list 100); reported back in meta.per_page.","on_invalid":"ignore","example":72}],"returns":"reviews[] (username, display_name, rating, text, likes), film; meta.page/per_page/has_more","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"browse","description":"Browse Letterboxd films with optional genre / decade / year filters, ordered by popularity, rating, release date, or runtime (paginated): slug, name, URL, and average rating.","required_params":[],"optional_params":["sort","genre","decade","year","page","per_page"],"params":[{"name":"sort","type":"enum","required":false,"description":"Ordering for the films browser.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"Most popular (default)"},{"value":"rating","label":"Highest rated"},{"value":"release","label":"Newest by release date"},{"value":"shortest","label":"Shortest runtime first"},{"value":"longest","label":"Longest runtime first"}],"default":"popular","example":"popular"},{"name":"genre","type":"enum","required":false,"description":"Optional genre filter for the films browser (e.g. horror, science-fiction). Combine with sort to get e.g. highest-rated horror.","on_invalid":"reject","allowed_values":[{"value":"action","label":"Action"},{"value":"adventure","label":"Adventure"},{"value":"animation","label":"Animation"},{"value":"comedy","label":"Comedy"},{"value":"crime","label":"Crime"},{"value":"documentary","label":"Documentary"},{"value":"drama","label":"Drama"},{"value":"family","label":"Family"},{"value":"fantasy","label":"Fantasy"},{"value":"history","label":"History"},{"value":"horror","label":"Horror"},{"value":"music","label":"Music"},{"value":"mystery","label":"Mystery"},{"value":"romance","label":"Romance"},{"value":"science-fiction","label":"Science Fiction"},{"value":"thriller","label":"Thriller"},{"value":"tv-movie","label":"Tv Movie"},{"value":"war","label":"War"},{"value":"western","label":"Western"}],"example":"horror"},{"name":"decade","type":"string","required":false,"description":"Optional decade filter, e.g. '1990s', '2010s'. Combine with sort and/or genre.","on_invalid":"reject","example":"1990s"},{"name":"year","type":"integer","required":false,"description":"Optional release-year filter, e.g. 2019. Combine with sort and/or genre.","on_invalid":"reject","example":2019},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Hint only — Letterboxd fixes the page size per view (films 72, reviews 12, diary/list 100); reported back in meta.per_page.","on_invalid":"ignore","example":72}],"returns":"films[] (slug, name, url, avg_rating), sort, filters; meta.page/per_page/has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"film_similar","description":"Films Letterboxd shows as similar/related to a given film: slug, name, URL — useful for recommendation and discovery off a single seed film.","required_params":[],"optional_params":["film","film_slug","url"],"params":[{"name":"film","type":"string","required":false,"description":"Letterboxd film slug, OR a full film URL (https://letterboxd.com/film/parasite-2019/) — the path is parsed to the slug.","on_invalid":"reject","example":"parasite-2019","aliases":["film_slug","url"]}],"returns":"similar_films[] (slug, name, url), film; meta.record_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"film":"parasite-2019"}},{"name":"lists_popular","description":"Browse Letterboxd's most popular member-curated film lists for a time window (week/month/year/all): list title, owner username, list slug+URL, and a preview of the first films.","required_params":[],"optional_params":["period","page","per_page"],"params":[{"name":"period","type":"enum","required":false,"description":"Time window for the popular-lists ranking.","on_invalid":"reject","allowed_values":[{"value":"week","label":"Popular this week (default)"},{"value":"month","label":"Popular this month"},{"value":"year","label":"Popular this year"},{"value":"all","label":"Most popular of all time"}],"default":"week","example":"week"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Hint only — Letterboxd fixes the page size per view (films 72, reviews 12, diary/list 100); reported back in meta.per_page.","on_invalid":"ignore","example":72}],"returns":"lists[] (list_id, username, slug, title, url, preview_film_slugs[]), period; meta.page/per_page/has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"user_lists","description":"The public film lists a Letterboxd member has created (paginated): list title, slug+URL, and a preview of the first films in each list.","required_params":["user"],"optional_params":["page","per_page"],"params":[{"name":"user","type":"string","required":true,"description":"Letterboxd username (the handle in a profile URL), OR a profile URL.","on_invalid":"reject","example":"dave","aliases":["username"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Hint only — Letterboxd fixes the page size per view (films 72, reviews 12, diary/list 100); reported back in meta.per_page.","on_invalid":"ignore","example":72}],"returns":"lists[] (list_id, username, slug, title, url, preview_film_slugs[]); meta.page/per_page/has_more","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"user":"dave"}},{"name":"search","description":"Search Letterboxd for films, members, or curated lists by keyword — returns matching results with ratings and links.","required_params":["query"],"optional_params":["type","page","per_page"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query.","on_invalid":"reject","example":"parasite"},{"name":"type","type":"enum","required":false,"description":"Which catalog to search.","on_invalid":"reject","allowed_values":[{"value":"films","label":"Films (default)"},{"value":"members","label":"Members / users"},{"value":"lists","label":"Public lists"}],"default":"films","example":"films"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Use meta.has_more to know when to stop; values < 1 clamp to 1.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Hint only — Letterboxd fixes the page size per view (films 72, reviews 12, diary/list 100); reported back in meta.per_page.","on_invalid":"ignore","example":72}],"returns":"films[] | members[] | lists[] (keyed by type), type, query; meta.page/per_page/has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"levels-fyi","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Levels.fyi API — tech salary & compensation scraper: total comp, base, stock and bonus by company, role, level, location and years of experience, plus percentile bands (P10/P25/P50/P75/P90), the median offer and individual anonymized salary submissions from Levels.fyi (levels.fyi) — company role catalog and role-to-company coverage included, no API key required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/levels-fyi/v1","spec_available":true,"actions":[{"name":"company/salaries","description":"The flagship action: full Levels.fyi compensation breakdown for one company + role. Returns the level ladder (L3/L4/…), per-level averages (base / stock / bonus / total), the percentile bands (P10/P25/P50/P75/P90 for total-comp, base, bonus and stock), the median offer (with years of experience), the role's sub-specializations and a sample of recent salary submissions. Pass an optional `location` to scope to a metro.","required_params":["company","role"],"optional_params":["location"],"params":[{"name":"company","type":"string","required":true,"description":"Company name or Levels.fyi slug ('google', 'Goldman Sachs', 'stripe', 'nvidia'). A name is auto-slugified; if you already have the slug from company/search, pass it directly.","on_invalid":"reject","example":"google","aliases":["company_slug","employer"]},{"name":"role","type":"string","required":true,"description":"Job family / role ('software-engineer', 'product-manager', 'data-scientist', 'hardware-engineer'). Use company/roles to list the exact roles a company reports.","on_invalid":"reject","example":"software-engineer","aliases":["job_family","title","job_title"]},{"name":"location","type":"string","required":false,"description":"Optional metro/location slug to scope comp to one area ('new-york-city-area', 'seattle-area', 'bay-area'). Omit for the company-wide (United States) figures.","on_invalid":"ignore","example":"new-york-city-area"}],"returns":"company{id,slug,name,…}, role, location, percentiles{total_comp,base_salary,bonus,stock_grant each p10..p90}, median{level,total_compensation,base_salary,years_of_experience,…}, levels[]{titles,order,percent_workforce}, averages[]{level,total_compensation,base_salary,stock_grant,bonus,sample_count}, related_roles[]{title,title_slug,salary_count}, sample_submissions[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"company":"google","role":"software-engineer"}},{"name":"company/roles","description":"Resolve a company to its Levels.fyi profile (id, slug, website, employee count, HQ, vesting schedule…) plus the catalog of job-family role slugs you can query for it. Use this to confirm a company's slug and pick a role slug to feed into company/salaries. NOTE: the role list is the full Levels.fyi job-family catalog (the roles available to query) — for the roles a company actually has reported data for, read `related_roles` from a company/salaries response.","required_params":["company"],"optional_params":[],"params":[{"name":"company","type":"string","required":true,"description":"Company name or Levels.fyi slug ('google', 'Goldman Sachs', 'stripe', 'nvidia'). A name is auto-slugified; if you already have the slug from company/search, pass it directly.","on_invalid":"reject","example":"google","aliases":["company_slug","employer"]}],"returns":"company{id,slug,name,website,employee_count,hq_city,vesting_schedule,…}, available_roles[]{slug,name,category,description}","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{"company":"stripe"}},{"name":"company/search","description":"Find companies on Levels.fyi by name. Returns matching companies with the slug and a ready-to-use salaries URL — feed the slug into company/roles or company/salaries.","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Company name (or part of it) to search for.","on_invalid":"reject","example":"goldman","aliases":["q","company"]},{"name":"limit","type":"integer","required":false,"description":"Max companies to return (1–100).","on_invalid":"ignore","default":20,"minimum":1,"maximum":100}],"returns":"companies[]{name, slug, salaries_url}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"goldman"}},{"name":"role/companies","description":"For a given role/title, list every company that reports compensation data for it on Levels.fyi (the role's coverage), plus the country-wide median total-comp and the full job-family catalog. Useful for 'which companies pay for <role>' and leaderboard-style discovery.","required_params":["role"],"optional_params":["limit"],"params":[{"name":"role","type":"string","required":true,"description":"Role / job-family slug ('software-engineer', 'product-manager', 'data-scientist').","on_invalid":"reject","example":"software-engineer","aliases":["job_family","title"]},{"name":"limit","type":"integer","required":false,"description":"Max companies to return (1–2000).","on_invalid":"ignore","default":200,"minimum":1,"maximum":2000}],"returns":"role, median_total_compensation, companies[]{name}, job_families[]{slug,name,category}","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{"role":"software-engineer"}},{"name":"submissions","description":"Paginated individual salary submissions for a company + role — the raw anonymized datapoints behind the averages: level, focus, years of experience, location, base / stock / bonus / total comp and offer date. 50 per page; page with `page`.","required_params":["company","role"],"optional_params":["location","page"],"params":[{"name":"company","type":"string","required":true,"description":"Company name or Levels.fyi slug ('google', 'Goldman Sachs', 'stripe', 'nvidia'). A name is auto-slugified; if you already have the slug from company/search, pass it directly.","on_invalid":"reject","example":"google","aliases":["company_slug","employer"]},{"name":"role","type":"string","required":true,"description":"Job family / role ('software-engineer', 'product-manager', 'data-scientist', 'hardware-engineer'). Use company/roles to list the exact roles a company reports.","on_invalid":"reject","example":"software-engineer","aliases":["job_family","title","job_title"]},{"name":"location","type":"string","required":false,"description":"Optional metro/location slug to scope comp to one area ('new-york-city-area', 'seattle-area', 'bay-area'). Omit for the company-wide (United States) figures.","on_invalid":"ignore","example":"new-york-city-area"},{"name":"page","type":"integer","required":false,"description":"Submission page (50 per page). Page until meta.total_pages.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200}],"returns":"submissions[]{uuid, level, title, focus_tag, years_of_experience, location, base_salary, total_compensation, stock_grant_annual, bonus_annual, offer_date, currency} + meta{page, total_pages, total}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"company":"google","role":"software-engineer"}}]},{"name":"lidl","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Lidl API scraper — Lidl's web shops in 8 European countries and the in-store weekly offers of 30: search, category browse, offers and the full product record with EAN, variants, Lidl Plus member price and delivery, in local currency. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/lidl/v1","spec_available":true,"actions":[{"name":"search","description":"Search one Lidl country by keyword (or EAN): product id, title, brand, image, the public price with the struck-through price and whether that is the recommended retail price or Lidl's previous price, discount, unit price, Lidl Plus member price kept separate, rating and review count, web-shop availability and in-store offer dates. Filter by brand, price, rating and availability; sort by price, rating, newest, bestselling or discount.","required_params":["query"],"optional_params":["country","language","page","limit","sort","brand","price_min","price_max","min_rating","availability","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, in the country's language. An EAN barcode also works.","on_invalid":"reject","example":"kaffeemaschine","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Lidl country site. de, fr, pl, nl, be, es, cz and sk have a web shop; the other countries list only their current and upcoming in-store offers. Prices come back in that country's currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany (EUR, web shop)"},{"value":"fr","label":"France (EUR, web shop)"},{"value":"pl","label":"Poland (PLN, web shop)"},{"value":"nl","label":"Netherlands (EUR, web shop)"},{"value":"be","label":"Belgium (EUR, web shop)"},{"value":"es","label":"Spain (EUR, web shop)"},{"value":"cz","label":"Czechia (CZK, web shop)"},{"value":"sk","label":"Slovakia (EUR, web shop)"},{"value":"it","label":"Italy (EUR, in-store offers only)"},{"value":"at","label":"Austria (EUR, in-store offers only)"},{"value":"hu","label":"Hungary (HUF, in-store offers only)"},{"value":"ro","label":"Romania (RON, in-store offers only)"},{"value":"bg","label":"Bulgaria (EUR, in-store offers only)"},{"value":"hr","label":"Croatia (EUR, in-store offers only)"},{"value":"si","label":"Slovenia (EUR, in-store offers only)"},{"value":"ch","label":"Switzerland (CHF, in-store offers only)"},{"value":"dk","label":"Denmark (DKK, in-store offers only)"},{"value":"se","label":"Sweden (SEK, in-store offers only)"},{"value":"fi","label":"Finland (EUR, in-store offers only)"},{"value":"ie","label":"Ireland (EUR, in-store offers only)"},{"value":"gb","label":"United Kingdom (GBP, in-store offers only)"},{"value":"pt","label":"Portugal (EUR, in-store offers only)"},{"value":"lt","label":"Lithuania (EUR, in-store offers only)"},{"value":"lv","label":"Latvia (EUR, in-store offers only)"},{"value":"ee","label":"Estonia (EUR, in-store offers only)"},{"value":"gr","label":"Greece (EUR, in-store offers only)"},{"value":"cy","label":"Cyprus (EUR, in-store offers only)"},{"value":"rs","label":"Serbia (RSD, in-store offers only)"},{"value":"mt","label":"Malta (EUR, in-store offers only)"},{"value":"lu","label":"Luxembourg (EUR, in-store offers only)"}],"default":"de","example":"de"},{"name":"language","type":"enum","required":false,"description":"Only for Belgium (nl, fr) and Switzerland (de, fr, it). Every other country has one language and ignores nothing — a language it does not offer is rejected.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Dutch (Belgium)"},{"value":"fr","label":"French (Belgium, Switzerland)"},{"value":"de","label":"German (Switzerland)"},{"value":"it","label":"Italian (Switzerland)"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"limit","type":"integer","required":false,"description":"Products per page, 1-100 (Lidl's own page is 36).","on_invalid":"reject","default":36,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order of results. Only orderings Lidl offers are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Lidl's ranking"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"newest","label":"Newest first"},{"value":"rating","label":"Best rated first"},{"value":"bestselling","label":"Most added to basket"},{"value":"discount","label":"Biggest discount first"}],"default":"relevance"},{"name":"brand","type":"array","required":false,"description":"One brand or a list (any of them), spelt as Lidl shows it on rows (`brand`).","on_invalid":"reject","example":["PARKSIDE"]},{"name":"price_min","type":"number","required":false,"description":"Lowest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"min_rating","type":"number","required":false,"description":"Only products rated at least this (1-5).","on_invalid":"reject","minimum":1,"maximum":5},{"name":"availability","type":"enum","required":false,"description":"Restrict to web-shop stock or to in-store offers.","on_invalid":"reject","allowed_values":[{"value":"online","label":"Orderable in the web shop now"},{"value":"in_store","label":"In-store offers"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, title, brand, url, image, images[], currency, price (public shelf price — null when Lidl publishes only a member price), price_before_discount, price_before_discount_type (recommended_retail_price|previous_price), discount_percent, discount_label, multi_buy, unit_price, unit_price_text, packaging, price_valid_from, price_valid_until, member_price (Lidl Plus app price — never the public price), member_price_before_discount, member_program, member_price_label, member_discount_label, member_unit_price_text, regional_prices[]{region_id, price, price_before_discount, valid_until}, rating, review_count, rating_scale (5), available_online, availability (available_online|coming_soon_online|in_store_only|unavailable_online), availability_text, in_store, store_offers[]{label, type, valid_from, valid_until}, product_type, has_variants, category, deal_of_the_day, age_restricted}, count, total_results, offset, sort_applied, corrected_query, keyword_matches_on_page, fallback_results_dropped, country, language, currency, web_shop, query, redirect{url, product_id}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"kaffeemaschine","country":"de"}},{"name":"category/products","description":"Browse one Lidl category by its id or URL: the same product rows, filters, sorts and paging as search.","required_params":["category"],"optional_params":["country","language","page","limit","sort","brand","price_min","price_max","min_rating","availability","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A Lidl category id from a category URL (…/h/kaffee-espressomaschinen/h10006306 → h10006306, …/c/kueche-haushalt/s10067764 → s10067764). The full URL is accepted.","on_invalid":"reject","example":"h10006306","aliases":["category_id","url"]},{"name":"country","type":"enum","required":false,"description":"Lidl country site. de, fr, pl, nl, be, es, cz and sk have a web shop; the other countries list only their current and upcoming in-store offers. Prices come back in that country's currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany (EUR, web shop)"},{"value":"fr","label":"France (EUR, web shop)"},{"value":"pl","label":"Poland (PLN, web shop)"},{"value":"nl","label":"Netherlands (EUR, web shop)"},{"value":"be","label":"Belgium (EUR, web shop)"},{"value":"es","label":"Spain (EUR, web shop)"},{"value":"cz","label":"Czechia (CZK, web shop)"},{"value":"sk","label":"Slovakia (EUR, web shop)"},{"value":"it","label":"Italy (EUR, in-store offers only)"},{"value":"at","label":"Austria (EUR, in-store offers only)"},{"value":"hu","label":"Hungary (HUF, in-store offers only)"},{"value":"ro","label":"Romania (RON, in-store offers only)"},{"value":"bg","label":"Bulgaria (EUR, in-store offers only)"},{"value":"hr","label":"Croatia (EUR, in-store offers only)"},{"value":"si","label":"Slovenia (EUR, in-store offers only)"},{"value":"ch","label":"Switzerland (CHF, in-store offers only)"},{"value":"dk","label":"Denmark (DKK, in-store offers only)"},{"value":"se","label":"Sweden (SEK, in-store offers only)"},{"value":"fi","label":"Finland (EUR, in-store offers only)"},{"value":"ie","label":"Ireland (EUR, in-store offers only)"},{"value":"gb","label":"United Kingdom (GBP, in-store offers only)"},{"value":"pt","label":"Portugal (EUR, in-store offers only)"},{"value":"lt","label":"Lithuania (EUR, in-store offers only)"},{"value":"lv","label":"Latvia (EUR, in-store offers only)"},{"value":"ee","label":"Estonia (EUR, in-store offers only)"},{"value":"gr","label":"Greece (EUR, in-store offers only)"},{"value":"cy","label":"Cyprus (EUR, in-store offers only)"},{"value":"rs","label":"Serbia (RSD, in-store offers only)"},{"value":"mt","label":"Malta (EUR, in-store offers only)"},{"value":"lu","label":"Luxembourg (EUR, in-store offers only)"}],"default":"de","example":"de"},{"name":"language","type":"enum","required":false,"description":"Only for Belgium (nl, fr) and Switzerland (de, fr, it). Every other country has one language and ignores nothing — a language it does not offer is rejected.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Dutch (Belgium)"},{"value":"fr","label":"French (Belgium, Switzerland)"},{"value":"de","label":"German (Switzerland)"},{"value":"it","label":"Italian (Switzerland)"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"limit","type":"integer","required":false,"description":"Products per page, 1-100 (Lidl's own page is 36).","on_invalid":"reject","default":36,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order of results. Only orderings Lidl offers are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Lidl's ranking"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"newest","label":"Newest first"},{"value":"rating","label":"Best rated first"},{"value":"bestselling","label":"Most added to basket"},{"value":"discount","label":"Biggest discount first"}],"default":"relevance"},{"name":"brand","type":"array","required":false,"description":"One brand or a list (any of them), spelt as Lidl shows it on rows (`brand`).","on_invalid":"reject","example":["PARKSIDE"]},{"name":"price_min","type":"number","required":false,"description":"Lowest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"min_rating","type":"number","required":false,"description":"Only products rated at least this (1-5).","on_invalid":"reject","minimum":1,"maximum":5},{"name":"availability","type":"enum","required":false,"description":"Restrict to web-shop stock or to in-store offers.","on_invalid":"reject","allowed_values":[{"value":"online","label":"Orderable in the web shop now"},{"value":"in_store","label":"In-store offers"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, title, brand, url, image, images[], currency, price (public shelf price — null when Lidl publishes only a member price), price_before_discount, price_before_discount_type (recommended_retail_price|previous_price), discount_percent, discount_label, multi_buy, unit_price, unit_price_text, packaging, price_valid_from, price_valid_until, member_price (Lidl Plus app price — never the public price), member_price_before_discount, member_program, member_price_label, member_discount_label, member_unit_price_text, regional_prices[]{region_id, price, price_before_discount, valid_until}, rating, review_count, rating_scale (5), available_online, availability (available_online|coming_soon_online|in_store_only|unavailable_online), availability_text, in_store, store_offers[]{label, type, valid_from, valid_until}, product_type, has_variants, category, deal_of_the_day, age_restricted}, count, total_results, offset, sort_applied, corrected_query, keyword_matches_on_page, fallback_results_dropped, country, language, currency, web_shop, category","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"deals","description":"Lidl's in-store offers for one country — the weekly leaflet products, current and upcoming — with each offer's valid-from and valid-until dates, the offer price, struck price, unit price and any Lidl Plus member price. Works in all 30 countries, including those without a web shop.","required_params":[],"optional_params":["country","language","query","page","limit","sort","brand","price_min","price_max","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Lidl country site. de, fr, pl, nl, be, es, cz and sk have a web shop; the other countries list only their current and upcoming in-store offers. Prices come back in that country's currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany (EUR, web shop)"},{"value":"fr","label":"France (EUR, web shop)"},{"value":"pl","label":"Poland (PLN, web shop)"},{"value":"nl","label":"Netherlands (EUR, web shop)"},{"value":"be","label":"Belgium (EUR, web shop)"},{"value":"es","label":"Spain (EUR, web shop)"},{"value":"cz","label":"Czechia (CZK, web shop)"},{"value":"sk","label":"Slovakia (EUR, web shop)"},{"value":"it","label":"Italy (EUR, in-store offers only)"},{"value":"at","label":"Austria (EUR, in-store offers only)"},{"value":"hu","label":"Hungary (HUF, in-store offers only)"},{"value":"ro","label":"Romania (RON, in-store offers only)"},{"value":"bg","label":"Bulgaria (EUR, in-store offers only)"},{"value":"hr","label":"Croatia (EUR, in-store offers only)"},{"value":"si","label":"Slovenia (EUR, in-store offers only)"},{"value":"ch","label":"Switzerland (CHF, in-store offers only)"},{"value":"dk","label":"Denmark (DKK, in-store offers only)"},{"value":"se","label":"Sweden (SEK, in-store offers only)"},{"value":"fi","label":"Finland (EUR, in-store offers only)"},{"value":"ie","label":"Ireland (EUR, in-store offers only)"},{"value":"gb","label":"United Kingdom (GBP, in-store offers only)"},{"value":"pt","label":"Portugal (EUR, in-store offers only)"},{"value":"lt","label":"Lithuania (EUR, in-store offers only)"},{"value":"lv","label":"Latvia (EUR, in-store offers only)"},{"value":"ee","label":"Estonia (EUR, in-store offers only)"},{"value":"gr","label":"Greece (EUR, in-store offers only)"},{"value":"cy","label":"Cyprus (EUR, in-store offers only)"},{"value":"rs","label":"Serbia (RSD, in-store offers only)"},{"value":"mt","label":"Malta (EUR, in-store offers only)"},{"value":"lu","label":"Luxembourg (EUR, in-store offers only)"}],"default":"de","example":"de"},{"name":"language","type":"enum","required":false,"description":"Only for Belgium (nl, fr) and Switzerland (de, fr, it). Every other country has one language and ignores nothing — a language it does not offer is rejected.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Dutch (Belgium)"},{"value":"fr","label":"French (Belgium, Switzerland)"},{"value":"de","label":"German (Switzerland)"},{"value":"it","label":"Italian (Switzerland)"}]},{"name":"query","type":"string","required":false,"description":"Optional keyword to narrow the offers.","on_invalid":"reject","example":"parkside","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"limit","type":"integer","required":false,"description":"Products per page, 1-100 (Lidl's own page is 36).","on_invalid":"reject","default":36,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order of results. Only orderings Lidl offers are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Lidl's ranking"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"newest","label":"Newest first"},{"value":"rating","label":"Best rated first"},{"value":"bestselling","label":"Most added to basket"},{"value":"discount","label":"Biggest discount first"}],"default":"relevance"},{"name":"brand","type":"array","required":false,"description":"One brand or a list (any of them), spelt as Lidl shows it on rows (`brand`).","on_invalid":"reject","example":["PARKSIDE"]},{"name":"price_min","type":"number","required":false,"description":"Lowest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, title, brand, url, image, images[], currency, price (public shelf price — null when Lidl publishes only a member price), price_before_discount, price_before_discount_type (recommended_retail_price|previous_price), discount_percent, discount_label, multi_buy, unit_price, unit_price_text, packaging, price_valid_from, price_valid_until, member_price (Lidl Plus app price — never the public price), member_price_before_discount, member_program, member_price_label, member_discount_label, member_unit_price_text, regional_prices[]{region_id, price, price_before_discount, valid_until}, rating, review_count, rating_scale (5), available_online, availability (available_online|coming_soon_online|in_store_only|unavailable_online), availability_text, in_store, store_offers[]{label, type, valid_from, valid_until}, product_type, has_variants, category, deal_of_the_day, age_restricted}, count, total_results, offset, sort_applied, corrected_query, keyword_matches_on_page, fallback_results_dropped, country, language, currency, web_shop","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"it"}},{"name":"product/detail","description":"The full Lidl product record by id or URL: title, brand, gallery, EAN/GTIN, public price with struck price and its type, unit price, Lidl Plus member price, rating with review count and recommendation counts, web-shop availability, in-store offer dates, delivery time and charge, maximum order quantity, description, bullet points, specification table, breadcrumb, size and colour variants each with price, stock state and EAN, manuals, and the other Lidl countries that sell it.","required_params":["product_id"],"optional_params":["country","language","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Lidl product id — the digits after /p in a product URL (…/p100348984 → 100348984). A variant id or a full product URL is accepted; a URL also sets the country.","on_invalid":"reject","example":"100348984","aliases":["id","url"]},{"name":"country","type":"enum","required":false,"description":"Lidl country site. de, fr, pl, nl, be, es, cz and sk have a web shop; the other countries list only their current and upcoming in-store offers. Prices come back in that country's currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany (EUR, web shop)"},{"value":"fr","label":"France (EUR, web shop)"},{"value":"pl","label":"Poland (PLN, web shop)"},{"value":"nl","label":"Netherlands (EUR, web shop)"},{"value":"be","label":"Belgium (EUR, web shop)"},{"value":"es","label":"Spain (EUR, web shop)"},{"value":"cz","label":"Czechia (CZK, web shop)"},{"value":"sk","label":"Slovakia (EUR, web shop)"},{"value":"it","label":"Italy (EUR, in-store offers only)"},{"value":"at","label":"Austria (EUR, in-store offers only)"},{"value":"hu","label":"Hungary (HUF, in-store offers only)"},{"value":"ro","label":"Romania (RON, in-store offers only)"},{"value":"bg","label":"Bulgaria (EUR, in-store offers only)"},{"value":"hr","label":"Croatia (EUR, in-store offers only)"},{"value":"si","label":"Slovenia (EUR, in-store offers only)"},{"value":"ch","label":"Switzerland (CHF, in-store offers only)"},{"value":"dk","label":"Denmark (DKK, in-store offers only)"},{"value":"se","label":"Sweden (SEK, in-store offers only)"},{"value":"fi","label":"Finland (EUR, in-store offers only)"},{"value":"ie","label":"Ireland (EUR, in-store offers only)"},{"value":"gb","label":"United Kingdom (GBP, in-store offers only)"},{"value":"pt","label":"Portugal (EUR, in-store offers only)"},{"value":"lt","label":"Lithuania (EUR, in-store offers only)"},{"value":"lv","label":"Latvia (EUR, in-store offers only)"},{"value":"ee","label":"Estonia (EUR, in-store offers only)"},{"value":"gr","label":"Greece (EUR, in-store offers only)"},{"value":"cy","label":"Cyprus (EUR, in-store offers only)"},{"value":"rs","label":"Serbia (RSD, in-store offers only)"},{"value":"mt","label":"Malta (EUR, in-store offers only)"},{"value":"lu","label":"Luxembourg (EUR, in-store offers only)"}],"default":"de","example":"de"},{"name":"language","type":"enum","required":false,"description":"Only for Belgium (nl, fr) and Switzerland (de, fr, it). Every other country has one language and ignores nothing — a language it does not offer is rejected.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Dutch (Belgium)"},{"value":"fr","label":"French (Belgium, Switzerland)"},{"value":"de","label":"German (Switzerland)"},{"value":"it","label":"Italian (Switzerland)"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, requested_variant_id, title, brand, url, images[], currency, price, price_before_discount, price_before_discount_type, discount_percent, discount_label, multi_buy, unit_price, unit_price_text, packaging, price_valid_from, price_valid_until, member_price, member_price_before_discount, member_program, member_price_label, member_discount_label, member_unit_price_text, regional_prices[], rating, review_count, rating_scale, recommended_yes, recommended_no, available_online, availability, availability_text, in_store, store_offers[], sold_online, sold_in_store, max_order_quantity, gtin (a valid GS1 barcode; null when Lidl publishes none), gtins[], in_store_codes[] (Lidl's internal 2-prefix store codes, not barcodes), description, feature_bullets[], long_description, specifications[]{name, value}, breadcrumbs[], category, product_type, variants[]{variant_id, attributes{size, colour, …}, title, price, price_before_discount, price_before_discount_type, available_online, availability, ean, url}, delivery{text, days, by_freight_forwarder, home_delivery_charge, free_delivery, returns}, manuals[]{name, url}, age_restricted, alcoholic, other_countries[]{country, language, url}, country, language, web_shop}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"100348984","country":"de"}}]},{"name":"linkedin-jobs","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"LinkedIn Jobs API — search jobs, jobs by company, location lookup, similar jobs, posting detail & company profiles from LinkedIn (linkedin.com), no login required","version":"1.2.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/linkedin-jobs/v1","spec_available":true,"actions":[{"name":"jobs/search","description":"Search public LinkedIn job postings by keywords, with optional location and date/seniority/job-type/workplace filters.","required_params":["keywords"],"optional_params":["location","max_results","date_posted","experience","job_type","workplace","industry","job_function","salary_min","salary_band","company","include_detail","include_company","page","cursor","start","geoId","filters","detail_concurrency"],"params":[{"name":"keywords","type":"string","required":true,"description":"What job to search for — title, skill or keyword.","on_invalid":"reject","example":"python developer","aliases":["query"]},{"name":"location","type":"string","required":false,"description":"Country, region or city to search in (free text, e.g. 'United States', 'Berlin').","on_invalid":"reject","example":"United States"},{"name":"max_results","type":"integer","required":false,"description":"How many jobs to return (1–1000). LinkedIn's guest API caps any single query at ~1000; use filters to narrow.","on_invalid":"reject","default":50,"minimum":1,"maximum":1000},{"name":"date_posted","type":"enum","required":false,"description":"Only jobs posted within this window (raw f_TPR codes like r86400 also accepted).","on_invalid":"ignore","allowed_values":[{"value":"24h","label":"Last 24 hours"},{"value":"week","label":"Last week"},{"value":"month","label":"Last month"}]},{"name":"experience","type":"enum","required":false,"description":"Only jobs at this experience level (raw f_E codes 1–6 also accepted).","on_invalid":"ignore","allowed_values":[{"value":"internship","label":"Internship"},{"value":"entry","label":"Entry level"},{"value":"associate","label":"Associate"},{"value":"mid_senior","label":"Mid-Senior level"},{"value":"director","label":"Director"},{"value":"executive","label":"Executive"}]},{"name":"job_type","type":"enum","required":false,"description":"Only jobs of this employment type (raw f_JT codes F/P/C/T/I/V/O also accepted).","on_invalid":"ignore","allowed_values":[{"value":"fulltime","label":"Full-time"},{"value":"parttime","label":"Part-time"},{"value":"contract","label":"Contract"},{"value":"temporary","label":"Temporary"},{"value":"internship","label":"Internship"},{"value":"volunteer","label":"Volunteer"},{"value":"other","label":"Other"}]},{"name":"workplace","type":"enum","required":false,"description":"Only jobs with this workplace arrangement (raw f_WT codes 1/2/3 also accepted).","on_invalid":"ignore","allowed_values":[{"value":"onsite","label":"On-site"},{"value":"remote","label":"Remote"},{"value":"hybrid","label":"Hybrid"}]},{"name":"company","type":"string","required":false,"description":"Only jobs at this employer — a company slug (the part after linkedin.com/company/), the full company URL, or its numeric LinkedIn company id (maps to the f_C facet; slugs are resolved automatically). For a pure company browse use the jobs/by-company action.","on_invalid":"ignore","example":"microsoft"},{"name":"industry","type":"string","required":false,"description":"Only jobs in this LinkedIn industry — raw f_I industry code(s), comma-separated for several (e.g. '4' = software).","on_invalid":"ignore","example":"4"},{"name":"job_function","type":"string","required":false,"description":"Only jobs in this job function — raw f_F function code(s) (e.g. 'it', 'eng', 'sale'), comma-separated.","on_invalid":"ignore","example":"it"},{"name":"salary_min","type":"integer","required":false,"description":"Only jobs paying at least this annual salary (USD). Mapped to LinkedIn's nearest pay band: 40k/60k/80k/100k/120k/140k+.","on_invalid":"ignore","example":100000,"minimum":0},{"name":"salary_band","type":"enum","required":false,"description":"Advanced: LinkedIn pay-band code directly (raw f_SB2). Prefer salary_min.","on_invalid":"ignore","allowed_values":[{"value":"1","label":"$40k+"},{"value":"2","label":"$60k+"},{"value":"3","label":"$80k+"},{"value":"4","label":"$100k+"},{"value":"5","label":"$120k+"},{"value":"6","label":"$140k+"}]},{"name":"include_detail","type":"boolean","required":false,"description":"Fetch the full posting per job (description, employment type, seniority, salary) — slower.","on_invalid":"reject","default":false},{"name":"include_company","type":"boolean","required":false,"description":"Also fetch the employer's company profile (industry, size, HQ) per job — slower.","on_invalid":"reject","default":false},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3… — page size = max_results).","on_invalid":"ignore","default":1,"minimum":1},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"start","type":"integer","required":false,"description":"Advanced: raw result offset (10 jobs/page, must stay < 1000). Prefer `page` or `cursor`.","on_invalid":"ignore","minimum":0,"maximum":999},{"name":"geoId","type":"string","required":false,"description":"Advanced: LinkedIn numeric geo ID — pins the search to an exact region (more precise than free-text location).","on_invalid":"ignore","example":"103644278"},{"name":"filters","type":"object","required":false,"description":"Advanced: the same facets as one object {date_posted, experience, job_type, workplace} — explicit keys here win over the flat params.","on_invalid":"ignore","example":{"workplace":"remote","date_posted":"24h"}},{"name":"detail_concurrency","type":"integer","required":false,"description":"Advanced: parallel detail fetches when include_detail=true (1–8).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"jobs[]{job_id, job_url, title, company{name, url, slug}, location, workplace_type, posted_date, posted_relative, salary, seniority_level, employment_type, description_text (with include_detail)} + meta.pagination{page, has_more, next_cursor}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"keywords":"python developer","location":"United States","max_results":25}},{"name":"jobs/detail","description":"Full posting for one job: description, employment type, seniority, salary, applicant count.","required_params":["job_id"],"optional_params":["include_company"],"params":[{"name":"job_id","type":"string","required":true,"description":"LinkedIn job ID — the number in the job URL (linkedin.com/jobs/view/<job_id>) or `job_id` from jobs/search.","on_invalid":"reject","example":"4425539379","aliases":["jobId"]},{"name":"include_company","type":"boolean","required":false,"description":"Also fetch the employer's company profile (industry, size, HQ) per job — slower.","on_invalid":"reject","default":false}],"returns":"job{job_id, job_url, title, company{...}, description_text, description_html, employment_type, seniority_level, salary, applicants}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"company","description":"Company profile: description, website, employee count, industry, HQ, founded year, specialties.","required_params":["company"],"optional_params":[],"params":[{"name":"company","type":"string","required":true,"description":"Company slug (the part after linkedin.com/company/) or the full LinkedIn company URL.","on_invalid":"reject","example":"microsoft","aliases":["slug","url"]}],"returns":"company{slug, url, description, website, employee_count, company_size, industry, headquarters, founded, organization_type, specialties}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"jobs/by-company","description":"All public job postings at a specific company — pass a company slug, URL or numeric id; optionally narrow with the same keyword/location/date/seniority/job-type/workplace filters as jobs/search.","required_params":["company"],"optional_params":["keywords","location","max_results","date_posted","experience","job_type","workplace","industry","job_function","salary_min","salary_band","include_detail","include_company","page","cursor","start","geoId","filters","detail_concurrency"],"params":[{"name":"company","type":"string","required":true,"description":"The employer — a company slug (the part after linkedin.com/company/), the full company URL, or its numeric LinkedIn company id. Slugs/URLs are resolved to the company id automatically.","on_invalid":"reject","example":"microsoft","aliases":["slug","url"]},{"name":"keywords","type":"string","required":false,"description":"Optional: also filter the company's jobs by title/skill/keyword (leave empty to browse all of the company's jobs).","on_invalid":"reject","example":"software engineer","aliases":["query"]},{"name":"location","type":"string","required":false,"description":"Optional: country, region or city to narrow to.","on_invalid":"reject","example":"United States"},{"name":"max_results","type":"integer","required":false,"description":"How many jobs to return (1–1000).","on_invalid":"reject","default":50,"minimum":1,"maximum":1000},{"name":"page","type":"integer","required":false,"description":"Page number (easy paging: 1, 2, 3… — page size = max_results).","on_invalid":"ignore","default":1,"minimum":1},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"}],"returns":"jobs[]{job_id, job_url, title, company{name, url, slug}, location, workplace_type, posted_date, posted_relative} + company_id + meta.pagination{page, has_more, next_cursor}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":null},{"name":"locations/search","description":"Location typeahead → resolve a place name (city, region, metro area, country) to the LinkedIn numeric geoId used by the `geoId` search param for precise geo-pinned searches.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Place name to look up — city, region, metro area or country (e.g. 'San Francisco', 'Greater London').","on_invalid":"reject","example":"San Francisco","aliases":["q","keywords"]},{"name":"limit","type":"integer","required":false,"description":"Max suggestions to return (1–25).","on_invalid":"ignore","default":10,"minimum":1,"maximum":25}],"returns":"locations[]{name, geoId}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"jobs/similar","description":"Related job postings for a given job_id. LinkedIn's guest surface exposes no direct similar-jobs feed, so results are a keyword+location re-search seeded from the source job's own title (the seed job is excluded).","required_params":["job_id"],"optional_params":["keywords","location","max_results","include_detail","include_company"],"params":[{"name":"job_id","type":"string","required":true,"description":"LinkedIn job ID to find similar postings for — the number in the job URL or `job_id` from jobs/search.","on_invalid":"reject","example":"4425539379","aliases":["jobId"]},{"name":"keywords","type":"string","required":false,"description":"Optional: override the re-search keywords (defaults to the seed job's title).","on_invalid":"reject","example":"data engineer","aliases":["query"]},{"name":"location","type":"string","required":false,"description":"Optional: override the re-search location (defaults to the seed job's location).","on_invalid":"reject","example":"United States"},{"name":"max_results","type":"integer","required":false,"description":"How many similar jobs to return (1–100).","on_invalid":"reject","default":25,"minimum":1,"maximum":100}],"returns":"jobs[]{job_id, job_url, title, company{name, url, slug}, location, posted_date, posted_relative} + seed{job_id, title, company, location} + method","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":null}]},{"name":"listennotes","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Listen Notes API — podcast search engine scraper: search podcasts by keyword, get full podcast details (publisher, description, episode count, genres, hosts, latest episodes, cover art, rating) and episode details (audio URL, duration, publish date, description), browse the best podcasts by country and by genre, and read the complete podcast genre taxonomy — from Listen Notes (listennotes.com, 3.7M+ podcasts / 190M+ episodes), no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/listennotes/v1","spec_available":true,"actions":[{"name":"search","description":"Search Listen Notes for podcasts by keyword. Returns up to 10 matching podcasts with title, publisher, cover image and the podcast id (feed into `podcast` for full details).","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"What to look for — a topic, show name or person ('startup', 'true crime', 'Joe Rogan', 'bitcoin').","on_invalid":"reject","example":"startup","aliases":["q","term"]}],"returns":"podcasts[]{id, uuid, title, publisher, image, thumbnail, url, is_claimed, explicit}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"startup"}},{"name":"podcast","description":"Full detail for one podcast by id (from search) or a Listen Notes podcast URL: title, publisher, description, cover art, language, country, genres, hosts, rating, total episode count, social links and its latest episodes.","required_params":[],"optional_params":["id","url"],"params":[{"name":"id","type":"string","required":false,"description":"Podcast id (the short id returned by `search`, e.g. 'ynkdVHl_OTE').","on_invalid":"reject","example":"ynkdVHl_OTE","aliases":["podcast_id"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full Listen Notes podcast URL.","on_invalid":"ignore","example":"https://www.listennotes.com/podcasts/the-daily-the-new-york-times-xp7nhsmSkX2/"}],"returns":"podcast{id, uuid, title, publisher, description, image, url, language, country, genre_ids[], hosts[], rating, rating_count, total_episodes, extra_urls{}, rss, itunes_url, nlp_entities[], latest_episodes[]{episode_id, title, audio, duration, duration_sec, image, url}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"xp7nhsmSkX2"}},{"name":"episode","description":"Full detail for one episode by id or a Listen Notes episode URL: title, description, audio URL, duration, publish date, cover art and the parent podcast.","required_params":[],"optional_params":["id","url"],"params":[{"name":"id","type":"string","required":false,"description":"Episode id (32-char uuid, e.g. from a podcast's latest_episodes[].episode_id).","on_invalid":"reject","example":"5d3f3a3fc4534c2ca63c3245f8c2b894","aliases":["episode_id"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full Listen Notes episode URL.","on_invalid":"ignore","example":"https://www.listennotes.com/podcasts/hey-jonas/leave-a-message-after-the-beep-ug_4YbW9mB8/"}],"returns":"episode{id, uuid, title, description, audio, audio_length, audio_length_sec, image, url, published, transcript, podcast{title, id, url}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"5d3f3a3fc4534c2ca63c3245f8c2b894"}},{"name":"best_podcasts","description":"The curated 'best podcasts' list for a country, paginated. Each entry has the podcast title, publisher, cover image, id, Listen Score and global rank.","required_params":[],"optional_params":["region","page"],"params":[{"name":"region","type":"enum","required":false,"description":"ISO-3166 country code for the curated list (common set listed; others fall back to the global list).","on_invalid":"ignore","allowed_values":[{"value":"us","label":"United States"},{"value":"gb","label":"United Kingdom"},{"value":"ca","label":"Canada"},{"value":"au","label":"Australia"},{"value":"de","label":"Germany"},{"value":"fr","label":"France"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"nl","label":"Netherlands"},{"value":"se","label":"Sweden"},{"value":"br","label":"Brazil"},{"value":"mx","label":"Mexico"},{"value":"in","label":"India"},{"value":"jp","label":"Japan"},{"value":"kr","label":"South Korea"},{"value":"cn","label":"China"},{"value":"tw","label":"Taiwan"},{"value":"hk","label":"Hong Kong"},{"value":"sg","label":"Singapore"},{"value":"ru","label":"Russia"},{"value":"tr","label":"Türkiye"},{"value":"za","label":"South Africa"},{"value":"ph","label":"Philippines"},{"value":"my","label":"Malaysia"},{"value":"id","label":"Indonesia"},{"value":"th","label":"Thailand"},{"value":"nz","label":"New Zealand"},{"value":"pt","label":"Portugal"},{"value":"pl","label":"Poland"},{"value":"be","label":"Belgium"}],"default":"us","example":"us"},{"name":"page","type":"integer","required":false,"description":"Result page (each page is one curated batch). Page until the returned list is empty.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":20}],"returns":"podcasts[]{id, title, publisher, url, image, listen_score, global_rank} + meta{region, page, has_more}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"region":"us"}},{"name":"genre","description":"Browse the best podcasts in a genre, paginated. Use the `genres` action to get the genre id → name list. Each entry has title, publisher, image, id, Listen Score and global rank.","required_params":["genre_id"],"optional_params":["page"],"params":[{"name":"genre_id","type":"integer","required":true,"description":"Numeric genre id (e.g. 93=Business, 127=Technology, 133=Comedy, 135=True Crime, 134=Music). See `genres`.","on_invalid":"reject","example":93},{"name":"page","type":"integer","required":false,"description":"Result page (each page is one curated batch). Page until the returned list is empty.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":20}],"returns":"podcasts[]{id, title, publisher, url, image, listen_score, global_rank} + meta{genre_id, genre_name, page, has_more}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"genre_id":93}},{"name":"genres","description":"The complete Listen Notes genre taxonomy — every genre id mapped to its name. These ids are the input vocabulary for the `genre` action.","required_params":[],"optional_params":[],"params":[],"returns":"genres[]{id, name}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"made-in-china","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Made-in-China Easy Sourcing API — live B2B buying requests (RFQs) from sourcing.made-in-china.com: what importers are asking to purchase right now, in their own full text, with quantity, buyer country, post date and expiry date. Keyword search, 27 category boards, buyer-country and recency filters, real pagination — clean JSON, no login.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/made-in-china/v1","spec_available":true,"actions":[{"name":"rfq_search","description":"Search live buying requests posted by Made-in-China buyers — the demand side of the marketplace. Each row is a purchase someone is asking for right now: their FULL request text (this board does not truncate it), how many they want, which country they are buying from, the day they posted and the day the request expires. Filter by keyword, category, buyer country and recency; page through up to 100 requests per call. Omit `query` to browse the whole open board.","required_params":[],"optional_params":["query","category","buyer_country","posted_within","page","limit","include_expired"],"params":[{"name":"query","type":"string","required":false,"description":"What the buyer is asking for, in the buyer's own words ('solar panel', 'coffee machine', 'cnc machining'). Leave it out to browse the whole open board (2,200,000+ requests), which is what `category` and `posted_within` are for.","on_invalid":"reject","example":"solar panel","aliases":["q","keyword","keywords","search","word"]},{"name":"category","type":"string","required":false,"description":"Restrict to one of the 27 top-level sourcing categories. Call the `categories` action for the id list. Combines with `query`.","on_invalid":"ignore","example":"nOmtxmJTGEnQ","aliases":["cat","category_id"]},{"name":"buyer_country","type":"enum","required":false,"description":"Country of the BUYER. Made-in-China publishes a fixed facet of ten countries plus 'other'; two-letter codes and plain names ('US', 'uk', 'south africa') are accepted and mapped. Anything outside that set is REJECTED rather than accepted, because the site silently treats an unknown region as 'other' and would hand you a plausible list of the wrong buyers.","on_invalid":"reject","allowed_values":[{"value":"united_states","label":"United States"},{"value":"india","label":"India"},{"value":"nigeria","label":"Nigeria"},{"value":"united_kingdom","label":"United Kingdom"},{"value":"pakistan","label":"Pakistan"},{"value":"australia","label":"Australia"},{"value":"canada","label":"Canada"},{"value":"south_africa","label":"South Africa"},{"value":"ghana","label":"Ghana"},{"value":"brazil","label":"Brazil"},{"value":"other","label":"Every other country — the site's own catch-all bucket"}],"example":"united_states","aliases":["country","region","buyer_location"]},{"name":"posted_within","type":"enum","required":false,"description":"Only requests posted inside this window. 'older_than_7d' is the site's own inverse facet — it returns requests OLDER than a week, not newer. Board-wide '24h' was 730 requests when measured, which is the daily new-demand flow.","on_invalid":"reject","allowed_values":[{"value":"12h","label":"Posted in the last 12 hours"},{"value":"24h","label":"Posted in the last 24 hours"},{"value":"3d","label":"Posted in the last 3 days"},{"value":"7d","label":"Posted in the last 7 days"},{"value":"older_than_7d","label":"Posted MORE than 7 days ago — the site's own inverse facet"}],"example":"24h","aliases":["posted","age","pdate"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based (max 20000). Page forward with `next_page` from the response. Asking for a page past the end returns NOT_FOUND — the site itself would silently re-serve the last page instead.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":20000,"aliases":["p","sayfa"]},{"name":"limit","type":"integer","required":false,"description":"Requests per page, 1-100 (default 20). This is a real upstream page size, not a client-side trim, so a bigger number is one call rather than several — 100 rows arrive in a single ~187 KB response.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["psize","page_size","count"]},{"name":"include_expired","type":"boolean","required":false,"description":"Include requests the site marks expired or closed. Off by default: an expired request cannot be quoted on, so it is history rather than demand. 0 of 100 rows measured on the fresh board were expired, so this normally removes nothing.","on_invalid":"ignore","default":false,"example":true}],"returns":"results[]{rfq_id, title, description, url, quantity, quantity_text, quantity_unit, buyer{name, country, country_code, email_confirmed}, posted_at, expires_at, expired, closed, quotes_left, quotes_allowed, budget, budget_currency, category_id, origin_site, image, has_attachments}, query, page, page_size, returned, total_estimate, pages_available, has_more, next_page, filters_applied","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"solar panel"}},{"name":"categories","description":"The 27 top-level sourcing categories of the buying-request board, with the ids that `rfq_search`'s `category` parameter takes. Read live from the board's own category rail, so a new or renamed category appears without a code change.","required_params":[],"optional_params":["query"],"params":[{"name":"query","type":"string","required":false,"description":"Filter categories whose name contains this text (case-insensitive). Omit for all 27.","on_invalid":"ignore","example":"machinery","aliases":["q","name","filter"]}],"returns":"categories[]{id, name, url}, returned, source","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"magalu","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Magalu API scraper — magazineluiza.com.br (Brazil): search and browse products with the card price, PIX price, struck list price and interest-free installments kept apart, coupons, Magalu or marketplace seller with seller rating, EAN, specifications, variants, ratings and reviews, and delivery quotes by CEP. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/magalu/v1","spec_available":true,"actions":[{"name":"search","description":"Search Magalu by keyword. Each product comes with the card price, the PIX price and its discount, the struck list price, the best interest-free installment plan, any coupon (not applied to the price), the seller (Magalu itself or a marketplace seller), availability, rating and review count, badges and category. Sort by price, best sellers, rating, newest or fastest delivery; filter by brand, seller, price range, category or subcategory. Sponsored rows are removed and counted.","required_params":["query"],"optional_params":["country","page","page_size","sort","brand","seller","min_price","max_price","category_id","subcategory_id","include_sponsored","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Words a shopper would type on Magalu (Portuguese).","on_invalid":"reject","example":"geladeira","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Magalu sells in Brazil only (magazineluiza.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — magazineluiza.com.br (BRL)"}],"default":"br","example":"br"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1. Magalu serves 100 pages at most.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Products per page (Magalu's own page shows 40).","on_invalid":"reject","default":40,"minimum":1,"maximum":60},{"name":"sort","type":"enum","required":false,"description":"Magalu's own sort orders. price_asc / price_desc order by the BEST price Magalu shows (the PIX price when there is one), not by the card price.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevância"},{"value":"price_asc","label":"Menor preço"},{"value":"price_desc","label":"Maior preço"},{"value":"bestsellers","label":"Mais vendidos"},{"value":"rating","label":"Mais bem avaliados"},{"value":"newest","label":"Lançamento"},{"value":"fastest_delivery","label":"Menor prazo"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"One brand, as the `value` in filters_available.brands (e.g. electrolux).","on_invalid":"reject","example":"electrolux"},{"name":"seller","type":"string","required":false,"description":"One seller id, as in filters_available.sellers or a row's seller.id (magazineluiza = sold by Magalu itself).","on_invalid":"reject","example":"magazineluiza"},{"name":"min_price","type":"number","required":false,"description":"Lowest price in BRL (reais). Magalu applies it to the best price (PIX when offered), not the card price, and lets a few rows just outside the range through.","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in BRL (reais), applied by Magalu to the best price (PIX when offered).","on_invalid":"reject","minimum":0},{"name":"category_id","type":"string","required":false,"description":"Limit to one Magalu category id (a row's category.id, e.g. TE).","on_invalid":"reject","example":"TE"},{"name":"subcategory_id","type":"string","required":false,"description":"Limit to one Magalu subcategory id (a row's subcategory.id, e.g. IP17).","on_invalid":"reject","example":"IP17"},{"name":"include_sponsored","type":"boolean","required":false,"description":"Rows Magalu marks as sponsored are left out and counted in sponsored_dropped. true: they are returned with sponsored true.","on_invalid":"reject","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no product matches the keyword, Magalu sometimes fills the page with unrelated products. They are dropped and counted in fallback_results_dropped; true returns them separately in fallback_results.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id, type, title, brand, url, image, price, pix_price, pix_discount_pct, list_price, discount_pct, best_price_other_method, installments{count, amount, total, interest_free, label}, currency, price_source, coupon{code, discount_type, discount_value, message, valid_from, valid_until}, offer_discounts[], seller{id, sku, is_magalu, name}, availability, search_index_rating, search_index_review_count (search-index figures; product/detail has the product page's), rating_scale, badges[], max_quantity, has_variants, category{id, name}, subcategory{id, name}, sponsored}, count (organic rows), sponsored_dropped, sponsored_included, fallback_results_dropped, total_results, total_results_capped, total_pages, page, page_size, has_more, page_notice, filters_available{brands[], sellers[], categories[] ({value, label, count}), price_range{min, max}, attributes[]{name, slug, values[]}}, sort, applied_filters, country, currency, query, matched_query, keyword_matches_on_page, fallback_total, fallback_results[] (opt-in)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"geladeira"}},{"name":"category","description":"Every product in a Magalu category or subcategory (by id such as TE / IP17, or by the category URL), paged, with the same rows, sorts and filters as search.","required_params":["category"],"optional_params":["subcategory","country","page","page_size","sort","brand","seller","min_price","max_price","include_sponsored","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A Magalu category id (TE) or a category / subcategory URL (/celulares-e-smartphones/l/te/ or /iphone-17/celulares-e-smartphones/s/te/ip17/).","on_invalid":"reject","example":"TE","aliases":["category_url"]},{"name":"subcategory","type":"string","required":false,"description":"A subcategory id inside the category (IP17). A subcategory URL sets it by itself.","on_invalid":"reject","example":"IP17"},{"name":"country","type":"enum","required":false,"description":"Magalu sells in Brazil only (magazineluiza.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — magazineluiza.com.br (BRL)"}],"default":"br","example":"br"},{"name":"page","type":"integer","required":false,"description":"Result page, from 1. Magalu serves 100 pages at most.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Products per page (Magalu's own page shows 40).","on_invalid":"reject","default":40,"minimum":1,"maximum":60},{"name":"sort","type":"enum","required":false,"description":"Magalu's own sort orders. price_asc / price_desc order by the BEST price Magalu shows (the PIX price when there is one), not by the card price.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevância"},{"value":"price_asc","label":"Menor preço"},{"value":"price_desc","label":"Maior preço"},{"value":"bestsellers","label":"Mais vendidos"},{"value":"rating","label":"Mais bem avaliados"},{"value":"newest","label":"Lançamento"},{"value":"fastest_delivery","label":"Menor prazo"}],"default":"relevance","example":"price_asc"},{"name":"brand","type":"string","required":false,"description":"One brand, as the `value` in filters_available.brands (e.g. electrolux).","on_invalid":"reject","example":"electrolux"},{"name":"seller","type":"string","required":false,"description":"One seller id, as in filters_available.sellers or a row's seller.id (magazineluiza = sold by Magalu itself).","on_invalid":"reject","example":"magazineluiza"},{"name":"min_price","type":"number","required":false,"description":"Lowest price in BRL (reais). Magalu applies it to the best price (PIX when offered), not the card price, and lets a few rows just outside the range through.","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in BRL (reais), applied by Magalu to the best price (PIX when offered).","on_invalid":"reject","minimum":0},{"name":"include_sponsored","type":"boolean","required":false,"description":"Rows Magalu marks as sponsored are left out and counted in sponsored_dropped. true: they are returned with sponsored true.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id, type, title, brand, url, image, price, pix_price, pix_discount_pct, list_price, discount_pct, best_price_other_method, installments{count, amount, total, interest_free, label}, currency, price_source, coupon{code, discount_type, discount_value, message, valid_from, valid_until}, offer_discounts[], seller{id, sku, is_magalu, name}, availability, search_index_rating, search_index_review_count (search-index figures; product/detail has the product page's), rating_scale, badges[], max_quantity, has_variants, category{id, name}, subcategory{id, name}, sponsored}, count (organic rows), sponsored_dropped, sponsored_included, fallback_results_dropped, total_results, total_results_capped, total_pages, page, page_size, has_more, page_notice, filters_available{brands[], sellers[], categories[] ({value, label, count}), price_range{min, max}, attributes[]{name, slug, values[]}}, sort, applied_filters, country, currency, category_id, subcategory_id","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/detail","description":"The full Magalu product record by id or URL: title, brand, EAN, reference, card price, PIX price, list price and discount, best installment plan, coupon, promotions, the seller (Magalu or marketplace) with seller rating, total sales and response/delivery reputation, availability including out-of-stock items, rating with distribution, description, specifications, images, videos, variants with their own ids, package dimensions and category breadcrumb.","required_params":["product_id"],"optional_params":["country","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"A Magalu product id (the code after /p/ in a product URL, e.g. 241267100 or gf8hj05ja2) or the product URL.","on_invalid":"reject","example":"241267100","aliases":["id","url","sku"]},{"name":"country","type":"enum","required":false,"description":"Magalu sells in Brazil only (magazineluiza.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — magazineluiza.com.br (BRL)"}],"default":"br","example":"br"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id, type, title, brand, brand_slug, ean, reference, product_type, url, price, pix_price, pix_discount_pct, list_price, discount_pct, best_price_other_method, installments{}, currency, price_source, coupon{}, promotions[], offer_discounts[], badges[], seller{id, name, is_magalu, sku, delivered_by, seller_since, rating, rating_scale, total_sales, answer_rate, delivery_rate, city, state}, marketplace, availability, max_quantity, minimum_order_quantity, offer_timer, rating, review_count, rating_scale, comment_count, rating_distribution{}, description, specifications{name: value}, images[], videos[], variants[]{attribute, value, product_id, available, url, selected}, variant_count, package{length_m, width_m, height_m, weight_kg}, category, subcategory, breadcrumb[], tags[], is_buy_box}, country, currency","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"241267100"}},{"name":"product/reviews","description":"Customer reviews of a Magalu product, paged and sorted (most relevant, newest, positive, negative), with rating, title, text, date, reviewer first name, the variant bought and review photos, plus the average rating, rating count and star distribution.","required_params":["product_id"],"optional_params":["country","page","page_size","sort","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"A Magalu product id (the code after /p/ in a product URL, e.g. 241267100 or gf8hj05ja2) or the product URL.","on_invalid":"reject","example":"241267100","aliases":["id","url","sku"]},{"name":"country","type":"enum","required":false,"description":"Magalu sells in Brazil only (magazineluiza.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — magazineluiza.com.br (BRL)"}],"default":"br","example":"br"},{"name":"page","type":"integer","required":false,"description":"Review page, from 1.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (Magalu's own page shows 8).","on_invalid":"reject","default":10,"minimum":1,"maximum":20},{"name":"sort","type":"enum","required":false,"description":"Magalu's own review orders.","on_invalid":"reject","allowed_values":[{"value":"relevant","label":"Mais relevantes"},{"value":"newest","label":"Mais recentes"},{"value":"positive","label":"Avaliações positivas"},{"value":"negative","label":"Avaliações negativas"}],"default":"relevant","example":"newest"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"reviews[]{review_id, rating, title, text, date, author, variant{}, reviewed_product_id, images[]}, count, page, page_size, total_reviews (reviews with text), total_pages, has_more, average_rating, rating_count (all ratings), rating_scale, comment_count, rating_distribution{}, product_id, sort, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"241267100"}},{"name":"product/shipping","description":"Delivery options and prices for a Magalu product to a Brazilian CEP, as Magalu quotes them on the product page: standard delivery and store pickup with cost, working days or hours, expected delivery dates and who ships it.","required_params":["product_id","zipcode"],"optional_params":["quantity","country","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"A Magalu product id (the code after /p/ in a product URL, e.g. 241267100 or gf8hj05ja2) or the product URL.","on_invalid":"reject","example":"241267100","aliases":["id","url","sku"]},{"name":"zipcode","type":"string","required":true,"description":"Brazilian CEP, 8 digits (01310-100 or 01310100).","on_invalid":"reject","example":"01310100","aliases":["cep","postal_code"]},{"name":"quantity","type":"integer","required":false,"description":"Units to quote.","on_invalid":"reject","default":1,"minimum":1,"maximum":10},{"name":"country","type":"enum","required":false,"description":"Magalu sells in Brazil only (magazineluiza.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — magazineluiza.com.br (BRL)"}],"default":"br","example":"br"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"options[]{type, name, cost, free, currency, time_unit, time_min, time_max, delivery_date_min, delivery_date_max, description}, count, deliverable, shipping_status, message, shipped_by, disclaimers[], product_id, seller_id, zipcode, quantity, country","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search/suggest","description":"Magalu's search-box suggestions for what a shopper has typed.","required_params":["query"],"optional_params":["country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper has typed so far.","on_invalid":"reject","example":"gelad","aliases":["q","prefix"]},{"name":"country","type":"enum","required":false,"description":"Magalu sells in Brazil only (magazineluiza.com.br, BRL).","on_invalid":"reject","allowed_values":[{"value":"br","label":"Brazil — magazineluiza.com.br (BRL)"}],"default":"br","example":"br"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"suggestions[]{term, position}, count, query, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"geladeira"}}]},{"name":"magiceden","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Magic Eden API — Solana NFT marketplace scraper: browse collections; collection detail, floor price, listed count and total volume stats; active NFT listings with price, rarity rank and traits; all collection tokens; single NFT / token detail and its activity history; collection activity (sales, listings, offers); per-trait floor prices; wallet holdings; popular / trending collections; and Launchpad mints — from Magic Eden (magiceden.io), no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/magiceden/v1","spec_available":true,"actions":[{"name":"collections","description":"Browse Magic Eden collections (paginated). Each: symbol, name, description, image, categories and social links. Use the returned symbol with the other actions. Offset pagination via the `page` param.","required_params":[],"optional_params":["page","limit"],"params":[{"name":"page","type":"integer","required":false,"description":"Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Items per page (snapped to a multiple of 20; 20-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":20,"maximum":100}],"returns":"collections[]{symbol, name, description, image_url, categories[], twitter, discord, website, is_badged, magiceden_url} + meta{page, has_more}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":20}},{"name":"collection","description":"Full collection detail by symbol: metadata (name, description, image, categories, social links) merged with live market stats — floor price (SOL), listed count, 24h average sale price and all-time volume.","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.","on_invalid":"reject","example":"okay_bears","aliases":["collection","collection_symbol","slug"]}],"returns":"collection{symbol, name, description, image_url, categories[], twitter, discord, website, floor_price_sol, listed_count, avg_price_24hr_sol, volume_all_sol, magiceden_url}","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"okay_bears"}},{"name":"stats","description":"Live market stats for a collection: floor price (SOL), number of NFTs currently listed, 24-hour average sale price and all-time trading volume.","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.","on_invalid":"reject","example":"okay_bears","aliases":["collection","collection_symbol","slug"]}],"returns":"stats{symbol, floor_price_sol, listed_count, avg_price_24hr_sol, volume_all_sol, magiceden_url}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"okay_bears"}},{"name":"listings","description":"Active NFT listings in a collection (NFTs currently for sale), cheapest first. Each: token mint, name, price (SOL), seller, rarity rank (Moonrank + HowRare), image and traits. Optional min/max price filter (SOL). Offset pagination via `page`.","required_params":["symbol"],"optional_params":["page","limit","min_price","max_price"],"params":[{"name":"symbol","type":"string","required":true,"description":"Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.","on_invalid":"reject","example":"okay_bears","aliases":["collection","collection_symbol","slug"]},{"name":"page","type":"integer","required":false,"description":"Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Items per page (snapped to a multiple of 20; 20-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":20,"maximum":100},{"name":"min_price","type":"number","required":false,"description":"Only listings priced at or above this many SOL (must be > 0).","on_invalid":"ignore","example":1,"minimum":0},{"name":"max_price","type":"number","required":false,"description":"Only listings priced at or below this many SOL.","on_invalid":"ignore","example":100,"minimum":0}],"returns":"listings[]{token_mint, name, price_sol, seller, rarity_rank_moonrank, rarity_rank_howrare, image_url, attributes[]{trait_type,value}, magiceden_url} + meta{page, has_more}","cacheable":true,"cache_ttl_seconds":30,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"okay_bears","limit":20}},{"name":"tokens","description":"All tokens (NFTs) in a collection (listed or not), paginated. Each: mint address, name, owner, image, list status, price if listed, and traits. Offset pagination via `page`.","required_params":["symbol"],"optional_params":["page","limit"],"params":[{"name":"symbol","type":"string","required":true,"description":"Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.","on_invalid":"reject","example":"okay_bears","aliases":["collection","collection_symbol","slug"]},{"name":"page","type":"integer","required":false,"description":"Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Items per page (snapped to a multiple of 20; 20-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":20,"maximum":100}],"returns":"tokens[]{mint_address, name, owner, image_url, list_status, price_sol, attributes[]{trait_type,value}, magiceden_url} + meta{page, has_more}","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"okay_bears"}},{"name":"token","description":"Single NFT / token detail by its Solana mint address: name, collection, current owner, image, all traits, list status and price if listed. Get a mint address from a listings[], tokens[] or activity[] row.","required_params":["mint_address"],"optional_params":[],"params":[{"name":"mint_address","type":"string","required":true,"description":"The NFT's Solana mint address. From a listings[]/tokens[]/activity[] row (token_mint / mint_address).","on_invalid":"reject","example":"9RpvZMKf1qcTsnCPRjGJ8tddzxNusGiYZc9tkS8UhZTA","aliases":["mint","token_mint","token"]}],"returns":"token{mint_address, name, collection_symbol, collection_name, owner, image_url, external_url, list_status, price_sol, attributes[]{trait_type,value}, magiceden_url}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"token_activity","description":"On-chain activity history for a single NFT by mint address: every sale, listing, delisting and bid with type, price (SOL), buyer / seller and block time. Offset pagination via `page`.","required_params":["mint_address"],"optional_params":["page","limit"],"params":[{"name":"mint_address","type":"string","required":true,"description":"The NFT's Solana mint address.","on_invalid":"reject","example":"9RpvZMKf1qcTsnCPRjGJ8tddzxNusGiYZc9tkS8UhZTA","aliases":["mint","token_mint","token"]},{"name":"page","type":"integer","required":false,"description":"Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Items per page (snapped to a multiple of 20; 20-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":20,"maximum":100}],"returns":"activity[]{signature, type, source, token_mint, price_sol, buyer, seller, block_time, slot} + meta{page, has_more}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"activity","description":"Recent on-chain activity for a collection: sales, listings, delistings and bids. Each event: type, price (SOL), buyer / seller, token mint and block time. Filter by event type (default: all). Offset pagination via `page`.","required_params":["symbol"],"optional_params":["page","limit","event_type"],"params":[{"name":"symbol","type":"string","required":true,"description":"Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.","on_invalid":"reject","example":"okay_bears","aliases":["collection","collection_symbol","slug"]},{"name":"page","type":"integer","required":false,"description":"Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Items per page (snapped to a multiple of 20; 20-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":20,"maximum":100},{"name":"event_type","type":"enum","required":false,"description":"Filter to one activity type (omit for all).","on_invalid":"ignore","allowed_values":[{"value":"buyNow","label":"Sales (buy now)"},{"value":"list","label":"Listings"},{"value":"delist","label":"Delistings"},{"value":"bid","label":"Bids / offers"},{"value":"cancelBid","label":"Cancelled bids"},{"value":"auctionUpdate","label":"Auction updates"},{"value":"placeBid","label":"Place bid"}],"example":"buyNow","aliases":["type"]}],"returns":"activity[]{signature, type, source, token_mint, collection_symbol, price_sol, buyer, seller, block_time, image_url} + meta{page, has_more}","cacheable":true,"cache_ttl_seconds":30,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"okay_bears","limit":20}},{"name":"attributes","description":"Trait floor prices for a collection — for every trait value (e.g. Background = Yellow), the floor price (SOL) and how many NFTs carry it. Useful for trait-based valuation.","required_params":["symbol"],"optional_params":[],"params":[{"name":"symbol","type":"string","required":true,"description":"Magic Eden collection symbol — the last path segment of a Magic Eden collection URL (magiceden.io/marketplace/<symbol>), e.g. 'okay_bears', 'famous_fox_federation', 'degods'. Use the search or collections action to resolve a name to its symbol.","on_invalid":"reject","example":"okay_bears","aliases":["collection","collection_symbol","slug"]}],"returns":"attributes[]{trait_type, value, count, floor_sol, image_url}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"symbol":"okay_bears"}},{"name":"wallet","description":"NFTs held by a Solana wallet address: each token's mint, name, collection, image, list status and price if listed. Offset pagination via `page`.","required_params":["address"],"optional_params":["page","limit"],"params":[{"name":"address","type":"string","required":true,"description":"The Solana wallet address to list NFT holdings for.","on_invalid":"reject","example":"2ZCQ18QjibZZCPfcCesdZ1y2WMmZKd5rKZLyc2sjYGir","aliases":["wallet","wallet_address","owner"]},{"name":"page","type":"integer","required":false,"description":"Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Items per page (snapped to a multiple of 20; 20-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":20,"maximum":100}],"returns":"tokens[]{mint_address, name, collection_symbol, collection_name, image_url, list_status, price_sol, attributes[]} + meta{page, has_more}","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"popular","description":"Popular / trending Magic Eden collections over a time window — the marketplace leaderboard. Each: symbol, name, floor price (SOL) and all-time volume. Choose a window (1h / 1d / 7d / 30d).","required_params":[],"optional_params":["time_range","limit"],"params":[{"name":"time_range","type":"enum","required":false,"description":"Ranking window (1h / 1d / 7d / 30d).","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"1 hour"},{"value":"1d","label":"1 day"},{"value":"7d","label":"7 days"},{"value":"30d","label":"30 days"}],"default":"1d","example":"1d","aliases":["window","timeRange"]},{"name":"limit","type":"integer","required":false,"description":"Number of collections (Magic Eden allows 50 or 100).","on_invalid":"ignore","allowed_values":[{"value":50,"label":"50"},{"value":100,"label":"100"}],"default":50,"example":50}],"returns":"collections[]{symbol, name, image_url, floor_price_sol, volume_all_sol, magiceden_url}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"launchpad","description":"Magic Eden Launchpad collections — upcoming and live primary mints. Each: symbol, name, mint price (SOL), supply size, launch datetime, chain and contract. Offset pagination via `page`.","required_params":[],"optional_params":["page","limit"],"params":[{"name":"page","type":"integer","required":false,"description":"Page number (1-based). Pages of `limit` items each; pass page=2 for the next page. Use meta.has_more to know when to stop.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Items per page (snapped to a multiple of 20; 20-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":20,"maximum":100}],"returns":"collections[]{symbol, name, description, image_url, mint_price_sol, size, launch_datetime, chain_id, contract_address, magiceden_url} + meta{page, has_more}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"search","description":"Search Magic Eden collections by free-text name. Resolves a name to its collection symbol(s): first tries an exact symbol match, then scans popular collections and collection pages for a name/symbol substring match. Returns matching collections (symbol, name, image, categories) — use the returned symbol with the other actions.","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Collection name or keyword to search for (e.g. 'bears', 'fox', 'degods').","on_invalid":"reject","example":"bears","aliases":["q","name"]},{"name":"limit","type":"integer","required":false,"description":"Max collections to return (1-50, default 10).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50}],"returns":"collections[]{symbol, name, description, image_url, categories[], magiceden_url}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"manomano","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"ManoMano — European DIY & home-improvement marketplace","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/manomano/v1","spec_available":true,"actions":[{"name":"search","description":"Keyword search across a ManoMano storefront. Returns the product rows with price (with and without VAT), reference price, seller, EAN, rating, delivery flags and the technical attribute ids.","required_params":["query"],"optional_params":["country","page","limit","sort","brand","seller","category_id","min_price","max_price","min_rating","free_delivery","relay_delivery","manomano_fulfilment","eco_responsible","in_promo","attributes","resolve_attributes"],"params":[{"name":"query","type":"string","required":true,"description":"Search terms, in the storefront's own language.","on_invalid":"reject","example":"perceuse sans fil"},{"name":"country","type":"enum","required":false,"description":"Which storefront to search. They are different shops: different catalogue, sellers, prices and currency.","on_invalid":"reject","allowed_values":[{"value":"fr","label":"France"},{"value":"de","label":"Germany"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"gb","label":"United Kingdom"}],"default":"fr","example":"fr","aliases":["storefront","market"]},{"name":"page","type":"integer","required":false,"description":"1-based page number.","on_invalid":"ignore","default":1,"minimum":1,"maximum":200},{"name":"limit","type":"integer","required":false,"description":"Rows per page (max 100).","on_invalid":"ignore","default":24,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Sort order. Non-relevance sorts use the source's own replica indexes and report their own totals.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"price_asc","label":"Price, low to high"},{"value":"price_desc","label":"Price, high to low"},{"value":"rating_desc","label":"Customer rating"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Exact brand name as the source spells it.","on_invalid":"ignore","example":"MAKITA"},{"name":"seller","type":"string","required":false,"description":"Exact merchant display name.","on_invalid":"ignore","example":"Maxoutil"},{"name":"category_id","type":"integer","required":false,"description":"Restrict to a category id at any depth (ids from category/tree).","on_invalid":"ignore","example":1146},{"name":"min_price","type":"number","required":false,"description":"Minimum price, VAT included, storefront currency.","on_invalid":"ignore","example":50},{"name":"max_price","type":"number","required":false,"description":"Maximum price, VAT included.","on_invalid":"ignore","example":200},{"name":"min_rating","type":"number","required":false,"description":"Minimum customer rating. Note ~46 % of rows carry a rating at all, and that varies sharply by category.","on_invalid":"ignore","example":4,"minimum":0,"maximum":5},{"name":"free_delivery","type":"boolean","required":false,"description":"Only offers with free delivery.","on_invalid":"ignore"},{"name":"relay_delivery","type":"boolean","required":false,"description":"Only offers deliverable to a pickup point.","on_invalid":"ignore"},{"name":"manomano_fulfilment","type":"boolean","required":false,"description":"Only offers shipped by ManoMano Fulfilment.","on_invalid":"ignore"},{"name":"eco_responsible","type":"boolean","required":false,"description":"Only offers the source flags as eco-responsible.","on_invalid":"ignore"},{"name":"in_promo","type":"boolean","required":false,"description":"Only offers currently running a promotion.","on_invalid":"ignore"},{"name":"attributes","type":"array","required":false,"description":"Technical attribute filters as '<attribute_id>:<value>'. Ids and their labels come from search/filters.","on_invalid":"reject","example":["84:Sans fil"]},{"name":"resolve_attributes","type":"boolean","required":false,"description":"Attach human-readable names to each row's attribute ids. Costs one extra upstream request.","on_invalid":"ignore","default":false}],"returns":"{results: [...], total_estimated, total_is_exact, page, per_page, query, country, currency}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"perceuse","country":"fr"}},{"name":"product/detail","description":"Full product record: price with and without VAT, reference price, eco-participation, EAN, brand, seller, live stock, delivery promise, the technical attribute table, images, documents and the Q&A. Pass model_id to pin the exact variant a search row referred to.","required_params":[],"optional_params":["model_id","product_id","article_id","url","country","postal_code","with_delivery"],"params":[{"name":"model_id","type":"string","required":false,"description":"The variant key, and the one to prefer: search returns it as model_id and it identifies exactly one variant.","on_invalid":"reject","example":"58497788"},{"name":"product_id","type":"string","required":false,"description":"Offer/product id from search. Resolved upstream to its variant; never pasted into a URL.","on_invalid":"reject","example":"165183914"},{"name":"article_id","type":"integer","required":false,"description":"The article id a product URL ends with. An article can group several variants (up to 7 seen), so on its own it returns the article's DEFAULT variant — check variants_count and pass model_id to pin one.","on_invalid":"reject","example":91537520,"aliases":["id"]},{"name":"url","type":"string","required":false,"description":"A ManoMano product URL; the trailing id is used.","on_invalid":"ignore","example":"https://www.manomano.fr/p/x-91537520","aliases":["product_url"]},{"name":"country","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"fr","label":"France"},{"value":"de","label":"Germany"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"gb","label":"United Kingdom"}],"default":"fr","aliases":["storefront","market"]},{"name":"postal_code","type":"string","required":false,"description":"Compute the delivery promise for this postcode. Without it the source uses its own default.","on_invalid":"ignore","example":"75001"},{"name":"with_delivery","type":"boolean","required":false,"description":"Include the delivery promise (carriers and date windows). One extra upstream request.","on_invalid":"ignore","default":true}],"returns":"{product: {...}} — a single product record","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"article_id":91537520,"country":"fr"}},{"name":"product/offers","description":"Every competing merchant selling one product, with that merchant's own price, VAT split, eco-participation, live stock, minimum quantity and delivery window. This is the marketplace view.","required_params":[],"optional_params":["product_id","article_id","model_id","url","country"],"params":[{"name":"product_id","type":"string","required":false,"description":"Product id from search (`product_id`).","on_invalid":"reject","example":"165183914","aliases":["id"]},{"name":"article_id","type":"integer","required":false,"description":"Article id; resolved to the product id upstream.","on_invalid":"reject","example":91537520},{"name":"model_id","type":"string","required":false,"description":"Model id; resolved to the product id upstream.","on_invalid":"reject","example":"58497788"},{"name":"url","type":"string","required":false,"description":"A ManoMano product URL.","on_invalid":"ignore","aliases":["product_url"]},{"name":"country","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"fr","label":"France"},{"value":"de","label":"Germany"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"gb","label":"United Kingdom"}],"default":"fr","aliases":["storefront","market"]}],"returns":"{product_id, competing_offers_count, offers: [...]} sorted cheapest first","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"165183914","country":"fr"}},{"name":"product/reviews","description":"Customer reviews for a product: rating, text, date, reviewer display name and country, votes and photos.","required_params":[],"optional_params":["article_id","url","country","page","limit","sort","b2b_only"],"params":[{"name":"article_id","type":"integer","required":false,"description":"Article id (from search or product/detail).","on_invalid":"reject","example":91537520,"aliases":["id"]},{"name":"url","type":"string","required":false,"description":"A ManoMano product URL; the trailing id is used.","on_invalid":"ignore","aliases":["product_url"]},{"name":"country","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"fr","label":"France"},{"value":"de","label":"Germany"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"gb","label":"United Kingdom"}],"default":"fr","aliases":["storefront","market"]},{"name":"page","type":"integer","required":false,"description":"","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"rating_desc","label":"Highest rating first"},{"value":"rating_asc","label":"Lowest rating first"},{"value":"most_voted","label":"Most upvoted first"}],"default":"newest"},{"name":"b2b_only","type":"boolean","required":false,"description":"Only reviews left by trade customers.","on_invalid":"ignore","default":false}],"returns":"{reviews: [...], total, offset, limit, has_next_page}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"category/browse","description":"Browse a category's product grid as the storefront renders it, with price, seller, rating and stock per row. Paid placements are dropped and counted unless you ask for them.","required_params":["category_id"],"optional_params":["country","category_slug","page","include_sponsored"],"params":[{"name":"category_id","type":"integer","required":true,"description":"Category id from category/tree or a search row.","on_invalid":"reject","example":1146,"aliases":["id"]},{"name":"category_slug","type":"string","required":false,"description":"Optional slug; the id is what resolves.","on_invalid":"ignore","example":"perceuse"},{"name":"country","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"fr","label":"France"},{"value":"de","label":"Germany"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"gb","label":"United Kingdom"}],"default":"fr","aliases":["storefront","market"]},{"name":"page","type":"integer","required":false,"description":"1-based page. The source caps a category at 6 000 products (100 pages of 56).","on_invalid":"ignore","default":1,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Return paid placements too, each flagged is_sponsored.","on_invalid":"ignore","default":false}],"returns":"{category, results: [...], page, per_page, total_estimated, total_reachable, sponsored_dropped}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"category/tree","description":"The storefront's category tree with ids and slugs, up to three levels.","required_params":[],"optional_params":["country","depth"],"params":[{"name":"country","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"fr","label":"France"},{"value":"de","label":"Germany"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"gb","label":"United Kingdom"}],"default":"fr","aliases":["storefront","market"]},{"name":"depth","type":"integer","required":false,"description":"How many levels to return.","on_invalid":"ignore","default":2,"minimum":1,"maximum":3}],"returns":"{categories: [{id, name, slug, children: [...]}]}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"fr"}},{"name":"search/filters","description":"The filters the storefront itself offers for a query, including the technical attribute id -> name table (with units) that turns a search row's numeric attribute ids into readable specs.","required_params":["query"],"optional_params":["country","limit"],"params":[{"name":"query","type":"string","required":true,"description":"The query whose filter set you want.","on_invalid":"reject","example":"perceuse"},{"name":"country","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"fr","label":"France"},{"value":"de","label":"Germany"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"gb","label":"United Kingdom"}],"default":"fr","aliases":["storefront","market"]},{"name":"limit","type":"integer","required":false,"description":"How many attribute filters to return.","on_invalid":"ignore","default":40,"minimum":1,"maximum":100}],"returns":"{attribute_filters: [...], general_filters: [...]}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"perceuse"}},{"name":"search/suggest","description":"Autocomplete straight from the storefront: query suggestions, brands, categories and advice articles for a prefix.","required_params":["query"],"optional_params":["country","limit"],"params":[{"name":"query","type":"string","required":true,"description":"A prefix, as typed in the search box.","on_invalid":"reject","example":"perce"},{"name":"country","type":"enum","required":false,"description":"","on_invalid":"reject","allowed_values":[{"value":"fr","label":"France"},{"value":"de","label":"Germany"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"gb","label":"United Kingdom"}],"default":"fr","aliases":["storefront","market"]},{"name":"limit","type":"integer","required":false,"description":"","on_invalid":"ignore","default":8,"minimum":1,"maximum":20}],"returns":"{suggestions: {query: [...], brand: [...], category: [...], ...}}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"perceuse"}}]},{"name":"marktplaats","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Marktplaats API — search Dutch and Belgian classifieds (Marktplaats, 2dehands, 2ememain): listings, listing detail, categories and seller inventory","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/marktplaats/v1","spec_available":true,"actions":[{"name":"search","description":"Keyword or category search with filters, sort, location, offset pagination (limit=30).","required_params":[],"optional_params":["query","site","l1_category_id","l2_category_id","sort_by","sort_order","price_from","price_to","postcode","distance_meters","offset"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword. (search needs query OR l1/l2_category_id.)","on_invalid":"reject","example":"iphone 13"},{"name":"site","type":"enum","required":false,"description":"Marketplace edition — each is a separate site/country.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands (marktplaats.nl)"},{"value":"be_nl","label":"Belgium - Dutch (2dehands.be)"},{"value":"be_fr","label":"Belgium - French (2ememain.be)"}],"default":"nl","example":"nl"},{"name":"l1_category_id","type":"integer","required":false,"description":"Top-level category id (discover via the categories action).","on_invalid":"ignore","example":91},{"name":"l2_category_id","type":"integer","required":false,"description":"Sub-category id under l1 (discover via the categories action).","on_invalid":"ignore"},{"name":"sort_by","type":"enum","required":false,"description":"Sort field. Common Adevinta keys shown; others accepted.","on_invalid":"ignore","allowed_values":[{"value":"OPTIMIZED","label":"Relevance (default)"},{"value":"PRICE","label":"Price"},{"value":"DATE","label":"Date posted"}],"example":"PRICE"},{"name":"sort_order","type":"enum","required":false,"description":"Sort direction.","on_invalid":"ignore","allowed_values":[{"value":"INCREASING","label":"Ascending"},{"value":"DECREASING","label":"Descending"}],"example":"INCREASING"},{"name":"price_from","type":"integer","required":false,"description":"Minimum price IN CENTS (Marktplaats uses cents: 1000 = EUR 10).","on_invalid":"ignore","example":1000},{"name":"price_to","type":"integer","required":false,"description":"Maximum price IN CENTS (5000 = EUR 50).","on_invalid":"ignore","example":50000},{"name":"postcode","type":"string","required":false,"description":"Postal code center for a distance search.","on_invalid":"reject","example":"1011"},{"name":"distance_meters","type":"integer","required":false,"description":"Search radius in METERS around postcode (10000 = 10 km).","on_invalid":"ignore","example":10000},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N, page size 30). Page with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"listings[] (price, condition, location, seller, images), facets, total, offset, has_more, next_offset","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone","site":"nl"}},{"name":"listing","description":"Listing detail by item_id and/or vip_url; enriched with full product details (price, availability, specs).","required_params":[],"optional_params":["item_id","vip_url","site"],"params":[{"name":"item_id","type":"string","required":false,"description":"Marktplaats item id (e.g. m2435372360) — take a CURRENT one from the search action's item_id; ids expire when the ad closes. (listing needs item_id OR vip_url; vip_url wins if both are given.)","on_invalid":"reject"},{"name":"vip_url","type":"string","required":false,"description":"Site-relative VIP page path (from search's vip_url) — the stable locator, and the one to prefer.","on_invalid":"reject","example":"/v/telecommunicatie/mobiele-telefoons-apple-iphone/a1517165634-apple-iphone-14-128gb-4-gratis-accessoires-accu-tot-100"},{"name":"site","type":"enum","required":false,"description":"Marketplace edition — each is a separate site/country.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands (marktplaats.nl)"},{"value":"be_nl","label":"Belgium - Dutch (2dehands.be)"},{"value":"be_fr","label":"Belgium - French (2ememain.be)"}],"default":"nl","example":"nl"}],"returns":"listing{} — search row merged with full product details (price, availability, images)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"vip_url":"/v/telecommunicatie/mobiele-telefoons-apple-iphone/a1517165634-apple-iphone-14-128gb-4-gratis-accessoires-accu-tot-100","site":"nl"}},{"name":"categories","description":"Category tree from search facets, or browse a category (l1/l2) with listings.","required_params":[],"optional_params":["query","site","l1_category_id","l2_category_id","offset"],"params":[{"name":"query","type":"string","required":false,"description":"Optional keyword to scope the category tree.","on_invalid":"reject","example":"telefoon"},{"name":"site","type":"enum","required":false,"description":"Marketplace edition — each is a separate site/country.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands (marktplaats.nl)"},{"value":"be_nl","label":"Belgium - Dutch (2dehands.be)"},{"value":"be_fr","label":"Belgium - French (2ememain.be)"}],"default":"nl","example":"nl"},{"name":"l1_category_id","type":"integer","required":false,"description":"Browse this top-level category's listings.","on_invalid":"ignore","example":91},{"name":"l2_category_id","type":"integer","required":false,"description":"Browse this sub-category's listings.","on_invalid":"ignore"},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N, page size 30). Page with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"search_category_options, categories_by_id, facet_categories, listings[], sort_options","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"site":"nl"}},{"name":"seller_listings","description":"Active listings for a seller; offset pagination via seller-name LRP search (name auto-resolved from profile when omitted).","required_params":["seller_id"],"optional_params":["seller_name","site","offset"],"params":[{"name":"seller_id","type":"integer","required":true,"description":"Marktplaats seller id — take it from any search result's seller.seller_id (search rows carry seller.seller_name too).","on_invalid":"ignore","example":57429132},{"name":"seller_name","type":"string","required":false,"description":"Seller display name from search's seller.seller_name. Auto-resolved when omitted, but that costs a ~13s category scan — pass it and the call returns in ~1s.","on_invalid":"reject","example":"Mobisite.nl"},{"name":"site","type":"enum","required":false,"description":"Marketplace edition — each is a separate site/country.","on_invalid":"reject","allowed_values":[{"value":"nl","label":"Netherlands (marktplaats.nl)"},{"value":"be_nl","label":"Belgium - Dutch (2dehands.be)"},{"value":"be_fr","label":"Belgium - French (2ememain.be)"}],"default":"nl","example":"nl"},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N, page size 30). Page with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"listings[] for this seller, seller_id, seller_name, total, has_more, next_offset","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"seller_id":57429132,"seller_name":"Mobisite.nl","site":"nl"}}]},{"name":"mcp-registry","category":{"id":"developer-tools","title":"Developer Tools"},"title":"MCP Server & Agent-Skill Registry API — discover, search and inspect Model Context Protocol (MCP) servers and agent skills across the Official MCP Registry, Glama and Smithery, with risk signals and trending","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/mcp-registry/v1","spec_available":true,"actions":[{"name":"search","description":"Normalized cross-registry search over the Official MCP Registry, Glama and Smithery (and skills via GitHub). Dedups the same server across registries by canonical GitHub repo and returns cross-registry presence.","required_params":["query"],"optional_params":["type","source","sort","limit"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search (server name, capability, keyword).","on_invalid":"reject","example":"filesystem","aliases":["q"]},{"name":"type","type":"enum","required":false,"description":"Which ecosystem to search.","on_invalid":"reject","allowed_values":[{"value":"mcp","label":"MCP servers"},{"value":"skill","label":"Agent skills (GitHub)"},{"value":"all","label":"Both"}],"default":"mcp","example":"mcp"},{"name":"source","type":"enum","required":false,"description":"Restrict to a single source (default: all reachable).","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All reachable"},{"value":"official","label":"Official MCP Registry"},{"value":"glama","label":"Glama"},{"value":"smithery","label":"Smithery"}],"default":"all","example":"all"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Source relevance"},{"value":"popularity","label":"Most used / most stars"},{"value":"recent","label":"Recently updated/created"}],"default":"relevance","example":"relevance"},{"name":"limit","type":"integer","required":false,"description":"Max merged results (1-100).","on_invalid":"reject","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"{ results: [{id,name,title,type,description,github_url,license,version,transport[],status,updated_at,sources[],cross_registry_count,source_urls,metrics{use_count,stars,verified,score}}], source_health{}, total }","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"filesystem","limit":10}},{"name":"server_detail","description":"Full merged profile for one MCP server across every registry it appears in: manifest (tools/capabilities/transport), install paths (packages/remotes/connections), license, GitHub repo health, and cross-registry presence (how many registries list it = trust signal).","required_params":["id"],"optional_params":["repo_health"],"params":[{"name":"id","type":"string","required":true,"description":"A GitHub URL/slug (owner/repo), a Smithery qualifiedName, a Glama id, or an Official registry name. github_url is the most reliable (it joins all registries).","on_invalid":"reject","example":"github.com/modelcontextprotocol/servers","aliases":["github_url","server_id","qualified_name"]},{"name":"repo_health","type":"boolean","required":false,"description":"Include GitHub repo-health enrichment (stars/issues/archived/license). Default true.","on_invalid":"reject","default":true,"example":true}],"returns":"{ id, name, description, github_url, license, version, transport[], status, sources[], cross_registry_count, tools[], install[], env_vars[], repo_health{}, source_urls{} }","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"github.com/modelcontextprotocol/servers"}},{"name":"skill_detail","description":"Metadata for one agent-skill repo (GitHub-backed). Fetches the repo + its SKILL.md frontmatter (name/description/license) + repo health.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"GitHub URL or owner/repo slug of the skill repository.","on_invalid":"reject","example":"anthropics/skills","aliases":["github_url","repo"]}],"returns":"{ id, name, description, license, skill_md{found,frontmatter}, repo_health{}, github_url }","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"github.com/modelcontextprotocol/servers"}},{"name":"security_signals","description":"HEURISTIC risk signals for an MCP server (NOT a safe/unsafe certification). Flags permission breadth (fs/network/exec), credential/env-var requests, repo health (archived/low-adoption), prompt-injection patterns in description/manifest, and corroboration (cross-registry presence). Always returns a disclaimer.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"GitHub URL/slug or Smithery qualifiedName of the server to scan.","on_invalid":"reject","example":"github.com/modelcontextprotocol/servers","aliases":["github_url","server_id","qualified_name"]}],"returns":"{ id, github_url, risk_signals:[{signal,severity,detail}], signal_count, highest_severity, corroboration{sources,cross_registry_count}, disclaimer }","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"id":"github.com/modelcontextprotocol/servers"}},{"name":"trending","description":"New / rising entries. MCP: most-used servers on Smithery + latest on the Official registry. Skills: recently-created GitHub skill repos.","required_params":[],"optional_params":["type","limit"],"params":[{"name":"type","type":"enum","required":false,"description":"Ecosystem.","on_invalid":"reject","allowed_values":[{"value":"mcp","label":"MCP servers"},{"value":"skill","label":"Agent skills"}],"default":"mcp","example":"mcp"},{"name":"limit","type":"integer","required":false,"description":"Max results (1-50).","on_invalid":"reject","default":20,"example":20,"minimum":1,"maximum":50}],"returns":"{ results:[normalized records w/ metrics], basis, source_health{} }","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"mcp","limit":10}},{"name":"list_sources","description":"The registries this engine aggregates, their roles, auth status and live reachability. Free.","required_params":[],"optional_params":[],"params":[],"returns":"{ sources:[{key,name,role,auth,reachable,note}] }","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"mediamarkt","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"MediaMarkt API scraper — search products, browse categories and read full product records (price, strike price, stock status, delivery window, marketplace sellers, specs, EAN, ratings, reviews) from MediaMarkt in 10 countries (DE, TR, AT, CH, NL, BE, ES, IT/MediaWorld, PL, HU) and Saturn Germany. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/mediamarkt/v1","spec_available":true,"actions":[{"name":"search","description":"Search one national MediaMarkt storefront by keyword and get 12 products per page with the price a shopper pays now, the struck-through price and its type, discount, financing offer, who sells it (MediaMarkt or a marketplace seller), online and delivery status with the delivery window, customer rating on a 5-star scale, EAN, category path, energy class and key features. Sort by price, rating, bestseller or newest; filter by brand and minimum rating.","required_params":["query"],"optional_params":["country","store","language","page","sort","brand","min_rating","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword, as a shopper would type it on the storefront.","on_invalid":"reject","example":"iphone 17","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which national MediaMarkt storefront to read. Currency and language follow the country (TRY for tr, CHF for ch, PLN for pl, HUF for hu, EUR elsewhere). `it` is MediaWorld, MediaMarkt's Italian brand. Unknown values are rejected.","on_invalid":"reject","allowed_values":[{"value":"tr","label":"Türkiye — mediamarkt.com.tr (TRY)"},{"value":"de","label":"Germany — mediamarkt.de (EUR)"},{"value":"at","label":"Austria — mediamarkt.at (EUR)"},{"value":"ch","label":"Switzerland — mediamarkt.ch (CHF; de/fr/it)"},{"value":"nl","label":"Netherlands — mediamarkt.nl (EUR)"},{"value":"be","label":"Belgium — mediamarkt.be (EUR; nl/fr)"},{"value":"es","label":"Spain — mediamarkt.es (EUR)"},{"value":"it","label":"Italy — mediaworld.it (EUR)"},{"value":"pl","label":"Poland — mediamarkt.pl (PLN)"},{"value":"hu","label":"Hungary — mediamarkt.hu (HUF)"}],"default":"de","example":"tr","aliases":["market"]},{"name":"store","type":"enum","required":false,"description":"Retail brand. `saturn` reads saturn.de, the sister chain on the same platform, and is only valid with country=de.","on_invalid":"reject","allowed_values":[{"value":"mediamarkt","label":"MediaMarkt (MediaWorld in Italy)"},{"value":"saturn","label":"Saturn — Germany only (saturn.de)"}],"default":"mediamarkt"},{"name":"language","type":"enum","required":false,"description":"Only for multilingual storefronts: Switzerland (de, fr, it) and Belgium (nl, fr). Defaults to the storefront's first language (de for ch, nl for be). Titles, specs and category names come back in this language; prices and ids are identical.","on_invalid":"reject","allowed_values":[{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"nl","label":"Dutch"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. 12 products per page; the storefront itself stops at page 30 (360 products), whatever `total_results` says.","on_invalid":"reject","default":1,"minimum":1,"maximum":30},{"name":"sort","type":"enum","required":false,"description":"Result order. Only orderings the storefront itself offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match (site default)"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"rating","label":"Best customer rating first"},{"value":"bestseller","label":"Best selling first"},{"value":"newest","label":"Newest first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Keep only one brand, spelled as the storefront spells it (brands are upper-case on MediaMarkt: APPLE, SAMSUNG, SIEMENS). One brand per call.","on_invalid":"reject","example":"APPLE"},{"name":"min_rating","type":"integer","required":false,"description":"Keep only products whose customer rating is at least this many stars (1-5).","on_invalid":"reject","minimum":1,"maximum":5},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{position, product_id, title, brand, url, image, ean, currency, price (number, what a web shopper pays now), was_price (struck-through price) + was_price_type (e.g. RRP = manufacturer list price), discount_amount, discount_percent, app_price (only when the app-only price differs), member_price (only when the club price differs), installment{months, monthly_amount, total_amount, interest_effective_percent}, vat_rate, seller{type: retailer|marketplace, id, name, rating, rating_scale}, rating, review_count, rating_scale (5), category, breadcrumb[], availability{online_status, buyable_online, delivery_available, pickup_available, delivery_status, delivery_earliest, delivery_latest, shipped_from_store, shipping_cost, pickup_status, release_date}, energy_efficiency{class, label_url, datasheet_url}, badges[], key_features[{name, value}], refurbished, sponsored}, count, total_results, page, page_count, max_page, search_mode ('keyword' | 'resolved' when the storefront answered with a category or brand page | 'phrase' when it answered with an editorial page and the keyword was re-asked as an exact phrase), resolved_url, category, country, store, language, currency","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"iphone","country":"tr"}},{"name":"category","description":"List the products of one MediaMarkt category page (from the site navigation or a product breadcrumb), 12 per page, with the same product fields as search. Sort and brand/rating filters work the same way.","required_params":["category"],"optional_params":["page","sort","brand","min_rating","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A category page URL from the storefront (…/category/<name>-<id>.html) or its path. Its host sets the country. Category URLs appear in the site navigation and in every product's breadcrumb.","on_invalid":"reject","example":"https://www.mediamarkt.com.tr/tr/category/telefon-465595.html","aliases":["category_url","url"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. 12 products per page; the storefront itself stops at page 30 (360 products), whatever `total_results` says.","on_invalid":"reject","default":1,"minimum":1,"maximum":30},{"name":"sort","type":"enum","required":false,"description":"Result order. Only orderings the storefront itself offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match (site default)"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"rating","label":"Best customer rating first"},{"value":"bestseller","label":"Best selling first"},{"value":"newest","label":"Newest first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Keep only one brand, spelled as the storefront spells it (brands are upper-case on MediaMarkt: APPLE, SAMSUNG, SIEMENS). One brand per call.","on_invalid":"reject","example":"APPLE"},{"name":"min_rating","type":"integer","required":false,"description":"Keep only products whose customer rating is at least this many stars (1-5).","on_invalid":"reject","minimum":1,"maximum":5},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{position, product_id, title, brand, url, image, ean, currency, price (number, what a web shopper pays now), was_price (struck-through price) + was_price_type (e.g. RRP = manufacturer list price), discount_amount, discount_percent, app_price (only when the app-only price differs), member_price (only when the club price differs), installment{months, monthly_amount, total_amount, interest_effective_percent}, vat_rate, seller{type: retailer|marketplace, id, name, rating, rating_scale}, rating, review_count, rating_scale (5), category, breadcrumb[], availability{online_status, buyable_online, delivery_available, pickup_available, delivery_status, delivery_earliest, delivery_latest, shipped_from_store, shipping_cost, pickup_status, release_date}, energy_efficiency{class, label_url, datasheet_url}, badges[], key_features[{name, value}], refurbished, sponsored}, count, total_results, page, page_count, max_page, category, breadcrumb[], category_url, country, store, language, currency","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"product/detail","description":"The full MediaMarkt product record by id or URL: title, brand, EAN, price with strike price, discount, app-only and club prices when they differ, financing, seller, online / delivery / pickup status with the delivery window and shipping cost, image gallery, complete technical specification grouped as on the site, description, colour and size variants with their own price and status, other marketplace sellers' offers, rating with its 5-star distribution, and the first page of customer reviews.","required_params":["product_id"],"optional_params":["country","store","language","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"MediaMarkt product id — the number at the end of a product URL (…/product/_apple-iphone-17-pro-max-…-1249245.html → 1249245). A full product URL is also accepted, and its host sets the country. Every `search` row returns `product_id`.","on_invalid":"reject","example":"1249245","aliases":["id","url"]},{"name":"country","type":"enum","required":false,"description":"Which national MediaMarkt storefront to read. Currency and language follow the country (TRY for tr, CHF for ch, PLN for pl, HUF for hu, EUR elsewhere). `it` is MediaWorld, MediaMarkt's Italian brand. Unknown values are rejected.","on_invalid":"reject","allowed_values":[{"value":"tr","label":"Türkiye — mediamarkt.com.tr (TRY)"},{"value":"de","label":"Germany — mediamarkt.de (EUR)"},{"value":"at","label":"Austria — mediamarkt.at (EUR)"},{"value":"ch","label":"Switzerland — mediamarkt.ch (CHF; de/fr/it)"},{"value":"nl","label":"Netherlands — mediamarkt.nl (EUR)"},{"value":"be","label":"Belgium — mediamarkt.be (EUR; nl/fr)"},{"value":"es","label":"Spain — mediamarkt.es (EUR)"},{"value":"it","label":"Italy — mediaworld.it (EUR)"},{"value":"pl","label":"Poland — mediamarkt.pl (PLN)"},{"value":"hu","label":"Hungary — mediamarkt.hu (HUF)"}],"default":"de","example":"tr","aliases":["market"]},{"name":"store","type":"enum","required":false,"description":"Retail brand. `saturn` reads saturn.de, the sister chain on the same platform, and is only valid with country=de.","on_invalid":"reject","allowed_values":[{"value":"mediamarkt","label":"MediaMarkt (MediaWorld in Italy)"},{"value":"saturn","label":"Saturn — Germany only (saturn.de)"}],"default":"mediamarkt"},{"name":"language","type":"enum","required":false,"description":"Only for multilingual storefronts: Switzerland (de, fr, it) and Belgium (nl, fr). Defaults to the storefront's first language (de for ch, nl for be). Titles, specs and category names come back in this language; prices and ids are identical.","on_invalid":"reject","allowed_values":[{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"},{"value":"nl","label":"Dutch"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, title, brand, url, image, ean, currency, price (number, what a web shopper pays now), was_price (struck-through price) + was_price_type (e.g. RRP = manufacturer list price), discount_amount, discount_percent, app_price (only when the app-only price differs), member_price (only when the club price differs), installment{months, monthly_amount, total_amount, interest_effective_percent}, vat_rate, seller{type: retailer|marketplace, id, name, rating, rating_scale}, rating, review_count, rating_scale (5), category, breadcrumb[], availability{online_status, buyable_online, delivery_available, pickup_available, delivery_status, delivery_earliest, delivery_latest, shipped_from_store, shipping_cost, pickup_status, release_date}, energy_efficiency{class, label_url, datasheet_url}, badges[], key_features[{name, value}], refurbished, title_raw, product_type, description (plain text), images[], specs[]{group, attributes{name: value}}, variants[]{name, is_color, options[]{product_id, value, title, image, price, online_status}}, marketplace_offers[]{offer_id, seller{type, id, name, rating, rating_scale, review_count}, price, was_price, was_price_type, currency, condition, shipping_cost, delivery_earliest, delivery_latest}, rating_distribution{'5'..'1'}, reviews[]{review_id, rating, title, text, pros[], cons[], date, author, verified_purchase, syndicated_from, reviewed_variant_id, helpful_votes}, reviews_summary (the site's own review summary text where it publishes one), manufacturer_id, online_since, category_ids[]}, country, store, language","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"1249245","country":"tr"}}]},{"name":"medium","category":{"id":"social","title":"Social Media"},"title":"Medium API scraper — Medium.com articles (full text, HTML & markdown), author profiles, publications, responses, tags and search, no account needed","version":"0.2.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/medium/v1","spec_available":true,"actions":[{"name":"user","description":"Public Medium user profile by username.","required_params":["user"],"optional_params":[],"params":[{"name":"user","type":"string","required":true,"description":"Medium username, with or without the leading @ (the name in medium.com/@<user>).","on_invalid":"reject","example":"dhh"}],"returns":"user{} — user_id, username, name, bio, followers_count, following_count, posts_published_count, author_tags[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"user":"dhh"}},{"name":"user_id","description":"Resolve username to Medium userId.","required_params":["user"],"optional_params":[],"params":[{"name":"user","type":"string","required":true,"description":"Medium username, with or without the leading @ (the name in medium.com/@<user>).","on_invalid":"reject","example":"dhh"}],"returns":"user_id, username","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"user":"dhh"}},{"name":"user_articles","description":"An author's published articles, newest first, with deep pagination.","required_params":["user"],"optional_params":["limit","cursor"],"params":[{"name":"user","type":"string","required":true,"description":"Medium username, with or without the leading @ (the name in medium.com/@<user>).","on_invalid":"reject","example":"dhh"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"articles[] (id, title, claps, reading_time, url, tags), next_cursor, has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"user":"dhh"}},{"name":"user_top_articles","description":"User articles sorted by clap count from profile references.","required_params":["user"],"optional_params":["limit"],"params":[{"name":"user","type":"string","required":true,"description":"Medium username, with or without the leading @ (the name in medium.com/@<user>).","on_invalid":"reject","example":"dhh"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":50}],"returns":"articles[] — the user's articles sorted by clap count (descending)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"user":"dhh"}},{"name":"article","description":"Article metadata by url or id.","required_params":[],"optional_params":["url","id"],"params":[{"name":"url","type":"string","required":false,"description":"Full article URL (alternative to id).","on_invalid":"ignore","example":"https://medium.com/@dhh/some-article-0123456789ab"},{"name":"id","type":"string","required":false,"description":"Article post id — the 12-char hex at the end of an article URL. Provide id OR url.","on_invalid":"ignore","example":"0123456789ab"}],"returns":"article{} — id, title, subtitle, claps, reading_time, word_count, published_at, url, tags, creator_id, responses_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"article_content","description":"Article plain-text body from bodyModel paragraphs.","required_params":[],"optional_params":["url","id"],"params":[{"name":"url","type":"string","required":false,"description":"Full article URL (alternative to id).","on_invalid":"ignore","example":"https://medium.com/@dhh/some-article-0123456789ab"},{"name":"id","type":"string","required":false,"description":"Article post id — the 12-char hex at the end of an article URL. Provide id OR url.","on_invalid":"ignore","example":"0123456789ab"}],"returns":"article{}, body (plain text), paragraph_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"article_html","description":"Article HTML body from bodyModel paragraphs.","required_params":[],"optional_params":["url","id"],"params":[{"name":"url","type":"string","required":false,"description":"Full article URL (alternative to id).","on_invalid":"ignore","example":"https://medium.com/@dhh/some-article-0123456789ab"},{"name":"id","type":"string","required":false,"description":"Article post id — the 12-char hex at the end of an article URL. Provide id OR url.","on_invalid":"ignore","example":"0123456789ab"}],"returns":"article{}, body (HTML), paragraph_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"article_markdown","description":"Article markdown body from bodyModel paragraphs.","required_params":[],"optional_params":["url","id"],"params":[{"name":"url","type":"string","required":false,"description":"Full article URL (alternative to id).","on_invalid":"ignore","example":"https://medium.com/@dhh/some-article-0123456789ab"},{"name":"id","type":"string","required":false,"description":"Article post id — the 12-char hex at the end of an article URL. Provide id OR url.","on_invalid":"ignore","example":"0123456789ab"}],"returns":"article{}, body (markdown), paragraph_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"article_responses","description":"Public responses/comments for an article.","required_params":[],"optional_params":["url","id","limit","cursor"],"params":[{"name":"url","type":"string","required":false,"description":"Full article URL (alternative to id).","on_invalid":"ignore","example":"https://medium.com/@dhh/some-article-0123456789ab"},{"name":"id","type":"string","required":false,"description":"Article post id — the 12-char hex at the end of an article URL. Provide id OR url.","on_invalid":"ignore","example":"0123456789ab"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"responses[] (id, title, text, claps, author_username, created_at, url), next_cursor, has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"publication","description":"Publication/collection metadata by slug.","required_params":["slug"],"optional_params":[],"params":[{"name":"slug","type":"string","required":true,"description":"Publication slug — the path segment in medium.com/<slug> (or its custom-domain handle).","on_invalid":"reject","example":"better-programming"}],"returns":"publication{} — id, name, slug, description, url, subscriber_count, created_at","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"publication_id","description":"Resolve publication slug to collection id.","required_params":["slug"],"optional_params":[],"params":[{"name":"slug","type":"string","required":true,"description":"Publication slug — the path segment in medium.com/<slug> (or its custom-domain handle).","on_invalid":"reject","example":"better-programming"}],"returns":"publication_id, slug","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"publication_articles","description":"A publication's articles, newest first, with deep pagination.","required_params":["slug"],"optional_params":["limit","cursor"],"params":[{"name":"slug","type":"string","required":true,"description":"Publication slug — the path segment in medium.com/<slug> (or its custom-domain handle).","on_invalid":"reject","example":"better-programming"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"articles[] (id, title, claps, url, tags), next_cursor, has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"tag","description":"Latest posts for a topic tag (the tag/topic feed).","required_params":["tag"],"optional_params":["limit"],"params":[{"name":"tag","type":"string","required":true,"description":"Medium topic tag slug (e.g. python, machine-learning).","on_invalid":"reject","example":"python"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-25). Larger values are clamped to 25.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":25}],"returns":"tag, posts[] (id, title, url, published_at, creator, description)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"tag":"python"}},{"name":"search_users","description":"Look up an author by exact username. (Medium gates fuzzy people-search behind a logged-in JS app, so this resolves q as a username and returns that profile.)","required_params":["q"],"optional_params":[],"params":[{"name":"q","type":"string","required":true,"description":"Search term.","on_invalid":"reject","example":"python"}],"returns":"users[] — the profile whose username equals q (id, name, bio, follower counts)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search_publications","description":"Look up a publication by exact slug. (Fuzzy publication search is login/JS-gated on Medium, so this resolves q as a publication slug and returns that publication.)","required_params":["q"],"optional_params":[],"params":[{"name":"q","type":"string","required":true,"description":"Search term.","on_invalid":"reject","example":"python"}],"returns":"publications[] — the publication whose slug equals q","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search_tags","description":"Check whether a topic tag exists and is active on Medium (resolves q as a tag slug).","required_params":["q"],"optional_params":[],"params":[{"name":"q","type":"string","required":true,"description":"Search term.","on_invalid":"reject","example":"python"}],"returns":"tags[] — [{slug, sample_posts}] (sample_posts > 0 means the tag is live)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"followers","description":"An author's followers (paginated). Identify the author by 'user' or 'user_id'.","required_params":[],"optional_params":["user","user_id","limit","cursor"],"params":[{"name":"user","type":"string","required":false,"description":"Medium username (with/without @). Provide user OR user_id.","on_invalid":"ignore","example":"dhh"},{"name":"user_id","type":"string","required":false,"description":"Medium numeric/hash user id (a profile's user_id). Provide user_id OR user.","on_invalid":"ignore","example":"abc123def456"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"followers[] (user_id, username, name, bio), next_cursor, has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"following","description":"The authors a user follows (paginated). Identify the user by 'user' or 'user_id'.","required_params":[],"optional_params":["user","user_id","limit","cursor"],"params":[{"name":"user","type":"string","required":false,"description":"Medium username (with/without @). Provide user OR user_id.","on_invalid":"ignore","example":"dhh"},{"name":"user_id","type":"string","required":false,"description":"Medium numeric/hash user id (a profile's user_id). Provide user_id OR user.","on_invalid":"ignore","example":"abc123def456"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"following[] (user_id, username, name, bio), next_cursor, has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"list","description":"Reading list metadata and articles from public list page HTML. Provide the full list 'url', or 'id' together with 'user'.","required_params":[],"optional_params":["id","url","user","username","slug","limit"],"params":[{"name":"id","type":"string","required":false,"description":"Reading-list id (the trailing id in a list URL). Provide with 'user', or instead pass the full list 'url'.","on_invalid":"ignore","example":"38f9e0f9bea6"},{"name":"url","type":"string","required":false,"description":"Full reading-list URL (alternative to user + id).","on_invalid":"ignore","example":"https://medium.com/@dhh/list/my-list-abcdef012345"},{"name":"user","type":"string","required":false,"description":"List owner's username (with/without @; also accepted as 'username'). Combine with id, or pass the full url.","on_invalid":"ignore","example":"dhh","aliases":["username"]},{"name":"slug","type":"string","required":false,"description":"Optional list slug (the human-readable part of a list URL).","on_invalid":"ignore","example":"my-reading-list"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":50}],"returns":"list{id, url, name, article_count}, articles[] (id, url)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"search_articles","description":"Search Medium articles by keyword — returns matching articles with title, URL and publication details from medium.com.","required_params":["q"],"optional_params":["limit","cursor"],"params":[{"name":"q","type":"string","required":true,"description":"Search term.","on_invalid":"reject","example":"python"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"articles[] (id, title, slug, url), query, next_cursor, has_more","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"meetup","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Meetup API scraper — discover upcoming events near any city (filter by in-person vs online and by date, paginated), pull full event detail (name, description, date, venue, fee, RSVP count, group), get a group's full profile (members, rating, topics, location, description) and list a group's upcoming and past events from Meetup.com — no login, no API key","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/meetup/v1","spec_available":true,"actions":[{"name":"search","description":"Discover upcoming events near a city. Filter by event type (in-person or online) and by date window, paginated. Returns each event's name, date, venue with coordinates, RSVP count, fee, image and the hosting group. (Meetup's logged-out discovery feed is location-based — pass a city; for a specific topic, browse a relevant group's events.)","required_params":[],"optional_params":["location","event_type","date","radius","cursor"],"params":[{"name":"location","type":"string","required":false,"description":"City to find events near — a plain place name ('Chicago', 'London', 'Austin, TX', 'Berlin'). We geocode it for you (US and international). Defaults to New York, NY.","on_invalid":"ignore","example":"Chicago","aliases":["city","place"]},{"name":"event_type","type":"enum","required":false,"description":"Restrict to in-person (PHYSICAL) or ONLINE events. Omit for both.","on_invalid":"ignore","allowed_values":[{"value":"PHYSICAL","label":"In-person events only"},{"value":"ONLINE","label":"Online events only"}],"example":"PHYSICAL"},{"name":"date","type":"enum","required":false,"description":"Optional date window for upcoming events.","on_invalid":"ignore","allowed_values":[{"value":"today","label":"Today"},{"value":"tomorrow","label":"Tomorrow"},{"value":"this-week","label":"Next 7 days"},{"value":"this-weekend","label":"Next 3 days"},{"value":"this-month","label":"Next 30 days"}],"example":"this-weekend"},{"name":"radius","type":"number","required":false,"description":"Search radius in miles around the city (1-100, default 25).","on_invalid":"ignore","default":25.0,"example":25,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor. Pass meta.next_cursor from the previous response to fetch the next page. Page until meta.has_more is false.","on_invalid":"ignore"}],"returns":"events[]{event_id, name, url, start_date, end_date, is_online, event_type, going_count, fee{amount,currency,is_free}, image, venue{name,address,city,state,country,postal_code,latitude,longitude}, group{group_id,name,urlname,city,state,country}} + meta{total_count, has_more, next_cursor, resolved_location}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"location":"New York"}},{"name":"event","description":"Full detail for one event by id or url: name, description, start/end datetime, venue with full address and coordinates, hosting group, fee, RSVP/going count, topics, event type and status.","required_params":[],"optional_params":["event_id","url"],"params":[{"name":"event_id","type":"string","required":false,"description":"Meetup event id (the number in /<group>/events/<id>/). From a search result's event_id. Requires `url` too if the group urlname is unknown (the id alone needs its group path).","on_invalid":"reject","example":"315094325"},{"name":"url","type":"string","required":false,"description":"Full Meetup event URL (preferred — carries the group path).","on_invalid":"ignore","example":"https://www.meetup.com/code-for-boston/events/315094325/"}],"returns":"event{event_id, name, description, start_date, end_date, status, is_online, event_type, going_count, max_tickets, fee, image, venue{...}, topics, host_count, group{group_id,name,urlname}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.meetup.com/code-for-boston/events/315094325/"}},{"name":"group","description":"Full profile for a Meetup group by urlname or url: name, member count, average event rating, topics, city/coordinates, description, join mode, founded date and social links.","required_params":[],"optional_params":["group","urlname","url"],"params":[{"name":"group","type":"string","required":false,"description":"Meetup group urlname (the slug in meetup.com/<urlname>/). From a search result's group.urlname.","on_invalid":"reject","example":"code-for-boston","aliases":["urlname"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full Meetup group URL.","on_invalid":"ignore","example":"https://www.meetup.com/code-for-boston/"}],"returns":"group{group_id, name, urlname, url, description, member_count, leadership_count, rating, rating_count, topics, city, state, country, latitude, longitude, join_mode, founded_date, photo, social_links}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"group":"code-for-boston"}},{"name":"group_events","description":"A group's events by urlname or url. Choose upcoming (default) or past. Returns each event with name, datetime, venue, fee, RSVP count and link.","required_params":[],"optional_params":["group","urlname","url","type"],"params":[{"name":"group","type":"string","required":false,"description":"Meetup group urlname to list events for.","on_invalid":"reject","example":"code-for-boston","aliases":["urlname"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full Meetup group URL.","on_invalid":"ignore","example":"https://www.meetup.com/code-for-boston/"},{"name":"type","type":"enum","required":false,"description":"'upcoming' (default) or 'past' events.","on_invalid":"ignore","allowed_values":[{"value":"upcoming","label":"Upcoming events"},{"value":"past","label":"Past events"}],"default":"upcoming","example":"upcoming"}],"returns":"events[]{event_id, name, url, start_date, end_date, status, is_online, event_type, going_count, fee, image, venue{...}, group{...}} + meta{type, group_urlname}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"group":"code-for-boston"}}]},{"name":"mercadolibre","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"MercadoLibre API — product search, prices, deals, reviews and category browse across MercadoLibre's Latin American marketplaces (Argentina, Mexico, Brazil, Chile, Colombia and more); no API key, multi-country.","version":"2.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/mercadolibre/v1","spec_available":true,"actions":[{"name":"search","description":"Keyword product search across a MercadoLibre country site — the ranked results a shopper sees, with title, item and catalog ids, permalink, current and strike-through price in the local currency, discount, star rating, seller and official-store flag, shipping line and the listing image. Paginated (50 per page) and filterable by price, with client-side sorting. When MercadoLibre has no match for your keywords it answers with unrelated products rather than an empty page; those are detected and dropped, so an empty result here means the site genuinely has nothing for the query (meta.query_match_pct reports how well the returned rows match it).","required_params":["query"],"optional_params":["site_id","page","max_pages","limit","min_price","max_price","sort"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for (product keywords). Spanish/Portuguese match best on the local site, but English brand terms work too.","on_invalid":"reject","example":"iphone","aliases":["q","keyword"]},{"name":"site_id","type":"enum","required":false,"description":"MercadoLibre country site. MLA=Argentina, MLM=Mexico, MLB=Brazil, MLC=Chile, MCO=Colombia, MLU=Uruguay, MPE=Peru, MEC=Ecuador, MRD=Dominican Republic, etc. Prices and currency are per-country.","on_invalid":"ignore","allowed_values":[{"value":"MLA","label":"Argentina"},{"value":"MLM","label":"Mexico"},{"value":"MLB","label":"Brazil"},{"value":"MLC","label":"Chile"},{"value":"MCO","label":"Colombia"},{"value":"MLU","label":"Uruguay"},{"value":"MPE","label":"Peru"},{"value":"MLV","label":"Venezuela"},{"value":"MBO","label":"Bolivia"},{"value":"MPY","label":"Paraguay"},{"value":"MEC","label":"Ecuador"},{"value":"MRD","label":"Dominican Republic"},{"value":"MCR","label":"Costa Rica"},{"value":"MGT","label":"Guatemala"},{"value":"MPA","label":"Panama"},{"value":"MHN","label":"Honduras"},{"value":"MNI","label":"Nicaragua"},{"value":"MSV","label":"El Salvador"}],"default":"MLA","example":"MLA","aliases":["country","site"]},{"name":"page","type":"integer","required":false,"description":"Result page to start from (1, 2, 3 …; 50 per page).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"How many consecutive pages to fetch and merge in one call (1–10, deduplicated by item id).","on_invalid":"ignore","default":1,"example":2,"minimum":1,"maximum":10},{"name":"limit","type":"integer","required":false,"description":"Trim the merged list to at most this many products.","on_invalid":"ignore","example":20,"minimum":1,"maximum":500},{"name":"min_price","type":"number","required":false,"description":"Keep only products at or above this price, in the site's own currency (ARS for MLA, BRL for MLB, MXN for MLM …). Applied after fetching.","on_invalid":"ignore","example":100000,"minimum":0},{"name":"max_price","type":"number","required":false,"description":"Keep only products at or below this price, in the site's own currency. Applied after fetching.","on_invalid":"ignore","example":900000,"minimum":0},{"name":"sort","type":"enum","required":false,"description":"Order the returned products. Applied to the rows this call fetched, not to the whole catalogue.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"MercadoLibre's own ranking (default)"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"rating","label":"Highest star rating first"}],"example":"price_asc"}],"returns":"query, site_id, total_results, count, items[]{item_id, product_id, position, title, permalink, price{current, previous, currency, discount_label}, reviews_summary{rating_average, total}, seller, is_official_store, shipping_text, picture}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"product_detail","description":"Full record for one MercadoLibre product, from its item id, catalog product id or URL — title, price and currency, availability and stock line, condition, units sold, brand and colour, description, every gallery image, the full specification table, seller name and id, shipping cost, rating summary and the category path.","required_params":["item_id"],"optional_params":["site_id"],"params":[{"name":"item_id","type":"string","required":true,"description":"A MercadoLibre item id (MLA2396564888), a catalog product id (MLA27172667) or a full product URL. The ids returned by `search` work directly.","on_invalid":"reject","example":"MLA2396564888","aliases":["product_id","url","id"]},{"name":"site_id","type":"enum","required":false,"description":"MercadoLibre country site. MLA=Argentina, MLM=Mexico, MLB=Brazil, MLC=Chile, MCO=Colombia, MLU=Uruguay, MPE=Peru, MEC=Ecuador, MRD=Dominican Republic, etc. Prices and currency are per-country.","on_invalid":"ignore","allowed_values":[{"value":"MLA","label":"Argentina"},{"value":"MLM","label":"Mexico"},{"value":"MLB","label":"Brazil"},{"value":"MLC","label":"Chile"},{"value":"MCO","label":"Colombia"},{"value":"MLU","label":"Uruguay"},{"value":"MPE","label":"Peru"},{"value":"MLV","label":"Venezuela"},{"value":"MBO","label":"Bolivia"},{"value":"MPY","label":"Paraguay"},{"value":"MEC","label":"Ecuador"},{"value":"MRD","label":"Dominican Republic"},{"value":"MCR","label":"Costa Rica"},{"value":"MGT","label":"Guatemala"},{"value":"MPA","label":"Panama"},{"value":"MHN","label":"Honduras"},{"value":"MNI","label":"Nicaragua"},{"value":"MSV","label":"El Salvador"}],"default":"MLA","example":"MLA","aliases":["country","site"]}],"returns":"item_id, product_id, title, permalink, price{current, currency, valid_until}, availability, in_stock, stock_text, condition, sold_quantity, brand, color, description, images[], attributes{}, seller{name, id}, shipping{free, cost, currency}, reviews_summary{rating_average, total}, category_path[], weight","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"deals","description":"MercadoLibre's live deals feed (Ofertas del día) — discounted listing cards with current and previous price, discount %, star rating + review count, seller (+official-store flag), shipping and brand. Multi-country, paginated, optional minimum-discount filter. Note: this is the site-wide daily-deals browse — it is NOT keyword-filtered.","required_params":[],"optional_params":["site_id","page","max_pages","min_discount","sort"],"params":[{"name":"site_id","type":"enum","required":false,"description":"MercadoLibre country site. MLA=Argentina, MLM=Mexico, MLB=Brazil, MLC=Chile, MCO=Colombia, MLU=Uruguay, MPE=Peru, MEC=Ecuador, MRD=Dominican Republic, etc. Prices and currency are per-country.","on_invalid":"ignore","allowed_values":[{"value":"MLA","label":"Argentina"},{"value":"MLM","label":"Mexico"},{"value":"MLB","label":"Brazil"},{"value":"MLC","label":"Chile"},{"value":"MCO","label":"Colombia"},{"value":"MLU","label":"Uruguay"},{"value":"MPE","label":"Peru"},{"value":"MLV","label":"Venezuela"},{"value":"MBO","label":"Bolivia"},{"value":"MPY","label":"Paraguay"},{"value":"MEC","label":"Ecuador"},{"value":"MRD","label":"Dominican Republic"},{"value":"MCR","label":"Costa Rica"},{"value":"MGT","label":"Guatemala"},{"value":"MPA","label":"Panama"},{"value":"MHN","label":"Honduras"},{"value":"MNI","label":"Nicaragua"},{"value":"MSV","label":"El Salvador"}],"default":"MLA","example":"MLA","aliases":["country","site"]},{"name":"page","type":"integer","required":false,"description":"Page to start from (1, 2, 3 …; ~48 deals/page).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"How many consecutive pages to fetch + merge in one call (1–10, ~48 items/page; deduped).","on_invalid":"ignore","default":1,"example":2,"minimum":1,"maximum":10},{"name":"min_discount","type":"integer","required":false,"description":"Only items discounted at least this % off the previous price.","on_invalid":"ignore","default":0,"example":20,"minimum":0,"maximum":99},{"name":"sort","type":"enum","required":false,"description":"Order the returned deals.","on_invalid":"ignore","allowed_values":[{"value":"discount","label":"Biggest discount first"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"rating","label":"Highest rated first"}],"default":"discount","example":"discount"}],"returns":"items[]{item_id, product_id, title, permalink, price{current, previous, currency, discount_label, installments_text}, discount_pct, reviews_summary{rating_average, total}, seller, is_official_store, shipping_text, brand, deal_label} + total_results (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"site_id":"MLA"}},{"name":"category_items","description":"Products listed in a MercadoLibre category — title, price (current/previous/discount), rating, product link and picture. Pass a category_id (it's resolved to the category's /c/ landing page). MercadoLibre puts keyword search behind a login, so browsing by category is the way to list real products for it.","required_params":["category_id"],"optional_params":["site_id","sort","min_price","max_price"],"params":[{"name":"category_id","type":"string","required":true,"description":"MercadoLibre category ID (e.g. MLA1051 = Celulares y Teléfonos in Argentina). Discover IDs with the `category` action.","on_invalid":"reject","example":"MLA1051","aliases":["category","id"]},{"name":"site_id","type":"enum","required":false,"description":"MercadoLibre country site. MLA=Argentina, MLM=Mexico, MLB=Brazil, MLC=Chile, MCO=Colombia, MLU=Uruguay, MPE=Peru, MEC=Ecuador, MRD=Dominican Republic, etc. Prices and currency are per-country.","on_invalid":"ignore","allowed_values":[{"value":"MLA","label":"Argentina"},{"value":"MLM","label":"Mexico"},{"value":"MLB","label":"Brazil"},{"value":"MLC","label":"Chile"},{"value":"MCO","label":"Colombia"},{"value":"MLU","label":"Uruguay"},{"value":"MPE","label":"Peru"},{"value":"MLV","label":"Venezuela"},{"value":"MBO","label":"Bolivia"},{"value":"MPY","label":"Paraguay"},{"value":"MEC","label":"Ecuador"},{"value":"MRD","label":"Dominican Republic"},{"value":"MCR","label":"Costa Rica"},{"value":"MGT","label":"Guatemala"},{"value":"MPA","label":"Panama"},{"value":"MHN","label":"Honduras"},{"value":"MNI","label":"Nicaragua"},{"value":"MSV","label":"El Salvador"}],"default":"MLA","example":"MLA","aliases":["country","site"]},{"name":"sort","type":"enum","required":false,"description":"Order the returned items.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Site default order"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"rating","label":"Highest rated first"}],"default":"relevance","example":"price_asc"},{"name":"min_price","type":"number","required":false,"description":"Only items at or above this price (site currency).","on_invalid":"ignore","example":100,"minimum":0},{"name":"max_price","type":"number","required":false,"description":"Only items at or below this price (site currency).","on_invalid":"ignore","example":500,"minimum":0}],"returns":"items[]{item_id, product_id, title, permalink, price{current, previous, currency, discount_label}, reviews_summary{rating_average, total}, picture} + category{id, name}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"category_id":"MLA1051"}},{"name":"reviews","description":"Buyer reviews for a catalog product — full review text, rating and date, paginated to gather ALL reviews in one call + a derived star distribution and average. Works across countries.","required_params":["product_id"],"optional_params":["site_id","page","max_pages"],"params":[{"name":"product_id","type":"string","required":true,"description":"MercadoLibre catalog product ID (the ML…id in a /p/<id> URL — e.g. MLA1027172677). Get it from a search item's product_id.","on_invalid":"reject","example":"MLA1027172677","aliases":["id","catalog_id"]},{"name":"site_id","type":"enum","required":false,"description":"MercadoLibre country site. MLA=Argentina, MLM=Mexico, MLB=Brazil, MLC=Chile, MCO=Colombia, MLU=Uruguay, MPE=Peru, MEC=Ecuador, MRD=Dominican Republic, etc. Prices and currency are per-country.","on_invalid":"ignore","allowed_values":[{"value":"MLA","label":"Argentina"},{"value":"MLM","label":"Mexico"},{"value":"MLB","label":"Brazil"},{"value":"MLC","label":"Chile"},{"value":"MCO","label":"Colombia"},{"value":"MLU","label":"Uruguay"},{"value":"MPE","label":"Peru"},{"value":"MLV","label":"Venezuela"},{"value":"MBO","label":"Bolivia"},{"value":"MPY","label":"Paraguay"},{"value":"MEC","label":"Ecuador"},{"value":"MRD","label":"Dominican Republic"},{"value":"MCR","label":"Costa Rica"},{"value":"MGT","label":"Guatemala"},{"value":"MPA","label":"Panama"},{"value":"MHN","label":"Honduras"},{"value":"MNI","label":"Nicaragua"},{"value":"MSV","label":"El Salvador"}],"default":"MLA","example":"MLA","aliases":["country","site"]},{"name":"page","type":"integer","required":false,"description":"Review page to start from (20 reviews/page).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"How many review pages to gather in one call (1–25, 20/page → up to 500 reviews). Stops early when reviews run out.","on_invalid":"ignore","default":5,"example":5,"minimum":1,"maximum":25}],"returns":"reviews[]{id, rating, text, date, variant} + summary{count, average_rating, distribution{1..5}} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"suggest","description":"Search-term autocomplete — what MercadoLibre suggests as a shopper types.","required_params":["query"],"optional_params":["site_id"],"params":[{"name":"query","type":"string","required":true,"description":"Partial search text to complete.","on_invalid":"reject","example":"note","aliases":["q","keyword"]},{"name":"site_id","type":"enum","required":false,"description":"MercadoLibre country site. MLA=Argentina, MLM=Mexico, MLB=Brazil, MLC=Chile, MCO=Colombia, MLU=Uruguay, MPE=Peru, MEC=Ecuador, MRD=Dominican Republic, etc. Prices and currency are per-country.","on_invalid":"ignore","allowed_values":[{"value":"MLA","label":"Argentina"},{"value":"MLM","label":"Mexico"},{"value":"MLB","label":"Brazil"},{"value":"MLC","label":"Chile"},{"value":"MCO","label":"Colombia"},{"value":"MLU","label":"Uruguay"},{"value":"MPE","label":"Peru"},{"value":"MLV","label":"Venezuela"},{"value":"MBO","label":"Bolivia"},{"value":"MPY","label":"Paraguay"},{"value":"MEC","label":"Ecuador"},{"value":"MRD","label":"Dominican Republic"},{"value":"MCR","label":"Costa Rica"},{"value":"MGT","label":"Guatemala"},{"value":"MPA","label":"Panama"},{"value":"MHN","label":"Honduras"},{"value":"MNI","label":"Nicaragua"},{"value":"MSV","label":"El Salvador"}],"default":"MLA","example":"MLA","aliases":["country","site"]}],"returns":"suggestions[]{query, match_start, match_end}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"category","description":"Browse the MercadoLibre category tree — a category's name, total item count, full path from root and its direct child subcategories. Drill down via children[].id; use `category_items` to retrieve the products within a category.","required_params":["category_id"],"optional_params":[],"params":[{"name":"category_id","type":"string","required":true,"description":"MercadoLibre category ID (starts with the site prefix, e.g. MLA1051 = Celulares y Teléfonos in Argentina, MLB1051 in Brazil). Drill down via this action's children[].id.","on_invalid":"reject","example":"MLA1051","aliases":["category","id"]}],"returns":"category{id, name, total_items, permalink, path_from_root[], children[]{id, name, total_items}}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"category_id":"MLA1051"}}]},{"name":"mercadona","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Mercadona API scraper — Spain's largest supermarket online shop (tienda.mercadona.es): search products, read the full product record with shelf price, price drops, unit price, VAT, EAN, ingredients and allergens, browse every category and the price-drop list, priced for any Spanish postal code. Prices in EUR. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/mercadona/v1","spec_available":true,"actions":[{"name":"search","description":"Search Mercadona's online shop by keyword, priced for a Spanish postal code. Each product comes with its shelf price, the previous price when it just dropped, the unit price per kg / litre / unit, the pack size, VAT rate, EAN, brand, category path and availability. Filter by brand or category and sort by price, unit price or price drop. Mercadona returns at most 60 products per query.","required_params":["query"],"optional_params":["postal_code","warehouse","lang","page","page_size","sort","brands","category_id","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper would type it on tienda.mercadona.es ('leche', 'aceite de oliva', 'Hacendado'). Search in the language you pass in `lang` ('milk' with lang=en). Typos are tolerated.","on_invalid":"reject","example":"leche","aliases":["q","keyword"]},{"name":"postal_code","type":"string","required":false,"description":"Spanish postal code of the delivery address. Prices and assortment depend on the warehouse that serves it (Canary Islands prices differ). A postal code Mercadona does not deliver to is rejected. Takes precedence over `warehouse`. Default: Mercadona's own default area (Valencia, warehouse vlc1).","on_invalid":"reject","example":"28001","aliases":["zip","cp"]},{"name":"warehouse","type":"string","required":false,"description":"Advanced: a Mercadona warehouse id ('vlc1', 'mad3', 'bcn1', '4701') instead of a postal code. Every answer reports the warehouse used; `warehouse/lookup` maps a postal code to it.","on_invalid":"reject","example":"mad3","aliases":["wh"]},{"name":"lang","type":"enum","required":false,"description":"Language of product names and categories.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spanish (default)"},{"value":"en","label":"English"},{"value":"ca","label":"Catalan"},{"value":"vai","label":"Valencian"},{"value":"eu","label":"Basque (only category names are translated by Mercadona)"}],"default":"es"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"ignore","default":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-200, default 50).","on_invalid":"ignore","default":50,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Order of the rows. Leave empty for Mercadona's own order (relevance for search, shelf order for categories). Applied over the complete list Mercadona returns.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"unit_price_asc","label":"Lowest price per kg / L / unit first"},{"value":"unit_price_desc","label":"Highest price per kg / L / unit first"},{"value":"discount_desc","label":"Biggest price drop first"},{"value":"name_asc","label":"Alphabetical"}]},{"name":"brands","type":"array","required":false,"description":"Only these brands (exact names, case-insensitive; see `filters_available.brands`). Several brands are OR-ed. Comma-separated text works too.","on_invalid":"reject","example":["Hacendado"],"aliases":["brand"]},{"name":"category_id","type":"string","required":false,"description":"Only products inside this Mercadona category (any level; ids from `categories` or `filters_available.categories`).","on_invalid":"reject","example":"72","aliases":["category"]},{"name":"include_fallback_results","type":"boolean","required":false,"description":"For things Mercadona does not sell, its search returns loosely related products (e.g. perfumes for 'zapatillas nike'). false (default) drops them: `results` stays empty and `fallback_results_dropped` counts them; true returns them separately in `fallback_results`, never in `results`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string; can contain a dot, e.g. '81661.2'), title, brand (null on category/deals rows — Mercadona omits it there), ean (search rows and detail), packaging, main_feature, category{id,name,level}, breadcrumb[], category_paths[][], url, slug, image, price (number, EUR, the shelf price; for weighed counter items the price of the minimum quantity), price_display ('5,04 €'), currency, original_price (the previous price when Mercadona shows a price drop, else null), original_price_display, discount_percent, save_amount, price_dropped, member_price / member_price_display / member_discount_percent / member_program / member_unit_price (always null — Mercadona has no loyalty price), unit_price, unit_price_unit ('L' | 'kg' | '100 g' | '100 ml' | 'ud' | 'dz' | 'dc' | 'lv' | 'm'), unit_price_measure ('litre', 'kg', 'unit', 'dozen', 'wash', 'metre' …), unit_price_display ('0,84 €/L'), sold_by ('unit' | 'weight'), price_per_quantity + price_per_quantity_unit (weighed items: 0.15 kg), order_increment, price_is_estimate (true = piece of approximate weight), size ('6 briks x 1 L'), size_value, size_unit, pack_units, pack_unit_name, drained_weight, tax_percent (VAT/IGIC included in the price), is_new_price, availability ('in_stock' | 'out_of_stock' | 'unavailable_in_warehouse' | 'unavailable'), in_stock, status, unavailable_from, unavailable_weekdays[], max_order_quantity, age_restricted, is_water, is_new_arrival, rating/review_count/rating_scale (null — not published), sponsored (always false)}, count, total_results, page, page_size, page_count, filters_available{brands[]{name,count}, categories[]{id,name,level,count}}, sort_applied, area{postal_code, warehouse, source ('postal_code' | 'warehouse' | 'default')}, lang, query, search_provider ('mercadona' | 'algolia'), fallback_results_dropped, fallback_results[], keyword_index_hits (set only when no row contained a query word: the shop's keyword index was asked whether the rows are genuine synonyms)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"leche"}},{"name":"product/detail","description":"The full Mercadona product record by `product_id` (or product URL), priced for a postal code: title, brand, EAN, every image, shelf price, previous price and saving, unit price, pack size, VAT rate, availability and order limit, legal name, ingredients, allergens, storage and usage instructions, origin, suppliers, alcohol by volume, hazard statements and colour variants.","required_params":["product_id"],"optional_params":["postal_code","warehouse","lang","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Mercadona product id (the value every search row returns as `product_id`, e.g. '10381' or '81661.2'), or a tienda.mercadona.es/product/… URL.","on_invalid":"reject","example":"10381","aliases":["id","url"]},{"name":"postal_code","type":"string","required":false,"description":"Spanish postal code of the delivery address. Prices and assortment depend on the warehouse that serves it (Canary Islands prices differ). A postal code Mercadona does not deliver to is rejected. Takes precedence over `warehouse`. Default: Mercadona's own default area (Valencia, warehouse vlc1).","on_invalid":"reject","example":"28001","aliases":["zip","cp"]},{"name":"warehouse","type":"string","required":false,"description":"Advanced: a Mercadona warehouse id ('vlc1', 'mad3', 'bcn1', '4701') instead of a postal code. Every answer reports the warehouse used; `warehouse/lookup` maps a postal code to it.","on_invalid":"reject","example":"mad3","aliases":["wh"]},{"name":"lang","type":"enum","required":false,"description":"Language of product names and categories.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spanish (default)"},{"value":"en","label":"English"},{"value":"ca","label":"Catalan"},{"value":"vai","label":"Valencian"},{"value":"eu","label":"Basque (only category names are translated by Mercadona)"}],"default":"es"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id (string; can contain a dot, e.g. '81661.2'), title, brand (null on category/deals rows — Mercadona omits it there), ean (search rows and detail), packaging, main_feature, category{id,name,level}, breadcrumb[], category_paths[][], url, slug, image, price (number, EUR, the shelf price; for weighed counter items the price of the minimum quantity), price_display ('5,04 €'), currency, original_price (the previous price when Mercadona shows a price drop, else null), original_price_display, discount_percent, save_amount, price_dropped, member_price / member_price_display / member_discount_percent / member_program / member_unit_price (always null — Mercadona has no loyalty price), unit_price, unit_price_unit ('L' | 'kg' | '100 g' | '100 ml' | 'ud' | 'dz' | 'dc' | 'lv' | 'm'), unit_price_measure ('litre', 'kg', 'unit', 'dozen', 'wash', 'metre' …), unit_price_display ('0,84 €/L'), sold_by ('unit' | 'weight'), price_per_quantity + price_per_quantity_unit (weighed items: 0.15 kg), order_increment, price_is_estimate (true = piece of approximate weight), size ('6 briks x 1 L'), size_value, size_unit, pack_units, pack_unit_name, drained_weight, tax_percent (VAT/IGIC included in the price), is_new_price, availability ('in_stock' | 'out_of_stock' | 'unavailable_in_warehouse' | 'unavailable'), in_stock, status, unavailable_from, unavailable_weekdays[], max_order_quantity, age_restricted, is_water, is_new_arrival, rating/review_count/rating_scale (null — not published), sponsored (always false), images[], image_set[]{zoom,regular,thumbnail,perspective}, legal_name, description, origin, suppliers[], ingredients, allergens, storage, usage, mandatory_mentions, danger_mentions, counter_info, production_variant, alcohol_by_volume, alcohol_by_volume_text, prepared_by_mercadona, extra_info[], is_bulk, is_variable_weight, variant_count, variants[]{product_id, variant_type ('color'), name, color_hex, status, in_stock, url}, nutrition (null — Mercadona publishes no nutrition table)}, area{postal_code, warehouse, source ('postal_code' | 'warehouse' | 'default')}, lang","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"10381"}},{"name":"category","description":"Every product of one Mercadona category (ids from `categories`), with its sub-categories, priced for a postal code. Same rows as search; filter by sub-category, sort by price or unit price.","required_params":["category_id"],"optional_params":["subcategory_id","postal_code","warehouse","lang","page","page_size","sort","max_rotations"],"params":[{"name":"category_id","type":"string","required":true,"description":"A category id from `categories` (the second level, e.g. 112 = Aceite, vinagre y sal), or a tienda.mercadona.es/categories/… URL.","on_invalid":"reject","example":"112","aliases":["id","category","url"]},{"name":"subcategory_id","type":"string","required":false,"description":"Optional: only this sub-category of the category (ids in `subcategories`).","on_invalid":"reject","example":"420"},{"name":"postal_code","type":"string","required":false,"description":"Spanish postal code of the delivery address. Prices and assortment depend on the warehouse that serves it (Canary Islands prices differ). A postal code Mercadona does not deliver to is rejected. Takes precedence over `warehouse`. Default: Mercadona's own default area (Valencia, warehouse vlc1).","on_invalid":"reject","example":"28001","aliases":["zip","cp"]},{"name":"warehouse","type":"string","required":false,"description":"Advanced: a Mercadona warehouse id ('vlc1', 'mad3', 'bcn1', '4701') instead of a postal code. Every answer reports the warehouse used; `warehouse/lookup` maps a postal code to it.","on_invalid":"reject","example":"mad3","aliases":["wh"]},{"name":"lang","type":"enum","required":false,"description":"Language of product names and categories.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spanish (default)"},{"value":"en","label":"English"},{"value":"ca","label":"Catalan"},{"value":"vai","label":"Valencian"},{"value":"eu","label":"Basque (only category names are translated by Mercadona)"}],"default":"es"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"ignore","default":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-200, default 50).","on_invalid":"ignore","default":50,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Order of the rows. Leave empty for Mercadona's own order (relevance for search, shelf order for categories). Applied over the complete list Mercadona returns.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"unit_price_asc","label":"Lowest price per kg / L / unit first"},{"value":"unit_price_desc","label":"Highest price per kg / L / unit first"},{"value":"discount_desc","label":"Biggest price drop first"},{"value":"name_asc","label":"Alphabetical"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string; can contain a dot, e.g. '81661.2'), title, brand (null on category/deals rows — Mercadona omits it there), ean (search rows and detail), packaging, main_feature, category{id,name,level}, breadcrumb[], category_paths[][], url, slug, image, price (number, EUR, the shelf price; for weighed counter items the price of the minimum quantity), price_display ('5,04 €'), currency, original_price (the previous price when Mercadona shows a price drop, else null), original_price_display, discount_percent, save_amount, price_dropped, member_price / member_price_display / member_discount_percent / member_program / member_unit_price (always null — Mercadona has no loyalty price), unit_price, unit_price_unit ('L' | 'kg' | '100 g' | '100 ml' | 'ud' | 'dz' | 'dc' | 'lv' | 'm'), unit_price_measure ('litre', 'kg', 'unit', 'dozen', 'wash', 'metre' …), unit_price_display ('0,84 €/L'), sold_by ('unit' | 'weight'), price_per_quantity + price_per_quantity_unit (weighed items: 0.15 kg), order_increment, price_is_estimate (true = piece of approximate weight), size ('6 briks x 1 L'), size_value, size_unit, pack_units, pack_unit_name, drained_weight, tax_percent (VAT/IGIC included in the price), is_new_price, availability ('in_stock' | 'out_of_stock' | 'unavailable_in_warehouse' | 'unavailable'), in_stock, status, unavailable_from, unavailable_weekdays[], max_order_quantity, age_restricted, is_water, is_new_arrival, rating/review_count/rating_scale (null — not published), sponsored (always false)}, count, total_results, page, page_size, page_count, filters_available{brands[]{name,count}, categories[]{id,name,level,count}}, sort_applied, area{postal_code, warehouse, source ('postal_code' | 'warehouse' | 'default')}, lang, category{id,name}, subcategories[]{id,name,count}, next_category{id,name}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"Mercadona's full online category tree — every department and its categories with ids to pass to `category`.","required_params":[],"optional_params":["postal_code","warehouse","lang","max_rotations"],"params":[{"name":"postal_code","type":"string","required":false,"description":"Spanish postal code of the delivery address. Prices and assortment depend on the warehouse that serves it (Canary Islands prices differ). A postal code Mercadona does not deliver to is rejected. Takes precedence over `warehouse`. Default: Mercadona's own default area (Valencia, warehouse vlc1).","on_invalid":"reject","example":"28001","aliases":["zip","cp"]},{"name":"warehouse","type":"string","required":false,"description":"Advanced: a Mercadona warehouse id ('vlc1', 'mad3', 'bcn1', '4701') instead of a postal code. Every answer reports the warehouse used; `warehouse/lookup` maps a postal code to it.","on_invalid":"reject","example":"mad3","aliases":["wh"]},{"name":"lang","type":"enum","required":false,"description":"Language of product names and categories.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spanish (default)"},{"value":"en","label":"English"},{"value":"ca","label":"Catalan"},{"value":"vai","label":"Valencian"},{"value":"eu","label":"Basque (only category names are translated by Mercadona)"}],"default":"es"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"categories[]{id, name, level (0), children[]{id, name, level (1), url}}, count, category_count, area{postal_code, warehouse, source ('postal_code' | 'warehouse' | 'default')}, lang","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"deals","description":"Mercadona's complete price-drop list ('Bajadas de precio': every product whose price just went down, with the previous price) or its new-products list ('Novedades'), for a postal code. Filter by department, sort by price or by the size of the drop.","required_params":[],"optional_params":["type","category_id","postal_code","warehouse","lang","page","page_size","sort","max_rotations"],"params":[{"name":"type","type":"enum","required":false,"description":"Which of Mercadona's lists to read.","on_invalid":"reject","allowed_values":[{"value":"price_drops","label":"Products whose price just went down ('Bajadas de precio')"},{"value":"new_arrivals","label":"New products ('Novedades')"}],"default":"price_drops"},{"name":"category_id","type":"string","required":false,"description":"Only products of this department (a first-level id from `categories`, e.g. 19 = Bodega). Mercadona's list rows name only the department.","on_invalid":"reject","example":"19","aliases":["category"]},{"name":"postal_code","type":"string","required":false,"description":"Spanish postal code of the delivery address. Prices and assortment depend on the warehouse that serves it (Canary Islands prices differ). A postal code Mercadona does not deliver to is rejected. Takes precedence over `warehouse`. Default: Mercadona's own default area (Valencia, warehouse vlc1).","on_invalid":"reject","example":"28001","aliases":["zip","cp"]},{"name":"warehouse","type":"string","required":false,"description":"Advanced: a Mercadona warehouse id ('vlc1', 'mad3', 'bcn1', '4701') instead of a postal code. Every answer reports the warehouse used; `warehouse/lookup` maps a postal code to it.","on_invalid":"reject","example":"mad3","aliases":["wh"]},{"name":"lang","type":"enum","required":false,"description":"Language of product names and categories.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spanish (default)"},{"value":"en","label":"English"},{"value":"ca","label":"Catalan"},{"value":"vai","label":"Valencian"},{"value":"eu","label":"Basque (only category names are translated by Mercadona)"}],"default":"es"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"ignore","default":1,"minimum":1,"maximum":100},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-200, default 50).","on_invalid":"ignore","default":50,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Order of the rows. Leave empty for Mercadona's own order (relevance for search, shelf order for categories). Applied over the complete list Mercadona returns.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"unit_price_asc","label":"Lowest price per kg / L / unit first"},{"value":"unit_price_desc","label":"Highest price per kg / L / unit first"},{"value":"discount_desc","label":"Biggest price drop first"},{"value":"name_asc","label":"Alphabetical"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string; can contain a dot, e.g. '81661.2'), title, brand (null on category/deals rows — Mercadona omits it there), ean (search rows and detail), packaging, main_feature, category{id,name,level}, breadcrumb[], category_paths[][], url, slug, image, price (number, EUR, the shelf price; for weighed counter items the price of the minimum quantity), price_display ('5,04 €'), currency, original_price (the previous price when Mercadona shows a price drop, else null), original_price_display, discount_percent, save_amount, price_dropped, member_price / member_price_display / member_discount_percent / member_program / member_unit_price (always null — Mercadona has no loyalty price), unit_price, unit_price_unit ('L' | 'kg' | '100 g' | '100 ml' | 'ud' | 'dz' | 'dc' | 'lv' | 'm'), unit_price_measure ('litre', 'kg', 'unit', 'dozen', 'wash', 'metre' …), unit_price_display ('0,84 €/L'), sold_by ('unit' | 'weight'), price_per_quantity + price_per_quantity_unit (weighed items: 0.15 kg), order_increment, price_is_estimate (true = piece of approximate weight), size ('6 briks x 1 L'), size_value, size_unit, pack_units, pack_unit_name, drained_weight, tax_percent (VAT/IGIC included in the price), is_new_price, availability ('in_stock' | 'out_of_stock' | 'unavailable_in_warehouse' | 'unavailable'), in_stock, status, unavailable_from, unavailable_weekdays[], max_order_quantity, age_restricted, is_water, is_new_arrival, rating/review_count/rating_scale (null — not published), sponsored (always false)}, count, total_results, page, page_size, page_count, filters_available{brands[]{name,count}, categories[]{id,name,level,count}}, sort_applied, area{postal_code, warehouse, source ('postal_code' | 'warehouse' | 'default')}, lang, type, title","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"price_drops"}},{"name":"warehouse/lookup","description":"Check whether Mercadona's online shop delivers to a Spanish postal code and which warehouse (price area) serves it.","required_params":["postal_code"],"optional_params":["max_rotations"],"params":[{"name":"postal_code","type":"string","required":true,"description":"Spanish 5-digit postal code.","on_invalid":"reject","example":"28001","aliases":["zip","cp"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"postal_code, delivers (bool), warehouse (null when not served), message","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"mercari","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Mercari Japan API scraper - keyword search and full item detail for jp.mercari.com, Japan's largest consumer-to-consumer resale marketplace. Live prices in JPY, sold-listing comparables, seller reputation, condition and category filters. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/mercari/v1","spec_available":true,"actions":[{"name":"search","description":"Search Mercari Japan by keyword and by any combination of category, brand, seller, price range, condition, colour, shipping terms and shipping prefecture, paginated. Every row carries the item id and url, the title, the price as a number in JPY, whether it is still on sale or already sold, the condition grade, the category id, the seller's id and profile url, the image, and when it was listed and last touched. Filter on `status: sold_out` to get the prices items actually sold at - the comparables a resale valuation is built from. Paginate by passing back the `next_page_token` from the previous response.","required_params":[],"optional_params":["query","exclude","category_id","brand_id","seller_id","price_min","price_max","condition","status","shipping_payer","color","shipping_from","listing_type","sort","page_size","page_token","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Search keyword. Mercari's catalogue is Japanese, so Japanese terms return far more than English ones - though brand and model names in Latin script (iphone, nike, seiko) work well. Optional: a search with no keyword is valid as long as at least one of category_id, brand_id, seller_id or price_min is set, which is how you browse a category or a seller.","on_invalid":"reject","example":"ポケモンカード","aliases":["q","keyword","search"]},{"name":"exclude","type":"string","required":false,"description":"Drop results matching this term. Mercari matches WORDS, not substrings: excluding 'Pro' removes 'iPhone 13 Pro' but keeps '(PRODUCT)RED'.","on_invalid":"reject","example":"ジャンク","aliases":["exclude_keyword","not"]},{"name":"category_id","type":"string","required":false,"description":"Mercari category id, or several separated by commas. The id space is hierarchical and any LEVEL works: a leaf id (1731 = quartz wristwatches) returns just that leaf, while an ancestor id (39 = watches) returns everything beneath it. Every search row carries the leaf id of its own category under `category_id`, and `product/detail` returns the whole named path, which is how you discover ids - Mercari publishes no category directory endpoint.","on_invalid":"reject","example":"1731","aliases":["category","categories"]},{"name":"brand_id","type":"string","required":false,"description":"Mercari brand id, or several separated by commas (3272 = Apple). Ids come from `product/detail`, which returns `brand{id, name}` for any listing the seller tagged with a brand.","on_invalid":"reject","example":"3272","aliases":["brand","brands"]},{"name":"seller_id","type":"string","required":false,"description":"Return only this seller's listings. The id is on every search row under `seller.id`. Works with no keyword, which makes it a seller-inventory feed.","on_invalid":"reject","example":"395288647","aliases":["seller","user_id"]},{"name":"price_min","type":"integer","required":false,"description":"Lowest price to include, in Japanese yen (whole yen, no decimals - Mercari prices are integers).","on_invalid":"reject","example":5000,"minimum":0,"maximum":99999999},{"name":"price_max","type":"integer","required":false,"description":"Highest price to include, in Japanese yen. A range with no listings in it returns an empty result, not an error.","on_invalid":"reject","example":50000,"minimum":0,"maximum":99999999},{"name":"condition","type":"array","required":false,"description":"Item condition, Mercari's own six grades. Several may be given separated by commas.","on_invalid":"reject","allowed_values":[{"value":"new","label":"新品、未使用 — new, never used"},{"value":"like_new","label":"未使用に近い — used a few times, barely any wear"},{"value":"good","label":"目立った傷や汚れなし — minor wear, nothing noticeable"},{"value":"fair","label":"やや傷や汚れあり — visible scratches or marks"},{"value":"worn","label":"傷や汚れあり — scratches or marks anyone would see"},{"value":"poor","label":"全体的に状態が悪い — damage or dirt over the whole item"}],"example":"like_new","aliases":["item_condition"]},{"name":"status","type":"array","required":false,"description":"Listing state. `sold_out` is the useful one for pricing research: those rows carry the price the item ACTUALLY SOLD at, which is what a resale comparable is. Several may be given separated by commas; the default is Mercari's own mix of everything.","on_invalid":"reject","allowed_values":[{"value":"on_sale","label":"Still for sale"},{"value":"sold_out","label":"Sold — the price is the price it SOLD at"},{"value":"trading","label":"Sold and in the middle of the handover"}],"example":"on_sale"},{"name":"shipping_payer","type":"array","required":false,"description":"Who pays for shipping. `seller` means the listed price is the delivered price, which is the norm on Mercari. 🔴 Mercari Shops listings carry no shipping-payer value at all and are NOT removed by this filter - a `shipping_payer: buyer` page comes back part private listings that really do match and part Shops rows whose `shipping_payer` is null. Add `listing_type: c2c` for a strictly filtered set (measured 20/20 rather than 9/20).","on_invalid":"reject","allowed_values":[{"value":"seller","label":"送料込み(出品者負担) — shipping included in the price"},{"value":"buyer","label":"着払い(購入者負担) — buyer pays shipping on delivery"}],"example":"seller"},{"name":"color","type":"array","required":false,"description":"Colour family the seller tagged the item with. Several may be given separated by commas. Only listings the seller actually tagged are matched.","on_invalid":"reject","allowed_values":[{"value":"black","label":"ブラック系"},{"value":"white","label":"ホワイト系"},{"value":"grey","label":"グレイ系"},{"value":"brown","label":"ブラウン系"},{"value":"red","label":"レッド系"},{"value":"pink","label":"ピンク系"},{"value":"purple","label":"パープル系"},{"value":"blue","label":"ブルー系"},{"value":"beige","label":"ベージュ系"},{"value":"green","label":"グリーン系"},{"value":"yellow","label":"イエロー系"},{"value":"orange","label":"オレンジ系"}],"example":"black","aliases":["colour","color_id"]},{"name":"shipping_from","type":"integer","required":false,"description":"Ship only from this Japanese prefecture, by its standard JIS number (1 Hokkaido, 13 Tokyo, 23 Aichi, 27 Osaka, 40 Fukuoka, 47 Okinawa). `product/detail` returns the prefecture name alongside its number.","on_invalid":"reject","example":13,"minimum":1,"maximum":47,"aliases":["prefecture","from_area"]},{"name":"listing_type","type":"enum","required":false,"description":"Restrict to private-individual listings (`c2c`) or to Mercari Shops business sellers (`shops`). The default mixes both, as Mercari does - measured 0-3 Shops rows in 60.","on_invalid":"reject","allowed_values":[{"value":"c2c","label":"Listings by private individuals — the bulk of Mercari"},{"value":"shops","label":"Mercari Shops — registered business sellers"}],"example":"c2c","aliases":["item_type"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Only these five are published because only these five were measured to actually re-order Mercari's results - the site's remaining sort/direction combinations return the identical row order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Mercari's own relevance order (default)"},{"value":"newest","label":"Most recently listed first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"most_liked","label":"Most-favourited first"}],"default":"relevance","example":"newest","aliases":["order","order_by"]},{"name":"page_size","type":"integer","required":false,"description":"Rows per call, 1-120 (default 20). Mercari treats this as a hint and can return one or two either side of it, so read `count` rather than assuming. Above 120 its own answer stops making sense, which is why the ceiling is here.","on_invalid":"reject","default":20,"example":20,"minimum":1,"maximum":120,"aliases":["limit","per_page"]},{"name":"page_token","type":"string","required":false,"description":"Continue a previous search: pass the `next_page_token` the last response returned. Tokens are Mercari's own and are not page numbers - do not construct one. A response with `next_page_token: null` is the end of the stream.","on_invalid":"reject","example":"v1:1","aliases":["cursor","next_page_token"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a request that did not get through (1-8, default 3). Leave unchanged for typical use.","on_invalid":"ignore","default":3,"minimum":1,"maximum":8}],"returns":"items[]{item_id, title, url, price (number, JPY), price_display (null - Mercari publishes no formatted price), currency, status, condition, condition_id, listing_type, category_id, category (null on a search row - use product/detail for the named path), brand{id, name}, size, seller{id, name (null on a search row), url, rating (null), rating_count (null), rating_scale (null)}, shop{id, name}, shipping_payer, rating (null - Mercari does not rate individual listings), review_count (null), rating_scale (null), image, thumbnail, listed_at, updated_at}, count, next_page_token, total_results, total_results_is_estimate (always true), total_results_capped_at, filters{}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"ポケモンカード"}},{"name":"product/detail","description":"One Mercari Japan listing in full, by id or url: title, description, the price as a number in JPY, sale status, the condition grade with Mercari's own wording for it, the named category path, brand, colours, hashtags, the full photo gallery, the shipping terms (who pays, the method, the prefecture it ships from and the seller's stated handling days), the like and comment counts, and the SELLER - name, profile url, how many items they have listed, and their rating with the good/normal/bad breakdown behind it. Mercari Shops products are accepted too and return the smaller set of fields Mercari publishes for them, with everything else null.","required_params":["item_id"],"optional_params":["max_rotations"],"params":[{"name":"item_id","type":"string","required":true,"description":"Mercari item id, or the full listing url. Two kinds exist and both are accepted: a private listing (`m` followed by 11 digits, jp.mercari.com/item/m48713153498) and a Mercari Shops product (22 letters and digits, jp.mercari.com/shops/product/<id>). Every search row carries its own id and url.","on_invalid":"reject","example":"m48713153498","aliases":["id","url","item_url","product_id"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a request that did not get through (1-8, default 3). Leave unchanged for typical use.","on_invalid":"ignore","default":3,"minimum":1,"maximum":8}],"returns":"item{item_id, title, url, price (number, JPY), price_display (null), currency, status, condition, condition_id, condition_label, condition_description, listing_type, description, category_id, category{id, name, path[]}, brand{id, name}, colors[]{id, name}, hashtags[], seller{id, name, url, rating (number - Mercari's star score), rating_count, rating_scale (null - Mercari publishes no scale), rating_breakdown{good, normal, bad}, listings_count, is_official, quick_shipper, photo, member_since}, shop{}, shipping{payer, payer_label, method, from_area_id, from_area, handling_days_min, handling_days_max, anonymous}, rating (null - Mercari does not rate individual listings), review_count (null), rating_scale (null), like_count, comment_count, is_offerable, images[], image, thumbnail, listed_at, updated_at}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"item_id":"m36530816878"}}]},{"name":"migros","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Migros API scraper — Migros Sanalmarket (Turkey) online grocery: search products, read the full product record with shelf price, Money-card member price, per-kg unit price, campaign flags and the label sheet (ingredients, allergens, origin), browse categories and the site's discount pages, look products up by barcode. Prices in TRY. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/migros/v1","spec_available":true,"actions":[{"name":"search","description":"Search migros.com.tr by keyword. Each product comes with its shelf price and, separately, the Money-card member price when Migros runs one, the per-kg or per-litre unit price, availability, campaign badges (multi-buy, clearance, basket discount), brand and category. Sort by price, discount or best sellers, and filter by brand, category, discount type or lifestyle facet. Paid placements are removed unless you ask for them.","required_params":["query"],"optional_params":["page","sort","brand_ids","category_ids","discount","lifestyle_ids","include_sponsored","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper would type it on migros.com.tr. Turkish keywords match best ('peynir', 'zeytinyağı', 'bebek bezi'); brand names work too.","on_invalid":"reject","example":"peynir","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Migros returns about 30 products per page; read `count`, `total_results` and `page_count` rather than assuming a size.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Result order. Only orderings migros.com.tr honours without an account; `sort_applied` in the response is Migros's own confirmation.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Migros's own smart ordering (default)"},{"value":"best_selling","label":"Weekly best sellers first"},{"value":"price_asc","label":"Lowest shelf price first"},{"value":"price_desc","label":"Highest shelf price first"},{"value":"discount_percent","label":"Biggest discount percentage first"},{"value":"discount_amount","label":"Biggest discount amount first"}],"default":"relevance"},{"name":"brand_ids","type":"array","required":false,"description":"Only these brands (Migros brand ids — every result row and `filters_available.brands` carries them). Several ids are OR-ed.","on_invalid":"reject","example":[729],"aliases":["brand_id"]},{"name":"category_ids","type":"array","required":false,"description":"Only these categories (ids from `filters_available.categories` or a row's `category.id` / `breadcrumb[].id`). Several ids are OR-ed.","on_invalid":"reject","example":[70651],"aliases":["category_id"]},{"name":"discount","type":"enum","required":false,"description":"Only discounted products of this kind.","on_invalid":"reject","allowed_values":[{"value":"money","label":"Money-card member discounts only"},{"value":"multi_buy","label":"Multi-buy campaigns and gift-with-purchase only"}]},{"name":"lifestyle_ids","type":"array","required":false,"description":"Lifestyle/diet facets (e.g. gluten-free, lactose-free, organic, vegan) — ids from `filters_available.lifestyle`.","on_invalid":"reject","example":[116]},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops paid placements. Migros injects them on the first page regardless of your filters and sort, so they would break both; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (8-digit sku, string), store_product_id, title, brand{id,name,url}, category{id,name,url}, breadcrumb[], url, image, price (number — the shelf price WITHOUT a Money card), price_display, currency=TRY, original_price (struck-through price when a non-member discount runs, else null), discount_percent, member_price (the Money-card price when Migros runs a member discount, else null), member_price_display, member_discount_percent, member_program ('Money' | null), unit_price (per unit_price_unit, for the non-member price), unit_price_unit ('Kg', 'Lt', …), member_unit_price, sold_by ('piece' | 'weight'), price_per ('piece' | 'kg'), availability ('in_stock' | 'out_of_stock' | 'delisted'), in_stock, max_order_quantity (an order cap, not stock), max_order_grams, order_step_grams, min_order_grams, badges[]{type,text}, multi_buy_offer (e.g. '2.si %80'), clearance, basket_discounts[] (applied in the basket, NOT in price), best_seller{rank,category,text}, rating/review_count/rating_scale (null — Migros publishes no product ratings), sponsored}, count, total_results, page, page_count, sponsored_dropped, sort_applied (Migros's own confirmation of the order used), filters_available{categories[], brands[], discounts[], lifestyle[]}{id,name,count}, title, breadcrumb[], query","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"peynir"}},{"name":"product/detail","description":"The full Migros product record by `product_id` (or product URL): title, brand, breadcrumb, every image, the shelf price, the struck-through price and discount, the Money-card member price kept separate, unit price, availability and order limits, campaign badges, the label sheet (ingredients, allergen warning, net quantity, origin, storage and every other labelled line as `specs`), the supplier details Migros is legally required to show, and the store the prices belong to.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Migros product id (the 8-digit sku every search row returns as `product_id`, leading zeros included), or a migros.com.tr product URL.","on_invalid":"reject","example":"10101938","aliases":["id","sku","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id (8-digit sku, string), store_product_id, title, brand{id,name,url}, category{id,name,url}, breadcrumb[], url, image, price (number — the shelf price WITHOUT a Money card), price_display, currency=TRY, original_price (struck-through price when a non-member discount runs, else null), discount_percent, member_price (the Money-card price when Migros runs a member discount, else null), member_price_display, member_discount_percent, member_program ('Money' | null), unit_price (per unit_price_unit, for the non-member price), unit_price_unit ('Kg', 'Lt', …), member_unit_price, sold_by ('piece' | 'weight'), price_per ('piece' | 'kg'), availability ('in_stock' | 'out_of_stock' | 'delisted'), in_stock, max_order_quantity (an order cap, not stock), max_order_grams, order_step_grams, min_order_grams, badges[]{type,text}, multi_buy_offer (e.g. '2.si %80'), clearance, basket_discounts[] (applied in the basket, NOT in price), best_seller{rank,category,text}, rating/review_count/rating_scale (null — Migros publishes no product ratings), sponsored, images[], barcode (null — Migros does not publish it on the product; use product/barcode to look a product up by EAN), discount_descriptions[], description (label sheet as plain text), specs{label: value}, ingredients, allergen_warning, net_quantity, origin, nutrition (null unless Migros labels nutrition lines), supplier[]{name,value}, variants[], store{store_id, warehouse_id, portfolio}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"10101938"}},{"name":"product/barcode","description":"Look a product up by the EAN/GTIN barcode on its pack and get the same full record as product/detail — the quickest way to match your own catalogue to Migros prices.","required_params":["barcode"],"optional_params":["max_rotations"],"params":[{"name":"barcode","type":"string","required":true,"description":"The product's EAN/GTIN barcode as printed on the pack (8-14 digits).","on_invalid":"reject","example":"5449000000439","aliases":["ean","gtin"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{… same as product/detail, with barcode = the EAN you asked for}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"deals","description":"Migros's own discount pages: all discounted products, Money-card member discounts, multi-buy campaigns, Migroskop and 'Gördüğünüze İnanın'. Same rows, sorting and filters as search.","required_params":[],"optional_params":["type","page","sort","brand_ids","category_ids","include_sponsored","max_rotations"],"params":[{"name":"type","type":"enum","required":false,"description":"Which of migros.com.tr's own campaign pages to read.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All discounted products"},{"value":"money","label":"Money-card member discounts"},{"value":"multi_buy","label":"Multi-buy campaigns and gift-with-purchase"},{"value":"migroskop","label":"Migroskop campaign products"},{"value":"gordugunuze_inanin","label":"'Gördüğünüze İnanın' price campaign (often empty between campaigns)"}],"default":"all"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Migros returns about 30 products per page; read `count`, `total_results` and `page_count` rather than assuming a size.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Result order. Only orderings migros.com.tr honours without an account; `sort_applied` in the response is Migros's own confirmation.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Migros's own smart ordering (default)"},{"value":"best_selling","label":"Weekly best sellers first"},{"value":"price_asc","label":"Lowest shelf price first"},{"value":"price_desc","label":"Highest shelf price first"},{"value":"discount_percent","label":"Biggest discount percentage first"},{"value":"discount_amount","label":"Biggest discount amount first"}],"default":"relevance"},{"name":"brand_ids","type":"array","required":false,"description":"Only these brands (Migros brand ids — every result row and `filters_available.brands` carries them). Several ids are OR-ed.","on_invalid":"reject","example":[729],"aliases":["brand_id"]},{"name":"category_ids","type":"array","required":false,"description":"Only these categories (ids from `filters_available.categories` or a row's `category.id` / `breadcrumb[].id`). Several ids are OR-ed.","on_invalid":"reject","example":[70651],"aliases":["category_id"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops paid placements. Migros injects them on the first page regardless of your filters and sort, so they would break both; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (8-digit sku, string), store_product_id, title, brand{id,name,url}, category{id,name,url}, breadcrumb[], url, image, price (number — the shelf price WITHOUT a Money card), price_display, currency=TRY, original_price (struck-through price when a non-member discount runs, else null), discount_percent, member_price (the Money-card price when Migros runs a member discount, else null), member_price_display, member_discount_percent, member_program ('Money' | null), unit_price (per unit_price_unit, for the non-member price), unit_price_unit ('Kg', 'Lt', …), member_unit_price, sold_by ('piece' | 'weight'), price_per ('piece' | 'kg'), availability ('in_stock' | 'out_of_stock' | 'delisted'), in_stock, max_order_quantity (an order cap, not stock), max_order_grams, order_step_grams, min_order_grams, badges[]{type,text}, multi_buy_offer (e.g. '2.si %80'), clearance, basket_discounts[] (applied in the basket, NOT in price), best_seller{rank,category,text}, rating/review_count/rating_scale (null — Migros publishes no product ratings), sponsored}, count, total_results, page, page_count, sponsored_dropped, sort_applied (Migros's own confirmation of the order used), filters_available{categories[], brands[], discounts[], lifestyle[]}{id,name,count}, title, breadcrumb[], type","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"money"}},{"name":"category","description":"Every product in one Migros category, paged, with the same rows, sorting and filters as search. Category ids come from `categories`, from search filters or from any row's breadcrumb.","required_params":["category"],"optional_params":["page","sort","brand_ids","discount","lifestyle_ids","include_sponsored","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A category: its Migros id (from `categories`, a row's `breadcrumb[].id` or `filters_available.categories`), its slug ('peynir-c-6d') or its migros.com.tr URL.","on_invalid":"reject","example":"109","aliases":["category_id","slug","url"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Migros returns about 30 products per page; read `count`, `total_results` and `page_count` rather than assuming a size.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Result order. Only orderings migros.com.tr honours without an account; `sort_applied` in the response is Migros's own confirmation.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Migros's own smart ordering (default)"},{"value":"best_selling","label":"Weekly best sellers first"},{"value":"price_asc","label":"Lowest shelf price first"},{"value":"price_desc","label":"Highest shelf price first"},{"value":"discount_percent","label":"Biggest discount percentage first"},{"value":"discount_amount","label":"Biggest discount amount first"}],"default":"relevance"},{"name":"brand_ids","type":"array","required":false,"description":"Only these brands (Migros brand ids — every result row and `filters_available.brands` carries them). Several ids are OR-ed.","on_invalid":"reject","example":[729],"aliases":["brand_id"]},{"name":"discount","type":"enum","required":false,"description":"Only discounted products of this kind.","on_invalid":"reject","allowed_values":[{"value":"money","label":"Money-card member discounts only"},{"value":"multi_buy","label":"Multi-buy campaigns and gift-with-purchase only"}]},{"name":"lifestyle_ids","type":"array","required":false,"description":"Lifestyle/diet facets (e.g. gluten-free, lactose-free, organic, vegan) — ids from `filters_available.lifestyle`.","on_invalid":"reject","example":[116]},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops paid placements. Migros injects them on the first page regardless of your filters and sort, so they would break both; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (8-digit sku, string), store_product_id, title, brand{id,name,url}, category{id,name,url}, breadcrumb[], url, image, price (number — the shelf price WITHOUT a Money card), price_display, currency=TRY, original_price (struck-through price when a non-member discount runs, else null), discount_percent, member_price (the Money-card price when Migros runs a member discount, else null), member_price_display, member_discount_percent, member_program ('Money' | null), unit_price (per unit_price_unit, for the non-member price), unit_price_unit ('Kg', 'Lt', …), member_unit_price, sold_by ('piece' | 'weight'), price_per ('piece' | 'kg'), availability ('in_stock' | 'out_of_stock' | 'delisted'), in_stock, max_order_quantity (an order cap, not stock), max_order_grams, order_step_grams, min_order_grams, badges[]{type,text}, multi_buy_offer (e.g. '2.si %80'), clearance, basket_discounts[] (applied in the basket, NOT in price), best_seller{rank,category,text}, rating/review_count/rating_scale (null — Migros publishes no product ratings), sponsored}, count, total_results, page, page_count, sponsored_dropped, sort_applied (Migros's own confirmation of the order used), filters_available{categories[], brands[], discounts[], lifestyle[]}{id,name,count}, title, breadcrumb[], category_slug","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"Migros Sanalmarket's top-level shelf: every main category with its id and URL, plus the site's campaign pages (mapped to the `deals` type that reads them).","required_params":[],"optional_params":["max_rotations"],"params":[{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"categories[]{id, name, slug, url, kind ('category' | 'deals' | 'collection' | 'other'), deals_type}, count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"Autocomplete as a Migros shopper types: suggested search phrases, matching brands and categories, and the top matching products with prices.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper would type it on migros.com.tr. Turkish keywords match best ('peynir', 'zeytinyağı', 'bebek bezi'); brand names work too.","on_invalid":"reject","example":"peynir","aliases":["q","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"suggestions[]{type ('keyword' | 'brand' | 'category'), text, id}, products[]{product_id (8-digit sku, string), store_product_id, title, brand{id,name,url}, category{id,name,url}, breadcrumb[], url, image, price (number — the shelf price WITHOUT a Money card), price_display, currency=TRY, original_price (struck-through price when a non-member discount runs, else null), discount_percent, member_price (the Money-card price when Migros runs a member discount, else null), member_price_display, member_discount_percent, member_program ('Money' | null), unit_price (per unit_price_unit, for the non-member price), unit_price_unit ('Kg', 'Lt', …), member_unit_price, sold_by ('piece' | 'weight'), price_per ('piece' | 'kg'), availability ('in_stock' | 'out_of_stock' | 'delisted'), in_stock, max_order_quantity (an order cap, not stock), max_order_grams, order_step_grams, min_order_grams, badges[]{type,text}, multi_buy_offer (e.g. '2.si %80'), clearance, basket_discounts[] (applied in the basket, NOT in price), best_seller{rank,category,text}, rating/review_count/rating_scale (null — Migros publishes no product ratings), sponsored}, total_products, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"peynir"}}]},{"name":"milanuncios","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"milanuncios API scraper — Spain's largest classifieds site: marketplace search with price, condition, shipping and private/professional filters, cars and motorbikes (make, model, year, km, fuel, gearbox, power), real estate for sale and rent (bedrooms, bathrooms, m²), and the full ad record with shipping options and seller rating. No account, no browser; private sellers' names withheld.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/milanuncios/v1","spec_available":true,"actions":[{"name":"search","description":"Search milanuncios, Spain's largest classifieds site, by keyword and/or category: price (unpublished prices labelled, price drops with the earlier price), region, province and city, private or professional seller, condition, shipping, highlighted (destacado) flag, reserved flag, first publication and last renewal dates, attributes, images and description. Filter by category, price, location, seller type, condition, shipping available, price dropped, offers or wanted ads.","required_params":[],"optional_params":["query","category","transaction","condition","shippable","price_dropped","price_min","price_max","seller_type","region","province","city","page","limit","include_sponsored","include_pii","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword (Spanish), matched in titles and descriptions.","on_invalid":"reject","example":"bicicleta"},{"name":"category","type":"string","required":false,"description":"milanuncios category id at any level, e.g. 31 = Deportes y náutica, 679 = Bicicletas, 83 = Telefonía, 30 = Casa y jardín, 1 = Motor, 32 = Inmobiliaria; category_path on a row gives the ids.","on_invalid":"reject","example":"679"},{"name":"transaction","type":"enum","required":false,"description":"offer (default) or wanted ads.","on_invalid":"reject","allowed_values":[{"value":"offer","label":"Ads offering something"},{"value":"wanted","label":"Wanted ads (se busca / compro)"}],"default":"offer"},{"name":"condition","type":"enum","required":false,"description":"new, like_new, good, acceptable or poor.","on_invalid":"reject","allowed_values":[{"value":"new","label":"new"},{"value":"like_new","label":"like_new"},{"value":"good","label":"good"},{"value":"acceptable","label":"acceptable"},{"value":"poor","label":"poor"}]},{"name":"shippable","type":"boolean","required":false,"description":"Only ads the seller ships (envío).","on_invalid":"reject"},{"name":"price_dropped","type":"boolean","required":false,"description":"Only ads whose price was lowered.","on_invalid":"reject"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"seller_type","type":"enum","required":false,"description":"Only private (particular) or only professional sellers.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Particular"},{"value":"professional","label":"Profesional"}]},{"name":"region","type":"string","required":false,"description":"Region (comunidad autónoma) by name, accents and case ignored (andalucía, cataluña, comunidad valenciana, galicia…), or its id from location.region_id (53 = Galicia).","on_invalid":"reject","example":"galicia"},{"name":"province","type":"string","required":false,"description":"Province by name, accents and case ignored — any of Spain's 52 incl. Ceuta and Melilla (madrid, barcelona, valencia, a coruña, las palmas…) — or its id from location.province_id (28 = Madrid).","on_invalid":"reject","example":"madrid"},{"name":"city","type":"string","required":false,"description":"City id from location.city_id on a result row (13 = Barcelona, 44 = Madrid). For a name, use province.","on_invalid":"reject","example":"13"},{"name":"page","type":"integer","required":false,"description":"Result page. milanuncios serves results up to offset 8,200.","on_invalid":"reject","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page, up to 100.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return the separate paid top-ad list, apart, under sponsored[].","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names (and, on listing, avatar and postcode).","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, title, url, category_id, category, category_path[]{id, name}, transaction, price, currency, price_not_published, price_includes_taxes, financed_price, previous_price, price_drop_pct, published_at, renewed_at, updated_at, is_renewed, location{region_id, region, province_id, province, city_id, city, latitude, longitude, extra_provinces[]}, seller{type, seller_id, name (professional)}, is_highlighted, is_reserved, condition, condition_label, shipping{shippable, type, package_weight}, contact_methods, syndicated_from, attributes[]{key, label, value, value_label}, image_count, images[], thumbnail, description, vehicle{…} | property{…} | features[]}, count, total, total_is_lower_bound, page, limit, has_more, sort_applied, highlighted_count, duplicates_dropped, dropped_outside_price_range, sponsored_dropped, sponsored[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"bicicleta"}},{"name":"cars/search","description":"Search milanuncios motor ads — cars, off-roaders, classic cars, motorcycles, vans, trucks, caravans, campervans and quads: cash price (taxes included or not), financed price, make, year, mileage, fuel, gearbox, horsepower, doors, colour, environmental label, warranty, dealer or private seller, province and city, images. Filter by vehicle type, make, model, year, mileage, fuel, gearbox, power, price, seller type and location.","required_params":[],"optional_params":["vehicle_type","query","make","model","year_min","year_max","mileage_min","mileage_max","fuel","gearbox","power_min","power_max","price_min","price_max","seller_type","region","province","city","page","limit","include_sponsored","include_pii","max_rotations"],"params":[{"name":"vehicle_type","type":"enum","required":false,"description":"car (default), offroad, classic_car, motorcycle, van, truck, caravan, campervan or quad.","on_invalid":"reject","allowed_values":[{"value":"car","label":"car"},{"value":"offroad","label":"offroad"},{"value":"classic_car","label":"classic_car"},{"value":"motorcycle","label":"motorcycle"},{"value":"van","label":"van"},{"value":"truck","label":"truck"},{"value":"caravan","label":"caravan"},{"value":"campervan","label":"campervan"},{"value":"quad","label":"quad"}],"default":"car"},{"name":"query","type":"string","required":false,"description":"Free-text keyword (Spanish), matched in titles and descriptions.","on_invalid":"reject","example":"bicicleta"},{"name":"make","type":"string","required":false,"description":"Make, e.g. seat, volkswagen, mercedes-benz (cars, off-roaders, classic cars, vans).","on_invalid":"reject","example":"seat"},{"name":"model","type":"string","required":false,"description":"Model words, with make, e.g. ibiza, golf, serie 3, clase c (spaces, not hyphens).","on_invalid":"reject","example":"ibiza"},{"name":"year_min","type":"integer","required":false,"description":"Earliest year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"mileage_min","type":"number","required":false,"description":"Lowest mileage, km.","on_invalid":"reject","minimum":0},{"name":"mileage_max","type":"number","required":false,"description":"Highest mileage, km.","on_invalid":"reject","minimum":0},{"name":"fuel","type":"enum","required":false,"description":"diesel, gasoline, electric, hybrid, plug_in_hybrid or glp (LPG).","on_invalid":"reject","allowed_values":[{"value":"diesel","label":"diesel"},{"value":"gasoline","label":"gasoline"},{"value":"electric","label":"electric"},{"value":"hybrid","label":"hybrid"},{"value":"plug_in_hybrid","label":"plug_in_hybrid"},{"value":"glp","label":"glp"}]},{"name":"gearbox","type":"enum","required":false,"description":"manual or automatic.","on_invalid":"reject","allowed_values":[{"value":"manual","label":"manual"},{"value":"automatic","label":"automatic"}]},{"name":"power_min","type":"number","required":false,"description":"Lowest power, hp.","on_invalid":"reject","minimum":0},{"name":"power_max","type":"number","required":false,"description":"Highest power, hp.","on_invalid":"reject","minimum":0},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"seller_type","type":"enum","required":false,"description":"Only private (particular) or only professional sellers.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Particular"},{"value":"professional","label":"Profesional"}]},{"name":"region","type":"string","required":false,"description":"Region (comunidad autónoma) by name, accents and case ignored (andalucía, cataluña, comunidad valenciana, galicia…), or its id from location.region_id (53 = Galicia).","on_invalid":"reject","example":"galicia"},{"name":"province","type":"string","required":false,"description":"Province by name, accents and case ignored — any of Spain's 52 incl. Ceuta and Melilla (madrid, barcelona, valencia, a coruña, las palmas…) — or its id from location.province_id (28 = Madrid).","on_invalid":"reject","example":"madrid"},{"name":"city","type":"string","required":false,"description":"City id from location.city_id on a result row (13 = Barcelona, 44 = Madrid). For a name, use province.","on_invalid":"reject","example":"13"},{"name":"page","type":"integer","required":false,"description":"Result page. milanuncios serves results up to offset 8,200.","on_invalid":"reject","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page, up to 100.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return the separate paid top-ad list, apart, under sponsored[].","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names (and, on listing, avatar and postcode).","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, title, url, category_id, category, category_path[]{id, name}, transaction, price, currency, price_not_published, price_includes_taxes, financed_price, previous_price, price_drop_pct, published_at, renewed_at, updated_at, is_renewed, location{region_id, region, province_id, province, city_id, city, latitude, longitude, extra_provinces[]}, seller{type, seller_id, name (professional)}, is_highlighted, is_reserved, condition, condition_label, shipping{shippable, type, package_weight}, contact_methods, syndicated_from, attributes[]{key, label, value, value_label}, image_count, images[], thumbnail, description, vehicle{make, year, mileage_km, fuel, gearbox, power_hp, doors, seats, colour, environmental_label, warranty}}, count, total, total_is_lower_bound, page, limit, has_more, sort_applied, highlighted_count, duplicates_dropped, dropped_outside_price_range, sponsored_dropped, sponsored[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"seat","model":"ibiza"}},{"name":"real_estate/search","description":"Search milanuncios real estate for sale, rent, flat-share or holiday rent — flats, apartments, houses, chalets, penthouses, studios, lofts, commercial premises, offices, warehouses, rural estates, garages, storage rooms and buildings: price or monthly rent, bedrooms, bathrooms, m², price per m², floor, energy certificate, heating, features (lift, terrace, pool…), agency or private owner, region, province and city, images. Filter by transaction, property type, price, bedrooms, bathrooms, surface, seller type and location.","required_params":["transaction"],"optional_params":["property_type","query","bedrooms_min","bedrooms_max","bathrooms_min","surface_min","surface_max","price_min","price_max","seller_type","region","province","city","page","limit","include_sponsored","include_pii","max_rotations"],"params":[{"name":"transaction","type":"enum","required":true,"description":"sale, rent, share (flat-share; flats only) or holiday_rent.","on_invalid":"reject","allowed_values":[{"value":"sale","label":"sale"},{"value":"rent","label":"rent"},{"value":"share","label":"share"},{"value":"holiday_rent","label":"holiday_rent"}],"example":"rent"},{"name":"property_type","type":"enum","required":false,"description":"flat (default), apartment, house, chalet, penthouse, studio, loft, commercial, office, warehouse, rural_estate, garage, storage_room, building.","on_invalid":"reject","allowed_values":[{"value":"flat","label":"flat"},{"value":"apartment","label":"apartment"},{"value":"chalet","label":"chalet"},{"value":"penthouse","label":"penthouse"},{"value":"studio","label":"studio"},{"value":"loft","label":"loft"},{"value":"house","label":"house"},{"value":"commercial","label":"commercial"},{"value":"office","label":"office"},{"value":"warehouse","label":"warehouse"},{"value":"rural_estate","label":"rural_estate"},{"value":"garage","label":"garage"},{"value":"storage_room","label":"storage_room"},{"value":"building","label":"building"}],"default":"flat"},{"name":"query","type":"string","required":false,"description":"Free-text keyword (Spanish), matched in titles and descriptions.","on_invalid":"reject","example":"bicicleta"},{"name":"bedrooms_min","type":"integer","required":false,"description":"Fewest bedrooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"bedrooms_max","type":"integer","required":false,"description":"Most bedrooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"bathrooms_min","type":"integer","required":false,"description":"Fewest bathrooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"surface_min","type":"number","required":false,"description":"Smallest surface, m².","on_invalid":"reject","minimum":0},{"name":"surface_max","type":"number","required":false,"description":"Largest surface, m².","on_invalid":"reject","minimum":0},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"seller_type","type":"enum","required":false,"description":"Only private (particular) or only professional sellers.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Particular"},{"value":"professional","label":"Profesional"}]},{"name":"region","type":"string","required":false,"description":"Region (comunidad autónoma) by name, accents and case ignored (andalucía, cataluña, comunidad valenciana, galicia…), or its id from location.region_id (53 = Galicia).","on_invalid":"reject","example":"galicia"},{"name":"province","type":"string","required":false,"description":"Province by name, accents and case ignored — any of Spain's 52 incl. Ceuta and Melilla (madrid, barcelona, valencia, a coruña, las palmas…) — or its id from location.province_id (28 = Madrid).","on_invalid":"reject","example":"madrid"},{"name":"city","type":"string","required":false,"description":"City id from location.city_id on a result row (13 = Barcelona, 44 = Madrid). For a name, use province.","on_invalid":"reject","example":"13"},{"name":"page","type":"integer","required":false,"description":"Result page. milanuncios serves results up to offset 8,200.","on_invalid":"reject","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page, up to 100.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return the separate paid top-ad list, apart, under sponsored[].","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names (and, on listing, avatar and postcode).","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, title, url, category_id, category, category_path[]{id, name}, transaction, price, currency, price_not_published, price_includes_taxes, financed_price, previous_price, price_drop_pct, published_at, renewed_at, updated_at, is_renewed, location{region_id, region, province_id, province, city_id, city, latitude, longitude, extra_provinces[]}, seller{type, seller_id, name (professional)}, is_highlighted, is_reserved, condition, condition_label, shipping{shippable, type, package_weight}, contact_methods, syndicated_from, attributes[]{key, label, value, value_label}, image_count, images[], thumbnail, description, property{transaction, bedrooms, bathrooms, surface_m2, price_per_m2, floor, energy_certificate, heating, hot_water, features[]}}, count, total, total_is_lower_bound, page, limit, has_more, sort_applied, highlighted_count, duplicates_dropped, dropped_outside_price_range, sponsored_dropped, sponsored[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"transaction":"rent","province":"8"}},{"name":"listing","description":"The full milanuncios ad by id or URL, in any category: title, price (unpublished prices labelled; cars: taxes included or not and financed price), description, all images, category path, condition, reserved flag, first publication and last renewal, attributes, vehicle or property details, shipping (envío) with carriers and their prices, contact methods, and the seller — type, member since, rating and review count, city; a professional's business name, a private seller's name withheld.","required_params":["ad_id"],"optional_params":["include_pii","max_rotations"],"params":[{"name":"ad_id","type":"string","required":true,"description":"The milanuncios ad id (the digits before .htm in an ad URL) or the full URL.","on_invalid":"reject","example":"513743047"},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names (and, on listing, avatar and postcode).","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{ad_id, title, url, category_id, category, category_path[], transaction, price, currency, price_not_published, price_includes_taxes, financed_price, published_at, renewed_at, is_renewed, location{region, province, city, zone, street}, seller{type, account_type, seller_id, name, member_since, email_verified, city, province, rating, rating_scale, rating_count}, is_highlighted, is_reserved, condition, shipping{shippable, type, package_weight, carriers[]{carrier, service, price, price_before_discount, currency}}, contact_methods, syndicated_from, attributes[]{key, value}, image_count, images[], description, vehicle{} | property{} | features[]}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"mobile-de","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"mobile.de API scraper — Germany's largest vehicle marketplace: search cars, motorbikes, vans and trucks with make/model, price, year, mileage, power, fuel, gearbox, body, seller type, damage, VAT, price rating and radius filters, and read the full listing: price and net price, mobile.de price rating, every attribute, features, images and dealer. No account, no browser.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/mobile-de/v1","spec_available":true,"actions":[{"name":"search","description":"Search mobile.de listings. Filters narrow the result exactly as on mobile.de. Sponsored rows are kept in mobile.de's order and flagged (placement: top_ad stays on top under any sort, eyecatcher is a paid highlight at its organic position, page1_ad is mobile.de's sponsored block on page 1). price is the gross consumer price; financing is a monthly example and never the price; a 1 EUR negotiable price is flagged price_is_symbolic. total_results is mobile.de's own count.","required_params":[],"optional_params":["vehicle_type","query","make","model","price_min","price_max","year_min","year_max","mileage_min","mileage_max","power_kw_min","power_kw_max","fuel","transmission","body_type","seller_type","condition","damaged","vat_deductible","price_rating","latitude","longitude","radius_km","sort","page","page_size","language","include_pii"],"params":[{"name":"vehicle_type","type":"enum","required":false,"description":"Which mobile.de vehicle class to search, one per call. car by default, so leaving it out searches cars only. The classes match the site's own categories.","on_invalid":"reject","allowed_values":[{"value":"car","label":"Cars"},{"value":"motorbike","label":"Motorbikes"},{"value":"van","label":"Vans and trucks up to 7.5 t"},{"value":"truck","label":"Trucks over 7.5 t"},{"value":"tractor_unit","label":"Tractor units (Sattelzugmaschinen)"},{"value":"trailer","label":"Trailers (Anhänger)"},{"value":"semi_trailer","label":"Semi-trailers (Auflieger)"},{"value":"bus","label":"Buses"},{"value":"agricultural","label":"Agricultural vehicles"},{"value":"construction","label":"Construction machinery"},{"value":"forklift","label":"Forklifts (Stapler)"},{"value":"motorhome","label":"Motorhomes and caravans"},{"value":"ebike","label":"E-bikes"}],"default":"car"},{"name":"query","type":"string","required":false,"description":"Free text, as typed into mobile.de's search box (model names, trims).","on_invalid":"reject","example":"golf"},{"name":"make","type":"string","required":false,"description":"Make name (BMW, Volkswagen, Mercedes-Benz) or mobile.de make id (3500 = BMW). The makes action lists both.","on_invalid":"reject","example":"BMW"},{"name":"model","type":"string","required":false,"description":"Model name or id for the make (cars only; the models action lists them, including whole series such as '3er Reihe'). Requires make.","on_invalid":"reject","example":"3er Reihe"},{"name":"price_min","type":"number","required":false,"description":"Lowest gross price, EUR.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest gross price, EUR.","on_invalid":"reject","example":20000,"minimum":0},{"name":"year_min","type":"integer","required":false,"description":"Earliest year of first registration.","on_invalid":"reject","example":2018,"minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest year of first registration.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"mileage_min","type":"integer","required":false,"description":"Lowest mileage, km.","on_invalid":"reject","minimum":0},{"name":"mileage_max","type":"integer","required":false,"description":"Highest mileage, km.","on_invalid":"reject","example":100000,"minimum":0},{"name":"power_kw_min","type":"integer","required":false,"description":"Lowest power, kW.","on_invalid":"reject","minimum":0},{"name":"power_kw_max","type":"integer","required":false,"description":"Highest power, kW.","on_invalid":"reject","minimum":0},{"name":"fuel","type":"enum","required":false,"description":"Fuel type.","on_invalid":"reject","allowed_values":[{"value":"petrol","label":"petrol"},{"value":"diesel","label":"diesel"},{"value":"electric","label":"electric"},{"value":"hybrid_petrol","label":"hybrid_petrol"},{"value":"hybrid_diesel","label":"hybrid_diesel"},{"value":"lpg","label":"lpg"},{"value":"cng","label":"cng"},{"value":"hydrogen","label":"hydrogen"},{"value":"ethanol","label":"ethanol"},{"value":"other","label":"other"}]},{"name":"transmission","type":"enum","required":false,"description":"Gearbox.","on_invalid":"reject","allowed_values":[{"value":"automatic","label":"automatic"},{"value":"semi_automatic","label":"semi_automatic"},{"value":"manual","label":"manual"}]},{"name":"body_type","type":"enum","required":false,"description":"Body type. Cars: suv, cabrio, estate, van, sports_car, small_car, saloon, other. Motorbikes: see allowed values. Not available for vans and trucks.","on_invalid":"reject","allowed_values":[{"value":"suv","label":"suv"},{"value":"cabrio","label":"cabrio"},{"value":"estate","label":"estate"},{"value":"van","label":"van"},{"value":"sports_car","label":"sports_car"},{"value":"small_car","label":"small_car"},{"value":"saloon","label":"saloon"},{"value":"other","label":"other"},{"value":"chopper_cruiser","label":"chopper_cruiser"},{"value":"dirt_bike","label":"dirt_bike"},{"value":"enduro","label":"enduro"},{"value":"sidecar","label":"sidecar"},{"value":"lightweight","label":"lightweight"},{"value":"moped","label":"moped"},{"value":"motorcycle","label":"motorcycle"},{"value":"naked_bike","label":"naked_bike"},{"value":"pocket_bike","label":"pocket_bike"},{"value":"quad","label":"quad"},{"value":"rally_cross","label":"rally_cross"},{"value":"racing","label":"racing"},{"value":"roadster","label":"roadster"},{"value":"scooter","label":"scooter"},{"value":"sports_touring","label":"sports_touring"},{"value":"super_moto","label":"super_moto"},{"value":"tourer","label":"tourer"},{"value":"trike","label":"trike"},{"value":"sport","label":"sport"}]},{"name":"seller_type","type":"enum","required":false,"description":"Who sells.","on_invalid":"reject","allowed_values":[{"value":"dealer","label":"Dealer"},{"value":"private","label":"Private seller"},{"value":"company","label":"Company vehicles"}]},{"name":"condition","type":"enum","required":false,"description":"New or used vehicles.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"used","label":"Used"}]},{"name":"damaged","type":"enum","required":false,"description":"Damaged vehicles are included when omitted, as on mobile.de.","on_invalid":"reject","allowed_values":[{"value":"exclude","label":"Hide damaged vehicles"},{"value":"only","label":"Only damaged vehicles"}]},{"name":"vat_deductible","type":"boolean","required":false,"description":"Only vehicles sold with deductible VAT (a net price is published).","on_invalid":"reject"},{"name":"price_rating","type":"enum","required":false,"description":"Only listings mobile.de rates at this price level.","on_invalid":"reject","allowed_values":[{"value":"very_good","label":"very_good"},{"value":"good","label":"good"},{"value":"reasonable","label":"reasonable"},{"value":"increased","label":"increased"},{"value":"high","label":"high"}]},{"name":"latitude","type":"number","required":false,"description":"Search centre latitude (with longitude).","on_invalid":"reject","example":52.52,"minimum":-90,"maximum":90},{"name":"longitude","type":"number","required":false,"description":"Search centre longitude (with latitude).","on_invalid":"reject","example":13.4,"minimum":-180,"maximum":180},{"name":"radius_km","type":"integer","required":false,"description":"Radius around latitude/longitude. 50 when a centre is given without it.","on_invalid":"reject","allowed_values":[{"value":10,"label":"10 km"},{"value":20,"label":"20 km"},{"value":50,"label":"50 km"},{"value":100,"label":"100 km"},{"value":200,"label":"200 km"},{"value":500,"label":"500 km"}]},{"name":"sort","type":"enum","required":false,"description":"Order. Omitted: mobile.de's relevance order. Sponsored top ads stay first under every order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"relevance"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"mileage_asc","label":"mileage_asc"},{"value":"mileage_desc","label":"mileage_desc"},{"value":"year_desc","label":"year_desc"},{"value":"year_asc","label":"year_asc"},{"value":"oldest_listing","label":"oldest_listing"}]},{"name":"page","type":"integer","required":false,"description":"Result page.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":50},{"name":"page_size","type":"integer","required":false,"description":"Organic listings per page (10, 20, 50 or 100). A sponsored top ad can come on top of that count.","on_invalid":"reject","allowed_values":[{"value":10,"label":"10"},{"value":20,"label":"20"},{"value":50,"label":"50"},{"value":100,"label":"100"}],"default":20},{"name":"language","type":"enum","required":false,"description":"Language of every text label (fuel, transmission, seller type, attribute labels, price display). Numbers and ids are identical in every language.","on_invalid":"reject","allowed_values":[{"value":"de","label":"de"},{"value":"en","label":"en"},{"value":"fr","label":"fr"},{"value":"it","label":"it"},{"value":"es","label":"es"},{"value":"pl","label":"pl"},{"value":"nl","label":"nl"},{"value":"ro","label":"ro"},{"value":"ru","label":"ru"},{"value":"tr","label":"tr"},{"value":"cs","label":"cs"}],"default":"de"},{"name":"include_pii","type":"boolean","required":false,"description":"Return phone numbers, messenger links and private sellers' exact location. Off by default.","on_invalid":"reject","default":false}],"returns":"{vehicle_type, total_results, page, page_size, has_more, sort_applied, count, ad_slots_dropped, duplicates_dropped, filters_applied{}, listings[]{listing_id, url, title, short_title, sub_title, make, make_id, model, model_id, vehicle_type, category, price (gross EUR), currency, price_display, price_net, vat_rate, vat_deductible, price_before_reduction, price_negotiable, price_is_symbolic, price_rating{rating, label, thresholds[], no_rating_reason}, financing{monthly_installment, down_payment, term_months, ...} (never the price), first_registration (MM/YYYY), mileage_km, power_kw, power_hp, fuel, transmission, cubic_capacity_ccm, exterior_color, doors, seats, emission_class, previous_owners, condition_new, highlights[], deal, delivery, location{postcode, city, country, text}, seller{type dealer|private|company, seller_id, name (dealers), rating, rating_count, rating_scale, phone (include_pii)}, image, image_count, kba{hsn,tsn}, placement (organic|top_ad|eyecatcher|page1_ad), is_sponsored}}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"3500"}},{"name":"listing","description":"The full mobile.de listing: gross price, net price and VAT rate when the dealer can issue a VAT invoice, the earlier price of a reduced listing, price type (fixed/negotiable), mobile.de's price rating with its band, condition and damage, first registration, mileage, power in kW and hp, fuel, gearbox, colours, every published attribute (label + value), the features list, highlights, description, all images, dates, and the seller: a dealer's name, address, rating, opening hours and homepage; a private seller's town only. A removed listing returns NOT_FOUND.","required_params":["listing_id"],"optional_params":["language","include_pii"],"params":[{"name":"listing_id","type":"string","required":true,"description":"The mobile.de ad id (every search row returns it) or a mobile.de listing url. Listings expire; take a fresh id from search.","on_invalid":"reject","example":"461079864","aliases":["url"]},{"name":"language","type":"enum","required":false,"description":"Language of every text label (fuel, transmission, seller type, attribute labels, price display). Numbers and ids are identical in every language.","on_invalid":"reject","allowed_values":[{"value":"de","label":"de"},{"value":"en","label":"en"},{"value":"fr","label":"fr"},{"value":"it","label":"it"},{"value":"es","label":"es"},{"value":"pl","label":"pl"},{"value":"nl","label":"nl"},{"value":"ro","label":"ro"},{"value":"ru","label":"ru"},{"value":"tr","label":"tr"},{"value":"cs","label":"cs"}],"default":"de"},{"name":"include_pii","type":"boolean","required":false,"description":"Return phone numbers, messenger links and private sellers' exact location. Off by default.","on_invalid":"reject","default":false}],"returns":"{listing{listing_id, url, title, make, model, vehicle_type, category, price, currency, price_display, price_type, price_negotiable, price_is_symbolic, price_net, vat_rate, vat_deductible, price_before_reduction, price_rating, deal, condition, condition_new, is_damaged, ready_to_drive, first_registration, mileage_km, power_kw, power_hp, fuel, transmission, cubic_capacity_ccm, exterior_color, manufacturer_color, interior, doors, seats, previous_owners, emission_class, general_inspection, dealer_vehicle_number, specs{}, attributes[{tag,label,value}], features[], highlights[], description, images[], image_count, kba, created_at, modified_at, renewed_at, seller{type, seller_id, name, street, postcode, city, country, latitude, longitude, rating, rating_count, rating_scale, recommendation_rate_pct, member_since, languages, homepage_url, opening_hours[], logo, phones (include_pii), phones_withheld}}}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"makes","description":"Every make mobile.de offers for a vehicle class, with the make id the search action accepts.","required_params":[],"optional_params":["vehicle_type"],"params":[{"name":"vehicle_type","type":"enum","required":false,"description":"Which mobile.de vehicle class to search, one per call. car by default, so leaving it out searches cars only. The classes match the site's own categories.","on_invalid":"reject","allowed_values":[{"value":"car","label":"Cars"},{"value":"motorbike","label":"Motorbikes"},{"value":"van","label":"Vans and trucks up to 7.5 t"},{"value":"truck","label":"Trucks over 7.5 t"},{"value":"tractor_unit","label":"Tractor units (Sattelzugmaschinen)"},{"value":"trailer","label":"Trailers (Anhänger)"},{"value":"semi_trailer","label":"Semi-trailers (Auflieger)"},{"value":"bus","label":"Buses"},{"value":"agricultural","label":"Agricultural vehicles"},{"value":"construction","label":"Construction machinery"},{"value":"forklift","label":"Forklifts (Stapler)"},{"value":"motorhome","label":"Motorhomes and caravans"},{"value":"ebike","label":"E-bikes"}],"default":"car"}],"returns":"{vehicle_type, count, makes[{make_id, name}]}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"models","description":"Every car model mobile.de lists for a make, including series groups (is_group true, e.g. '3er Reihe (Alle)'), with the model id the search action accepts. Cars only.","required_params":["make"],"optional_params":[],"params":[{"name":"make","type":"string","required":true,"description":"Make name or mobile.de make id.","on_invalid":"reject","example":"BMW"}],"returns":"{make, make_id, count, models[{model_id, name, group, is_group}]}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"3500"}}]},{"name":"movies-tv","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Movies & TV API — unified movie and TV metadata plus streaming availability: search, full details, cast and crew, seasons and episodes, discover/browse with filters, reviews, images, trailers, where-to-watch by region, charts and recommendations (TMDB, TVmaze, JustWatch)","version":"1.2.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/movies-tv/v1","spec_available":true,"actions":[{"name":"search","description":"search titles (type=multi|movie|tv|streaming)","required_params":["query"],"optional_params":["type","limit","year","country","page","language"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text title/person search keywords.","on_invalid":"reject","example":"breaking bad","aliases":["q"]},{"name":"type","type":"enum","required":false,"description":"Which catalog to search. tv also accepts 'show'/'series'.","on_invalid":"ignore","allowed_values":[{"value":"multi","label":"Movies + TV + people (default; TMDB or JustWatch)"},{"value":"movie","label":"Movies only (TMDB)"},{"value":"tv","label":"TV shows only (TVmaze)"},{"value":"streaming","label":"Where-to-watch results (JustWatch)"}],"default":"multi","example":"tv","aliases":["media_type"]},{"name":"limit","type":"integer","required":false,"description":"Max results to return.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"aliases":["first"]},{"name":"year","type":"integer","required":false,"description":"Release-year filter (movie search / streaming match).","on_invalid":"ignore","example":2010},{"name":"country","type":"string","required":false,"description":"JustWatch market — ISO-3166-1 alpha-2 (~140 supported). Controls streaming offers / services / new-titles region.","on_invalid":"ignore","default":"US","example":"US"},{"name":"page","type":"integer","required":false,"description":"TMDB result page (movie/multi search only).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"language","type":"string","required":false,"description":"Display locale for TMDB movie/multi search (e.g. de-DE, es-ES, ja-JP).","on_invalid":"ignore","example":"de-DE"}],"returns":"results[] (shape depends on type: title rows with ids {imdb,tmdb,tvmaze} + year/overview; streaming rows carry offers), query, type","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"breaking bad","type":"tv"}},{"name":"detail","description":"unified title detail (tv→TVmaze, movie→TMDB depth + JustWatch offers)","required_params":["id"],"optional_params":["type","id_type","country","include_streaming","language"],"params":[{"name":"id","type":"string","required":true,"description":"Title id. By default a TVmaze id (TV) or TMDB id (movie); an imdb id (tt0903747) is auto-detected. Set id_type to be explicit.","on_invalid":"reject","example":"169"},{"name":"type","type":"enum","required":false,"description":"Whether the id/query is a movie or a TV show. Defaults to TV unless the id is a tmdb id or looks like a movie.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Treat the id as a movie (TMDB)"},{"value":"tv","label":"Treat the id as a TV show (TVmaze)"}],"example":"movie","aliases":["media_type"]},{"name":"id_type","type":"enum","required":false,"description":"How to interpret `id`. Auto-detected (imdb if it starts with 'tt', else tvmaze for TV / tmdb for movie) when omitted.","on_invalid":"ignore","allowed_values":[{"value":"tvmaze","label":"TVmaze numeric id"},{"value":"tmdb","label":"TMDB numeric id"},{"value":"imdb","label":"IMDb id (tt…)"}],"example":"imdb"},{"name":"country","type":"string","required":false,"description":"JustWatch market — ISO-3166-1 alpha-2 (~140 supported). Controls streaming offers / services / new-titles region.","on_invalid":"ignore","default":"US","example":"US"},{"name":"include_streaming","type":"boolean","required":false,"description":"Merge JustWatch where-to-watch offers into the detail record.","on_invalid":"ignore","default":true,"example":true},{"name":"language","type":"string","required":false,"description":"Display locale for movie titles/overview (TMDB; e.g. de-DE, fr-FR, ja-JP).","on_invalid":"ignore","example":"de-DE"}],"returns":"full title record: title, genres, overview, ids, ratings, cast/crew; movie adds runtime/budget/revenue; +streaming_offers when include_streaming","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"id":169,"type":"tv"}},{"name":"episodes","description":"TV episodes (optionally one season)","required_params":["id"],"optional_params":["id_type","season","specials"],"params":[{"name":"id","type":"string","required":true,"description":"Title id. By default a TVmaze id (TV) or TMDB id (movie); an imdb id (tt0903747) is auto-detected. Set id_type to be explicit.","on_invalid":"reject","example":"169"},{"name":"id_type","type":"enum","required":false,"description":"How to interpret `id`. Auto-detected (imdb if it starts with 'tt', else tvmaze for TV / tmdb for movie) when omitted.","on_invalid":"ignore","allowed_values":[{"value":"tvmaze","label":"TVmaze numeric id"},{"value":"tmdb","label":"TMDB numeric id"},{"value":"imdb","label":"IMDb id (tt…)"}],"example":"imdb"},{"name":"season","type":"integer","required":false,"description":"Limit to one season number (omit for all).","on_invalid":"ignore","example":1},{"name":"specials","type":"boolean","required":false,"description":"Include special (non-numbered) episodes.","on_invalid":"ignore","default":false,"example":false}],"returns":"tvmaze_id, season, episodes[]{name, season, number, airdate, runtime}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":169,"type":"tv"}},{"name":"cast","description":"cast (tv→TVmaze, movie→TMDB)","required_params":["id"],"optional_params":["type","id_type"],"params":[{"name":"id","type":"string","required":true,"description":"Title id. By default a TVmaze id (TV) or TMDB id (movie); an imdb id (tt0903747) is auto-detected. Set id_type to be explicit.","on_invalid":"reject","example":"169"},{"name":"type","type":"enum","required":false,"description":"Whether the id/query is a movie or a TV show. Defaults to TV unless the id is a tmdb id or looks like a movie.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Treat the id as a movie (TMDB)"},{"value":"tv","label":"Treat the id as a TV show (TVmaze)"}],"example":"movie","aliases":["media_type"]},{"name":"id_type","type":"enum","required":false,"description":"How to interpret `id`. Auto-detected (imdb if it starts with 'tt', else tvmaze for TV / tmdb for movie) when omitted.","on_invalid":"ignore","allowed_values":[{"value":"tvmaze","label":"TVmaze numeric id"},{"value":"tmdb","label":"TMDB numeric id"},{"value":"imdb","label":"IMDb id (tt…)"}],"example":"imdb"}],"returns":"cast[]{person, character, ...}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":169,"type":"tv"}},{"name":"crew","description":"crew (tv→TVmaze, movie→TMDB)","required_params":["id"],"optional_params":["type","id_type"],"params":[{"name":"id","type":"string","required":true,"description":"Title id. By default a TVmaze id (TV) or TMDB id (movie); an imdb id (tt0903747) is auto-detected. Set id_type to be explicit.","on_invalid":"reject","example":"169"},{"name":"type","type":"enum","required":false,"description":"Whether the id/query is a movie or a TV show. Defaults to TV unless the id is a tmdb id or looks like a movie.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Treat the id as a movie (TMDB)"},{"value":"tv","label":"Treat the id as a TV show (TVmaze)"}],"example":"movie","aliases":["media_type"]},{"name":"id_type","type":"enum","required":false,"description":"How to interpret `id`. Auto-detected (imdb if it starts with 'tt', else tvmaze for TV / tmdb for movie) when omitted.","on_invalid":"ignore","allowed_values":[{"value":"tvmaze","label":"TVmaze numeric id"},{"value":"tmdb","label":"TMDB numeric id"},{"value":"imdb","label":"IMDb id (tt…)"}],"example":"imdb"}],"returns":"crew[]{person, department, job/type}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":169}},{"name":"akas","description":"alternative titles (tv→TVmaze, movie→TMDB)","required_params":["id"],"optional_params":["type","id_type"],"params":[{"name":"id","type":"string","required":true,"description":"Title id. By default a TVmaze id (TV) or TMDB id (movie); an imdb id (tt0903747) is auto-detected. Set id_type to be explicit.","on_invalid":"reject","example":"169"},{"name":"type","type":"enum","required":false,"description":"Whether the id/query is a movie or a TV show. Defaults to TV unless the id is a tmdb id or looks like a movie.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Treat the id as a movie (TMDB)"},{"value":"tv","label":"Treat the id as a TV show (TVmaze)"}],"example":"movie","aliases":["media_type"]},{"name":"id_type","type":"enum","required":false,"description":"How to interpret `id`. Auto-detected (imdb if it starts with 'tt', else tvmaze for TV / tmdb for movie) when omitted.","on_invalid":"ignore","allowed_values":[{"value":"tvmaze","label":"TVmaze numeric id"},{"value":"tmdb","label":"TMDB numeric id"},{"value":"imdb","label":"IMDb id (tt…)"}],"example":"imdb"}],"returns":"akas[]{name, country/language}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"id":169,"type":"tv"}},{"name":"schedule","description":"TV broadcast (kind=tv) or streaming-premiere (kind=web) calendar","required_params":[],"optional_params":["country","date","kind"],"params":[{"name":"country","type":"string","required":false,"description":"JustWatch market — ISO-3166-1 alpha-2 (~140 supported). Controls streaming offers / services / new-titles region.","on_invalid":"ignore","default":"US","example":"US"},{"name":"date","type":"string","required":false,"description":"Date as YYYY-MM-DD.","on_invalid":"ignore","example":"2026-06-01"},{"name":"kind","type":"enum","required":false,"description":"Which calendar. Any non-web value is treated as the TV broadcast schedule.","on_invalid":"ignore","allowed_values":[{"value":"tv","label":"TV broadcast schedule (by country)"},{"value":"web","label":"Streaming-premiere calendar"},{"value":"streaming","label":"Alias of web"}],"default":"tv","example":"tv"}],"returns":"kind, date, airings[]{show.title, airdate/time, network}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US","date":"2024-01-01"}},{"name":"streaming","description":"where-to-watch offers via JustWatch (query/node_id/imdb/tmdb)","required_params":[],"optional_params":["query","id","id_type","node_id","country","object_types","title","year"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text title/person search keywords.","on_invalid":"reject","example":"breaking bad","aliases":["q"]},{"name":"id","type":"string","required":false,"description":"Title id. By default a TVmaze id (TV) or TMDB id (movie); an imdb id (tt0903747) is auto-detected. Set id_type to be explicit.","on_invalid":"reject","example":"169"},{"name":"id_type","type":"enum","required":false,"description":"How to interpret `id`. Auto-detected (imdb if it starts with 'tt', else tvmaze for TV / tmdb for movie) when omitted.","on_invalid":"ignore","allowed_values":[{"value":"tvmaze","label":"TVmaze numeric id"},{"value":"tmdb","label":"TMDB numeric id"},{"value":"imdb","label":"IMDb id (tt…)"}],"example":"imdb"},{"name":"node_id","type":"string","required":false,"description":"JustWatch node id (tm…/ts…) — fetches offers directly without a search.","on_invalid":"ignore","example":"tm12345"},{"name":"country","type":"string","required":false,"description":"JustWatch market — ISO-3166-1 alpha-2 (~140 supported). Controls streaming offers / services / new-titles region.","on_invalid":"ignore","default":"US","example":"US"},{"name":"object_types","type":"array","required":false,"description":"Restrict JustWatch results to these node types (MOVIE / SHOW).","on_invalid":"ignore","allowed_values":[{"value":"MOVIE","label":"Movies"},{"value":"SHOW","label":"TV shows"}],"example":["MOVIE","SHOW"]},{"name":"title","type":"string","required":false,"description":"Exact title to match when resolving by imdb/tmdb id.","on_invalid":"ignore","example":"Inception"},{"name":"year","type":"integer","required":false,"description":"Release-year filter (movie search / streaming match).","on_invalid":"ignore","example":2010}],"returns":"results[] (query path) OR one title with offers[]{provider, type, quality, price, url} (node/id path)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"inception","country":"US"}},{"name":"people","description":"person search or detail (tv→TVmaze, movie→TMDB)","required_params":[],"optional_params":["query","id","type"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text title/person search keywords.","on_invalid":"reject","example":"breaking bad","aliases":["q"]},{"name":"id","type":"string","required":false,"description":"Title id. By default a TVmaze id (TV) or TMDB id (movie); an imdb id (tt0903747) is auto-detected. Set id_type to be explicit.","on_invalid":"reject","example":"169"},{"name":"type","type":"enum","required":false,"description":"Whether the id/query is a movie or a TV show. Defaults to TV unless the id is a tmdb id or looks like a movie.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Treat the id as a movie (TMDB)"},{"value":"tv","label":"Treat the id as a TV show (TVmaze)"}],"example":"movie","aliases":["media_type"]}],"returns":"people[] (search; needs query) OR one person record (needs id)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"lookup","description":"cross-resolve imdb↔tmdb↔tvmaze ids","required_params":[],"optional_params":["imdb_id","tmdb_id","tvmaze_id","id","id_type","type"],"params":[{"name":"imdb_id","type":"string","required":false,"description":"IMDb id to resolve (tt…). Provide any ONE id.","on_invalid":"ignore","example":"tt0903747"},{"name":"tmdb_id","type":"integer","required":false,"description":"TMDB id to resolve.","on_invalid":"ignore","example":27205},{"name":"tvmaze_id","type":"integer","required":false,"description":"TVmaze id to resolve.","on_invalid":"ignore","example":169},{"name":"id","type":"string","required":false,"description":"Title id. By default a TVmaze id (TV) or TMDB id (movie); an imdb id (tt0903747) is auto-detected. Set id_type to be explicit.","on_invalid":"reject","example":"169"},{"name":"id_type","type":"enum","required":false,"description":"How to interpret `id`. Auto-detected (imdb if it starts with 'tt', else tvmaze for TV / tmdb for movie) when omitted.","on_invalid":"ignore","allowed_values":[{"value":"tvmaze","label":"TVmaze numeric id"},{"value":"tmdb","label":"TMDB numeric id"},{"value":"imdb","label":"IMDb id (tt…)"}],"example":"imdb"},{"name":"type","type":"enum","required":false,"description":"Whether the id/query is a movie or a TV show. Defaults to TV unless the id is a tmdb id or looks like a movie.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Treat the id as a movie (TMDB)"},{"value":"tv","label":"Treat the id as a TV show (TVmaze)"}],"example":"movie","aliases":["media_type"]}],"returns":"ids{imdb, tmdb, tvmaze} (whichever resolve), title, type","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"imdb_id":"tt0903747"}},{"name":"genres","description":"TMDB genre reference (movie|tv)","required_params":[],"optional_params":["type"],"params":[{"name":"type","type":"enum","required":false,"description":"Whether the id/query is a movie or a TV show. Defaults to TV unless the id is a tmdb id or looks like a movie.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Treat the id as a movie (TMDB)"},{"value":"tv","label":"Treat the id as a TV show (TVmaze)"}],"example":"movie","aliases":["media_type"]}],"returns":"media, genres[]{id, name}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"countries","description":"streaming services available in a country (JustWatch)","required_params":[],"optional_params":["country"],"params":[{"name":"country","type":"string","required":false,"description":"JustWatch market — ISO-3166-1 alpha-2 (~140 supported). Controls streaming offers / services / new-titles region.","on_invalid":"ignore","default":"US","example":"US"}],"returns":"country, services[]{provider, ...}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"country":"US"}},{"name":"new_titles","description":"recently added/changed on streaming (≈ catalog changes)","required_params":["date"],"optional_params":["country","limit","object_types","packages"],"params":[{"name":"date","type":"string","required":true,"description":"Date as YYYY-MM-DD (required — the catalog-change day to report).","on_invalid":"reject","example":"2026-06-01"},{"name":"country","type":"string","required":false,"description":"JustWatch market — ISO-3166-1 alpha-2 (~140 supported). Controls streaming offers / services / new-titles region.","on_invalid":"ignore","default":"US","example":"US"},{"name":"limit","type":"integer","required":false,"description":"Max results to return.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"aliases":["first"]},{"name":"object_types","type":"array","required":false,"description":"Restrict JustWatch results to these node types (MOVIE / SHOW).","on_invalid":"ignore","allowed_values":[{"value":"MOVIE","label":"Movies"},{"value":"SHOW","label":"TV shows"}],"example":["MOVIE","SHOW"]},{"name":"packages","type":"array","required":false,"description":"Restrict to these JustWatch provider technical names (e.g. nfx=Netflix).","on_invalid":"ignore","example":["nfx","amp"]}],"returns":"titles[]{title, ids{imdb,...}, new_offer}, total","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US","date":"2026-06-01"}},{"name":"charts","description":"Ranked title charts: most-popular / top-rated / upcoming / now-playing / on-the-air / trending — for movies, TV or both. A `language` filter turns top-rated/popular into the per-language charts (e.g. top-rated Tamil/Telugu/Hindi); `region` localises upcoming/now-playing.","required_params":["chart"],"optional_params":["language","region","page","limit"],"params":[{"name":"chart","type":"enum","required":false,"description":"Which chart to return.","on_invalid":"reject","allowed_values":[{"value":"popular_movies","label":"Most popular movies"},{"value":"popular_tv","label":"Most popular TV shows"},{"value":"top_rated_movies","label":"Top rated movies"},{"value":"top_rated_tv","label":"Top rated TV shows"},{"value":"upcoming_movies","label":"Upcoming movie releases"},{"value":"now_playing_movies","label":"Movies now in theatres"},{"value":"on_the_air_tv","label":"TV shows currently airing"},{"value":"trending_movies","label":"Trending movies (this week)"},{"value":"trending_tv","label":"Trending TV (this week)"},{"value":"trending_all","label":"Trending movies + TV + people"}],"example":"top_rated_movies"},{"name":"language","type":"string","required":false,"description":"ISO 639-1 original-language filter (e.g. ta=Tamil, te=Telugu, hi=Hindi, en=English). Turns popular/top-rated into per-language charts.","on_invalid":"ignore","example":"ta"},{"name":"region","type":"string","required":false,"description":"ISO 3166-1 region to localise upcoming/now-playing.","on_invalid":"ignore","example":"US"},{"name":"page","type":"integer","required":false,"description":"TMDB result page (movie/multi search only).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Max results to return.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"aliases":["first"]}],"returns":"chart, language, region, page, total_pages, total_results, results[]{ids{tmdb,imdb}, type, title, year, genres, rating, ...}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"chart":"top_rated_movies"}},{"name":"similar","description":"Titles similar to / recommended for a given movie or TV show (TMDB recommendations, falling back to similar). Accepts a TMDB id or an IMDb tt… id.","required_params":["id"],"optional_params":["type","limit"],"params":[{"name":"id","type":"string","required":true,"description":"Title id. By default a TVmaze id (TV) or TMDB id (movie); an imdb id (tt0903747) is auto-detected. Set id_type to be explicit.","on_invalid":"reject","example":"169"},{"name":"type","type":"enum","required":false,"description":"Whether the id/query is a movie or a TV show. Defaults to TV unless the id is a tmdb id or looks like a movie.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Treat the id as a movie (TMDB)"},{"value":"tv","label":"Treat the id as a TV show (TVmaze)"}],"example":"movie","aliases":["media_type"]},{"name":"limit","type":"integer","required":false,"description":"Max results to return.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"aliases":["first"]}],"returns":"id, tmdb_id, type, results[]{ids, title, year, genres, rating, ...}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"id":27205,"type":"movie"}},{"name":"credits","description":"A person's full filmography (combined movie + TV credits) by TMDB person id or by name — every title they were cast or crew on, newest first, with their character/job.","required_params":[],"optional_params":["person_id","name","limit"],"params":[{"name":"person_id","type":"integer","required":false,"description":"TMDB person id (omit if passing `name`).","on_invalid":"ignore","example":287},{"name":"name","type":"string","required":false,"description":"Person name to search (used when `person_id` is omitted).","on_invalid":"ignore","example":"Brad Pitt"},{"name":"limit","type":"integer","required":false,"description":"Max results to return.","on_invalid":"ignore","default":40,"example":40,"minimum":1,"aliases":["first"]}],"returns":"person_id, name, cast[]{title, year, character, ...}, crew[]{title, year, job, ...}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"discover","description":"Browse the catalog with filters — find movies or TV by genre, year range, minimum rating, runtime, original language, cast/crew, keyword and where-to-stream provider, sorted however you like. The 'explore like a real user' surface.","required_params":[],"optional_params":["type","genres","year","year_gte","year_lte","rating_gte","runtime_gte","runtime_lte","language","region","with_cast","sort_by","page","locale"],"params":[{"name":"type","type":"enum","required":false,"description":"Whether to browse/return movies or TV shows.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Movies"},{"value":"tv","label":"TV shows"}],"default":"movie","example":"movie","aliases":["media_type"]},{"name":"genres","type":"string","required":false,"description":"Genre filter — names ('Action','Comedy') or TMDB ids (28,878), comma-separated. See the `genres` action for the full list.","on_invalid":"ignore","example":"Action,Science Fiction"},{"name":"year","type":"integer","required":false,"description":"Exact release/first-air year.","on_invalid":"ignore","example":2023},{"name":"year_gte","type":"integer","required":false,"description":"Earliest year (inclusive).","on_invalid":"ignore","example":2010,"aliases":["year_from"]},{"name":"year_lte","type":"integer","required":false,"description":"Latest year (inclusive).","on_invalid":"ignore","example":2020,"aliases":["year_to"]},{"name":"rating_gte","type":"number","required":false,"description":"Minimum TMDB rating 0-10 (auto-applies a 50-vote floor to drop 1-vote outliers).","on_invalid":"ignore","example":7.5,"aliases":["min_rating"]},{"name":"runtime_gte","type":"integer","required":false,"description":"Minimum runtime in minutes.","on_invalid":"ignore","example":90},{"name":"runtime_lte","type":"integer","required":false,"description":"Maximum runtime in minutes.","on_invalid":"ignore","example":180},{"name":"language","type":"string","required":false,"description":"Original-language filter, ISO 639-1 (e.g. ko=Korean, ja=Japanese, hi=Hindi, en=English).","on_invalid":"ignore","example":"ko","aliases":["original_language"]},{"name":"region","type":"string","required":false,"description":"ISO 3166-1 region for release-window localisation.","on_invalid":"ignore","example":"US"},{"name":"with_cast","type":"string","required":false,"description":"TMDB person id(s) who must appear in the cast (comma-separated).","on_invalid":"ignore","example":"287","aliases":["cast_id"]},{"name":"sort_by","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"popularity.desc","label":"Most popular first"},{"value":"popularity.asc","label":"Least popular first"},{"value":"vote_average.desc","label":"Highest rated first"},{"value":"vote_average.asc","label":"Lowest rated first"},{"value":"primary_release_date.desc","label":"Newest first (movies)"},{"value":"primary_release_date.asc","label":"Oldest first (movies)"},{"value":"revenue.desc","label":"Highest grossing first (movies)"}],"default":"popularity.desc","example":"vote_average.desc"},{"name":"page","type":"integer","required":false,"description":"TMDB result page (movie/multi search only).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"locale","type":"string","required":false,"description":"Display language for titles/overviews (e.g. de-DE, ja-JP).","on_invalid":"ignore","example":"de-DE"}],"returns":"media, page, total_pages, total_results, results[]{ids, title, year, genres, rating}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"movie","genres":"Science Fiction","year_gte":2010,"rating_gte":7.5,"sort_by":"vote_average.desc"}},{"name":"reviews","description":"User reviews for a movie or TV show (author, star rating, full text), paginated.","required_params":["id"],"optional_params":["type","page"],"params":[{"name":"id","type":"string","required":true,"description":"TMDB id (e.g. 27205) OR an IMDb id (tt1375666) — auto-resolved.","on_invalid":"reject","example":"27205","aliases":["tmdb_id"]},{"name":"type","type":"enum","required":false,"description":"Whether to browse/return movies or TV shows.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Movies"},{"value":"tv","label":"TV shows"}],"default":"movie","example":"movie","aliases":["media_type"]},{"name":"page","type":"integer","required":false,"description":"TMDB result page (movie/multi search only).","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"tmdb_id, type, page, total_pages, total_results, reviews[]{author, rating, content, created_at, url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":27205,"type":"movie"}},{"name":"images","description":"All artwork for a title — posters, backdrops and (TV) episode stills with resolutions and language tags.","required_params":["id"],"optional_params":["type","limit"],"params":[{"name":"id","type":"string","required":true,"description":"TMDB id (e.g. 27205) OR an IMDb id (tt1375666) — auto-resolved.","on_invalid":"reject","example":"27205","aliases":["tmdb_id"]},{"name":"type","type":"enum","required":false,"description":"Whether to browse/return movies or TV shows.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Movies"},{"value":"tv","label":"TV shows"}],"default":"movie","example":"movie","aliases":["media_type"]},{"name":"limit","type":"integer","required":false,"description":"Max results to return.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"aliases":["first"]}],"returns":"tmdb_id, type, results[] (flat), posters[], backdrops[], logos[], stills[] {url, width, height, language}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"id":27205,"type":"movie"}},{"name":"videos","description":"Trailers, teasers and clips for a movie or TV show (YouTube keys + ready-to-play URLs).","required_params":["id"],"optional_params":["type"],"params":[{"name":"id","type":"string","required":true,"description":"TMDB id (e.g. 27205) OR an IMDb id (tt1375666) — auto-resolved.","on_invalid":"reject","example":"27205","aliases":["tmdb_id"]},{"name":"type","type":"enum","required":false,"description":"Whether to browse/return movies or TV shows.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Movies"},{"value":"tv","label":"TV shows"}],"default":"movie","example":"movie","aliases":["media_type"]}],"returns":"tmdb_id, type, results[]{name, type, site, key, url, official, published_at}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":27205,"type":"movie"}},{"name":"watch_providers","description":"Where to stream/rent/buy a title (TMDB/JustWatch data) — pass a country for that region's offers, or omit it to get every region.","required_params":["id"],"optional_params":["type","country"],"params":[{"name":"id","type":"string","required":true,"description":"TMDB id (e.g. 27205) OR an IMDb id (tt1375666) — auto-resolved.","on_invalid":"reject","example":"27205","aliases":["tmdb_id"]},{"name":"type","type":"enum","required":false,"description":"Whether to browse/return movies or TV shows.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Movies"},{"value":"tv","label":"TV shows"}],"default":"movie","example":"movie","aliases":["media_type"]},{"name":"country","type":"string","required":false,"description":"JustWatch market — ISO-3166-1 alpha-2 (~140 supported). Controls streaming offers / services / new-titles region.","on_invalid":"ignore","default":"US","example":"US"}],"returns":"tmdb_id, type, region, offers[]{provider, type, provider_id} (one region) OR by_region{cc:{offers}} (all regions)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":27205,"type":"movie","country":"US"}},{"name":"season","description":"Full episode list for one season of a TV show — episode titles, overviews, air dates, ratings and stills (TMDB).","required_params":["id","season"],"optional_params":["type"],"params":[{"name":"id","type":"string","required":true,"description":"TMDB id (e.g. 27205) OR an IMDb id (tt1375666) — auto-resolved.","on_invalid":"reject","example":"27205","aliases":["tmdb_id"]},{"name":"season","type":"integer","required":true,"description":"Season number.","on_invalid":"reject","example":1},{"name":"type","type":"enum","required":false,"description":"Always tv.","on_invalid":"ignore","allowed_values":[{"value":"tv","label":"TV show"}],"default":"tv","example":"tv"}],"returns":"tmdb_id, season_number, name, episode_count, episodes[]{episode, name, overview, air_date, runtime, rating, still}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":1396,"season":1}},{"name":"episode","description":"One TV episode in depth — overview, air date, rating, guest stars and crew (TMDB).","required_params":["id","season","episode"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"TMDB id (e.g. 27205) OR an IMDb id (tt1375666) — auto-resolved.","on_invalid":"reject","example":"27205","aliases":["tmdb_id"]},{"name":"season","type":"integer","required":true,"description":"Season number.","on_invalid":"reject","example":1},{"name":"episode","type":"integer","required":true,"description":"Episode number within the season.","on_invalid":"reject","example":1}],"returns":"tmdb_id, season, episode, name, overview, air_date, rating, guest_stars[]{person, character}, crew[]{person, job}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":1396,"season":1,"episode":1}}]},{"name":"music-metadata","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Music Metadata API — search artists, albums, tracks, labels and works; get artist bios & profiles, discographies, top charts, similar artists, song lyrics, cover art and ISRC lookups, powered by MusicBrainz, Cover Art Archive, iTunes, Apple Music charts, TheAudioDB, ListenBrainz and lrclib","version":"2.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/music-metadata/v1","spec_available":true,"actions":[{"name":"search","description":"search artist/album/release/recording/track/label/work (advanced field search supported)","required_params":["query"],"optional_params":["type","limit","offset"],"params":[{"name":"query","type":"string","required":true,"description":"Search text (advanced field search is supported).","on_invalid":"reject","example":"radiohead","aliases":["q"]},{"name":"type","type":"enum","required":false,"description":"Which MusicBrainz entity to search.","on_invalid":"reject","allowed_values":[{"value":"artist","label":"Artist / band"},{"value":"release-group","label":"Album (release-group)"},{"value":"album","label":"Album (alias of release-group)"},{"value":"release","label":"Specific release / edition"},{"value":"recording","label":"Recording (a track)"},{"value":"track","label":"Track (alias of recording)"},{"value":"song","label":"Song (alias of recording)"},{"value":"label","label":"Record label"},{"value":"work","label":"Work / composition"}],"default":"artist","example":"artist"},{"name":"limit","type":"integer","required":false,"description":"How many results to return (1-100). Clamped to range.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N results).","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"<plural-entity>[] (e.g. artists[]/recordings[]) each w/ id+name(+artist_credit), count (total), offset, type","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"radiohead","type":"artist"}},{"name":"artist_detail","description":"artist + relationships (members/collaborations), discography, aliases, tags","required_params":["mbid"],"optional_params":["inc"],"params":[{"name":"mbid","type":"string","required":true,"description":"MusicBrainz id (UUID) of the artist. Find it via the search action (`type=artist`) — mbids are entity-specific, an artist id will not resolve here.","on_invalid":"reject","example":"a74b1b7f-71a5-4011-9441-d0b5e4122711","aliases":["id"]},{"name":"inc","type":"string","required":false,"description":"Advanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.","on_invalid":"ignore","example":"aliases+tags+genres"}],"returns":"artist record + members[], external_urls{}, release-groups[], aliases, tags, ratings","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"mbid":"a74b1b7f-71a5-4011-9441-d0b5e4122711"}},{"name":"album_detail","description":"release (tracklist+labels+ISRCs+discids) or release-group","required_params":["mbid"],"optional_params":["entity","inc"],"params":[{"name":"mbid","type":"string","required":true,"description":"MusicBrainz id (UUID) of the release. Find it via the search action (`type=release`) — mbids are entity-specific, an artist id will not resolve here.","on_invalid":"reject","example":"4b3d18cc-8937-36f4-8de0-481088be58e6","aliases":["id"]},{"name":"entity","type":"enum","required":false,"description":"Whether the MBID is a single release or a release-group.","on_invalid":"reject","allowed_values":[{"value":"release","label":"A specific release / edition"},{"value":"release-group","label":"The album as a whole (release-group)"}],"default":"release","example":"release"},{"name":"inc","type":"string","required":false,"description":"Advanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.","on_invalid":"ignore","example":"aliases+tags+genres"}],"returns":"release: title + tracks[]{title, recording_mbid, isrcs} + labels[] + barcode; release-group: title + primary-type + releases[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"mbid":"4b3d18cc-8937-36f4-8de0-481088be58e6","entity":"release"}},{"name":"track_detail","description":"recording + ISRCs + work-relations + artist credits","required_params":["mbid"],"optional_params":["inc"],"params":[{"name":"mbid","type":"string","required":true,"description":"MusicBrainz id (UUID) of the recording. Find it via the search action (`type=recording`) — mbids are entity-specific, an artist id will not resolve here.","on_invalid":"reject","example":"2321576e-141e-4a00-b403-bfd8da62b17c","aliases":["id"]},{"name":"inc","type":"string","required":false,"description":"Advanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.","on_invalid":"ignore","example":"aliases+tags+genres"}],"returns":"recording: title, artist_credit, isrcs[], works[]{title, mbid}, releases[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"mbid":"7c0e3d7c-3944-4b64-87bb-62dba67bea83"}},{"name":"label","description":"label detail (country, label-code, aliases, url-rels)","required_params":["mbid"],"optional_params":["inc"],"params":[{"name":"mbid","type":"string","required":true,"description":"MusicBrainz id (UUID) of the label. Find it via the search action (`type=label`) — mbids are entity-specific, an artist id will not resolve here.","on_invalid":"reject","example":"df7d1c7f-ef95-425f-8eef-445b3d7bcbd9","aliases":["id"]},{"name":"inc","type":"string","required":false,"description":"Advanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.","on_invalid":"ignore","example":"aliases+tags+genres"}],"returns":"label: name, type, country, label-code, aliases, external_urls{}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"mbid":"14221f01-8939-4ea0-b8f1-b5a21beae80a"}},{"name":"work_detail","description":"work/composition + ISWC + writer relations","required_params":["mbid"],"optional_params":["inc"],"params":[{"name":"mbid","type":"string","required":true,"description":"MusicBrainz id (UUID) of the work. Find it via the search action (`type=work`) — mbids are entity-specific, an artist id will not resolve here.","on_invalid":"reject","example":"1b4ff597-f43f-3dac-9f76-0e7b7f38d0d2","aliases":["id"]},{"name":"inc","type":"string","required":false,"description":"Advanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.","on_invalid":"ignore","example":"aliases+tags+genres"}],"returns":"work: title, iswcs[], writers[]{name, mbid, role}, external_urls{}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"mbid":"1b4ff597-f43f-3dac-9f76-0e7b7f38d0d2"}},{"name":"isrc_lookup","description":"reverse ISRC -> recordings (cross-catalog key)","required_params":["isrc"],"optional_params":["inc"],"params":[{"name":"isrc","type":"string","required":true,"description":"International Standard Recording Code (2 letters, 3 alphanumerics, 7 digits) — e.g. GBAYE9701274.","on_invalid":"reject","example":"GBAYE9701274"},{"name":"inc","type":"string","required":false,"description":"Advanced: override the MusicBrainz 'inc' sub-query (relations/sub-resources to embed, '+'-separated). A tuned default is used when omitted.","on_invalid":"ignore","example":"artist-credits"}],"returns":"isrc, recordings[]{title, artist_credit}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"isrc":"GBAYE9701274"}},{"name":"cover_art","description":"Cover-Art-Archive images (multi-resolution) for a release/release-group","required_params":["mbid"],"optional_params":["entity"],"params":[{"name":"mbid","type":"string","required":true,"description":"MusicBrainz id (UUID) of the release. Find it via the search action (`type=release`) — mbids are entity-specific, an artist id will not resolve here.","on_invalid":"reject","example":"4b3d18cc-8937-36f4-8de0-481088be58e6","aliases":["id"]},{"name":"entity","type":"enum","required":false,"description":"Whether the MBID is a single release or a release-group.","on_invalid":"reject","allowed_values":[{"value":"release","label":"A specific release / edition"},{"value":"release-group","label":"The album as a whole (release-group)"}],"default":"release","example":"release"}],"returns":"mbid, entity, images[]{image, thumbnails, front/back}, front_url, has_art, count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"mbid":"4b3d18cc-8937-36f4-8de0-481088be58e6","entity":"release"}},{"name":"itunes_search","description":"iTunes / Apple Music search for artists, albums or songs — returns genre, high-res artwork, a 30s preview URL, price and store link (country-aware)","required_params":["query"],"optional_params":["type","limit","country"],"params":[{"name":"query","type":"string","required":true,"description":"Artist, album or song to search.","on_invalid":"reject","example":"Daft Punk","aliases":["q","term"]},{"name":"type","type":"enum","required":false,"description":"What to search for on the iTunes catalog.","on_invalid":"reject","allowed_values":[{"value":"artist","label":"Artist"},{"value":"album","label":"Album"},{"value":"song","label":"Song / track"},{"value":"track","label":"Song (alias)"},{"value":"music_video","label":"Music video"}],"default":"artist","example":"artist"},{"name":"limit","type":"integer","required":false,"description":"How many results (1-200). Clamped to range.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":200},{"name":"country","type":"enum","required":false,"description":"ISO-3166 alpha-2 storefront/market for the chart or search (common set listed; others fall back to 'us').","on_invalid":"ignore","allowed_values":[{"value":"us","label":"United States"},{"value":"gb","label":"United Kingdom"},{"value":"de","label":"Germany"},{"value":"fr","label":"France"},{"value":"tr","label":"Türkiye"},{"value":"ca","label":"Canada"},{"value":"au","label":"Australia"},{"value":"jp","label":"Japan"},{"value":"br","label":"Brazil"},{"value":"mx","label":"Mexico"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"nl","label":"Netherlands"},{"value":"se","label":"Sweden"},{"value":"ru","label":"Russia"},{"value":"in","label":"India"},{"value":"kr","label":"South Korea"},{"value":"pl","label":"Poland"},{"value":"ae","label":"UAE"},{"value":"sa","label":"Saudi Arabia"}],"default":"us","example":"us"}],"returns":"results[]{kind, artist_name, collection_name, track_name, genre, release_date, duration_ms, price, preview_url, artwork, url}, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Daft Punk","type":"artist"}},{"name":"charts","description":"Apple Music top charts — the most-played songs or albums in a country (updated through the day)","required_params":[],"optional_params":["type","country","limit"],"params":[{"name":"type","type":"enum","required":false,"description":"Which chart to return.","on_invalid":"reject","allowed_values":[{"value":"songs","label":"Top songs"},{"value":"albums","label":"Top albums"}],"default":"songs","example":"songs"},{"name":"country","type":"enum","required":false,"description":"ISO-3166 alpha-2 storefront/market for the chart or search (common set listed; others fall back to 'us').","on_invalid":"ignore","allowed_values":[{"value":"us","label":"United States"},{"value":"gb","label":"United Kingdom"},{"value":"de","label":"Germany"},{"value":"fr","label":"France"},{"value":"tr","label":"Türkiye"},{"value":"ca","label":"Canada"},{"value":"au","label":"Australia"},{"value":"jp","label":"Japan"},{"value":"br","label":"Brazil"},{"value":"mx","label":"Mexico"},{"value":"es","label":"Spain"},{"value":"it","label":"Italy"},{"value":"nl","label":"Netherlands"},{"value":"se","label":"Sweden"},{"value":"ru","label":"Russia"},{"value":"in","label":"India"},{"value":"kr","label":"South Korea"},{"value":"pl","label":"Poland"},{"value":"ae","label":"UAE"},{"value":"sa","label":"Saudi Arabia"}],"default":"us","example":"us"},{"name":"limit","type":"integer","required":false,"description":"Chart depth (1-100). Clamped to range.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"chart[]{rank, name, artist_name, artist_id, genres[], release_date, artwork, url}, country, type, updated, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"songs","country":"us","limit":10}},{"name":"artist_profile","description":"Rich artist profile: biography, genre/style/mood, formed year, label, follower/popularity counts, social links and images (TheAudioDB). Pass the MusicBrainz mbid (from search/artist_detail) for an exact match, or an artist name","required_params":[],"optional_params":["mbid","name"],"params":[{"name":"mbid","type":"string","required":false,"description":"Artist MusicBrainz id (preferred — exact match).","on_invalid":"reject","example":"cc197bad-dc9c-440d-a5b5-d52ba2e14234","aliases":["id"]},{"name":"name","type":"string","required":false,"description":"Artist name (used when no mbid is given).","on_invalid":"reject","example":"Coldplay","aliases":["query","q"]}],"returns":"artist{name, biography, genre, style, mood, formed_year, country, label, popularity, followers, social{}, images{}}, found","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"mbid":"cc197bad-dc9c-440d-a5b5-d52ba2e14234"}},{"name":"artist_top_tracks","description":"An artist's most popular tracks (top 10) with album, duration, genre and music-video link (TheAudioDB)","required_params":["name"],"optional_params":[],"params":[{"name":"name","type":"string","required":true,"description":"Artist name.","on_invalid":"reject","example":"Coldplay","aliases":["query","q"]}],"returns":"artist, tracks[]{rank, track, album, duration_ms, genre, video}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"Coldplay"}},{"name":"similar_artists","description":"Artists similar to a given artist, ranked by a collaborative listening model (ListenBrainz, CC0). Pass the artist's MusicBrainz mbid","required_params":["mbid"],"optional_params":["limit"],"params":[{"name":"mbid","type":"string","required":true,"description":"Artist MusicBrainz id (from search/artist_detail).","on_invalid":"reject","example":"cc197bad-dc9c-440d-a5b5-d52ba2e14234","aliases":["id"]},{"name":"limit","type":"integer","required":false,"description":"How many similar artists (1-100). Clamped.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"mbid, similar_artists[]{name, mbid, type, comment, score}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"mbid":"cc197bad-dc9c-440d-a5b5-d52ba2e14234"}},{"name":"lyrics","description":"Song lyrics — both plain text and time-synced (LRC) when available — for an artist + track (lrclib, open). Optionally pass album+duration for an exact match","required_params":["artist","track"],"optional_params":["album","duration"],"params":[{"name":"artist","type":"string","required":true,"description":"Artist name.","on_invalid":"reject","example":"Daft Punk"},{"name":"track","type":"string","required":true,"description":"Track / song title.","on_invalid":"reject","example":"Get Lucky","aliases":["title"]},{"name":"album","type":"string","required":false,"description":"Album name (improves exact-match precision).","on_invalid":"reject","example":"Random Access Memories"},{"name":"duration","type":"integer","required":false,"description":"Track length in seconds (exact-match key).","on_invalid":"ignore","example":369,"minimum":1}],"returns":"found, artist, track, album, duration, instrumental, plain_lyrics, synced_lyrics","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"artist":"Daft Punk","track":"Get Lucky"}}]},{"name":"myntra","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Myntra API scraper — India's fashion marketplace (myntra.com): search products with filters, the full product record with per-size and per-seller price and stock, the coupon price kept apart, reviews, similar products and search suggestions, in INR. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/myntra/v1","spec_available":true,"actions":[{"name":"search","description":"Search Myntra by keyword or category slug and get the matching products: Myntra product id, title, brand, images, the price paid with the MRP and discount, any coupon price kept separate, rating and rating count, gender, category, colour, sizes, the buy-box size's stock and seller id, and colour variant ids. Filter by brand, gender, category, colour, size, price and minimum discount; sort by popularity, newest, price, discount or rating. Returns the facet values Myntra offers for the result set.","required_params":["query"],"optional_params":["page","limit","sort","brand","gender","category","color","size","price_min","price_max","min_discount","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for on Myntra: a keyword (\"black kurta\") or a Myntra category slug (\"men-tshirts\"). Hindi script works too.","on_invalid":"reject","example":"nike running shoes","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Myntra serves only the first 500 results of a search (page × limit); a page beyond that is rejected, a page past the last result returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"limit","type":"integer","required":false,"description":"Products per page, 1-100 (Myntra's own is 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order of results. Anything else is rejected (Myntra itself silently ignores unknown sorts).","on_invalid":"reject","allowed_values":[{"value":"popularity","label":"Myntra's default ranking"},{"value":"new","label":"What's new"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"discount","label":"Biggest discount first"},{"value":"rating","label":"Customer rating"}],"default":"popularity"},{"name":"brand","type":"array","required":false,"description":"One or more brand names exactly as Myntra lists them (`available_filters.brand` on any search returns them).","on_invalid":"reject","example":["Nike","Puma"]},{"name":"gender","type":"array","required":false,"description":"One or more of men, women, boys, girls. Myntra also returns unisex products for men / women.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Men"},{"value":"women","label":"Women"},{"value":"boys","label":"Boys"},{"value":"girls","label":"Girls"}],"example":["men"]},{"name":"category","type":"array","required":false,"description":"One or more Myntra categories as listed in `available_filters.category` (e.g. Sports Shoes, Tshirts, Kurtas).","on_invalid":"reject","example":["Sports Shoes"]},{"name":"color","type":"array","required":false,"description":"One or more colours (Black, Navy Blue, …) as in `available_filters.color`.","on_invalid":"reject","example":["Black"]},{"name":"size","type":"array","required":false,"description":"One or more sizes as in `available_filters.size` (UK8, M, 32, …).","on_invalid":"reject","example":["UK8"]},{"name":"price_min","type":"number","required":false,"description":"Lowest price paid, in Indian rupees.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price paid, in Indian rupees.","on_invalid":"reject","minimum":0},{"name":"min_discount","type":"integer","required":false,"description":"Only products discounted at least this much off MRP (Myntra's steps: 10, 20, … 90).","on_invalid":"reject","allowed_values":[{"value":10,"label":"10% and above"},{"value":20,"label":"20% and above"},{"value":30,"label":"30% and above"},{"value":40,"label":"40% and above"},{"value":50,"label":"50% and above"},{"value":60,"label":"60% and above"},{"value":70,"label":"70% and above"},{"value":80,"label":"80% and above"},{"value":90,"label":"90% and above"}],"example":50},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, title, brand, url, image, images[], price (number — what the shopper pays), mrp (India's printed Maximum Retail Price), price_before_discount (the MRP when above price, else null), discount_amount, discount_percent, currency (INR), discount_label, coupon{code, best_price} (a code the shopper enters — NOT subtracted from price), rating, rating_count, rating_scale (5), gender, category, sub_category, master_category, colour, short_description, sizes[], featured_sku{sku_id, size, stock, available} (the buy-box size only), seller_id, colour_variant_ids[], season, year, catalog_date}, count, total_results, reachable_results (min(total, 500)), page, limit, has_more, sponsored_dropped, available_filters{brand[], gender[], category[], color[], size[] {value, count}, price_ranges[], discount_ranges[] {from, to, count}}, filters_applied, currency","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"shoes"}},{"name":"product/detail","description":"The full Myntra product record by `product_id` (or product URL): title, brand, description, material and care, specification table, images and videos, the buy-box price with MRP, discount and when the discount ends, the cheapest and dearest in-stock price across sizes and sellers, the coupon best price kept separate, availability, every size with its stock, equivalent UK/US/EU sizes, measurements and each seller's price and stock, the buy-box seller, rating with count, review count and 1-5 histogram, category path, colour variants, country of origin, manufacturer / importer / packer, return window, cash on delivery and bank offers.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Myntra product id — the number before /buy in a product URL (…/HM-Trainers/40301489/buy → 40301489). A full product URL is accepted.","on_invalid":"reject","example":"34718633","aliases":["id","style_id","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, title, brand, url, price (buy-box offer), mrp, price_before_discount, discount_amount, discount_percent, currency, discount_label, discount_ends_at, price_min, price_max, coupon{code, best_price, discount, minimum_order, applicable_on, new_customers_only, ends_at, other_coupons[]} (never subtracted from price), availability (in_stock|out_of_stock), featured_size, featured_seller{id, name, city, state}, seller_count, sellers[]{id, name, city, state, has_stock}, sizes[]{size, sku_id, available, stock, size_type, equivalent_sizes{uk, us, euro, brand, age}, measurements[]{name, value, unit}, offers[]{seller_id, seller_name, price, mrp, price_before_discount, discount_amount, discount_percent, currency, stock, supply_type, buy_box_rank}}, rating, rating_count, review_count, rating_scale, rating_distribution{1..5}, images[], videos[], description, material_care, details[]{title, text}, specifications[]{name, value}, gender, breadcrumb[], category, colour, colour_variants[]{product_id, label, url, image}, country_of_origin, manufacturer, importer, packer, return_period_days, returnable, exchangeable, cash_on_delivery, emi_available, try_and_buy, policy_notes[], bank_offers[]{type, title, description}, size_chart_image, season, year, catalog_date, gtin (null — Myntra publishes none)}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"34718633"}},{"name":"product/reviews","description":"Customer reviews of one Myntra product, a page at a time: star rating, text, reviewer display name, date, helpful votes, photos and videos, and the size bought, with the product's rating histogram, review count and average. Myntra pools reviews across colour variants of the same design; every review carries the product id it was written on. Filter by star rating; default or newest order.","required_params":["product_id"],"optional_params":["page","limit","sort","rating","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Myntra product id — the number before /buy in a product URL (…/HM-Trainers/40301489/buy → 40301489). A full product URL is accepted.","on_invalid":"reject","example":"34718633","aliases":["id","style_id","url"]},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Reviews per page, 1-20.","on_invalid":"reject","default":12,"minimum":1,"maximum":20},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"default","label":"Myntra's default order"},{"value":"recent","label":"Newest first"}],"default":"default"},{"name":"rating","type":"integer","required":false,"description":"Only reviews with exactly this star rating (1-5).","on_invalid":"reject","minimum":1,"maximum":5},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"reviews[]{review_id, product_id, rating, text, author, date, upvotes, downvotes, images[], videos[], attributes{Size bought, …}}, count, page, limit, has_more, review_count, average_rating, rating_count, rating_scale, rating_distribution{1..5}, image_count, recommended_percent, pooled_product_ids[], product_id","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"34718633"}},{"name":"product/similar","description":"Products Myntra shows next to one product, in Myntra's own groups (Similar, ColourVariants and the others it returns), each with id, title, brand, image, price paid with MRP and discount, rating, category, gender and colour.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Myntra product id — the number before /buy in a product URL (…/HM-Trainers/40301489/buy → 40301489). A full product URL is accepted.","on_invalid":"reject","example":"34718633","aliases":["id","style_id","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"groups[]{type, count, products[]{product_id, title, brand, url, image, price, mrp, price_before_discount, discount_amount, discount_percent, currency, discount_label, rating, rating_scale, category, gender, colour, only_few_left}}, count, product_id, currency","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"34718633"}},{"name":"suggest","description":"Myntra's search suggestions for the text typed so far, with the number of products behind each suggestion.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The text typed so far.","on_invalid":"reject","example":"nike","aliases":["q","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"suggestions[]{text, result_count, search_query, url, category, group}, count, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"shoes"}}]},{"name":"n11","category":{"id":"other","title":"Other"},"title":"n11 API scraper — product detail, search, reviews, categories & sellers on n11.com (Turkey's marketplace); prices in TRY. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/n11/v1","spec_available":true,"actions":[{"name":"product/detail","description":"Full n11 product by `url` or `product_id`: title, brand, price, discount, campaign (Sepette indirim), rating, review_count, images, seller, gtin/barcode, category, description, attributes, variants, rating_breakdown and sample reviews. Parsed from n11's own window.model JSON (durable).","required_params":[],"optional_params":["url","product_id","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"Full n11 product URL (…/urun/<slug>-<id>). Provide url OR product_id.","on_invalid":"reject","example":"https://www.n11.com/urun/samsung-galaxy-a07-4-gb-128-gb-samsung-turkiye-garantili-106765738","aliases":["product_url"]},{"name":"product_id","type":"string","required":false,"description":"n11 product id — the digits at the end of /urun/<slug>-<id>. Provide product_id OR url (url is most reliable).","on_invalid":"reject","example":"106765738","aliases":["id","groupId"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-12, default 6).","on_invalid":"ignore","default":6,"minimum":1,"maximum":12}],"returns":"product{product_id, title, brand, price, currency=TRY, original_price, discount_rate, campaign (str|null — n11 basket-discount campaign text, e.g. 'SEPETTE %13 İNDİRİM'), campaign_price (str|null — the in-basket price), in_stock, rating, rating_count, comment_count, rating_breakdown{}, gtin, images[], category{}, description, seller{}, attributes[], variants[], sample_reviews[]}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://www.n11.com/urun/samsung-galaxy-a07-4-gb-128-gb-samsung-turkiye-garantili-106765738"}},{"name":"product/reviews","description":"Every customer review n11 publishes for a product, paginated and ordered. `sort=newest` (the default) puts the most recent review first and holds that order across pages, so you can poll a product for new reviews; `sort=helpful` orders by n11's helpful-vote count instead. Each page carries the honest totals — how many people rated the product, how many wrote text, the star breakdown, total_pages for your page_size, and how deep n11 actually serves — plus n11's own AI review summary. Reviewer names are returned exactly as n11 publishes them on the product page — usually masked (e.g. 'a*** s***'), but n11 does not mask all of them, so treat the field as public site content rather than as anonymised.","required_params":[],"optional_params":["url","product_id","page","page_size","sort","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"Full n11 product URL (…/urun/<slug>-<id>). Provide url OR product_id.","on_invalid":"reject","example":"https://www.n11.com/urun/samsung-galaxy-a07-4-gb-128-gb-samsung-turkiye-garantili-106765738","aliases":["product_url"]},{"name":"product_id","type":"string","required":false,"description":"n11 product id — the digits at the end of /urun/<slug>-<id>. Provide product_id OR url (url is most reliable).","on_invalid":"reject","example":"106765738","aliases":["id","groupId"]},{"name":"page","type":"integer","required":false,"description":"Review page — 1-BASED (1, 2, 3…); summary.total_pages says how many exist and summary.reachable_pages how many n11 serves.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1–100, default 20). A larger page_size also reaches further into the corpus, because n11 caps the OFFSET rather than the page number.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100,"aliases":["pageSize"]},{"name":"sort","type":"enum","required":false,"description":"Review ordering. `newest` (default) returns the most recent reviews first and keeps that order across pages. `helpful` orders by n11's helpful-vote count. n11 does not publish an oldest-first or rating-ordered view of its reviews.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first (n11 'En Yeni' — the default)"},{"value":"helpful","label":"Most helpful first (n11 'En Faydalı')"}],"default":"newest"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-12, default 6).","on_invalid":"ignore","default":6,"minimum":1,"maximum":12}],"returns":"product_id, page, page_size, sort, ai_summary (n11's own AI digest of the reviews, Turkish; null if it publishes none), summary{average_rating, total_rating_count (every rating incl. star-only), total_comment_count (the written reviews this action pages through), total_pages, page_size, rating_breakdown{5..1}, reachable_reviews, reachable_pages}, reviews[]{id, author (as n11 publishes it — usually masked, not always), title (null on most products — n11 only stores a headline for some reviews), text, rating, date, date_epoch_ms, helpful_count, unhelpful_count, images[], seller, product_id}, count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"search","description":"Search n11 by keyword (`query`), paginated + sortable. Every card carries product_id, title, brand, price, rating, image, url.","required_params":["query"],"optional_params":["page","sort","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword.","on_invalid":"reject","example":"samsung galaxy","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"aliases":["pg"]},{"name":"sort","type":"string","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"default","label":"Recommended (default)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"best_seller","label":"Best sellers"},{"value":"newest","label":"Newest"}],"default":"default"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-12, default 6).","on_invalid":"ignore","default":6,"minimum":1,"maximum":12}],"returns":"products[]{product_id, title, brand, price, currency, discount_rate, rating, rating_count, image, url, seller, category, in_stock}, count, total, page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"telefon"}},{"name":"category","description":"Browse an n11 category by its `url` (…/<slug> or …-c-<id>), paginated + sortable.","required_params":["url"],"optional_params":["page","sort","max_rotations"],"params":[{"name":"url","type":"string","required":true,"description":"Full n11 category URL (…/<slug> or …-c-<id>).","on_invalid":"reject","example":"https://www.n11.com/telefon-ve-aksesuarlari","aliases":["category_url"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"aliases":["pg"]},{"name":"sort","type":"string","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"default","label":"Recommended (default)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"best_seller","label":"Best sellers"},{"value":"newest","label":"Newest"}],"default":"default"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-12, default 6).","on_invalid":"ignore","default":6,"minimum":1,"maximum":12}],"returns":"products[]{...same card as search}, count, total, page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://www.n11.com/urun/samsung-galaxy-a07-4-gb-128-gb-samsung-turkiye-garantili-106765738"}},{"name":"seller","description":"Seller (mağaza) profile + its products by nickname or store `url`.","required_params":["seller"],"optional_params":["page","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Seller nickname (nickName) or full store URL (…/magaza/<nick>).","on_invalid":"reject","example":"tepeiletişim","aliases":["nick","nickname","store","url"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"aliases":["pg"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-12, default 6).","on_invalid":"ignore","default":6,"minimum":1,"maximum":12}],"returns":"seller{nickname, business_name, company_name, follower_count, grade, id}, products[]{...card}, count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"resolve","description":"Resolve an n11 short-link (`token` or `url`, e.g. sl.n11.com/n/<token>) to its REAL n11.com URL + type, capturing the final destination — a short link opened directly dead-ends on an app-install page instead of the item. Classifies product/store/campaign/category; for products it embeds the full product detail (include_detail) so one call returns both. Deterministic per token → cacheable.","required_params":[],"optional_params":["token","url","include_detail","max_rotations"],"params":[{"name":"token","type":"string","required":false,"description":"n11 short-link token — the part after /n/ in https://sl.n11.com/n/<token> or https://www.n11.com/n/<token>. Provide token OR url.","on_invalid":"reject","example":"vnLa2le","aliases":["t"]},{"name":"url","type":"string","required":false,"description":"Full n11 short-link (sl.n11.com/n/…, www.n11.com/n/…, or an adj.st link carrying the token). Provide url OR token.","on_invalid":"reject","example":"https://sl.n11.com/n/vnLa2le","aliases":["short_url","link"]},{"name":"include_detail","type":"boolean","required":false,"description":"When the token resolves to a product, also embed the full product detail under `product` (saves a second call). Default true.","on_invalid":"ignore","default":true,"example":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry the fetch (1-12, default 6).","on_invalid":"ignore","default":6,"minimum":1,"maximum":12}],"returns":"token, final_url, kind (product|store|campaign|category|other|dead), product_id (kind=product), store_slug (kind=store), http_status, product{} (full detail when kind=product and include_detail)","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":2},"example_params":{"token":"vnETLtk"}}]},{"name":"naver","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Naver API (Korea) — Naver Place & Map scraper: search Korean businesses (all categories) with full profiles, ratings, visitor & blog reviews, plus Naver search autocomplete","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/naver/v1","spec_available":true,"actions":[{"name":"place/search","description":"search restaurants & food places by query (richest food data)","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Korean search text (e.g. a business name or 'area + cuisine'). Used to find places, or to resolve a place_id when one isn't given.","on_invalid":"reject","example":"강남 맛집"},{"name":"limit","type":"integer","required":false,"description":"Maximum number of places to return.","on_invalid":"ignore","default":10,"example":5,"minimum":1}],"returns":"places[]{name,address,rating,review_count,...}, total, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"강남 맛집","limit":5}},{"name":"place/search-all","description":"search ANY business type on Naver Place/Map (clinics, cafes, hotels, salons, shops…)","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Korean search text for ANY business type — clinic, cafe, hotel, salon, shop, hospital, etc. (e.g. '강남 성형외과' = Gangnam plastic surgery).","on_invalid":"reject","example":"강남 성형외과"},{"name":"limit","type":"integer","required":false,"description":"Maximum number of places to return (1-30).","on_invalid":"ignore","default":10,"example":5,"minimum":1}],"returns":"places[]{place_id,name,category,road_address,jibun_address,review_count,has_booking,latitude,longitude}, place_suggestions[], total, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"강남 성형외과","limit":5}},{"name":"place/detail","description":"full place profile (rating, phone, hours, images)","required_params":["place_id"],"optional_params":["query"],"params":[{"name":"place_id","type":"string","required":true,"description":"Naver Place numeric id (from place/search results or place/resolve).","on_invalid":"reject","example":"18485191"},{"name":"query","type":"string","required":false,"description":"Korean search text (e.g. a business name or 'area + cuisine'). Used to find places, or to resolve a place_id when one isn't given.","on_invalid":"reject","example":"강남 맛집"}],"returns":"place{} — name, category, rating, review_count, phone, hours, address, images","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"place_id":"18485191"}},{"name":"place/reviews","description":"visitor reviews (latest page, ~20 per call) with the true total","required_params":["place_id"],"optional_params":["limit","page_size","sort","query"],"params":[{"name":"place_id","type":"string","required":true,"description":"Naver Place numeric id (from place/search results or place/resolve).","on_invalid":"reject","example":"18485191"},{"name":"limit","type":"integer","required":false,"description":"Maximum reviews to collect (capped by Naver).","on_invalid":"ignore","default":50,"example":50,"minimum":1},{"name":"page_size","type":"integer","required":false,"description":"Accepted for compatibility but currently has no effect — reviews come from one page. meta.page_size_supported reports this.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Accepted for compatibility but currently has no effect — reviews arrive in Naver's own page order. meta.sort_supported reports this.","on_invalid":"ignore","allowed_values":[{"value":"recent","label":"Most recent (default)"},{"value":"RECENT","label":"Most recent"},{"value":"RECOMMEND","label":"Recommended"},{"value":"RATING","label":"By rating"}],"default":"recent","example":"RECENT"},{"name":"query","type":"string","required":false,"description":"Korean search text (e.g. a business name or 'area + cuisine'). Used to find places, or to resolve a place_id when one isn't given.","on_invalid":"reject","example":"강남 맛집"}],"returns":"place_id, place_name, reviews[]{rating,body,visited,created,author}, count, total_reported, capped","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"place_id":"18485191","limit":10}},{"name":"place/blog-reviews","description":"blog reviews","required_params":["place_id"],"optional_params":["limit","page_size","query"],"params":[{"name":"place_id","type":"string","required":true,"description":"Naver Place numeric id (from place/search results or place/resolve).","on_invalid":"reject","example":"18485191"},{"name":"limit","type":"integer","required":false,"description":"Maximum blog reviews to collect.","on_invalid":"ignore","default":50,"example":50,"minimum":1},{"name":"page_size","type":"integer","required":false,"description":"Accepted for compatibility but currently has no effect — reviews come from one page. meta.page_size_supported reports this.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50},{"name":"query","type":"string","required":false,"description":"Korean search text (e.g. a business name or 'area + cuisine'). Used to find places, or to resolve a place_id when one isn't given.","on_invalid":"reject","example":"강남 맛집"}],"returns":"place_id, reviews[] (blog posts: title, url, snippet, date), count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"place_id":"18485191","limit":10}},{"name":"place/resolve","description":"resolve a query → place_id (works for food AND any other business)","required_params":["query"],"optional_params":["place_id"],"params":[{"name":"query","type":"string","required":true,"description":"Korean search text (e.g. a business name or 'area + cuisine'). Used to find places, or to resolve a place_id when one isn't given.","on_invalid":"reject","example":"강남 맛집"},{"name":"place_id","type":"string","required":false,"description":"Naver Place numeric id (from place/search results or place/resolve).","on_invalid":"reject","example":"18485191"}],"returns":"place_id, name, category, address, review_count, exact_name_match, match_source, candidates[] — the resolved place plus the runner-up matches, so the caller can verify the id belongs to the right branch","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"강남 맛집"}},{"name":"search/autocomplete","description":"Naver search-box keyword suggestions for a partial term (keyword research)","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Partial Korean (or English) search term to autocomplete (e.g. '아이폰' → '아이폰17', '아이폰18'…).","on_invalid":"reject","example":"아이폰"},{"name":"limit","type":"integer","required":false,"description":"Maximum number of suggestions to return (1-30).","on_invalid":"ignore","default":10,"example":10,"minimum":1}],"returns":"query, suggestions[]{suggestion}, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"아이폰","limit":5}}]},{"name":"newegg","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Newegg Electronics API — product search, detail, customer reviews, Q&A, category listings, and deals from newegg.com (US)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/newegg/v1","spec_available":true,"actions":[{"name":"search","description":"Search Newegg products by keyword with page pagination, sort (price/best-selling/rating), brand/facet filter, and a price range. Return up to 360 products in one call with `max_results` (36 per page, paged for you); `page` picks where that window starts. Paid placements are flagged `sponsored: true` and can be excluded with `include_sponsored: false`","required_params":["query"],"optional_params":["max_results","page","sort","n_value","min_price","max_price","include_sponsored"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword.","on_invalid":"reject","example":"ssd"},{"name":"max_results","type":"integer","required":false,"description":"How many products to return. MAXIMUM 300 — the published ceiling, so there is nothing to probe for. Newegg serves 36 organic products per page, so asking for more than that fetches further pages automatically (up to 14 of them, ~1 MB each — ask for what you will use). Omit it and you get exactly one page, which is what this action has always done. A large max_results is a BEST EFFORT, not a guarantee: Newegg mixes marketplace tiles this API cannot key into the grid, so many keywords yield well under 36 usable rows per page — measured 2026-08-07, 'ssd' and 'monitor' reached 301 and 283, while narrower keywords stop earlier. When fewer rows come back than you asked for, `meta.incomplete` is true, so a short list never looks like the whole catalogue. Above 300 the value is clamped, not rejected.","on_invalid":"ignore","default":36,"example":100,"minimum":1,"maximum":300,"aliases":["limit","max"]},{"name":"page","type":"integer","required":false,"description":"Result page to start from (1-based, 36 products per page). MAXIMUM 100 — Newegg's own keyword search stops there. Measured 2026-08-07 on 'laptop' (46,230 matches): pages 97-100 are all different, and 102/150/200/300/500 are byte-identical to page 100, so past 100 Newegg silently re-serves page 100. A higher value is clamped to 100 instead of pretending it worked. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Newegg mixes paid placements into its keyword-search grid. By default they are returned in their real grid position and marked `sponsored: true` so you can tell them apart. Set to false to return organic results only. Measured 2026-08-07 across 9 keyword searches: Newegg serves a fixed 36-product organic page and injects 0-8 paid tiles on top of it (mean 5.4/page), so this flag really does remove rows. Category listings carry none, which is why the flag is published on the keyword actions only.","on_invalid":"ignore","default":true,"aliases":["sponsored"]},{"name":"sort","type":"enum","required":false,"description":"Sort order: 0=Featured, 1=Lowest Price, 2=Highest Price, 3=Best Selling, 4=Best Rating, 5=Most Reviews.","on_invalid":"ignore","allowed_values":[{"value":"0","label":"Featured Items"},{"value":"1","label":"Lowest Price"},{"value":"2","label":"Highest Price"},{"value":"3","label":"Best Selling"},{"value":"4","label":"Best Rating"},{"value":"5","label":"Most Reviews"}],"default":"0","example":"1"},{"name":"n_value","type":"string","required":false,"description":"Newegg 'N' facet filter value (from the filters action) — e.g. a brand or attribute facet. Combine space-separated for multiple facets.","on_invalid":"reject"},{"name":"min_price","type":"number","required":false,"description":"Minimum price (USD).","on_invalid":"ignore","example":50},{"name":"max_price","type":"number","required":false,"description":"Maximum price (USD).","on_invalid":"ignore","example":500}],"returns":"results[] (item_id, sponsored, title, brand, price, list_price, rating, review_count, weight, image, url, availability, in_stock), page, total, has_more, next_page, plus meta{sponsored_count, include_sponsored, requested_max}. sponsored is true when Newegg was paid for that grid position (organic rows are false, never null) — pass include_sponsored=false to drop them. Stock vocabulary (identical on every action): availability is the string \"in_stock\" | \"out_of_stock\" | null (null = Newegg publishes no stock signal for that row), and in_stock is the matching boolean true | false | null — the two always agree. weight is the shipping weight in pounds from the listing grid (null when the merchant left it unset); it usually matches the product action's weight but not always — 10 of 14 sampled items agreed — so use the product action when the exact number matters. item_id is Newegg's native N82E… code, returned verbatim.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":1,"per":36,"min":1},"example_params":{"query":"ssd"}},{"name":"price","description":"Live price and stock for ONE item — the cheap way to refresh products you already hold, without paying for the whole product page","required_params":[],"optional_params":["item_id","url"],"params":[{"name":"item_id","type":"string","required":false,"description":"Newegg item id (the N82E... code in a /p/ URL).","on_invalid":"reject","example":"N82E16820156412"},{"name":"url","type":"string","required":false,"description":"Full Newegg product URL (overrides item_id when both are given).","on_invalid":"reject"}],"returns":"item_id, price, list_price, currency, in_stock, stock_flag, shipping_charge, seller (item_id or url required). Reads the same ~9KB module newegg.com's own product page calls for live pricing, against ~394KB for `product` — roughly 40x cheaper, so a daily price/stock refresh costs a fraction of a re-fetch. `in_stock` is Newegg's own boolean: a sold-out item returns false with its price still present, never a guess.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"item_id":"N82E16820156412"}},{"name":"product","description":"Full product detail by item_id or url — price, list price, promotion, brand, model, MPN, GTIN/UPC barcode, shipping weight and package dimensions, specifications, bullets, images, rating, stock, and marketplace seller","required_params":[],"optional_params":["item_id","url"],"params":[{"name":"item_id","type":"string","required":false,"description":"Newegg item id (the N82E... code in a /p/ URL).","on_invalid":"reject","example":"N82E16820156412"},{"name":"url","type":"string","required":false,"description":"Full Newegg product URL (overrides item_id when both are given).","on_invalid":"reject"}],"returns":"product{} — item_id (Newegg's native N82E… code, verbatim), title, brand, price, list_price, promotion, seller, specifications[], bullets[], images[], rating{average, review_count}, model, mpn, gtin, weight, weight_unit, dimensions{length, width, height, unit}, availability, in_stock (item_id or url required). gtin is the retail barcode as a digit string (UPC-A 12 digits / EAN-13 13 digits), null when the product has no barcode on Newegg — gift cards and software downloads. It is check-digit validated, so a merchant's internal id in that field is rejected rather than returned as a barcode. weight is the product page's shipping weight in pounds and dimensions are the shipping-package size in inches (both null when the merchant left them unset); together they are what a shipping-rate quote needs. Note that items which never physically ship — gift cards and software downloads — carry Newegg's placeholder of 1 lb and 1 x 1 x 1 in (a 0.01 variant on some), so treat a 1/1x1x1 row as 'not a shipped item' rather than a real parcel. Stock vocabulary (identical on every action): availability is \"in_stock\" | \"out_of_stock\" | null and in_stock is the matching boolean true | false | null.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"item_id":"N82E16820156412"}},{"name":"reviews","description":"Customer reviews for a Newegg product — fully paginated through ALL reviews (20/page) with rating filter and sort, plus a rating distribution summary. Returns rating, title, body, pros/cons, author, verified-purchase, helpful votes, media, and merchant replies","required_params":["item_id"],"optional_params":["page","rating","sort","url"],"params":[{"name":"item_id","type":"string","required":true,"description":"Newegg item id (the N82E... code in a /p/ URL).","on_invalid":"reject","example":"N82E16820156412"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"rating","type":"integer","required":false,"description":"Filter to a single star rating (1-5). Omit for all.","on_invalid":"ignore","example":5,"minimum":1,"maximum":5},{"name":"sort","type":"enum","required":false,"description":"Review sort: 1=Most Recent, 2=Most Helpful, 3=Highest Rating, 4=Lowest Rating.","on_invalid":"ignore","allowed_values":[{"value":"1","label":"Most Recent"},{"value":"2","label":"Most Helpful"},{"value":"3","label":"Highest Rating"},{"value":"4","label":"Lowest Rating"}],"default":"1","example":"1"},{"name":"url","type":"string","required":false,"description":"Full Newegg product URL (overrides item_id when both are given).","on_invalid":"reject"}],"returns":"reviews[] (rating, title, text, pros, cons, author, verified_purchase, helpful_votes, media), rating_summary{total_count, average_rating, rating_distribution}, page, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"item_id":"N82E16820156412"}},{"name":"best_sellers","description":"Top best-selling products for a keyword or category (Newegg's Best Selling sort), paginated. Same `max_results` (up to 300, 36/page) and `include_sponsored` controls as the search action","required_params":[],"optional_params":["query","n_value","subcategory_id","subcategory_slug","max_results","page","min_price","max_price","include_sponsored"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to rank by best-sellers. Omit it and pass `n_value` instead to browse a whole category as a listing.","on_invalid":"reject","example":"gpu"},{"name":"n_value","type":"string","required":false,"description":"Newegg category node id — the `N=` value from a newegg.com category URL, also returned by `categories` and `category_tree`. Give this INSTEAD of `query` for a query-less best-seller listing (newegg.com has no site-wide grid: its own `/p/pl` with no node is a 404, so a node is required rather than optional).","on_invalid":"reject","example":"100006740"},{"name":"max_results","type":"integer","required":false,"description":"How many products to return. MAXIMUM 300 — the published ceiling, so there is nothing to probe for. Newegg serves 36 organic products per page, so asking for more than that fetches further pages automatically (up to 14 of them, ~1 MB each — ask for what you will use). Omit it and you get exactly one page, which is what this action has always done. A large max_results is a BEST EFFORT, not a guarantee: Newegg mixes marketplace tiles this API cannot key into the grid, so many keywords yield well under 36 usable rows per page — measured 2026-08-07, 'ssd' and 'monitor' reached 301 and 283, while narrower keywords stop earlier. When fewer rows come back than you asked for, `meta.incomplete` is true, so a short list never looks like the whole catalogue. Above 300 the value is clamped, not rejected.","on_invalid":"ignore","default":36,"example":100,"minimum":1,"maximum":300,"aliases":["limit","max"]},{"name":"page","type":"integer","required":false,"description":"Result page to start from (1-based, 36 products per page). MAXIMUM 100 — Newegg's own keyword search stops there. Measured 2026-08-07 on 'laptop' (46,230 matches): pages 97-100 are all different, and 102/150/200/300/500 are byte-identical to page 100, so past 100 Newegg silently re-serves page 100. A higher value is clamped to 100 instead of pretending it worked. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Newegg mixes paid placements into its keyword-search grid. By default they are returned in their real grid position and marked `sponsored: true` so you can tell them apart. Set to false to return organic results only. Measured 2026-08-07 across 9 keyword searches: Newegg serves a fixed 36-product organic page and injects 0-8 paid tiles on top of it (mean 5.4/page), so this flag really does remove rows. Category listings carry none, which is why the flag is published on the keyword actions only.","on_invalid":"ignore","default":true,"aliases":["sponsored"]},{"name":"min_price","type":"number","required":false,"description":"Minimum price (USD).","on_invalid":"ignore"},{"name":"max_price","type":"number","required":false,"description":"Maximum price (USD).","on_invalid":"ignore"}],"returns":"results[] best-selling products (item_id, sponsored, title, brand, price, rating, review_count, weight, url, availability, in_stock), page, total, has_more, next_page. Same row shape and same stock vocabulary as the search action: availability is \"in_stock\" | \"out_of_stock\" | null with in_stock as the matching boolean; weight is the shipping weight in pounds.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":1,"per":36,"min":1},"example_params":{}},{"name":"qna","description":"product Q&A questions and answers from PDP initial state","required_params":["item_id"],"optional_params":["url"],"params":[{"name":"item_id","type":"string","required":true,"description":"Newegg item id (the N82E... code in a /p/ URL).","on_invalid":"reject","example":"N82E16820156412"},{"name":"url","type":"string","required":false,"description":"Full Newegg product URL (overrides item_id when both are given).","on_invalid":"reject"}],"returns":"questions[] {question, author, answers[], answer_count, upvotes}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"item_id":"N82E16820156412"}},{"name":"category","description":"Browse a Newegg subcategory's product listing by subcategory_id, paginated. The slug is auto-resolved when omitted (pass subcategory_slug from category_tree to skip the lookup)","required_params":["subcategory_id"],"optional_params":["subcategory_slug","page"],"params":[{"name":"subcategory_id","type":"string","required":true,"description":"Newegg subcategory id (from the category_tree action).","on_invalid":"reject","example":"343"},{"name":"subcategory_slug","type":"string","required":false,"description":"Category slug from category_tree (e.g. 'Desktop-Memory'). Optional — auto-resolved from the id when omitted.","on_invalid":"reject","example":"Desktop-CPU-Processor"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"results[] listing cards (same row shape as search: item_id, sponsored, title, brand, price, rating, review_count, weight, url, availability, in_stock), subcategory_id, subcategory_slug, page, total, has_more, next_page. `sponsored` is false on every row here — Newegg sells placements on keyword search, not on category listings (measured: 0 paid tiles over 10 category pages / 358 products), which is why this action has no include_sponsored flag. Stock vocabulary: availability is \"in_stock\" | \"out_of_stock\" | null with in_stock as the matching boolean.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"browse","description":"Alias of the category action — browse a subcategory's product listing, paginated","required_params":["subcategory_id"],"optional_params":["subcategory_slug","page"],"params":[{"name":"subcategory_id","type":"string","required":true,"description":"Newegg subcategory id (alias of the category action).","on_invalid":"reject","example":"343"},{"name":"subcategory_slug","type":"string","required":false,"description":"Category slug from category_tree (optional).","on_invalid":"reject"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"results[] listing cards (same as category, including availability | in_stock and weight in pounds), page, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"deals","description":"Shell Shocker daily deal items","required_params":[],"optional_params":["page"],"params":[{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"results[] today's Shell Shocker deal items (title, price, url)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"categories","description":"top-level store/category nodes from homepage RolloverMenu","required_params":[],"optional_params":[],"params":[],"returns":"categories[] {store_id, name, store_type, url} top-level stores","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"filters","description":"search facets, department navigation, and sort options for a query","required_params":["query"],"optional_params":["page"],"params":[{"name":"query","type":"string","required":true,"description":"Keyword to get facets/sort options for.","on_invalid":"reject","example":"ssd"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"facets[], navigation[], sort_options[] {value, name}, total_products","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"ssd"}},{"name":"similar","description":"related product cards from a product detail page","required_params":["item_id"],"optional_params":["url","limit"],"params":[{"name":"item_id","type":"string","required":true,"description":"Newegg item id (the N82E... code in a /p/ URL).","on_invalid":"reject","example":"N82E16820156412"},{"name":"url","type":"string","required":false,"description":"Full Newegg product URL (overrides item_id when both are given).","on_invalid":"reject"},{"name":"limit","type":"integer","required":false,"description":"Max related items (1-36, default 12).","on_invalid":"ignore","default":12,"example":12,"minimum":1,"maximum":36}],"returns":"results[] related products (item_id, product_number, title, brand, price, rating, review_count, weight, image, url, availability, in_stock, source). Stock vocabulary: availability is \"in_stock\" | \"out_of_stock\" | null with in_stock as the matching boolean; weight is the shipping weight in pounds.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"item_id":"N82E16820156412"}},{"name":"category_tree","description":"nested category navigation tree from a Newegg store landing page","required_params":[],"optional_params":["store_id","store_slug"],"params":[{"name":"store_id","type":"integer","required":false,"description":"Newegg store id (default 1; from the categories action).","on_invalid":"ignore","default":1,"example":1},{"name":"store_slug","type":"string","required":false,"description":"Optional store slug for the landing page.","on_invalid":"reject"}],"returns":"tree[] nested category nodes {name, store_id, subcategory_id, subcategory_slug, url}, store_id","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"variants","description":"Product family/variant options from the PDP — size/capacity/colour family members, package bundles, and any combo-deal promotion","required_params":["item_id"],"optional_params":["url"],"params":[{"name":"item_id","type":"string","required":true,"description":"Newegg item id (the N82E... code in a /p/ URL).","on_invalid":"reject","example":"N82E16820156412"},{"name":"url","type":"string","required":false,"description":"Full Newegg product URL (overrides item_id when both are given).","on_invalid":"reject"}],"returns":"variants[] {product_number, parent_item, title, price, availability, in_stock, bullets, type} + combo_deal{} when present. Stock vocabulary: availability is \"in_stock\" | \"out_of_stock\" | null with in_stock as the matching boolean.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"item_id":"N82E16820156412"}}]},{"name":"news-article","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Article Extraction API — extract a clean, readable article from any news or blog URL, plus news search","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/news-article/v1","spec_available":true,"actions":[{"name":"extract","description":"Extract a clean article from any news or blog URL: returns title, full text, author, publication date, top image, all images, language, site name, and canonical URL. Automatically follows Google News and Bing News redirect links to the original publisher page.","required_params":["url"],"optional_params":["render","include_markdown"],"params":[{"name":"url","type":"string","required":true,"description":"Article URL to extract. Google-News / Bing-News redirect URLs are auto-resolved to the real publisher URL first.","on_invalid":"reject","example":"https://en.wikipedia.org/wiki/Web_scraping"},{"name":"render","type":"enum","required":false,"description":"Browser-render policy. NOTE: this image ships without a browser, so render is a graceful no-op (meta.rendered=false); recon proved it recovers ~0.","on_invalid":"ignore","allowed_values":[{"value":"auto","label":"Render only if the bare fetch looks JS-hydrated (default)"},{"value":"never","label":"Never render — bare curl only"},{"value":"force","label":"Always render with a browser"}],"default":"auto","example":"auto"},{"name":"include_markdown","type":"boolean","required":false,"description":"Also return the article body as Markdown (default true).","on_invalid":"ignore","default":true,"example":true}],"returns":"article{} — title, text, author, date, top_image, images[], language, site_name, canonical (+ markdown if include_markdown); meta.rendered/resolved_from","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://en.wikipedia.org/wiki/Web_scraping"}},{"name":"news_search","description":"recent-news list from source=google|bing|gdelt|rss|all (unified schema title/url/source/published/lang); resolve=true → Google-News URLs become real publisher URLs","required_params":[],"optional_params":["query","source","lang","country","limit","rss_url","resolve"],"params":[{"name":"query","type":"string","required":false,"description":"Search keywords. Required for source=google|bing|gdelt|all (not for source=rss).","on_invalid":"reject","example":"artificial intelligence"},{"name":"source","type":"enum","required":false,"description":"News backend. Unknown values are rejected. source=rss requires rss_url.","on_invalid":"reject","allowed_values":[{"value":"google","label":"Google News RSS (default)"},{"value":"bing","label":"Bing News"},{"value":"gdelt","label":"GDELT"},{"value":"rss","label":"A custom RSS feed (needs rss_url)"},{"value":"all","label":"Merge all sources"}],"default":"google","example":"google"},{"name":"lang","type":"string","required":false,"description":"UI/content language hint (e.g. en, tr, de). Default en.","on_invalid":"reject","default":"en","example":"en"},{"name":"country","type":"string","required":false,"description":"Edition country, ISO 3166 alpha-2 (e.g. US, GB, TR). Default US.","on_invalid":"reject","default":"US","example":"US"},{"name":"limit","type":"integer","required":false,"description":"Max results (1-100, default 20); clamped.","on_invalid":"ignore","default":20,"example":10,"minimum":1,"maximum":100},{"name":"rss_url","type":"string","required":false,"description":"Custom RSS/Atom feed URL — required when source=rss.","on_invalid":"reject","example":"https://feeds.bbci.co.uk/news/rss.xml","aliases":["feed_url"]},{"name":"resolve","type":"boolean","required":false,"description":"If true, resolve Google-News result URLs to the real publisher URL (extra requests).","on_invalid":"ignore","default":false,"example":true}],"returns":"results[] (title, url, source, published, lang), count; meta.sources/resolved/errors/stop_reason","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"artificial intelligence","limit":10}}]},{"name":"news-intel","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"News Intelligence API — global real-time news and event search across GDELT (100k+ sources, 65+ languages), Google News and Hacker News, de-duplicated into one article schema: search, timeline, trending and top headlines","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/news-intel/v1","spec_available":true,"actions":[{"name":"search","description":"Global news search across GDELT (+ optionally merged Google-News-RSS), de-duplicated into one unified article shape. The core 'what's the news on X' call. Filter by timespan/language/country/sort; each article carries title, url, source_domain, published_at, language, snippet, image, duplicate_count, also_reported_by[].","required_params":["query"],"optional_params":["timespan","start","end","language","country","sort","max","merge_google_news","dedup","similarity"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search across global news. GDELT operators are passed through (e.g. 'tesla OR ford', '\"exact phrase\"', 'domainis:bbc.com', 'sourcelang:spanish', 'theme:TERROR'). Case-insensitive.","on_invalid":"reject","example":"artificial intelligence","aliases":["q","keyword","keywords"]},{"name":"timespan","type":"string","required":false,"description":"How far back to search (GDELT timespan). Accepts Nh/Nd/Nw/Nm or minute forms like '30min'. Note GDELT covers ~last 3 months; default 1d.","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"Last hour"},{"value":"12h","label":"Last 12 hours"},{"value":"1d","label":"Last 24h (default)"},{"value":"3d","label":"Last 3 days"},{"value":"1w","label":"Last week"},{"value":"2w","label":"Last 2 weeks"},{"value":"1m","label":"Last month"}],"default":"1d","example":"1w","aliases":["period"]},{"name":"start","type":"string","required":false,"description":"Absolute window START (GDELT startdatetime). Accepts YYYYMMDD, YYYYMMDDHHMMSS, or ISO (2026-06-01 / 2026-06-01T12:00:00Z). When start AND/OR end are given they OVERRIDE the relative timespan. GDELT covers ~the last 3 months.","on_invalid":"ignore","example":"2026-06-01","aliases":["startdatetime","start_date"]},{"name":"end","type":"string","required":false,"description":"Absolute window END (GDELT enddatetime). Same formats as start. Omit for 'up to now'. Use with start for an exact date range instead of timespan.","on_invalid":"ignore","example":"2026-06-05","aliases":["enddatetime","end_date"]},{"name":"language","type":"string","required":false,"description":"Restrict to a source language (2-letter code → GDELT sourcelang). GDELT indexes 65+ languages; common ones listed. Omit for all languages.","on_invalid":"ignore","allowed_values":[{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"pt","label":"Portuguese"},{"value":"it","label":"Italian"},{"value":"ru","label":"Russian"},{"value":"ar","label":"Arabic"},{"value":"zh","label":"Chinese"},{"value":"ja","label":"Japanese"},{"value":"tr","label":"Turkish"},{"value":"hi","label":"Hindi"}],"example":"en","aliases":["lang"]},{"name":"country","type":"string","required":false,"description":"Restrict to a source country (GDELT FIPS country code, e.g. US, UK, FR, IN, BR). Omit for global. For top_headlines this is the Google-News edition.","on_invalid":"ignore","example":"US","aliases":["source_country"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering (GDELT sort). Ranking is GDELT's own — we add no AI re-rank.","on_invalid":"ignore","allowed_values":[{"value":"datedesc","label":"Newest first (default)"},{"value":"dateasc","label":"Oldest first"},{"value":"hybridrel","label":"Relevance + recency blend"},{"value":"tonedesc","label":"Most positive tone first"},{"value":"toneasc","label":"Most negative tone first"}],"default":"datedesc","example":"hybridrel","aliases":["sort_by","order"]},{"name":"max","type":"integer","required":false,"description":"Max articles to fetch per source before de-dup (1-250, default 50). Larger values are clamped to 250 (GDELT ceiling).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250,"aliases":["maxrecords","limit","max_records"]},{"name":"merge_google_news","type":"boolean","required":false,"description":"Also fetch Google-News-RSS for this query and merge+de-dup with GDELT (near-live coverage). Default true. Set false for GDELT-only.","on_invalid":"ignore","default":true,"example":true,"aliases":["merge_rss","include_rss"]},{"name":"dedup","type":"boolean","required":false,"description":"Collapse the same story from many outlets (exact-url + host+path + near-duplicate title clustering). Default true. Survivors carry duplicate_count + also_reported_by[]. Set false for the raw firehose.","on_invalid":"ignore","default":true,"example":true},{"name":"similarity","type":"number","required":false,"description":"Title near-duplicate threshold for clustering (stemmed token-set Jaccard, 0.3-1.0). Higher = stricter (fewer merges). Default 0.6 — tuned for precision 1.0 + max recall (notes/dedup_quality.json).","on_invalid":"ignore","default":0.6,"example":0.6,"minimum":0.3,"maximum":1.0}],"returns":"articles[] (title, url, source_domain, source_country, published_at, language, snippet, image, source, duplicate_count, also_reported_by[]), total_before_dedup, removed_duplicates, sources_used[], date_range?, freshness","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"OpenAI","timespan":"2d","max":40}},{"name":"timeline","description":"How much is X in the news over time — GDELT volume-over-time (timelinevol) for a query as [{date, value}], with peak detection (max point + average + latest). SLOW BY NATURE: the analytics index behind this endpoint currently answers in about 20-25 seconds and refuses a large share of connections, so expect a ~20-25s call and an occasional honest 'source did not answer' rather than a sub-second reply. If the source misses, a reading up to 30 minutes old may be returned instead, always labelled with stale_age_seconds. For fast news use search / top_headlines / by_source (~1s).","required_params":["query"],"optional_params":["timespan","start","end","language","country"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search across global news. GDELT operators are passed through (e.g. 'tesla OR ford', '\"exact phrase\"', 'domainis:bbc.com', 'sourcelang:spanish', 'theme:TERROR'). Case-insensitive.","on_invalid":"reject","example":"artificial intelligence","aliases":["q","keyword","keywords"]},{"name":"timespan","type":"string","required":false,"description":"How far back to search (GDELT timespan). Accepts Nh/Nd/Nw/Nm or minute forms like '30min'. Note GDELT covers ~last 3 months; default 1d.","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"Last hour"},{"value":"12h","label":"Last 12 hours"},{"value":"1d","label":"Last 24h (default)"},{"value":"3d","label":"Last 3 days"},{"value":"1w","label":"Last week"},{"value":"2w","label":"Last 2 weeks"},{"value":"1m","label":"Last month"}],"default":"1d","example":"1w","aliases":["period"]},{"name":"start","type":"string","required":false,"description":"Absolute window START (GDELT startdatetime). Accepts YYYYMMDD, YYYYMMDDHHMMSS, or ISO (2026-06-01 / 2026-06-01T12:00:00Z). When start AND/OR end are given they OVERRIDE the relative timespan. GDELT covers ~the last 3 months.","on_invalid":"ignore","example":"2026-06-01","aliases":["startdatetime","start_date"]},{"name":"end","type":"string","required":false,"description":"Absolute window END (GDELT enddatetime). Same formats as start. Omit for 'up to now'. Use with start for an exact date range instead of timespan.","on_invalid":"ignore","example":"2026-06-05","aliases":["enddatetime","end_date"]},{"name":"language","type":"string","required":false,"description":"Restrict to a source language (2-letter code → GDELT sourcelang). GDELT indexes 65+ languages; common ones listed. Omit for all languages.","on_invalid":"ignore","allowed_values":[{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"pt","label":"Portuguese"},{"value":"it","label":"Italian"},{"value":"ru","label":"Russian"},{"value":"ar","label":"Arabic"},{"value":"zh","label":"Chinese"},{"value":"ja","label":"Japanese"},{"value":"tr","label":"Turkish"},{"value":"hi","label":"Hindi"}],"example":"en","aliases":["lang"]},{"name":"country","type":"string","required":false,"description":"Restrict to a source country (GDELT FIPS country code, e.g. US, UK, FR, IN, BR). Omit for global. For top_headlines this is the Google-News edition.","on_invalid":"ignore","example":"US","aliases":["source_country"]}],"returns":"series[] (date, value), peak{date,value}, average, latest, point_count, date_range?, query","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"earthquake","timespan":"1w"}},{"name":"sentiment","description":"Sentiment / tone analysis for a query — GDELT tonechart gives the distribution of article tone (how positive/negative coverage is) as a histogram, a count-weighted average tone, a positive/neutral/negative breakdown, and the single most-positive and most-negative representative article. Answers 'how is X being covered — favorably or critically?'. (alias: tone) SLOW BY NATURE: the analytics index behind this endpoint currently answers in about 20-25 seconds and refuses a large share of connections, so expect a ~20-25s call and an occasional honest 'source did not answer' rather than a sub-second reply. If the source misses, a reading up to 30 minutes old may be returned instead, always labelled with stale_age_seconds. For fast news use search / top_headlines / by_source (~1s).","required_params":["query"],"optional_params":["timespan","start","end","language","country"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search across global news. GDELT operators are passed through (e.g. 'tesla OR ford', '\"exact phrase\"', 'domainis:bbc.com', 'sourcelang:spanish', 'theme:TERROR'). Case-insensitive.","on_invalid":"reject","example":"artificial intelligence","aliases":["q","keyword","keywords"]},{"name":"timespan","type":"string","required":false,"description":"How far back to search (GDELT timespan). Accepts Nh/Nd/Nw/Nm or minute forms like '30min'. Note GDELT covers ~last 3 months; default 1d.","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"Last hour"},{"value":"12h","label":"Last 12 hours"},{"value":"1d","label":"Last 24h (default)"},{"value":"3d","label":"Last 3 days"},{"value":"1w","label":"Last week"},{"value":"2w","label":"Last 2 weeks"},{"value":"1m","label":"Last month"}],"default":"1d","example":"1w","aliases":["period"]},{"name":"start","type":"string","required":false,"description":"Absolute window START (GDELT startdatetime). Accepts YYYYMMDD, YYYYMMDDHHMMSS, or ISO (2026-06-01 / 2026-06-01T12:00:00Z). When start AND/OR end are given they OVERRIDE the relative timespan. GDELT covers ~the last 3 months.","on_invalid":"ignore","example":"2026-06-01","aliases":["startdatetime","start_date"]},{"name":"end","type":"string","required":false,"description":"Absolute window END (GDELT enddatetime). Same formats as start. Omit for 'up to now'. Use with start for an exact date range instead of timespan.","on_invalid":"ignore","example":"2026-06-05","aliases":["enddatetime","end_date"]},{"name":"language","type":"string","required":false,"description":"Restrict to a source language (2-letter code → GDELT sourcelang). GDELT indexes 65+ languages; common ones listed. Omit for all languages.","on_invalid":"ignore","allowed_values":[{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"pt","label":"Portuguese"},{"value":"it","label":"Italian"},{"value":"ru","label":"Russian"},{"value":"ar","label":"Arabic"},{"value":"zh","label":"Chinese"},{"value":"ja","label":"Japanese"},{"value":"tr","label":"Turkish"},{"value":"hi","label":"Hindi"}],"example":"en","aliases":["lang"]},{"name":"country","type":"string","required":false,"description":"Restrict to a source country (GDELT FIPS country code, e.g. US, UK, FR, IN, BR). Omit for global. For top_headlines this is the Google-News edition.","on_invalid":"ignore","example":"US","aliases":["source_country"]}],"returns":"average_tone, sentiment (label), total_articles, distribution (positive/neutral/negative count+pct), histogram[] (tone, count), most_positive, most_negative, date_range?, freshness","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"inflation","timespan":"1w"}},{"name":"entities","description":"Top entities for a query — the people/organizations and locations most mentioned in coverage of a topic, ranked by mention count. Organizations/people are mined from article titles; locations come from GDELT's source-country distribution. Metadata-only. Useful for 'who and where is this story about'. SLOW BY NATURE: the analytics index behind this endpoint currently answers in about 20-25 seconds and refuses a large share of connections, so expect a ~20-25s call and an occasional honest 'source did not answer' rather than a sub-second reply. If the source misses, a reading up to 30 minutes old may be returned instead, always labelled with stale_age_seconds. For fast news use search / top_headlines / by_source (~1s).","required_params":["query"],"optional_params":["timespan","start","end","language","country","max"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search across global news. GDELT operators are passed through (e.g. 'tesla OR ford', '\"exact phrase\"', 'domainis:bbc.com', 'sourcelang:spanish', 'theme:TERROR'). Case-insensitive.","on_invalid":"reject","example":"artificial intelligence","aliases":["q","keyword","keywords"]},{"name":"timespan","type":"string","required":false,"description":"How far back to search (GDELT timespan). Accepts Nh/Nd/Nw/Nm or minute forms like '30min'. Note GDELT covers ~last 3 months; default 1d.","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"Last hour"},{"value":"12h","label":"Last 12 hours"},{"value":"1d","label":"Last 24h (default)"},{"value":"3d","label":"Last 3 days"},{"value":"1w","label":"Last week"},{"value":"2w","label":"Last 2 weeks"},{"value":"1m","label":"Last month"}],"default":"1d","example":"1w","aliases":["period"]},{"name":"start","type":"string","required":false,"description":"Absolute window START (GDELT startdatetime). Accepts YYYYMMDD, YYYYMMDDHHMMSS, or ISO (2026-06-01 / 2026-06-01T12:00:00Z). When start AND/OR end are given they OVERRIDE the relative timespan. GDELT covers ~the last 3 months.","on_invalid":"ignore","example":"2026-06-01","aliases":["startdatetime","start_date"]},{"name":"end","type":"string","required":false,"description":"Absolute window END (GDELT enddatetime). Same formats as start. Omit for 'up to now'. Use with start for an exact date range instead of timespan.","on_invalid":"ignore","example":"2026-06-05","aliases":["enddatetime","end_date"]},{"name":"language","type":"string","required":false,"description":"Restrict to a source language (2-letter code → GDELT sourcelang). GDELT indexes 65+ languages; common ones listed. Omit for all languages.","on_invalid":"ignore","allowed_values":[{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"pt","label":"Portuguese"},{"value":"it","label":"Italian"},{"value":"ru","label":"Russian"},{"value":"ar","label":"Arabic"},{"value":"zh","label":"Chinese"},{"value":"ja","label":"Japanese"},{"value":"tr","label":"Turkish"},{"value":"hi","label":"Hindi"}],"example":"en","aliases":["lang"]},{"name":"country","type":"string","required":false,"description":"Restrict to a source country (GDELT FIPS country code, e.g. US, UK, FR, IN, BR). Omit for global. For top_headlines this is the Google-News edition.","on_invalid":"ignore","example":"US","aliases":["source_country"]},{"name":"max","type":"integer","required":false,"description":"Max articles to fetch per source before de-dup (1-250, default 50). Larger values are clamped to 250 (GDELT ceiling).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250,"aliases":["maxrecords","limit","max_records"]}],"returns":"entities[] (name, mentions), locations[] (name, mentions), article_count, date_range?, freshness","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"OpenAI","timespan":"3d"}},{"name":"trending","description":"What's big in the news right now — a curated multi-bucket roll-up (breaking/world/tech/business/politics/science by default, or your own queries) ranked by recent volume, each with a few representative headlines. SLOW BY NATURE: the analytics index behind this endpoint currently answers in about 20-25 seconds and refuses a large share of connections, so expect a ~20-25s call and an occasional honest 'source did not answer' rather than a sub-second reply. If the source misses, a reading up to 30 minutes old may be returned instead, always labelled with stale_age_seconds. For fast news use search / top_headlines / by_source (~1s). PARTIAL BY DESIGN: each bucket is fetched independently, so a call can return fewer topics than requested; meta.bucket_errors names the ones that missed, and a repeat call fills them in (buckets already fetched are reused).","required_params":[],"optional_params":["queries","timespan","language","country","max"],"params":[{"name":"queries","type":"array","required":false,"description":"Optional custom topic buckets (JSON array or comma string, ≤10). Omit to use the default world roll-up (breaking/world/tech/business/politics/science).","on_invalid":"ignore","example":["technology","world","business"],"aliases":["topics","terms"]},{"name":"timespan","type":"string","required":false,"description":"How far back to search (GDELT timespan). Accepts Nh/Nd/Nw/Nm or minute forms like '30min'. Note GDELT covers ~last 3 months; default 1d.","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"Last hour"},{"value":"12h","label":"Last 12 hours"},{"value":"1d","label":"Last 24h (default)"},{"value":"3d","label":"Last 3 days"},{"value":"1w","label":"Last week"},{"value":"2w","label":"Last 2 weeks"},{"value":"1m","label":"Last month"}],"default":"1d","example":"1w","aliases":["period"]},{"name":"language","type":"string","required":false,"description":"Restrict to a source language (2-letter code → GDELT sourcelang). GDELT indexes 65+ languages; common ones listed. Omit for all languages.","on_invalid":"ignore","allowed_values":[{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"pt","label":"Portuguese"},{"value":"it","label":"Italian"},{"value":"ru","label":"Russian"},{"value":"ar","label":"Arabic"},{"value":"zh","label":"Chinese"},{"value":"ja","label":"Japanese"},{"value":"tr","label":"Turkish"},{"value":"hi","label":"Hindi"}],"example":"en","aliases":["lang"]},{"name":"country","type":"string","required":false,"description":"Restrict to a source country (GDELT FIPS country code, e.g. US, UK, FR, IN, BR). Omit for global. For top_headlines this is the Google-News edition.","on_invalid":"ignore","example":"US","aliases":["source_country"]},{"name":"max","type":"integer","required":false,"description":"Max articles to fetch per source before de-dup (1-250, default 50). Larger values are clamped to 250 (GDELT ceiling).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250,"aliases":["maxrecords","limit","max_records"]}],"returns":"topics[] (topic, volume, sample_headlines[] (title, url, source_domain, published_at)), ranked_by, timespan, freshness","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"timespan":"1d"}},{"name":"top_headlines","description":"Editor-curated top headlines by Google-News topic section (WORLD/BUSINESS/TECHNOLOGY/…) and/or country edition. De-duplicated. The 'front page' call.","required_params":[],"optional_params":["topic","country","max","dedup"],"params":[{"name":"topic","type":"enum","required":false,"description":"Google-News topic section for top_headlines. Hard enum (the section feeds are a fixed set). Combine with country for a localized edition.","on_invalid":"reject","allowed_values":[{"value":"WORLD","label":"World"},{"value":"NATION","label":"National / top US"},{"value":"BUSINESS","label":"Business"},{"value":"TECHNOLOGY","label":"Technology"},{"value":"ENTERTAINMENT","label":"Entertainment"},{"value":"SPORTS","label":"Sports"},{"value":"SCIENCE","label":"Science"},{"value":"HEALTH","label":"Health"}],"example":"TECHNOLOGY","aliases":["section","category"]},{"name":"country","type":"string","required":false,"description":"Restrict to a source country (GDELT FIPS country code, e.g. US, UK, FR, IN, BR). Omit for global. For top_headlines this is the Google-News edition.","on_invalid":"ignore","example":"US","aliases":["source_country"]},{"name":"max","type":"integer","required":false,"description":"Max articles to fetch per source before de-dup (1-250, default 50). Larger values are clamped to 250 (GDELT ceiling).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250,"aliases":["maxrecords","limit","max_records"]},{"name":"dedup","type":"boolean","required":false,"description":"Collapse the same story from many outlets (exact-url + host+path + near-duplicate title clustering). Default true. Survivors carry duplicate_count + also_reported_by[]. Set false for the raw firehose.","on_invalid":"ignore","default":true,"example":true}],"returns":"articles[] (unified shape), topic, country, count, removed_duplicates, freshness","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"topic":"TECHNOLOGY"}},{"name":"by_source","description":"Recent articles from a specific publisher domain (reuters.com, bbc.com, …). Google-News site:<domain> is the reliable primary (near-live, ~100% on-source); GDELT domain:<domain> enriches with direct publisher URLs + tone when its 5s window is free (skipped silently otherwise — never blocks). Source-exact. merge_google_news=false → GDELT-only exact.","required_params":["source"],"optional_params":["query","timespan","language","sort","max","merge_google_news","dedup"],"params":[{"name":"source","type":"string","required":true,"description":"A publisher domain (e.g. reuters.com, bbc.com, nytimes.com), full URL, or host. Returns that outlet's recent articles — Google-News `site:` primary (reliable, near-live) + GDELT enrichment when available. Any domain works.","on_invalid":"reject","example":"bbc.com","aliases":["domain","site"]},{"name":"query","type":"string","required":false,"description":"Free-text search across global news. GDELT operators are passed through (e.g. 'tesla OR ford', '\"exact phrase\"', 'domainis:bbc.com', 'sourcelang:spanish', 'theme:TERROR'). Case-insensitive.","on_invalid":"reject","example":"artificial intelligence","aliases":["q","keyword","keywords"]},{"name":"timespan","type":"string","required":false,"description":"How far back to search (GDELT timespan). Accepts Nh/Nd/Nw/Nm or minute forms like '30min'. Note GDELT covers ~last 3 months; default 1d.","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"Last hour"},{"value":"12h","label":"Last 12 hours"},{"value":"1d","label":"Last 24h (default)"},{"value":"3d","label":"Last 3 days"},{"value":"1w","label":"Last week"},{"value":"2w","label":"Last 2 weeks"},{"value":"1m","label":"Last month"}],"default":"1d","example":"1w","aliases":["period"]},{"name":"language","type":"string","required":false,"description":"Restrict to a source language (2-letter code → GDELT sourcelang). GDELT indexes 65+ languages; common ones listed. Omit for all languages.","on_invalid":"ignore","allowed_values":[{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"pt","label":"Portuguese"},{"value":"it","label":"Italian"},{"value":"ru","label":"Russian"},{"value":"ar","label":"Arabic"},{"value":"zh","label":"Chinese"},{"value":"ja","label":"Japanese"},{"value":"tr","label":"Turkish"},{"value":"hi","label":"Hindi"}],"example":"en","aliases":["lang"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering (GDELT sort). Ranking is GDELT's own — we add no AI re-rank.","on_invalid":"ignore","allowed_values":[{"value":"datedesc","label":"Newest first (default)"},{"value":"dateasc","label":"Oldest first"},{"value":"hybridrel","label":"Relevance + recency blend"},{"value":"tonedesc","label":"Most positive tone first"},{"value":"toneasc","label":"Most negative tone first"}],"default":"datedesc","example":"hybridrel","aliases":["sort_by","order"]},{"name":"max","type":"integer","required":false,"description":"Max articles to fetch per source before de-dup (1-250, default 50). Larger values are clamped to 250 (GDELT ceiling).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250,"aliases":["maxrecords","limit","max_records"]},{"name":"merge_google_news","type":"boolean","required":false,"description":"Also fetch Google-News-RSS for this query and merge+de-dup with GDELT (near-live coverage). Default true. Set false for GDELT-only.","on_invalid":"ignore","default":true,"example":true,"aliases":["merge_rss","include_rss"]},{"name":"dedup","type":"boolean","required":false,"description":"Collapse the same story from many outlets (exact-url + host+path + near-duplicate title clustering). Default true. Survivors carry duplicate_count + also_reported_by[]. Set false for the raw firehose.","on_invalid":"ignore","default":true,"example":true}],"returns":"articles[] (unified shape), source_domain, count, removed_duplicates, sources_used[], freshness","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"source":"reuters.com","timespan":"3d"}},{"name":"coverage","description":"Full-story coverage — for a story or topic, discover which news outlets are covering it. Returns the most-covered stories first, each expanded to every outlet that carried it (outlet_count + outlets[]). Ideal for media monitoring and PR: see how widely a story was reported and by whom.","required_params":["query"],"optional_params":["timespan","start","end","language","country","max","similarity"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search across global news. GDELT operators are passed through (e.g. 'tesla OR ford', '\"exact phrase\"', 'domainis:bbc.com', 'sourcelang:spanish', 'theme:TERROR'). Case-insensitive.","on_invalid":"reject","example":"artificial intelligence","aliases":["q","keyword","keywords"]},{"name":"timespan","type":"string","required":false,"description":"How far back to search (GDELT timespan). Accepts Nh/Nd/Nw/Nm or minute forms like '30min'. Note GDELT covers ~last 3 months; default 1d.","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"Last hour"},{"value":"12h","label":"Last 12 hours"},{"value":"1d","label":"Last 24h (default)"},{"value":"3d","label":"Last 3 days"},{"value":"1w","label":"Last week"},{"value":"2w","label":"Last 2 weeks"},{"value":"1m","label":"Last month"}],"default":"1d","example":"1w","aliases":["period"]},{"name":"start","type":"string","required":false,"description":"Absolute window START (GDELT startdatetime). Accepts YYYYMMDD, YYYYMMDDHHMMSS, or ISO (2026-06-01 / 2026-06-01T12:00:00Z). When start AND/OR end are given they OVERRIDE the relative timespan. GDELT covers ~the last 3 months.","on_invalid":"ignore","example":"2026-06-01","aliases":["startdatetime","start_date"]},{"name":"end","type":"string","required":false,"description":"Absolute window END (GDELT enddatetime). Same formats as start. Omit for 'up to now'. Use with start for an exact date range instead of timespan.","on_invalid":"ignore","example":"2026-06-05","aliases":["enddatetime","end_date"]},{"name":"language","type":"string","required":false,"description":"Restrict to a source language (2-letter code → GDELT sourcelang). GDELT indexes 65+ languages; common ones listed. Omit for all languages.","on_invalid":"ignore","allowed_values":[{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"pt","label":"Portuguese"},{"value":"it","label":"Italian"},{"value":"ru","label":"Russian"},{"value":"ar","label":"Arabic"},{"value":"zh","label":"Chinese"},{"value":"ja","label":"Japanese"},{"value":"tr","label":"Turkish"},{"value":"hi","label":"Hindi"}],"example":"en","aliases":["lang"]},{"name":"country","type":"string","required":false,"description":"Restrict to a source country (GDELT FIPS country code, e.g. US, UK, FR, IN, BR). Omit for global. For top_headlines this is the Google-News edition.","on_invalid":"ignore","example":"US","aliases":["source_country"]},{"name":"max","type":"integer","required":false,"description":"Max articles to fetch per source before de-dup (1-250, default 50). Larger values are clamped to 250 (GDELT ceiling).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250,"aliases":["maxrecords","limit","max_records"]},{"name":"similarity","type":"number","required":false,"description":"Title near-duplicate threshold for clustering (stemmed token-set Jaccard, 0.3-1.0). Higher = stricter (fewer merges). Default 0.6 — tuned for precision 1.0 + max recall (notes/dedup_quality.json).","on_invalid":"ignore","default":0.6,"example":0.6,"minimum":0.3,"maximum":1.0}],"returns":"stories[] (title, url, source_domain, published_at, snippet, image, outlet_count, outlets[] (source_domain, url, source)), story_count, total_articles, date_range?, freshness","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"OpenAI","timespan":"3d"}},{"name":"sources","description":"Reference directory of supported news outlets, filterable by category (e.g. TECHNOLOGY, SPORTS) and country. Also returns the topic, language and country reference lists accepted by other actions. Note: by_source accepts any publisher domain — this directory is a curated starting set, not a limit.","required_params":[],"optional_params":["category","country"],"params":[{"name":"category","type":"string","required":false,"description":"Optional filter for the sources directory by section (WORLD/BUSINESS/TECHNOLOGY/SPORTS/ENTERTAINMENT/SCIENCE/HEALTH/NATION).","on_invalid":"ignore","example":"TECHNOLOGY","aliases":["topic","section"]},{"name":"country","type":"string","required":false,"description":"Restrict to a source country (GDELT FIPS country code, e.g. US, UK, FR, IN, BR). Omit for global. For top_headlines this is the Google-News edition.","on_invalid":"ignore","example":"US","aliases":["source_country"]}],"returns":"outlets[] (domain, name, category, country), count, topics[], languages[] (code, name), countries[], note","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"tech","description":"Hacker News tech vertical — top/new/best stories, or a full-text Algolia search. Each story: title, url, points, author, num_comments, created_at, hn_url.","required_params":[],"optional_params":["query","list","max"],"params":[{"name":"query","type":"string","required":false,"description":"Optional Hacker News full-text search (Algolia). Omit to get the ranked list selected by `list` (top/new/best).","on_invalid":"reject","example":"rust","aliases":["q","keyword"]},{"name":"list","type":"enum","required":false,"description":"Hacker News story list when no query is given (top/new/best). With a query, Algolia full-text search is used instead.","on_invalid":"ignore","allowed_values":[{"value":"top","label":"Top / front-page stories"},{"value":"new","label":"Newest stories"},{"value":"best","label":"Best stories"}],"default":"top","example":"top","aliases":["kind","feed"]},{"name":"max","type":"integer","required":false,"description":"Max articles to fetch per source before de-dup (1-250, default 50). Larger values are clamped to 250 (GDELT ceiling).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250,"aliases":["maxrecords","limit","max_records"]}],"returns":"articles[] (title, url, source_domain, published_at, snippet, points, author, num_comments, hn_url), mode, count, freshness","cacheable":true,"cache_ttl_seconds":180,"pricing":{"mode":"flat","credits":1},"example_params":{"list":"top","max":20}},{"name":"batch","description":"Run up to 10 search queries in one call (shared concurrency, GDELT 5s-window paced). results[] preserves input order; each is a de-duped search result.","required_params":["queries"],"optional_params":["timespan","language","country","max","merge_google_news","dedup"],"params":[{"name":"queries","type":"array","required":true,"description":"Up to 10 search queries — a JSON array OR a comma/semicolon string. Each is run through `search` (GDELT, de-duped) under one shared call.","on_invalid":"reject","example":["openai","tesla","bitcoin"],"aliases":["q","terms"]},{"name":"timespan","type":"string","required":false,"description":"How far back to search (GDELT timespan). Accepts Nh/Nd/Nw/Nm or minute forms like '30min'. Note GDELT covers ~last 3 months; default 1d.","on_invalid":"ignore","allowed_values":[{"value":"1h","label":"Last hour"},{"value":"12h","label":"Last 12 hours"},{"value":"1d","label":"Last 24h (default)"},{"value":"3d","label":"Last 3 days"},{"value":"1w","label":"Last week"},{"value":"2w","label":"Last 2 weeks"},{"value":"1m","label":"Last month"}],"default":"1d","example":"1w","aliases":["period"]},{"name":"language","type":"string","required":false,"description":"Restrict to a source language (2-letter code → GDELT sourcelang). GDELT indexes 65+ languages; common ones listed. Omit for all languages.","on_invalid":"ignore","allowed_values":[{"value":"en","label":"English"},{"value":"es","label":"Spanish"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"pt","label":"Portuguese"},{"value":"it","label":"Italian"},{"value":"ru","label":"Russian"},{"value":"ar","label":"Arabic"},{"value":"zh","label":"Chinese"},{"value":"ja","label":"Japanese"},{"value":"tr","label":"Turkish"},{"value":"hi","label":"Hindi"}],"example":"en","aliases":["lang"]},{"name":"country","type":"string","required":false,"description":"Restrict to a source country (GDELT FIPS country code, e.g. US, UK, FR, IN, BR). Omit for global. For top_headlines this is the Google-News edition.","on_invalid":"ignore","example":"US","aliases":["source_country"]},{"name":"max","type":"integer","required":false,"description":"Max articles to fetch per source before de-dup (1-250, default 50). Larger values are clamped to 250 (GDELT ceiling).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250,"aliases":["maxrecords","limit","max_records"]},{"name":"merge_google_news","type":"boolean","required":false,"description":"Also fetch Google-News-RSS for this query and merge+de-dup with GDELT (near-live coverage). Default true. Set false for GDELT-only.","on_invalid":"ignore","default":true,"example":true,"aliases":["merge_rss","include_rss"]},{"name":"dedup","type":"boolean","required":false,"description":"Collapse the same story from many outlets (exact-url + host+path + near-duplicate title clustering). Default true. Survivors carry duplicate_count + also_reported_by[]. Set false for the raw firehose.","on_invalid":"ignore","default":true,"example":true}],"returns":"results[] (query, count, articles[], removed_duplicates), query_count, total_articles, freshness","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":{"queries":"openai,tesla,bitcoin","timespan":"2d","max":20}}]},{"name":"nike","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Nike API scraper — nike.com in 42 countries: search and category walls, the full product record with every size's stock level and GTIN, price and discount, colourways, customer reviews and the upcoming SNKRS launch calendar, in each country's currency. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/nike/v1","spec_available":true,"actions":[{"name":"search","description":"Search a Nike storefront by keyword, as nike.com does. One row per product card with its price, full price and discount, colour, badges ('Best Seller', 'Just In', 'Coming Soon'), promotions and every colourway on the card. Sort by newest or price; narrow with filter ids.","required_params":["query"],"optional_params":["country","language","page","page_size","sort","attribute_ids","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper types it on nike.com.","on_invalid":"reject","example":"air max","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Nike storefront. Prices come back in that country's currency and the texts in its language. Stock, prices and launches are per country.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"lu","label":"Luxembourg (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (EUR)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"ro","label":"Romania (RON)"},{"value":"gr","label":"Greece (EUR)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"za","label":"South Africa (ZAR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"cn","label":"China (nike.com.cn) (CNY)"},{"value":"tw","label":"Taiwan (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"th","label":"Thailand (THB)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us"},{"name":"language","type":"string","required":false,"description":"Storefront language where a country has several: us en|es-419, es es-ES|ca, be nl|fr, ch de|fr|it, ca en-GB|fr, jp ja|en, kr ko|en. Default = the storefront's own default. Other countries have one language.","on_invalid":"reject","example":"fr"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"enum","required":false,"description":"Products per page: 24, 50 or 100 — the only sizes Nike's wall accepts.","on_invalid":"reject","allowed_values":[{"value":24,"label":"24 (default)"},{"value":50,"label":"50"},{"value":100,"label":"100"}],"default":24},{"name":"sort","type":"enum","required":false,"description":"Result order — the orderings nike.com offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Nike's own ranking (default)"},{"value":"newest","label":"Newest first"},{"value":"price_asc","label":"Lowest price first (gift cards, price 0, come first)"},{"value":"price_desc","label":"Highest price first"}],"default":"relevance"},{"name":"attribute_ids","type":"array","required":false,"description":"Nike filter ids (gender, colour, sport, brand, size, sale …) from the `filters` action. Several ids narrow together (AND across groups).","on_invalid":"reject","example":["7baf216c-acc6-4452-9e07-39c2ca77ba32"],"aliases":["attribute_id"]},{"name":"include_fallback_results","type":"boolean","required":false,"description":"false (default): when nike.com has no product matching the query and pads the page with unrelated fallback products, results is empty and fallback_results_dropped counts them. true: those products are returned apart, in fallback_results.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_code (style-colour, or a numeric id for Nike By You), style_color, style_code, group_key, title, subtitle, product_type ('footwear'|'apparel'|'equipment'|'stored_value'), product_subtype, color, color_hex, color_description, price (the shelf price), full_price, original_price (set only on sale), discount_percent, on_sale, currency, promotion{id, message ('See Price in Bag' …), ends_at}, badge, badges[], new_until, launch, coming_soon, customizable, base_style_color, gift_card, image, image_portrait, url, global_product_id, merch_product_id, colorways[]{product_code, style_color, color_description, price, full_price, discount_percent, image, url}, colorway_count}, count, total_results, page, page_size, page_count, has_more, country, language, currency, query, sort_applied, attribute_ids, keyword_matches_on_page (cards on this page containing a query word; null for non-Latin queries), fallback_results_dropped, fallback_total (Nike's count of the fallback products, when dropped), fallback_results[] (only with include_fallback_results=true)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"air max"}},{"name":"category","description":"A Nike category wall without a keyword (for example Men + Shoes, or Sale), paged and sortable, with the same rows as search. Category ids come from `filters`.","required_params":["attribute_ids"],"optional_params":["country","language","page","page_size","sort","max_rotations"],"params":[{"name":"attribute_ids","type":"array","required":true,"description":"Nike category/filter ids from the `filters` action (e.g. Shoes + Men). Returns that wall without a keyword.","on_invalid":"reject","example":["16633190-45e5-4830-a068-232ac7aea82c","0f64ecc7-d624-4e91-b171-b83a03dd8550"],"aliases":["attribute_id","category_id"]},{"name":"country","type":"enum","required":false,"description":"Which Nike storefront. Prices come back in that country's currency and the texts in its language. Stock, prices and launches are per country.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"lu","label":"Luxembourg (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (EUR)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"ro","label":"Romania (RON)"},{"value":"gr","label":"Greece (EUR)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"za","label":"South Africa (ZAR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"cn","label":"China (nike.com.cn) (CNY)"},{"value":"tw","label":"Taiwan (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"th","label":"Thailand (THB)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us"},{"name":"language","type":"string","required":false,"description":"Storefront language where a country has several: us en|es-419, es es-ES|ca, be nl|fr, ch de|fr|it, ca en-GB|fr, jp ja|en, kr ko|en. Default = the storefront's own default. Other countries have one language.","on_invalid":"reject","example":"fr"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"enum","required":false,"description":"Products per page: 24, 50 or 100 — the only sizes Nike's wall accepts.","on_invalid":"reject","allowed_values":[{"value":24,"label":"24 (default)"},{"value":50,"label":"50"},{"value":100,"label":"100"}],"default":24},{"name":"sort","type":"enum","required":false,"description":"Result order — the orderings nike.com offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Nike's own ranking (default)"},{"value":"newest","label":"Newest first"},{"value":"price_asc","label":"Lowest price first (gift cards, price 0, come first)"},{"value":"price_desc","label":"Highest price first"}],"default":"relevance"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_code (style-colour, or a numeric id for Nike By You), style_color, style_code, group_key, title, subtitle, product_type ('footwear'|'apparel'|'equipment'|'stored_value'), product_subtype, color, color_hex, color_description, price (the shelf price), full_price, original_price (set only on sale), discount_percent, on_sale, currency, promotion{id, message ('See Price in Bag' …), ends_at}, badge, badges[], new_until, launch, coming_soon, customizable, base_style_color, gift_card, image, image_portrait, url, global_product_id, merch_product_id, colorways[]{product_code, style_color, color_description, price, full_price, discount_percent, image, url}, colorway_count}, count, total_results, page, page_size, page_count, has_more, country, language, currency, sort_applied, attribute_ids","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"filters","description":"The filters nike.com shows for a search (or the whole catalogue) — gender, colour, sport, brand, size, width, best for — and the category links, each with its id and product count. The ids feed `attribute_ids` in search and category.","required_params":[],"optional_params":["query","country","language","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Optional keyword: the filters (with counts) of that search. Without it, the filters of the whole catalogue.","on_invalid":"reject","example":"running shoes","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Nike storefront. Prices come back in that country's currency and the texts in its language. Stock, prices and launches are per country.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"lu","label":"Luxembourg (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (EUR)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"ro","label":"Romania (RON)"},{"value":"gr","label":"Greece (EUR)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"za","label":"South Africa (ZAR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"cn","label":"China (nike.com.cn) (CNY)"},{"value":"tw","label":"Taiwan (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"th","label":"Thailand (THB)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us"},{"name":"language","type":"string","required":false,"description":"Storefront language where a country has several: us en|es-419, es es-ES|ca, be nl|fr, ch de|fr|it, ca en-GB|fr, jp ja|en, kr ko|en. Default = the storefront's own default. Other countries have one language.","on_invalid":"reject","example":"fr"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"filters[]{name, group_id, options[]{name, attribute_id, attribute_ids[], count, selected}}, categories[]{name, attribute_id, attribute_ids[], count}, total_results, query, country, language","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"product/detail","description":"The full Nike product by style-colour or URL: price, full price and discount, every size with its localized label, GTIN and stock level, description and feature sections, all images and videos, colours, launch method and release time, member-exclusive and quantity-limit flags, star rating and review counts, and the other colourways of the style.","required_params":["style_color"],"optional_params":["country","language","include_colorways","include_rating","max_rotations"],"params":[{"name":"style_color","type":"string","required":true,"description":"Nike style-colour code ('DM0032-037', printed on the box and in every product URL, returned as `style_color` by search) or a nike.com product / launch URL. A URL also sets the country and language.","on_invalid":"reject","example":"DM0032-037","aliases":["product_id","id","sku","url"]},{"name":"country","type":"enum","required":false,"description":"Which Nike storefront. Prices come back in that country's currency and the texts in its language. Stock, prices and launches are per country.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"lu","label":"Luxembourg (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (EUR)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"ro","label":"Romania (RON)"},{"value":"gr","label":"Greece (EUR)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"za","label":"South Africa (ZAR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"cn","label":"China (nike.com.cn) (CNY)"},{"value":"tw","label":"Taiwan (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"th","label":"Thailand (THB)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us"},{"name":"language","type":"string","required":false,"description":"Storefront language where a country has several: us en|es-419, es es-ES|ca, be nl|fr, ch de|fr|it, ca en-GB|fr, jp ja|en, kr ko|en. Default = the storefront's own default. Other countries have one language.","on_invalid":"reject","example":"fr"},{"name":"include_colorways","type":"boolean","required":false,"description":"true (default): also list the other colours of the same style on sale in that country (one extra small request).","on_invalid":"ignore","default":true},{"name":"include_rating","type":"boolean","required":false,"description":"true (default): add the star rating and review counts.","on_invalid":"ignore","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{style_color, style_code, color_code, content_language (the language the texts came in — the storefront's, or English when Nike has no translation), title, name, subtitle, brand, product_type, genders[], sport_tags[], color_description, colors[]{type, name, hex}, price, full_price, original_price, discount_percent, on_sale, currency, price_source ('product_feed' | 'storefront' — an inactive colourway still listed, priced as the storefront shows it | 'catalog_inactive' — no longer listed, last catalogue price), listed_on_storefront, member_price (always null — Nike publishes none), member_exclusive, status ('active'|'inactive'), available, sizes_in_stock, sizes[]{size, localized_size, size_system, gtin, sku_id, available, stock_level ('high'|'medium'|'low'|'out_of_stock'|null), inventory_listed}, quantity_limit, publish_type ('flow'|'launch'), launch{method, payment_method, starts_at}, release_date, hard_launch, pre_order, notify_me, promo_excluded, description_heading, description, sections[]{heading, items[]}, tech_spec, best_for[], widths[], countries_of_origin[], images[], videos[], size_chart_url, url, global_product_id, merch_product_id, pid, rating, rating_scale, review_count, related_review_count, own_review_count, colorways[]{style_color, color_description, price, full_price, discount_percent, currency, available, image, url}}, country, language","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"style_color":"CW2288-111"}},{"name":"product/reviews","description":"Customer reviews of a Nike style, newest first, paged: rating, title, text, date, reviewer country and usual size, fit / comfort / recommend answers, votes and photos — plus the rating and the review counts kept apart from reviews of related styles.","required_params":["style_color"],"optional_params":["country","page","page_size","max_rotations"],"params":[{"name":"style_color","type":"string","required":true,"description":"Nike style-colour ('CW2288-111'), style code ('CW2288') or product URL. Reviews are shared by every colour of a style.","on_invalid":"reject","example":"CW2288-111","aliases":["style_code","product_id","id","url"]},{"name":"country","type":"enum","required":false,"description":"Optional. Reviews are the same in every country; the country is only used to confirm that a style with no reviews exists.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"lu","label":"Luxembourg (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (EUR)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"ro","label":"Romania (RON)"},{"value":"gr","label":"Greece (EUR)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"za","label":"South Africa (ZAR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"cn","label":"China (nike.com.cn) (CNY)"},{"value":"tw","label":"Taiwan (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"th","label":"Thailand (THB)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us"},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1-100, default 20), newest first.","on_invalid":"reject","default":20,"minimum":1,"maximum":100},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"style_code, product_title, reviews[]{review_id, rating, rating_scale, title, text, submitted_at, locale, reviewer_country, author, size_normally_worn, answers[]{question, value, scale_labels[]}, incentivized, up_votes, down_votes, media[], reviewed_item{title, sku}}, count, total_reviews, rating, rating_scale, review_count, related_review_count, own_review_count, page, page_size","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"style_color":"CW2288-111"}},{"name":"launches","description":"The upcoming SNKRS launch calendar of a Nike country, soonest first: style-colour, name, price, launch method (draw or first-come) and the exact moment it opens, member-exclusive flag, quantity limit and image.","required_params":[],"optional_params":["country","language","page","page_size","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Which Nike storefront. Prices come back in that country's currency and the texts in its language. Stock, prices and launches are per country.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"be","label":"Belgium (EUR)"},{"value":"lu","label":"Luxembourg (EUR)"},{"value":"at","label":"Austria (EUR)"},{"value":"ch","label":"Switzerland (CHF)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"dk","label":"Denmark (DKK)"},{"value":"se","label":"Sweden (SEK)"},{"value":"no","label":"Norway (NOK)"},{"value":"fi","label":"Finland (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"cz","label":"Czechia (EUR)"},{"value":"sk","label":"Slovakia (EUR)"},{"value":"hu","label":"Hungary (EUR)"},{"value":"si","label":"Slovenia (EUR)"},{"value":"hr","label":"Croatia (EUR)"},{"value":"bg","label":"Bulgaria (EUR)"},{"value":"ro","label":"Romania (RON)"},{"value":"gr","label":"Greece (EUR)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"il","label":"Israel (ILS)"},{"value":"za","label":"South Africa (ZAR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"cn","label":"China (nike.com.cn) (CNY)"},{"value":"tw","label":"Taiwan (TWD)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"th","label":"Thailand (THB)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"au","label":"Australia (AUD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us"},{"name":"language","type":"string","required":false,"description":"Storefront language where a country has several: us en|es-419, es es-ES|ca, be nl|fr, ch de|fr|it, ca en-GB|fr, jp ja|en, kr ko|en. Default = the storefront's own default. Other countries have one language.","on_invalid":"reject","example":"fr"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Launches per page (1-50, default 24), soonest first.","on_invalid":"reject","default":24,"minimum":1,"maximum":50},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{style_color, style_code, title, launch_name, color_description, product_type, genders[], price, full_price, discount_percent, currency, publish_type, launch_method, payment_method, starts_at, member_exclusive, quantity_limit, available, image, url}, count, total_results, page, page_size, has_more, country, language","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"noon","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"noon API scraper — the Gulf marketplace (noon.com) for the UAE, Egypt, Kuwait, Oman, Qatar and Bahrain: search products, browse categories, read the full product record and every seller's offer, in local currency, English or Arabic. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/noon/v1","spec_available":true,"actions":[{"name":"search","description":"Search noon.com by keyword in one Gulf country and get the matching products: noon product id, title, brand, image, the price the shopper pays with the struck-through price and discount, any coupon code, rating and review count, the seller and its rating, noon Express / Supermall flags, delivery estimate and noon's own key specs. Filter by price, brand, minimum rating and delivery programme; sort by popularity, price or rating.","required_params":["query"],"optional_params":["country","language","page","limit","sort","price_min","price_max","brand","min_rating","fulfillment","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for on noon.","on_invalid":"reject","example":"iphone 17","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"noon storefront. Prices come back in that country's currency and product ids are shared across storefronts, but price, stock and sellers differ per country. Saudi Arabia is not available.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"om","label":"Oman (OMR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"bh","label":"Bahrain (BHD)"}],"default":"ae","example":"ae"},{"name":"language","type":"enum","required":false,"description":"Language of titles, specs and descriptions. Prices and ids are the same in both.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"ar","label":"Arabic"}],"default":"en"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. `total_pages` says how many exist; a page past the end returns an empty list, not an error.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"limit","type":"integer","required":false,"description":"Products per page, 1-100 (noon's own default is 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order of results. Only orderings noon honours are accepted; anything else is rejected rather than silently ignored.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"noon's default ranking"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first (noon's ranking, not strictly numeric)"},{"value":"rating","label":"Best rated first (noon's ranking, not strictly numeric)"}],"default":"popular"},{"name":"price_min","type":"number","required":false,"description":"Lowest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"brand","type":"string","required":false,"description":"noon brand code, lowercase with underscores (apple, samsung, new_balance). Every result row returns it as `brand_code`.","on_invalid":"reject","example":"apple"},{"name":"min_rating","type":"number","required":false,"description":"Only products rated at least this (1-5).","on_invalid":"reject","minimum":1,"maximum":5},{"name":"fulfillment","type":"enum","required":false,"description":"Restrict to one noon delivery programme.","on_invalid":"reject","allowed_values":[{"value":"express","label":"Fulfilled by noon (noon Express)"},{"value":"supermall","label":"noon Supermall fast delivery"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, offer_code, title, brand, brand_code, url, image, images[], price (number — what the shopper pays; noon's sale price when one is set), price_before_discount (the struck-through price, null when none), discount_percent, currency, coupon{code, title, detail, terms[]} (a code the shopper must enter — NOT subtracted from price), rating, review_count, rating_scale (5), seller{id, name, rating, rating_count, rating_scale, positive_rating_percent}, fulfilled_by_noon, supermall, marketplace_seller, free_delivery_eligible, buyable, low_stock_quantity, estimated_delivery, supermall_offer{offer_code, price, price_before_discount, discount_percent, delivery}, best_seller_rank, badges[], deal_tag, key_specs{name: value}, colour_variant_count}, count, total_results, total_pages, page, sort_applied{by, dir}, filters_applied, breadcrumbs[]{name, code}, country, currency, language, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone","country":"ae"}},{"name":"category/products","description":"Browse one noon category (by its path) in one Gulf country: the same product rows, filters, sorts and paging as `search`, plus the category breadcrumb.","required_params":["category"],"optional_params":["country","language","page","limit","sort","price_min","price_max","brand","min_rating","fulfillment","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"noon category path — the part of a noon category URL after the country segment (https://www.noon.com/uae-en/electronics-and-mobiles/… → electronics-and-mobiles/…). A full category URL is accepted. `breadcrumbs[].code` on a listing returns these.","on_invalid":"reject","example":"electronics-and-mobiles/mobiles-and-accessories/mobiles-20905/smartphones","aliases":["category_path","url"]},{"name":"country","type":"enum","required":false,"description":"noon storefront. Prices come back in that country's currency and product ids are shared across storefronts, but price, stock and sellers differ per country. Saudi Arabia is not available.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"om","label":"Oman (OMR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"bh","label":"Bahrain (BHD)"}],"default":"ae","example":"ae"},{"name":"language","type":"enum","required":false,"description":"Language of titles, specs and descriptions. Prices and ids are the same in both.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"ar","label":"Arabic"}],"default":"en"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. `total_pages` says how many exist; a page past the end returns an empty list, not an error.","on_invalid":"reject","default":1,"minimum":1,"maximum":200},{"name":"limit","type":"integer","required":false,"description":"Products per page, 1-100 (noon's own default is 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order of results. Only orderings noon honours are accepted; anything else is rejected rather than silently ignored.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"noon's default ranking"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first (noon's ranking, not strictly numeric)"},{"value":"rating","label":"Best rated first (noon's ranking, not strictly numeric)"}],"default":"popular"},{"name":"price_min","type":"number","required":false,"description":"Lowest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, in the country's currency.","on_invalid":"reject","minimum":0},{"name":"brand","type":"string","required":false,"description":"noon brand code, lowercase with underscores (apple, samsung, new_balance). Every result row returns it as `brand_code`.","on_invalid":"reject","example":"apple"},{"name":"min_rating","type":"number","required":false,"description":"Only products rated at least this (1-5).","on_invalid":"reject","minimum":1,"maximum":5},{"name":"fulfillment","type":"enum","required":false,"description":"Restrict to one noon delivery programme.","on_invalid":"reject","allowed_values":[{"value":"express","label":"Fulfilled by noon (noon Express)"},{"value":"supermall","label":"noon Supermall fast delivery"}]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, offer_code, title, brand, brand_code, url, image, images[], price (number — what the shopper pays; noon's sale price when one is set), price_before_discount (the struck-through price, null when none), discount_percent, currency, coupon{code, title, detail, terms[]} (a code the shopper must enter — NOT subtracted from price), rating, review_count, rating_scale (5), seller{id, name, rating, rating_count, rating_scale, positive_rating_percent}, fulfilled_by_noon, supermall, marketplace_seller, free_delivery_eligible, buyable, low_stock_quantity, estimated_delivery, supermall_offer{offer_code, price, price_before_discount, discount_percent, delivery}, best_seller_rank, badges[], deal_tag, key_specs{name: value}, colour_variant_count}, count, total_results, total_pages, page, sort_applied{by, dir}, filters_applied, breadcrumbs[]{name, code}, country, currency, language, category","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/detail","description":"The full noon product record by `product_id` (or product URL) in one Gulf country: title, brand, description and bullet points, image gallery, model and model number, the buy-box price with struck-through price, discount and coupon, the cheapest and dearest seller price, availability, rating with review count and scale, a sample of reviews, the category breadcrumb, the full specification table, size variants, colour variants, and every seller's offer.","required_params":["product_id"],"optional_params":["country","language","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"noon product id (the code before /p/ in a product URL, e.g. N70211545V or Z21880EA663D8910F1026Z). A full noon product URL is accepted and its country is used when `country` is not given.","on_invalid":"reject","example":"N70211545V","aliases":["id","sku","url"]},{"name":"country","type":"enum","required":false,"description":"noon storefront. Prices come back in that country's currency and product ids are shared across storefronts, but price, stock and sellers differ per country. Saudi Arabia is not available.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"om","label":"Oman (OMR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"bh","label":"Bahrain (BHD)"}],"default":"ae","example":"ae"},{"name":"language","type":"enum","required":false,"description":"Language of titles, specs and descriptions. Prices and ids are the same in both.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"ar","label":"Arabic"}],"default":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, title, brand, brand_code, url, description, feature_bullets[], images[], model, model_number, color, gtin (null — noon publishes none), price (number — noon's buy-box offer), price_before_discount, discount_percent, price_min, price_max (cheapest / dearest buyable offer across sellers and sizes), currency, coupon, availability (in_stock|out_of_stock), featured_offer_code, featured_seller, offer_count, seller_count, rating, review_count, rating_scale, reviews_sample[]{rating, title, body, date, author}, breadcrumbs[]{name, url}, category, specifications[]{code, name, value}, variants[]{variant_sku, variant (e.g. a shoe size), available, offer_count, price_min}, colour_variants[]{group, options[]{name, product_id, available, url, image}}, offers[] (as in product/offers), country, language}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"N70211545V","country":"kw"}},{"name":"product/offers","description":"Every seller's offer for one noon product in one Gulf country, cheapest first: the seller with its id, name and rating, the price paid with struck-through price and discount, coupon, stock, size variant, noon Express / marketplace flags, delivery estimate and date, warranty and return policy, and which offer holds noon's buy box.","required_params":["product_id"],"optional_params":["country","language","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"noon product id (the code before /p/ in a product URL, e.g. N70211545V or Z21880EA663D8910F1026Z). A full noon product URL is accepted and its country is used when `country` is not given.","on_invalid":"reject","example":"N70211545V","aliases":["id","sku","url"]},{"name":"country","type":"enum","required":false,"description":"noon storefront. Prices come back in that country's currency and product ids are shared across storefronts, but price, stock and sellers differ per country. Saudi Arabia is not available.","on_invalid":"reject","allowed_values":[{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"eg","label":"Egypt (EGP)"},{"value":"kw","label":"Kuwait (KWD)"},{"value":"om","label":"Oman (OMR)"},{"value":"qa","label":"Qatar (QAR)"},{"value":"bh","label":"Bahrain (BHD)"}],"default":"ae","example":"ae"},{"name":"language","type":"enum","required":false,"description":"Language of titles, specs and descriptions. Prices and ids are the same in both.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"ar","label":"Arabic"}],"default":"en"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, title, brand, url, currency, price (buy-box), price_min, price_max, offer_count, seller_count, availability} + offers[]{position, offer_code, variant_sku, variant, seller{id, name, rating, rating_count, rating_scale, positive_rating_percent}, price, price_before_discount, discount_percent, currency, coupon, buyable, stock (as noon reports it; never seen above 10), stock_is_display_cap, fulfilled_by_noon, marketplace_seller, free_delivery_eligible, estimated_delivery, estimated_delivery_date, warranty, returnable, return_policy, featured} + count","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"N70211545V"}}]},{"name":"notino","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Notino API scraper — Europe's largest online perfume & cosmetics retailer (notino.*): search 27 countries, read the full product (every size/shade with its own price, price per litre/100 ml, was-price, EU 30-day lowest price, voucher prices, EAN, ingredients, delivery dates), reviews and autocomplete. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/notino/v1","spec_available":true,"actions":[{"name":"search","description":"Search a Notino storefront by keyword, or browse a category/brand page, with the site's own sorts, price range and facet filters. Each row: product (variant) id, catalog master id, brand, name, annotation, price (price_basis says whether it is this variant's price or the cheapest shade of a grouped product), unit price per litre/100 ml, voucher / conditional-voucher prices, discount reason, rating + count, stock bucket, variants (size/shade labels), category and image. A keyword the site maps to a category or brand is followed and reported (redirect_to). No-match padding and sponsored rows are dropped and counted.","required_params":[],"optional_params":["country","query","category","sort","page","filters","price_min","price_max","include_facets","include_sponsored","include_fallback_results"],"params":[{"name":"country","type":"enum","required":false,"description":"Notino storefront. All 27 run on one platform; currency and language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — notino.de (EUR)"},{"value":"at","label":"Austria — notino.at (EUR)"},{"value":"ch","label":"Switzerland — notino.ch (CHF)"},{"value":"cz","label":"Czechia — notino.cz (CZK)"},{"value":"sk","label":"Slovakia — notino.sk (EUR)"},{"value":"pl","label":"Poland — notino.pl (PLN)"},{"value":"hu","label":"Hungary — notino.hu (HUF)"},{"value":"ro","label":"Romania — notino.ro (RON)"},{"value":"bg","label":"Bulgaria — notino.bg (EUR)"},{"value":"hr","label":"Croatia — notino.hr (EUR)"},{"value":"si","label":"Slovenia — notino.si (EUR)"},{"value":"gr","label":"Greece — notino.gr (EUR)"},{"value":"it","label":"Italy — notino.it (EUR)"},{"value":"es","label":"Spain — notino.es (EUR)"},{"value":"pt","label":"Portugal — notino.pt (EUR)"},{"value":"fr","label":"France — notino.fr (EUR)"},{"value":"be","label":"Belgium — notino.be (EUR, French)"},{"value":"nl","label":"Netherlands — notino.nl (EUR)"},{"value":"uk","label":"United Kingdom — notino.co.uk (GBP)"},{"value":"ie","label":"Ireland — notino.ie (EUR)"},{"value":"dk","label":"Denmark — notino.dk (DKK)"},{"value":"se","label":"Sweden — notino.se (SEK)"},{"value":"fi","label":"Finland — notino.fi (EUR)"},{"value":"lt","label":"Lithuania — notino.lt (EUR)"},{"value":"lv","label":"Latvia — notino.lv (EUR)"},{"value":"ee","label":"Estonia — notino.ee (EUR)"},{"value":"ua","label":"Ukraine — notino.ua (UAH)"}],"default":"de"},{"name":"query","type":"string","required":false,"description":"Keyword to search (brand, product or product type, in the store's language). Optional when `category` is given.","on_invalid":"reject","example":"dior sauvage","aliases":["q","keyword"]},{"name":"category","type":"string","required":false,"description":"A category or brand page to browse: its slug ('lippenstifte', 'dior') or a notino URL/path (from `related_categories`, a breadcrumb or a redirect_to).","on_invalid":"reject","example":"lippenstifte","aliases":["category_url"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering (the site's own sorts).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Most relevant"},{"value":"bestseller","label":"Bestsellers"},{"value":"price_asc","label":"Price ascending"},{"value":"price_desc","label":"Price descending"},{"value":"top_rated","label":"Top rated"},{"value":"newest","label":"Newest"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"1-based page; 24 products per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"filters","type":"string","required":false,"description":"Comma-separated facet value ids from `include_facets` (brand, shade, gender, rating, offers …). Ids are per store for brand/offer facets.","on_invalid":"reject","example":"200005"},{"name":"price_min","type":"number","required":false,"description":"Minimum price in the country currency.","on_invalid":"reject","example":20,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Maximum price in the country currency.","on_invalid":"reject","example":60,"minimum":0},{"name":"include_facets","type":"boolean","required":false,"description":"Also return the filter facets (brands, shades, offers, ratings …) with their ids.","on_invalid":"ignore","default":false},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return sponsored (paid placement) rows, flagged; dropped by default.","on_invalid":"ignore","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When a keyword has no real match the site pads the page with unrelated products; they are dropped by default. true returns them under fallback_results.","on_invalid":"ignore","default":false}],"returns":"results[]{product_id, catalog_master_id, master_id, product_code, master_product_code, title, brand, name, sub_name, annotation, url, price, currency, price_basis, was_price, discount_percent, dual_price, member_price, unit_price{value,per_amount,per_unit}, voucher{code,price,discount_percent}, conditional_voucher{code,min_basket,condition_type,discount_percent,applies_to}, discount_reason, free_delivery, is_new, rating, rating_count, rating_scale, search_index_stock, variant_count, variants[{product_id,label,colors}], category{kind,category,subcategory,type}, image, is_pharmacy, sponsored}, count, total_results, total_pages, page, page_size, has_more, sort, query, category, country, currency, page_title, redirect_to, related_categories[{name,url}], price_range{min,max}, sponsored_dropped, fallback_results_dropped, fallback_results (opt-in), facets (opt-in)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"de","query":"dior sauvage"}},{"name":"product/detail","description":"The full Notino product by product id, catalog master id or URL: title, brand, manufacturer, the requested variant's price, was-price with its type and discount, EU 30-day lowest price, unit price, voucher and conditional-voucher prices, loyalty points, stock state + count, EAN, order code, images, description, ingredients, warnings, usage, characteristics, fragrance notes, rating + counts, breadcrumb, category, delivery options with dates and prices, gifts/samples, and every size/shade variant each with its own price block, EAN and stock.","required_params":[],"optional_params":["country","product_id","catalog_master_id","url"],"params":[{"name":"country","type":"enum","required":false,"description":"Notino storefront. All 27 run on one platform; currency and language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — notino.de (EUR)"},{"value":"at","label":"Austria — notino.at (EUR)"},{"value":"ch","label":"Switzerland — notino.ch (CHF)"},{"value":"cz","label":"Czechia — notino.cz (CZK)"},{"value":"sk","label":"Slovakia — notino.sk (EUR)"},{"value":"pl","label":"Poland — notino.pl (PLN)"},{"value":"hu","label":"Hungary — notino.hu (HUF)"},{"value":"ro","label":"Romania — notino.ro (RON)"},{"value":"bg","label":"Bulgaria — notino.bg (EUR)"},{"value":"hr","label":"Croatia — notino.hr (EUR)"},{"value":"si","label":"Slovenia — notino.si (EUR)"},{"value":"gr","label":"Greece — notino.gr (EUR)"},{"value":"it","label":"Italy — notino.it (EUR)"},{"value":"es","label":"Spain — notino.es (EUR)"},{"value":"pt","label":"Portugal — notino.pt (EUR)"},{"value":"fr","label":"France — notino.fr (EUR)"},{"value":"be","label":"Belgium — notino.be (EUR, French)"},{"value":"nl","label":"Netherlands — notino.nl (EUR)"},{"value":"uk","label":"United Kingdom — notino.co.uk (GBP)"},{"value":"ie","label":"Ireland — notino.ie (EUR)"},{"value":"dk","label":"Denmark — notino.dk (DKK)"},{"value":"se","label":"Sweden — notino.se (SEK)"},{"value":"fi","label":"Finland — notino.fi (EUR)"},{"value":"lt","label":"Lithuania — notino.lt (EUR)"},{"value":"lv","label":"Latvia — notino.lv (EUR)"},{"value":"ee","label":"Estonia — notino.ee (EUR)"},{"value":"ua","label":"Ukraine — notino.ua (UAH)"}],"default":"de"},{"name":"product_id","type":"string","required":false,"description":"Notino product (variant) id — the number in a product URL (…/p-15676582/). Every search row returns one.","on_invalid":"reject","example":"15676582","aliases":["id","variant_id"]},{"name":"catalog_master_id","type":"string","required":false,"description":"Instead of product_id: the catalog master id (search rows return it); saves a lookup.","on_invalid":"reject","example":"361339","aliases":["master_catalog_id"]},{"name":"url","type":"string","required":false,"description":"Instead of product_id: a notino product URL (…/p-<id>/).","on_invalid":"reject","aliases":["product_url"]}],"returns":"product{product_id, catalog_master_id, master_id, master_product_code, title, brand, brand_id, manufacturer, name, collection, annotation, url, catalog_id, label, variant_name, product_code, order_code, ean, price, currency, was_price, was_price_type, discount_percent, lowest_price_30d, unit_price, tax_percent, member_price, loyalty_points, voucher, conditional_voucher{code,condition_type,conditions[{min_basket,discount_percent,price_if_met,product_meets_condition}],applies_to,valid_until}, amount{value,unit,package}, colors, availability{state,stock_code,stock_count,max_order_quantity}, in_stock, images, gender, description, ingredients, warnings, instructions, important_notice, characteristics[{name,values}], fragrance_notes[{name,values}], rating, rating_count, text_review_count, rating_scale, breadcrumb[{name,url}], category, deliveries[{carrier,method,date,date_from,date_to,price,free_shipping,unavailable_reason}], delivery_estimate, gifts[{campaign_id,type,for_product_id,text,image}], variant_display_type, variant_count, variants[...same price/stock/ean block per variant], related_product_ids}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"de","product_id":"15676582"}},{"name":"product/reviews","description":"Customer reviews of a Notino product (the storefront's own reviews, in its language): text, title, star rating, date, verified flag, likes/dislikes, pros/cons, photos, the reviewed variant, and the rating histogram. Sort newest/oldest/rating/most helpful, filter by stars or photos; 8 per page.","required_params":[],"optional_params":["country","product_id","catalog_master_id","url","sort","page","rating","with_images"],"params":[{"name":"country","type":"enum","required":false,"description":"Notino storefront. All 27 run on one platform; currency and language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — notino.de (EUR)"},{"value":"at","label":"Austria — notino.at (EUR)"},{"value":"ch","label":"Switzerland — notino.ch (CHF)"},{"value":"cz","label":"Czechia — notino.cz (CZK)"},{"value":"sk","label":"Slovakia — notino.sk (EUR)"},{"value":"pl","label":"Poland — notino.pl (PLN)"},{"value":"hu","label":"Hungary — notino.hu (HUF)"},{"value":"ro","label":"Romania — notino.ro (RON)"},{"value":"bg","label":"Bulgaria — notino.bg (EUR)"},{"value":"hr","label":"Croatia — notino.hr (EUR)"},{"value":"si","label":"Slovenia — notino.si (EUR)"},{"value":"gr","label":"Greece — notino.gr (EUR)"},{"value":"it","label":"Italy — notino.it (EUR)"},{"value":"es","label":"Spain — notino.es (EUR)"},{"value":"pt","label":"Portugal — notino.pt (EUR)"},{"value":"fr","label":"France — notino.fr (EUR)"},{"value":"be","label":"Belgium — notino.be (EUR, French)"},{"value":"nl","label":"Netherlands — notino.nl (EUR)"},{"value":"uk","label":"United Kingdom — notino.co.uk (GBP)"},{"value":"ie","label":"Ireland — notino.ie (EUR)"},{"value":"dk","label":"Denmark — notino.dk (DKK)"},{"value":"se","label":"Sweden — notino.se (SEK)"},{"value":"fi","label":"Finland — notino.fi (EUR)"},{"value":"lt","label":"Lithuania — notino.lt (EUR)"},{"value":"lv","label":"Latvia — notino.lv (EUR)"},{"value":"ee","label":"Estonia — notino.ee (EUR)"},{"value":"ua","label":"Ukraine — notino.ua (UAH)"}],"default":"de"},{"name":"product_id","type":"string","required":false,"description":"Notino product (variant) id — the number in a product URL (…/p-15676582/). Every search row returns one.","on_invalid":"reject","example":"15676582","aliases":["id","variant_id"]},{"name":"catalog_master_id","type":"string","required":false,"description":"Instead of product_id: the catalog master id (search rows return it); saves a lookup.","on_invalid":"reject","example":"361339","aliases":["master_catalog_id"]},{"name":"url","type":"string","required":false,"description":"Instead of product_id: a notino product URL (…/p-<id>/).","on_invalid":"reject","aliases":["product_url"]},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"rating_desc","label":"Highest rating"},{"value":"rating_asc","label":"Lowest rating"},{"value":"most_helpful","label":"Most helpful"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"1-based page; 8 reviews per page (the site's size).","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"rating","type":"string","required":false,"description":"Only these star ratings, comma-separated 1-5.","on_invalid":"reject","example":"1,2"},{"name":"with_images","type":"boolean","required":false,"description":"Only reviews that carry customer photos.","on_invalid":"ignore","default":false}],"returns":"reviews[{id, title, text, rating, created_at, author, verified, author_type, likes, dislikes, variant_id, source_language, original_title, original_text, pros, cons, images[{thumbnail,full}], agency{name,url}}], count, page, total_pages, total_reviews, has_more, rating_histogram{1..5}, verified_count, with_images_count, product{catalog_master_id, master_product_code, rating, rating_count, text_review_count}, sort, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"de","catalog_master_id":"361339"}},{"name":"suggest","description":"Notino autocomplete for a partial query: suggested products (id, title, annotation, product code, url, image) and the brand, collection and category pages it proposes.","required_params":["query"],"optional_params":["country"],"params":[{"name":"query","type":"string","required":false,"description":"A partial keyword.","on_invalid":"reject","example":"dior","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Notino storefront. All 27 run on one platform; currency and language follow the country.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany — notino.de (EUR)"},{"value":"at","label":"Austria — notino.at (EUR)"},{"value":"ch","label":"Switzerland — notino.ch (CHF)"},{"value":"cz","label":"Czechia — notino.cz (CZK)"},{"value":"sk","label":"Slovakia — notino.sk (EUR)"},{"value":"pl","label":"Poland — notino.pl (PLN)"},{"value":"hu","label":"Hungary — notino.hu (HUF)"},{"value":"ro","label":"Romania — notino.ro (RON)"},{"value":"bg","label":"Bulgaria — notino.bg (EUR)"},{"value":"hr","label":"Croatia — notino.hr (EUR)"},{"value":"si","label":"Slovenia — notino.si (EUR)"},{"value":"gr","label":"Greece — notino.gr (EUR)"},{"value":"it","label":"Italy — notino.it (EUR)"},{"value":"es","label":"Spain — notino.es (EUR)"},{"value":"pt","label":"Portugal — notino.pt (EUR)"},{"value":"fr","label":"France — notino.fr (EUR)"},{"value":"be","label":"Belgium — notino.be (EUR, French)"},{"value":"nl","label":"Netherlands — notino.nl (EUR)"},{"value":"uk","label":"United Kingdom — notino.co.uk (GBP)"},{"value":"ie","label":"Ireland — notino.ie (EUR)"},{"value":"dk","label":"Denmark — notino.dk (DKK)"},{"value":"se","label":"Sweden — notino.se (SEK)"},{"value":"fi","label":"Finland — notino.fi (EUR)"},{"value":"lt","label":"Lithuania — notino.lt (EUR)"},{"value":"lv","label":"Latvia — notino.lv (EUR)"},{"value":"ee","label":"Estonia — notino.ee (EUR)"},{"value":"ua","label":"Ukraine — notino.ua (UAH)"}],"default":"de"}],"returns":"products[{product_id, title, annotation, product_code, url, image}], sections[{title, kind, items[{name, url, kind}]}], count, country","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"de","query":"chanel"}}]},{"name":"nykaa","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Nykaa API — India's biggest beauty marketplace as JSON: product search, MRP and selling price with the real discount, shade-level prices and stock, customer reviews with the rating histogram and aspect sentiment, brand and category catalogues with filters that bite, from nykaa.com — prices in INR, no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/nykaa/v1","spec_available":true,"actions":[{"name":"search","description":"Search Nykaa exactly as a shopper does and get the product grid: the price actually paid, the printed MRP, the real discount, rating and rating count, shade count, stock and the product id. Two things this action does for you: it reads the same index the website shows (a cheaper keyword route on the same host answers 0 for 'nykaa foundation', where the site answers 116), and when Nykaa redirects a head term such as 'lipstick' to a category it follows that and tells you, so you get the catalogue instead of nothing. 🔴 Nykaa server-renders only the FIRST 20 matches of a search: `total_results` is its own count, and a deeper walk goes through `category` with the `category_id` this action hands back.","required_params":["query"],"optional_params":["sort","price_min","price_max","min_discount","min_rating","brand_id","color_id","finish_id","concern_id","formulation_id","ingredient_id","gender_id","country_of_origin","preference_id","skin_type_id","include_facets"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper would type on nykaa.com — a product, a brand, a category, or a concern phrase such as 'serum for oily skin'.","on_invalid":"reject","example":"maybelline mascara","aliases":["q","keyword","term","search"]},{"name":"sort","type":"enum","required":false,"description":"Result order. Nykaa's own default is `popularity`. It refuses any order it does not know, so these seven are all that exist.","on_invalid":"reject","allowed_values":[{"value":"popularity","label":"Nykaa's own ranking (default)"},{"value":"price_asc","label":"Price, cheapest first"},{"value":"price_desc","label":"Price, dearest first"},{"value":"discount","label":"Biggest discount first"},{"value":"customer_top_rated","label":"Highest customer rating first"},{"value":"new_arrival","label":"Newest products first"},{"value":"name","label":"Product name, A-Z"}],"example":"price_asc"},{"name":"price_min","type":"integer","required":false,"description":"Lowest selling price in INR. Use with `price_max`; the source takes the pair as one band.","on_invalid":"ignore","example":0,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest selling price in INR. Measured on the Lipstick category: 718 products unfiltered, 295 under 500, 84 between 1000 and 1999.","on_invalid":"ignore","example":499,"minimum":1},{"name":"min_discount","type":"integer","required":false,"description":"Only products discounted by at least this percentage. Measured on Lipstick: 718 unfiltered, 453 discounted at all, 184 at 20 % or more, 92 at 30 %, 36 at 40 %.","on_invalid":"ignore","example":30,"minimum":0,"maximum":90},{"name":"min_rating","type":"integer","required":false,"description":"Only products whose average customer rating is at least this many stars (1-4; Nykaa publishes no 5-only filter). Measured on the query 'kajal waterproof': 329 unfiltered, 309 at 3+, 278 at 4+.","on_invalid":"ignore","example":4,"minimum":1,"maximum":4},{"name":"brand_id","type":"string","required":false,"description":"Narrow to one brand. The id comes from `facets.brand` on this action (set `include_facets`) or from `brands`. Measured: brand 3899 in category 249 returns exactly the 26 the facet promises. Nykaa offers no brand facet on a KEYWORD search, only on a category or brand listing.","on_invalid":"ignore","example":"3899"},{"name":"color_id","type":"string","required":false,"description":"Narrow to one colour family; the id comes from `facets.color`. 🔴 This one matches at SHADE level, so on a category its own count can exceed the unfiltered product count.","on_invalid":"ignore","example":"15514","aliases":["colour_id"]},{"name":"finish_id","type":"string","required":false,"description":"Finish, e.g. matte / creme / satin / glossy. Id from `facets.finish`. Measured on Lipstick: 454 of 718 are matte.","on_invalid":"ignore","example":"10881"},{"name":"concern_id","type":"string","required":false,"description":"Skin or hair concern (acne, pigmentation, dryness, hair fall). Id from `facets.concern` — this is the axis Indian beauty shoppers actually buy on.","on_invalid":"ignore","example":"10777"},{"name":"formulation_id","type":"string","required":false,"description":"Formulation (liquid, cream, powder, pencil, gel). Id from `facets.formulation`.","on_invalid":"ignore","example":"10822"},{"name":"ingredient_id","type":"string","required":false,"description":"Hero ingredient (hyaluronic acid, niacinamide, salicylic acid, retinol). Id from `facets.ingredient_v1`.","on_invalid":"ignore","example":"228713"},{"name":"gender_id","type":"string","required":false,"description":"Gender the product is listed for. Id from `facets.gender` (10711 female, 10712 unisex on the categories measured).","on_invalid":"ignore","example":"10712","aliases":["gender"]},{"name":"country_of_origin","type":"string","required":false,"description":"ISO country code of manufacture, as Nykaa files it. Id from `facets.country_of_origin` — 'IN' and 'KR' are the two a buyer of Indian beauty data usually wants.","on_invalid":"ignore","example":"IN"},{"name":"preference_id","type":"string","required":false,"description":"Claim or preference (paraben free, cruelty free, vegan, dermatologically tested). Id from `facets.preference`.","on_invalid":"ignore","example":"10851"},{"name":"skin_type_id","type":"string","required":false,"description":"Skin type the product is listed for (oily, dry, normal, combination, sensitive). Id from `facets.skin_type`.","on_invalid":"ignore","example":"10780"},{"name":"include_facets","type":"boolean","required":false,"description":"Also return `facets`: every filter Nykaa offers for this listing — brands, colours, finishes, concerns, ingredients, formulations, price bands, ratings, discounts, country of origin — each with its id and the number of products behind it. This is where every `*_id` parameter above comes from.","on_invalid":"ignore","default":false}],"returns":"products[]{product_id, url, name, product_title, brand, price_inr, mrp_inr, discount_percent, discount_percent_listed, currency, rating, rating_count, in_stock, stock_quantity, shade_count, variant_type, sku, image, category_path[], offer, offer_count, tags}, total_results, listing_type (search|category), query, did_you_mean, approximate_results, category_id, category_name, promo_tiles_dropped, facets (optional)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"category","description":"Walk one category with filters that bite: price band, minimum discount, minimum rating, one brand, colour, finish, concern, ingredient, formulation, skin type, country of origin, and any of Nykaa's seven sort orders. Same product rows as `search`, and unlike search this one pages all the way down. Category ids come from `categories`, from `suggest`, or from any product's `category_path`.","required_params":["category_id"],"optional_params":["page","sort","price_min","price_max","min_discount","min_rating","brand_id","color_id","finish_id","concern_id","formulation_id","ingredient_id","gender_id","country_of_origin","preference_id","skin_type_id","include_facets"],"params":[{"name":"category_id","type":"string","required":true,"description":"Numeric category id (249 = Lipstick), or a nykaa.com category URL. A Nykaa brand page is a category too, so a brand id works here as well.","on_invalid":"reject","example":"249","aliases":["category","cid","url"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Nykaa serves 20 products a page and ignores every page-size parameter it is given, so this is the only way to go deeper. `total_results` says how far you can go.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"sort","type":"enum","required":false,"description":"Result order. Nykaa's own default is `popularity`. It refuses any order it does not know, so these seven are all that exist.","on_invalid":"reject","allowed_values":[{"value":"popularity","label":"Nykaa's own ranking (default)"},{"value":"price_asc","label":"Price, cheapest first"},{"value":"price_desc","label":"Price, dearest first"},{"value":"discount","label":"Biggest discount first"},{"value":"customer_top_rated","label":"Highest customer rating first"},{"value":"new_arrival","label":"Newest products first"},{"value":"name","label":"Product name, A-Z"}],"example":"price_asc"},{"name":"price_min","type":"integer","required":false,"description":"Lowest selling price in INR. Use with `price_max`; the source takes the pair as one band.","on_invalid":"ignore","example":0,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest selling price in INR. Measured on the Lipstick category: 718 products unfiltered, 295 under 500, 84 between 1000 and 1999.","on_invalid":"ignore","example":499,"minimum":1},{"name":"min_discount","type":"integer","required":false,"description":"Only products discounted by at least this percentage. Measured on Lipstick: 718 unfiltered, 453 discounted at all, 184 at 20 % or more, 92 at 30 %, 36 at 40 %.","on_invalid":"ignore","example":30,"minimum":0,"maximum":90},{"name":"min_rating","type":"integer","required":false,"description":"Only products whose average customer rating is at least this many stars (1-4; Nykaa publishes no 5-only filter). Measured on the query 'kajal waterproof': 329 unfiltered, 309 at 3+, 278 at 4+.","on_invalid":"ignore","example":4,"minimum":1,"maximum":4},{"name":"brand_id","type":"string","required":false,"description":"Narrow to one brand. The id comes from `facets.brand` on this action (set `include_facets`) or from `brands`. Measured: brand 3899 in category 249 returns exactly the 26 the facet promises. Nykaa offers no brand facet on a KEYWORD search, only on a category or brand listing.","on_invalid":"ignore","example":"3899"},{"name":"color_id","type":"string","required":false,"description":"Narrow to one colour family; the id comes from `facets.color`. 🔴 This one matches at SHADE level, so on a category its own count can exceed the unfiltered product count.","on_invalid":"ignore","example":"15514","aliases":["colour_id"]},{"name":"finish_id","type":"string","required":false,"description":"Finish, e.g. matte / creme / satin / glossy. Id from `facets.finish`. Measured on Lipstick: 454 of 718 are matte.","on_invalid":"ignore","example":"10881"},{"name":"concern_id","type":"string","required":false,"description":"Skin or hair concern (acne, pigmentation, dryness, hair fall). Id from `facets.concern` — this is the axis Indian beauty shoppers actually buy on.","on_invalid":"ignore","example":"10777"},{"name":"formulation_id","type":"string","required":false,"description":"Formulation (liquid, cream, powder, pencil, gel). Id from `facets.formulation`.","on_invalid":"ignore","example":"10822"},{"name":"ingredient_id","type":"string","required":false,"description":"Hero ingredient (hyaluronic acid, niacinamide, salicylic acid, retinol). Id from `facets.ingredient_v1`.","on_invalid":"ignore","example":"228713"},{"name":"gender_id","type":"string","required":false,"description":"Gender the product is listed for. Id from `facets.gender` (10711 female, 10712 unisex on the categories measured).","on_invalid":"ignore","example":"10712","aliases":["gender"]},{"name":"country_of_origin","type":"string","required":false,"description":"ISO country code of manufacture, as Nykaa files it. Id from `facets.country_of_origin` — 'IN' and 'KR' are the two a buyer of Indian beauty data usually wants.","on_invalid":"ignore","example":"IN"},{"name":"preference_id","type":"string","required":false,"description":"Claim or preference (paraben free, cruelty free, vegan, dermatologically tested). Id from `facets.preference`.","on_invalid":"ignore","example":"10851"},{"name":"skin_type_id","type":"string","required":false,"description":"Skin type the product is listed for (oily, dry, normal, combination, sensitive). Id from `facets.skin_type`.","on_invalid":"ignore","example":"10780"},{"name":"include_facets","type":"boolean","required":false,"description":"Also return `facets`: every filter Nykaa offers for this listing — brands, colours, finishes, concerns, ingredients, formulations, price bands, ratings, discounts, country of origin — each with its id and the number of products behind it. This is where every `*_id` parameter above comes from.","on_invalid":"ignore","default":false}],"returns":"products[] (same shape as search), total_results, page, category_id, category_name, category_ancestors[], promo_tiles_dropped, facets (optional)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"brand","description":"One brand's whole Nykaa catalogue, paged and filterable exactly like a category. Pass the brand id if you have it, or just the brand NAME and this action resolves it for you (one extra upstream lookup) and reports the id it used.","required_params":["brand"],"optional_params":["page","sort","price_min","price_max","min_discount","min_rating","brand_id","color_id","finish_id","concern_id","formulation_id","ingredient_id","gender_id","country_of_origin","preference_id","skin_type_id","include_facets"],"params":[{"name":"brand","type":"string","required":true,"description":"A brand name ('maybelline', 'lakme', 'the ordinary'), its numeric Nykaa id, or a nykaa.com brand URL. A name costs one extra upstream lookup; an id costs none.","on_invalid":"reject","example":"maybelline","aliases":["brand_name","brand_slug","slug","url"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Nykaa serves 20 products a page and ignores every page-size parameter it is given, so this is the only way to go deeper. `total_results` says how far you can go.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"sort","type":"enum","required":false,"description":"Result order. Nykaa's own default is `popularity`. It refuses any order it does not know, so these seven are all that exist.","on_invalid":"reject","allowed_values":[{"value":"popularity","label":"Nykaa's own ranking (default)"},{"value":"price_asc","label":"Price, cheapest first"},{"value":"price_desc","label":"Price, dearest first"},{"value":"discount","label":"Biggest discount first"},{"value":"customer_top_rated","label":"Highest customer rating first"},{"value":"new_arrival","label":"Newest products first"},{"value":"name","label":"Product name, A-Z"}],"example":"price_asc"},{"name":"price_min","type":"integer","required":false,"description":"Lowest selling price in INR. Use with `price_max`; the source takes the pair as one band.","on_invalid":"ignore","example":0,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest selling price in INR. Measured on the Lipstick category: 718 products unfiltered, 295 under 500, 84 between 1000 and 1999.","on_invalid":"ignore","example":499,"minimum":1},{"name":"min_discount","type":"integer","required":false,"description":"Only products discounted by at least this percentage. Measured on Lipstick: 718 unfiltered, 453 discounted at all, 184 at 20 % or more, 92 at 30 %, 36 at 40 %.","on_invalid":"ignore","example":30,"minimum":0,"maximum":90},{"name":"min_rating","type":"integer","required":false,"description":"Only products whose average customer rating is at least this many stars (1-4; Nykaa publishes no 5-only filter). Measured on the query 'kajal waterproof': 329 unfiltered, 309 at 3+, 278 at 4+.","on_invalid":"ignore","example":4,"minimum":1,"maximum":4},{"name":"brand_id","type":"string","required":false,"description":"Narrow to one brand. The id comes from `facets.brand` on this action (set `include_facets`) or from `brands`. Measured: brand 3899 in category 249 returns exactly the 26 the facet promises. Nykaa offers no brand facet on a KEYWORD search, only on a category or brand listing.","on_invalid":"ignore","example":"3899"},{"name":"color_id","type":"string","required":false,"description":"Narrow to one colour family; the id comes from `facets.color`. 🔴 This one matches at SHADE level, so on a category its own count can exceed the unfiltered product count.","on_invalid":"ignore","example":"15514","aliases":["colour_id"]},{"name":"finish_id","type":"string","required":false,"description":"Finish, e.g. matte / creme / satin / glossy. Id from `facets.finish`. Measured on Lipstick: 454 of 718 are matte.","on_invalid":"ignore","example":"10881"},{"name":"concern_id","type":"string","required":false,"description":"Skin or hair concern (acne, pigmentation, dryness, hair fall). Id from `facets.concern` — this is the axis Indian beauty shoppers actually buy on.","on_invalid":"ignore","example":"10777"},{"name":"formulation_id","type":"string","required":false,"description":"Formulation (liquid, cream, powder, pencil, gel). Id from `facets.formulation`.","on_invalid":"ignore","example":"10822"},{"name":"ingredient_id","type":"string","required":false,"description":"Hero ingredient (hyaluronic acid, niacinamide, salicylic acid, retinol). Id from `facets.ingredient_v1`.","on_invalid":"ignore","example":"228713"},{"name":"gender_id","type":"string","required":false,"description":"Gender the product is listed for. Id from `facets.gender` (10711 female, 10712 unisex on the categories measured).","on_invalid":"ignore","example":"10712","aliases":["gender"]},{"name":"country_of_origin","type":"string","required":false,"description":"ISO country code of manufacture, as Nykaa files it. Id from `facets.country_of_origin` — 'IN' and 'KR' are the two a buyer of Indian beauty data usually wants.","on_invalid":"ignore","example":"IN"},{"name":"preference_id","type":"string","required":false,"description":"Claim or preference (paraben free, cruelty free, vegan, dermatologically tested). Id from `facets.preference`.","on_invalid":"ignore","example":"10851"},{"name":"skin_type_id","type":"string","required":false,"description":"Skin type the product is listed for (oily, dry, normal, combination, sensitive). Id from `facets.skin_type`.","on_invalid":"ignore","example":"10780"},{"name":"include_facets","type":"boolean","required":false,"description":"Also return `facets`: every filter Nykaa offers for this listing — brands, colours, finishes, concerns, ingredients, formulations, price bands, ratings, discounts, country of origin — each with its id and the number of products behind it. This is where every `*_id` parameter above comes from.","on_invalid":"ignore","default":false}],"returns":"products[] (same shape as search), total_results, page, brand_id, brand_name, resolved_from (set when a name was resolved), promo_tiles_dropped, facets (optional)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product","description":"The full Nykaa product record: selling price and printed MRP with the real discount, brand, rating and how many people rated it, how many wrote a review, the 1-5 star histogram, Nykaa's own review summary and its ranked aspect sentiment ('Color Payoff: Positive'), the barcode (GTIN), seller, country of origin, expiry date, return window, live stock, shade count, every image, the description, ingredients and how-to-use.","required_params":["product_id"],"optional_params":[],"params":[{"name":"product_id","type":"string","required":true,"description":"The product to read. Accepts the numeric id (367160) or a full nykaa.com product URL. Every listing row carries both.","on_invalid":"reject","example":"367160","aliases":["id","url","slug"]}],"returns":"product{product_id, url, name, product_title, brand, price_inr, mrp_inr, discount_percent, discount_percent_listed, currency, rating, rating_count, review_count, rating_histogram[]{stars, count, percent}, review_summary, review_aspects[]{aspect, sentiment, rank}, top_review, gtin, sku, seller, country_of_origin, manufacturer, expiry_date, return_period_days, returnable, in_stock, stock_quantity, shade_count, variant_type, images[], description, ingredients, how_to_use, offers[], category_path[]}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/shades","description":"Every shade of one product — or every pack size, for products Nykaa sells in several weights — with ITS OWN price, MRP, discount, stock count and images. A Nykaa lipstick is one product id and thirty shades, each separately priced and separately in or out of stock, and this is the only place that is published. Shades with zero stock are returned with `in_stock: false` rather than dropped, which is also why `count` here can be larger than the `shade_count` on the product record — that one is Nykaa's own headline number and leaves discontinued shades out.","required_params":["product_id"],"optional_params":[],"params":[{"name":"product_id","type":"string","required":true,"description":"The product to read. Accepts the numeric id (367160) or a full nykaa.com product URL. Every listing row carries both.","on_invalid":"reject","example":"367160","aliases":["id","url","slug"]}],"returns":"shades[]{variant_id, name, sku, price_inr, mrp_inr, discount_percent, currency, stock_quantity, in_stock, image, images[]}, product_id, count, in_stock_count","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/reviews","description":"The customer reviews Nykaa publishes for a product: rating, title, the full text, the author display name, the date, how many shoppers found it helpful, whether the reviewer is a verified buyer, which shade they bought and the photos they posted. 🔴 Two honest limits. The source server-renders the same 20 reviews whatever page, sort or filter is asked for, so that is the ceiling per product and this action does not pretend to page. And those 20 are Nykaa's own 'most useful, verified buyer' selection, not a random sample: across 12 products measured, 240 of 240 were verified buyers, 240 of 240 carried photos and the ratings skew to 5. `reviews_available` is Nykaa's own total and `product` returns the real 1-5 star histogram behind it — read that, not these 20, for sentiment.","required_params":["product_id"],"optional_params":[],"params":[{"name":"product_id","type":"string","required":true,"description":"The product to read. Accepts the numeric id (367160) or a full nykaa.com product URL. Every listing row carries both.","on_invalid":"reject","example":"367160","aliases":["id","url","slug"]}],"returns":"reviews[]{review_id, rating, title, text, author, created_at, helpful_count, verified_buyer, shade_id, images[]}, product{product_id, name, brand, url, rating, rating_count, review_count}, count, reviews_available","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"product/similar","description":"The products Nykaa itself recommends beside this one — its 'Explore Similar Products' rail, returned as full product rows with prices and ratings. A competitive set around a product without having to guess a category. Nykaa does not build a rail for every product: on 12 products measured, 6 had 9-16 recommendations and 6 had none, and an empty `products` means the source publishes none, not an error.","required_params":["product_id"],"optional_params":[],"params":[{"name":"product_id","type":"string","required":true,"description":"The product to read. Accepts the numeric id (367160) or a full nykaa.com product URL. Every listing row carries both.","on_invalid":"reject","example":"367160","aliases":["id","url","slug"]}],"returns":"products[] (same shape as search), product_id, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"suggest","description":"Nykaa's own autocomplete for a partial query: the search terms it would offer, the brands and categories it maps the term to WITH their ids, and the products it would show. The cheapest way to turn a brand or category NAME into the id the other actions take.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"A partial or full query, brand name or category name.","on_invalid":"reject","example":"maybelline","aliases":["q","keyword","term"]}],"returns":"suggestions[]{text, type (brand|category|query), url, category_id, match_count}, products[]{product_id, name, url}, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"trending","description":"What India is searching for on Nykaa right now — the popular-searches list the site prints in its own search box.","required_params":[],"optional_params":[],"params":[],"returns":"trending[]{text, url, type}, count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"categories","description":"Nykaa's category tree: every department, category and sub-category with its id, name, URL and depth. These are the ids `category` takes. One call, cached for a day.","required_params":[],"optional_params":["query","depth"],"params":[{"name":"query","type":"string","required":false,"description":"Only categories whose name contains this text (case-insensitive). Omit for the whole tree.","on_invalid":"ignore","example":"lipstick","aliases":["q","name"]},{"name":"depth","type":"integer","required":false,"description":"Only categories at this depth, counted in URL segments as Nykaa files them: 2 is a category ('makeup/face' = Face), 3 a sub-category ('makeup/face/face-foundation' = Foundation). Measured: 337 categories, depths 1-6, most at 2 and 3.","on_invalid":"ignore","example":3,"minimum":1,"maximum":6}],"returns":"categories[]{category_id, name, url, path[], depth}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"brands","description":"Nykaa's A-Z brand index: every brand the marketplace carries, with the id its brand page is addressed by, its letter and its URL. These are the ids `brand` and `brand_id` take. One call, cached for a day.","required_params":[],"optional_params":["query","letter","limit"],"params":[{"name":"query","type":"string","required":false,"description":"Only brands whose name contains this text (case-insensitive).","on_invalid":"ignore","example":"lore","aliases":["q","name"]},{"name":"letter","type":"string","required":false,"description":"Only brands filed under this letter (A-Z, or # for names starting with a digit or symbol).","on_invalid":"ignore","example":"L"},{"name":"limit","type":"integer","required":false,"description":"Rows to return — the index holds several thousand brands. `total` always reports the full match count.","on_invalid":"ignore","default":500,"minimum":1,"maximum":10000}],"returns":"brands[]{brand_id, name, letter, url, is_top_brand}, count, total","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{}}]},{"name":"offerup","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"OfferUp API scraper — search the US local classifieds marketplace by keyword, category and location (ZIP or coordinates) and read the full listing record: price, condition, photos, category, pickup/shipping and the seller's public profile. Prices in USD. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/offerup/v1","spec_available":true,"actions":[{"name":"search","description":"Search OfferUp listings near a US location by keyword, by category, or both. Returns one row per listing with its id, title, numeric price, town, photo and OfferUp's own tile flags — about 44-50 rows per call — plus a `next_cursor` for the next page. The condition and whether the price is firm are NOT on a feed tile (measured 0 of 704 rows); `product/detail` fills both. Location is what scopes the query: give `zip_code` (resolved by OfferUp's own geocoder) or `latitude`+`longitude`. Use the returned `listing_id` with `product/detail` for the description, the photo gallery and the seller.","required_params":[],"optional_params":["query","category","zip_code","latitude","longitude","radius","price_min","price_max","sort","cursor","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"What to look for, in English. Optional — omit it and pass `category` instead to browse a whole category near the location. When BOTH are given, the category wins where the keyword has no local supply (measured: q=iphone + category=5 returns cars), so use one or the other unless you want that.","on_invalid":"reject","example":"couch","aliases":["q","keyword","search"]},{"name":"category","type":"string","required":false,"description":"OfferUp category id. Top level: 1=Electronics & Media, 2=Home & Garden, 3=Clothing, Shoes, & Accessories, 4=Baby & Kids, 5=Vehicles, 6=Toys, Games, & Hobbies, 7=Sports & Outdoors, 8=Collectibles & Art, 9=Pet supplies, 10=Health & Beauty, 11=Wedding, 12=Business equipment, 13=Tickets, 14=General. Sub-categories are dotted and any depth works — 2.1 Furniture, 1.2 Cell phones & Accessories, 5.1 Cars & Trucks. Every result of `product/detail` returns the listing's own `category.id`, which is how you discover the deeper ids.","on_invalid":"reject","example":"2.1","aliases":["cid","category_id"]},{"name":"zip_code","type":"string","required":false,"description":"US 5-digit ZIP the search is centred on. Resolved to coordinates by OfferUp's own geocoder (one extra ~0.7 s call), and the resolved city/state/lat/lon come back in `location`. Give this OR latitude+longitude. If you give neither, OfferUp falls back to the geographic centre of the US (Pretty Prairie, Kansas) and the results are Kansas listings — `location.source` says which happened.","on_invalid":"reject","example":"90012","aliases":["zip","postal_code","zipcode"]},{"name":"latitude","type":"number","required":false,"description":"Latitude the search is centred on. Use with `longitude`; skips the ZIP lookup.","on_invalid":"reject","example":34.0522,"minimum":-90,"maximum":90,"aliases":["lat"]},{"name":"longitude","type":"number","required":false,"description":"Longitude the search is centred on. Use with `latitude`.","on_invalid":"reject","example":-118.2437,"minimum":-180,"maximum":180,"aliases":["lon","lng"]},{"name":"radius","type":"enum","required":false,"description":"Search radius in miles around the location. Only the five values OfferUp's own distance slider offers are accepted; anything else is rejected rather than silently ignored. 50 is the site's maximum — there is no nationwide search.","on_invalid":"reject","allowed_values":[{"value":"5","label":"5 miles"},{"value":"10","label":"10 miles"},{"value":"20","label":"20 miles"},{"value":"30","label":"30 miles (OfferUp's default)"},{"value":"50","label":"50 miles (the maximum)"}],"default":"30"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in USD. Bites: min=100 & max=200 returned rows priced 100-200 only.","on_invalid":"reject","example":100,"minimum":0,"maximum":1000000},{"name":"price_max","type":"number","required":false,"description":"Highest price in USD (OfferUp's own maximum is 1000000).","on_invalid":"reject","example":500,"minimum":0,"maximum":1000000},{"name":"sort","type":"enum","required":false,"description":"Result order. These are the five orderings OfferUp's own sort drawer offers and each was verified to change the result set; anything else is rejected.","on_invalid":"reject","allowed_values":[{"value":"best_match","label":"OfferUp's own relevance order (default)"},{"value":"newest","label":"Most recently posted first"},{"value":"closest","label":"Nearest to the location first"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"}],"default":"best_match"},{"name":"cursor","type":"string","required":false,"description":"Next page. Pass back the `next_cursor` from the previous response — verified to return a page with zero ids in common with the one before it. There is no page NUMBER: OfferUp pages this feed by cursor only, and it publishes no total, so `total_results` is null rather than a guess.","on_invalid":"reject","aliases":["page_cursor","next_cursor"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry on a fresh exit (1-6, default 3 — leave unchanged for typical use).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{position, listing_id, title, price (number; null when call_for_price is true), price_display (OfferUp's own formatted string), currency=USD, call_for_price (true on a dealer listing whose price OfferUp hides on the tile — product/detail returns the number), is_firm_price (null on a search row — OfferUp does not fill it here), condition (null on a search row; product/detail has it), location{name, latitude (null on a search row), longitude (null)}, image{url,width,height}, vehicle_miles, flags[] (verbatim: LOCAL_PICKUP, CALL_FOR_PRICE), url, seller (null — OfferUp publishes no owner on a feed tile), rating (null — OfferUp has no product reviews), review_count (null), rating_scale (null)}, count, next_cursor, total_results (null — OfferUp publishes no total for this feed), location{latitude, longitude, zip_code, city, state, radius_miles, source ('zip_code' | 'coordinates' | 'offerup_default_us_centre')}, query, category, sort, ad_tiles_dropped, duplicate_rows_dropped (meta.pagination carries next_cursor + has_more)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"couch","latitude":34.0522,"longitude":-118.2437}},{"name":"product/detail","description":"The full OfferUp listing record by `listing_id` (or listing URL): title, the seller's own description, numeric price and whether it is firm, condition, posted date, the complete photo gallery at full size, the category with its whole path, the listing's coordinates and town, pickup/shipping terms, vehicle attributes when it is a vehicle, and the seller's PUBLIC profile — display name, how many items they have sold and bought, when they joined, their stated response time and their verification badges.","required_params":["listing_id"],"optional_params":["max_rotations"],"params":[{"name":"listing_id","type":"string","required":true,"description":"OfferUp listing id — the uuid in the listing URL (https://offerup.com/item/detail/ca6fcc12-… → ca6fcc12-…). A full listing URL is also accepted. Every `search` row returns it as `listing_id`.","on_invalid":"reject","example":"ca6fcc12-1849-3bac-a671-593efc5c9c01","aliases":["id","item_id","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry on a fresh exit (1-6, default 3 — leave unchanged for typical use).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"listing{listing_id, internal_id, title, original_title, description, price (number), price_display, original_price, currency=USD, is_firm_price, quantity, sku, condition ('NEW' …), condition_code (OfferUp's own 0-100 integer, passed through untranslated), state, is_removed, is_local, is_merchant_item, posted_at, updated_at, location{name, latitude, longitude}, category{id, name, l1_id, l1_name, l2_id, l2_name, l3_id, l3_name}, images[]{id,url,width,height}, image, shipping{local_pickup, shipping_available, can_ship_to_buyer, buy_it_now, seller_pays_shipping, shipping_price, shipping_price_display}, seller{id, name, url, rating (null — OfferUp publishes no seller rating on this surface), review_count (null), rating_scale (null), items_sold, items_purchased, response_time, joined_at, location_name, is_business, is_premium, is_auto_dealer, is_verified, is_inactive, badges[] (labels only — no phone number or address), avatar}, vehicle{make, model, miles, color, body, fuel_type, transmission, title_status, mpg_city, mpg_highway, engine_cylinders, drive_train} (null when the listing is not a vehicle), rating (null — OfferUp has no product reviews), review_count (null), rating_scale (null), url}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"listing_id":"617edbe7-77f8-3284-a7da-d33032d49da0"}}]},{"name":"olx","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"OLX API scraper — search OLX classifieds across 8 countries (Brazil, Poland, Ukraine, Romania, Portugal, Bulgaria, Kazakhstan, Uzbekistan): listings, offer detail, prices, photos, categories, filters, seller profiles & inventory, related offers, result counts and a GEO location resolver. Brazil adds state/region scoping and a private-vs-professional seller filter. No account needed; public logged-out data only.","version":"0.3.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/olx/v1","spec_available":true,"actions":[{"name":"search","description":"Search OLX classifieds by keyword and/or category with sort, condition, price, delivery and location filters. Offset pagination (limit=40). Promoted ads filtered out.","required_params":[],"optional_params":["query","country","category_id","sort_by","condition","with_photos","courier","region_id","city_id","district_id","price_from","price_to","filters","offset","limit","state","region","category","page","seller_type"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword search. (search needs query OR category_id.)","on_invalid":"reject","example":"iphone 13"},{"name":"category_id","type":"integer","required":false,"description":"OLX numeric category id (discover via the categories / breadcrumbs actions). (search needs query OR category_id.)","on_invalid":"reject","example":99},{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"},{"name":"sort_by","type":"enum","required":false,"description":"Result ordering. Common keys shown; other OLX sort keys are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance (default)"},{"value":"created_at:desc","label":"Newest first"},{"value":"filter_float_price:asc","label":"Price: low to high"},{"value":"filter_float_price:desc","label":"Price: high to low"}],"example":"filter_float_price:asc"},{"name":"condition","type":"enum","required":false,"description":"Item condition filter.","on_invalid":"ignore","allowed_values":[{"value":"new","label":"Brand new"},{"value":"used","label":"Used"}],"example":"used"},{"name":"with_photos","type":"boolean","required":false,"description":"Only return listings that have at least one photo.","on_invalid":"ignore","example":true},{"name":"courier","type":"boolean","required":false,"description":"Only return listings that offer OLX delivery (courier shipping).","on_invalid":"ignore","example":true},{"name":"region_id","type":"integer","required":false,"description":"Location filter: OLX numeric region id (discover via the filters action).","on_invalid":"ignore"},{"name":"city_id","type":"integer","required":false,"description":"Location filter: OLX numeric city id (discover via the filters action).","on_invalid":"ignore"},{"name":"district_id","type":"integer","required":false,"description":"Location filter: OLX numeric district id (discover via the filters action).","on_invalid":"ignore"},{"name":"price_from","type":"number","required":false,"description":"Minimum price filter (in the marketplace's local currency).","on_invalid":"ignore","example":100},{"name":"price_to","type":"number","required":false,"description":"Maximum price filter (in the marketplace's local currency).","on_invalid":"ignore","example":500},{"name":"filters","type":"object","required":false,"description":"Advanced escape hatch: extra raw OLX filter params as a key->value map (e.g. {\"filter_enum_state[0]\": \"used\"}); keys come from the filters action. Most users won't need this — use condition / with_photos / courier instead.","on_invalid":"ignore","example":{"filter_enum_phonemodel[0]":"iphone-13"}},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-50, default 40). Larger values are clamped to 50.","on_invalid":"ignore","default":40,"example":40,"minimum":1,"maximum":50},{"name":"state","type":"string","required":false,"description":"Brazil only: 2-letter state (UF) to scope the search, e.g. 'sp', 'rj', 'mg'. All 27 are listed by the locations action. Omit for the whole country.","on_invalid":"ignore","example":"sp"},{"name":"region","type":"string","required":false,"description":"Brazil only: sub-region slug inside a state (requires state). Slugs come from the locations action or from a listing URL.","on_invalid":"ignore","example":"sao-paulo-e-regiao"},{"name":"category","type":"string","required":false,"description":"Brazil only: category slug, e.g. 'celulares', 'imoveis', 'autos-e-pecas'. Slugs come from the categories action. Also required before the condition filter has any effect.","on_invalid":"ignore","example":"celulares"},{"name":"page","type":"integer","required":false,"description":"Brazil only: 1-based result page (50 listings per page). `offset` is also accepted and converted.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"seller_type","type":"enum","required":false,"description":"Brazil only: restrict to private or professional advertisers.","on_invalid":"ignore","allowed_values":[{"value":"private","label":"Private individuals only (Particular)"},{"value":"professional","label":"Professional sellers/dealers only (Profissional)"}],"example":"professional"}],"returns":"offers[] (normalized, promoted slots filtered), search_id, total, has_more, next_offset. Brazil returns offers[] + total + page/page_size/has_more/next_page + sort_applied + ad_slots_dropped.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone","country":"pl"}},{"name":"count","description":"Lightweight result count for a query/category/filter combination — total matching listings without fetching the offers. Useful for market sizing.","required_params":[],"optional_params":["query","country","category_id","condition","region_id","city_id","district_id","price_from","price_to","filters","state","region","category","seller_type"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword search. (search needs query OR category_id.)","on_invalid":"reject","example":"iphone 13"},{"name":"category_id","type":"integer","required":false,"description":"OLX numeric category id (discover via the categories / breadcrumbs actions). (search needs query OR category_id.)","on_invalid":"reject","example":99},{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"},{"name":"condition","type":"enum","required":false,"description":"Item condition filter.","on_invalid":"ignore","allowed_values":[{"value":"new","label":"Brand new"},{"value":"used","label":"Used"}],"example":"used"},{"name":"region_id","type":"integer","required":false,"description":"Location filter: OLX numeric region id (discover via the filters action).","on_invalid":"ignore"},{"name":"city_id","type":"integer","required":false,"description":"Location filter: OLX numeric city id (discover via the filters action).","on_invalid":"ignore"},{"name":"district_id","type":"integer","required":false,"description":"Location filter: OLX numeric district id (discover via the filters action).","on_invalid":"ignore"},{"name":"price_from","type":"number","required":false,"description":"Minimum price filter (in the marketplace's local currency).","on_invalid":"ignore","example":100},{"name":"price_to","type":"number","required":false,"description":"Maximum price filter (in the marketplace's local currency).","on_invalid":"ignore","example":500},{"name":"filters","type":"object","required":false,"description":"Advanced escape hatch: extra raw OLX filter params as a key->value map (e.g. {\"filter_enum_state[0]\": \"used\"}); keys come from the filters action. Most users won't need this — use condition / with_photos / courier instead.","on_invalid":"ignore","example":{"filter_enum_phonemodel[0]":"iphone-13"}},{"name":"state","type":"string","required":false,"description":"Brazil only: 2-letter state (UF) to scope the search, e.g. 'sp', 'rj', 'mg'. All 27 are listed by the locations action. Omit for the whole country.","on_invalid":"ignore","example":"sp"},{"name":"region","type":"string","required":false,"description":"Brazil only: sub-region slug inside a state (requires state). Slugs come from the locations action or from a listing URL.","on_invalid":"ignore","example":"sao-paulo-e-regiao"},{"name":"category","type":"string","required":false,"description":"Brazil only: category slug, e.g. 'celulares', 'imoveis', 'autos-e-pecas'. Slugs come from the categories action. Also required before the condition filter has any effect.","on_invalid":"ignore","example":"celulares"},{"name":"seller_type","type":"enum","required":false,"description":"Brazil only: restrict to private or professional advertisers.","on_invalid":"ignore","allowed_values":[{"value":"private","label":"Private individuals only (Particular)"},{"value":"professional","label":"Professional sellers/dealers only (Profissional)"}],"example":"professional"}],"returns":"total_count, visible_total_count (OLX caps deep results at 1000). Brazil returns count (its own totalOfAds) — note that on Brazil this costs a full listing fetch upstream, there is no count-only endpoint.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone","country":"pl"}},{"name":"locations","description":"GEO resolver: turn a place name into OLX region/city/district ids for the location filters. No params -> all regions; region_id -> its cities; city_id -> city detail + districts; query -> match a city by name across regions.","required_params":[],"optional_params":["country","query","region_id","city_id","state"],"params":[{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"},{"name":"query","type":"string","required":false,"description":"Place name to look up (city/region). Optional — omit to list all regions for the country.","on_invalid":"reject","example":"Warszawa"},{"name":"region_id","type":"integer","required":false,"description":"List the cities inside this region id (region ids come from the same locations action with no params).","on_invalid":"ignore","example":2},{"name":"city_id","type":"integer","required":false,"description":"Look up this city's detail + districts (city ids come from a region's city list).","on_invalid":"ignore","example":17871},{"name":"state","type":"string","required":false,"description":"Brazil only: 2-letter state (UF) to scope the search, e.g. 'sp', 'rj', 'mg'. All 27 are listed by the locations action. Omit for the whole country.","on_invalid":"ignore","example":"sp"}],"returns":"level (regions|cities|city|matches), regions[]/cities[]/districts[]/matches[] with id, name, lat/lon, has_districts. Brazil: no params -> all 27 states (uf, name, slug); state=<uf> -> sub-region slugs observed in that state's own listing URLs (a sample, not a complete directory — Brazil publishes no sub-region index).","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"pl"}},{"name":"offer","description":"Offer detail by numeric id (no trailing slash on upstream path).","required_params":["id"],"optional_params":["country"],"params":[{"name":"id","type":"integer","required":true,"description":"OLX offer numeric id (the digits in an offer URL / a search result's id).","on_invalid":"reject","example":1027143072},{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"}],"returns":"offer{} — full normalized offer (price, condition, photos, location, seller, params)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":1027143072,"country":"pl"}},{"name":"categories","description":"Category facets + filter suggestions from search metadata, plus global filter definitions.","required_params":[],"optional_params":["query","country","category_id","category","state"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword search. (search needs query OR category_id.)","on_invalid":"reject","example":"iphone 13"},{"name":"category_id","type":"integer","required":false,"description":"OLX numeric category id (discover via the categories / breadcrumbs actions). (search needs query OR category_id.)","on_invalid":"reject","example":99},{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"},{"name":"category","type":"string","required":false,"description":"Brazil only: category slug, e.g. 'celulares', 'imoveis', 'autos-e-pecas'. Slugs come from the categories action. Also required before the condition filter has any effect.","on_invalid":"ignore","example":"celulares"},{"name":"state","type":"string","required":false,"description":"Brazil only: 2-letter state (UF) to scope the search, e.g. 'sp', 'rj', 'mg'. All 27 are listed by the locations action. Omit for the whole country.","on_invalid":"ignore","example":"sp"}],"returns":"facets, filter_suggestions, filter_definitions, total_count, visible_total_count. Brazil returns categories[] — the site's full public taxonomy with id, label, parent_id and the slug the category param takes.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"pl","category_id":99}},{"name":"user_offers","description":"Active offers for a seller user_id with offset pagination.","required_params":["user_id"],"optional_params":["country","offset","limit"],"params":[{"name":"user_id","type":"integer","required":true,"description":"OLX seller numeric id (an offer's seller_id / search result user.id).","on_invalid":"reject","example":904511},{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-50, default 40). Larger values are clamped to 50.","on_invalid":"ignore","default":40,"example":40,"minimum":1,"maximum":50}],"returns":"offers[] (this seller's active listings), total, has_more, next_offset","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"suggested","description":"Related/suggested offers for a given offer id.","required_params":["id"],"optional_params":["country"],"params":[{"name":"id","type":"integer","required":true,"description":"OLX offer numeric id (the digits in an offer URL / a search result's id).","on_invalid":"reject","example":1027143072},{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"}],"returns":"offers[] related to the source offer, source_id","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"id":1027143072}},{"name":"breadcrumbs","description":"Category or offer breadcrumb trail.","required_params":[],"optional_params":["country","category_id","id"],"params":[{"name":"category_id","type":"integer","required":false,"description":"OLX numeric category id (discover via the categories / breadcrumbs actions). (search needs query OR category_id.)","on_invalid":"reject","example":99},{"name":"id","type":"integer","required":false,"description":"OLX offer numeric id (alternative to category_id for breadcrumbs).","on_invalid":"reject","example":1027143072},{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"}],"returns":"breadcrumbs[] — the category/offer hierarchy trail","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"user","description":"Public seller profile.","required_params":["user_id"],"optional_params":["country","id"],"params":[{"name":"user_id","type":"integer","required":true,"description":"OLX seller numeric id (an offer's seller_id / search result user.id).","on_invalid":"reject","example":904511},{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"}],"returns":"user{} — the public, logged-out seller profile. Brazil returns name, profile_slug/profile_url, member_since, rating_score, chat_response_time, online/last_activity, verification flags and location. 🔴 On Brazil the id is a LISTING id, not a seller id (the platform keys this surface on the ad) — pass the id of any live listing by that seller. Brazil does not publish the seller's phone number to logged-out visitors.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"filters","description":"Global filter attribute definitions keyed by filter_enum/filter_float names.","required_params":[],"optional_params":["country","category","state","query"],"params":[{"name":"country","type":"enum","required":false,"description":"OLX country edition — each is a fully separate marketplace. Brazil (br) is a different platform generation: it takes state/region/category/page instead of region_id/city_id/category_id/offset, its `user` action is keyed on a listing id rather than a seller id, and it does not serve user_offers, suggested or breadcrumbs. in/tr are not supported.","on_invalid":"reject","allowed_values":[{"value":"pl","label":"Poland (olx.pl)"},{"value":"ua","label":"Ukraine (olx.ua)"},{"value":"bg","label":"Bulgaria (olx.bg)"},{"value":"ro","label":"Romania (olx.ro)"},{"value":"pt","label":"Portugal (olx.pt)"},{"value":"kz","label":"Kazakhstan (olx.kz)"},{"value":"uz","label":"Uzbekistan (olx.uz)"},{"value":"br","label":"Brazil (olx.com.br)"}],"default":"pl","example":"pl"},{"name":"category","type":"string","required":false,"description":"Brazil only: category slug, e.g. 'celulares', 'imoveis', 'autos-e-pecas'. Slugs come from the categories action. Also required before the condition filter has any effect.","on_invalid":"ignore","example":"celulares"},{"name":"state","type":"string","required":false,"description":"Brazil only: 2-letter state (UF) to scope the search, e.g. 'sp', 'rj', 'mg'. All 27 are listed by the locations action. Omit for the whole country.","on_invalid":"ignore","example":"sp"},{"name":"query","type":"string","required":false,"description":"Free-text keyword search. (search needs query OR category_id.)","on_invalid":"reject","example":"iphone 13"}],"returns":"filters{} — global filter attribute definitions (enum/float keys). Brazil returns filters[] — the filter components the site itself renders for that category, each with its real query-string key(s) and values.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"onthemarket","category":{"id":"real-estate","title":"Real Estate"},"title":"OnTheMarket API scraper — UK property data: for-sale and to-rent listings with full filters (price, beds, property type, radius, keywords, added-within, sort), complete property detail (price, beds/baths, description, key features, tenure & council-tax, photos, floorplans, nearby stations & schools, area stats, agent) and location autocomplete from OnTheMarket.com — the UK's #3 property portal — no API key required","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/onthemarket/v1","spec_available":true,"actions":[{"name":"location_search","description":"Resolve a text location (town, postcode, borough, area) to OnTheMarket location slug(s). Returns multiple ranked matches; use a result's location_id in search.","required_params":["query"],"optional_params":["channel","limit"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text place to resolve (town, city, postcode, borough, area).","on_invalid":"reject","example":"London","aliases":["location","q","search"]},{"name":"channel","type":"enum","required":false,"description":"Which market to search/resolve (default for-sale). Canonical values + the listed aliases are accepted; any other value is rejected with this list.","on_invalid":"reject","allowed_values":[{"value":"for-sale","label":"Properties for sale"},{"value":"to-rent","label":"Properties to rent"},{"value":"buy","label":"= for-sale"},{"value":"sale","label":"= for-sale"},{"value":"rent","label":"= to-rent"},{"value":"lettings","label":"= to-rent"}],"default":"for-sale","example":"for-sale"},{"name":"limit","type":"integer","required":false,"description":"Max location matches to return.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50}],"returns":"matches[]{location_id, name, display_name}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"query":"London"}},{"name":"search","description":"Search UK property listings by location (for sale / to rent) with structured filters: price, beds, property type, radius, keywords, added-within and sort. Paginate with page/max_pages (30 per page).","required_params":[],"optional_params":["location","location_id","channel","for_rent","price_min","price_max","beds_min","beds_max","property_type","radius","added_within_days","sort","keywords","retirement_only","shared_ownership_only","auction_only","new_homes_only","include_under_offer","include_sponsored","page","max_pages","filters"],"params":[{"name":"location","type":"string","required":false,"description":"Free-text location OR an OnTheMarket location slug (e.g. 'london', 'sw9', 'manchester'). Provide this OR location_id. Use location_search for the exact slug.","on_invalid":"ignore","example":"London","aliases":["query"]},{"name":"location_id","type":"string","required":false,"description":"An OnTheMarket location slug from location_search (its `location_id`/seo_id, e.g. 'notting-hill', 'bs1'). Most precise. Provide this OR location.","on_invalid":"ignore","example":"london","aliases":["seo_id","slug"]},{"name":"channel","type":"enum","required":false,"description":"Which market to search/resolve (default for-sale). Canonical values + the listed aliases are accepted; any other value is rejected with this list.","on_invalid":"reject","allowed_values":[{"value":"for-sale","label":"Properties for sale"},{"value":"to-rent","label":"Properties to rent"},{"value":"buy","label":"= for-sale"},{"value":"sale","label":"= for-sale"},{"value":"rent","label":"= to-rent"},{"value":"lettings","label":"= to-rent"}],"default":"for-sale","example":"for-sale"},{"name":"for_rent","type":"boolean","required":false,"description":"Shortcut: true selects the to-rent channel when `channel` is unset.","on_invalid":"ignore","example":false},{"name":"price_min","type":"integer","required":false,"description":"Minimum price in GBP (sale price, or monthly rent £pcm for to-rent).","on_invalid":"ignore","example":400000,"minimum":0,"aliases":["min_price","minPrice"]},{"name":"price_max","type":"integer","required":false,"description":"Maximum price in GBP (sale price, or monthly rent £pcm for to-rent).","on_invalid":"ignore","example":900000,"minimum":0,"aliases":["max_price","maxPrice"]},{"name":"beds_min","type":"integer","required":false,"description":"Minimum bedrooms (2 = 2+; 0 for studios).","on_invalid":"ignore","example":2,"minimum":0,"maximum":10,"aliases":["beds","min_bedrooms","minBedrooms"]},{"name":"beds_max","type":"integer","required":false,"description":"Maximum bedrooms.","on_invalid":"ignore","example":4,"minimum":0,"maximum":10,"aliases":["max_bedrooms","maxBedrooms"]},{"name":"property_type","type":"string","required":false,"description":"Property type(s), comma-separated. One or more of: flat, apartment, houses, detached, semi-detached, terraced, bungalow, studio, cottage, mews, park-home, land (e.g. 'detached,semi-detached'). 'house'=houses.","on_invalid":"ignore","example":"flat","aliases":["property_types","prop_types","home_type"]},{"name":"radius","type":"number","required":false,"description":"Search radius in MILES around the location (0=this area only; 0.25/0.5/1/3/5/10/15/20/30).","on_invalid":"ignore","example":1.0,"minimum":0,"maximum":30,"aliases":["radius_miles"]},{"name":"added_within_days","type":"integer","required":false,"description":"Only listings added recently; mapped to the nearest supported window (1, 3, 7 or 14 days).","on_invalid":"ignore","example":7,"minimum":1,"aliases":["max_days_since_added"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering (default = OnTheMarket's recommended order).","on_invalid":"ignore","allowed_values":[{"value":"recommended","label":"Recommended (default)"},{"value":"newest","label":"Most recent"},{"value":"price_high","label":"Price: high to low"},{"value":"price_low","label":"Price: low to high"}],"example":"newest"},{"name":"keywords","type":"string","required":false,"description":"Free-text keyword filter (e.g. 'garden', 'garage', 'parking').","on_invalid":"ignore","example":"garden"},{"name":"retirement_only","type":"boolean","required":false,"description":"Only retirement properties.","on_invalid":"ignore","example":false},{"name":"shared_ownership_only","type":"boolean","required":false,"description":"Only shared-ownership properties.","on_invalid":"ignore","example":false},{"name":"auction_only","type":"boolean","required":false,"description":"Only auction properties.","on_invalid":"ignore","example":false},{"name":"new_homes_only","type":"boolean","required":false,"description":"Only new-build homes.","on_invalid":"ignore","example":false},{"name":"include_under_offer","type":"boolean","required":false,"description":"Include Under Offer / Sold STC listings (for-sale).","on_invalid":"ignore","example":false},{"name":"include_sponsored","type":"boolean","required":false,"description":"OnTheMarket mixes paid adverts into its results grid (0-2 of every 30 rows, both channels). They are not properties — no price, address, bedrooms or listing link — so by DEFAULT they are removed and `meta.sponsored_count` reports how many were found. Set true to receive them in their real grid position, each flagged `sponsored: true`.","on_invalid":"ignore","default":false,"example":false,"aliases":["sponsored","include_ads"]},{"name":"page","type":"integer","required":false,"description":"1-based result page (30 listings per page).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"How many 30-result pages to fetch and merge, starting at `page`.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":42},{"name":"filters","type":"object","required":false,"description":"Advanced escape-hatch: extra raw OnTheMarket query params as a key->value map, merged after the typed filters above.","on_invalid":"ignore","example":{"chain-free":"true"}}],"returns":"items[]{sponsored (false for a real listing), property_id, title, price_display, price_amount?, bedrooms, property_type, address, latitude, longitude, features[], images[], details_url, agent{}}, count (PROPERTIES only — OnTheMarket mixes paid adverts into its grid and they are removed by default), channel, total_results (market total), sponsored_count (adverts found on the pages fetched), filters_applied, pages_fetched, stop_reason + meta{grid_rows, sponsored_count}. Pass include_sponsored=true to keep the adverts in their real grid position as {sponsored: true, advert_id, title, description, features[], advertiser, link_url, cover_image} rows","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"London"}},{"name":"property_detail","description":"Full property record: price (+qualifier), beds/baths, description, key features, key-info (tenure, council-tax band), images, floorplans, virtual/video tours, documents, nearby stations & schools, area stats (avg price, crime level), breadcrumbs and the listing agent.","required_params":[],"optional_params":["property_id","url"],"params":[{"name":"property_id","type":"string","required":true,"description":"OnTheMarket property id (the digits in a /details/<id>/ URL or a search result's property_id).","on_invalid":"reject","example":"19555795","aliases":["id"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full OnTheMarket property detail URL.","on_invalid":"ignore","example":"https://www.onthemarket.com/details/19555795/"}],"returns":"listing{} — title, price_display, price_amount, price_qualifier, bedrooms, bathrooms, description, features[], key_info[], images[], floorplans[], virtual_tours[], stations[], schools[], area_stats{}, breadcrumbs[], agent{}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"property_id":"19555795"}}]},{"name":"opensea","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"OpenSea API — NFT marketplace scraper: collection floor price, volume, market-cap stats, supply and socials; collection search; per-NFT item detail with traits, rarity rank, best listing/offer and last sale; paginated collection items; top holders; recent sales activity; and trending / top collection rankings from OpenSea (opensea.io) — no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/opensea/v1","spec_available":true,"actions":[{"name":"collection","description":"Full collection detail by slug: floor price, top offer, 24h + total volume, owner / listed / supply counts and 1-day floor change (live from OpenSea's GraphQL) merged with keyless metadata — description, image/banner, contracts (address + chain), category, safelist status, fees and social links (Twitter / Discord / Telegram / website).","required_params":["slug"],"optional_params":[],"params":[{"name":"slug","type":"string","required":true,"description":"OpenSea collection slug — the last path segment of an OpenSea collection URL (opensea.io/collection/<slug>), e.g. 'pudgypenguins', 'boredapeyachtclub', 'azuki'. Use the search action to resolve a name to its slug.","on_invalid":"reject","example":"pudgypenguins","aliases":["collection","collection_slug"]}],"returns":"collection{slug, name, category, floor_price{amount,symbol,usd}, top_offer, total_supply, unique_item_count, listed_count, owner_count, total_volume, one_day_volume, one_day_floor_change, description, image_url, banner_image_url, contracts[]{address,chain}, safelist_status, twitter_username, discord_url, project_url, fees, created_date, opensea_url}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"pudgypenguins"}},{"name":"search","description":"Search OpenSea collections by free-text name. Returns matching collections with slug, name, image, category, floor price, owner count, supply and total volume — use the returned slug with the other actions.","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Collection name or keyword to search for (e.g. 'pudgy', 'bored ape', 'azuki').","on_invalid":"reject","example":"pudgy","aliases":["q","name"]},{"name":"limit","type":"integer","required":false,"description":"Max collections to return (1-50, default 10).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50}],"returns":"collections[]{slug, name, category, image_url, floor_price, total_supply, owner_count, total_volume, opensea_url}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"pudgy"}},{"name":"items","description":"Paginated items (NFTs) in a collection. Each item: name, token id, contract, image, rarity rank, best listing price + marketplace, best offer and last sale. Sort by price / rarity / last-sale-price / listing-date. Cursor pagination — pass the returned meta.next_cursor as `cursor` to page on.","required_params":["slug"],"optional_params":["limit","cursor","sort_by","direction"],"params":[{"name":"slug","type":"string","required":true,"description":"OpenSea collection slug — the last path segment of an OpenSea collection URL (opensea.io/collection/<slug>), e.g. 'pudgypenguins', 'boredapeyachtclub', 'azuki'. Use the search action to resolve a name to its slug.","on_invalid":"reject","example":"pudgypenguins","aliases":["collection","collection_slug"]},{"name":"limit","type":"integer","required":false,"description":"Items per page (1-100, default 30).","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor — pass meta.next_cursor from the previous page to fetch the next.","on_invalid":"ignore"},{"name":"sort_by","type":"enum","required":false,"description":"Sort items by this field.","on_invalid":"ignore","allowed_values":[{"value":"PRICE","label":"Price"},{"value":"RARITY","label":"Rarity"},{"value":"LAST_SALE_PRICE","label":"Last sale price"},{"value":"CREATED_DATE","label":"Listing date"},{"value":"BEST_OFFER","label":"Best offer"}],"default":"PRICE","example":"PRICE"},{"name":"direction","type":"enum","required":false,"description":"Sort direction (ASC = cheapest/lowest first).","on_invalid":"ignore","allowed_values":[{"value":"ASC","label":"Ascending"},{"value":"DESC","label":"Descending"}],"default":"ASC","example":"ASC"}],"returns":"items[]{id, name, token_id, contract_address, image_url, rarity_rank, best_listing{amount,symbol,usd}, listing_marketplace, best_offer, last_sale} + meta{next_cursor, has_more}","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"pudgypenguins","limit":5}},{"name":"item","description":"Single NFT / item detail by collection contract + token id: name, image, all traits (trait_type + value), rarity rank, best listing (price + marketplace), best offer and last sale. Get contract_address from the collection action's contracts[] (or an items[] row); token_id is the NFT number.","required_params":["contract_address","token_id"],"optional_params":["chain"],"params":[{"name":"contract_address","type":"string","required":true,"description":"NFT contract address (0x…). From the collection's contracts[].address or an items[] row.","on_invalid":"reject","example":"0xbd3531da5cf5857e7cfaa92426877b022e612cf8","aliases":["contract","address"]},{"name":"token_id","type":"string","required":true,"description":"The token id / NFT number within the contract.","on_invalid":"reject","example":"7526","aliases":["token","id"]},{"name":"chain","type":"enum","required":false,"description":"Blockchain the item is on (default ethereum).","on_invalid":"ignore","allowed_values":[{"value":"ethereum","label":"Ethereum"},{"value":"matic","label":"Polygon"},{"value":"base","label":"Base"},{"value":"solana","label":"Solana"},{"value":"arbitrum","label":"Arbitrum"},{"value":"optimism","label":"Optimism"},{"value":"klaytn","label":"Klaytn"},{"value":"avalanche","label":"Avalanche"},{"value":"blast","label":"Blast"},{"value":"zora","label":"Zora"},{"value":"bsc","label":"BNB Chain"},{"value":"sei","label":"Sei"}],"default":"ethereum","example":"ethereum"}],"returns":"item{id, name, token_id, contract_address, image_url, animation_url, rarity_rank, collection_slug, traits[]{trait_type,value}, best_listing{amount,symbol,usd}, listing_marketplace, best_offer, last_sale, opensea_url}","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"activity","description":"Recent on-chain activity for a collection (default: sales). Each event: type, time, price (token amount + USD) and the item (name, token id, contract). Filter by event type — sales, listings, offers, transfers or mints.","required_params":["slug"],"optional_params":["limit","event_type"],"params":[{"name":"slug","type":"string","required":true,"description":"OpenSea collection slug — the last path segment of an OpenSea collection URL (opensea.io/collection/<slug>), e.g. 'pudgypenguins', 'boredapeyachtclub', 'azuki'. Use the search action to resolve a name to its slug.","on_invalid":"reject","example":"pudgypenguins","aliases":["collection","collection_slug"]},{"name":"limit","type":"integer","required":false,"description":"Max events (1-50, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50},{"name":"event_type","type":"enum","required":false,"description":"Which activity to return (default SALE = recent sales).","on_invalid":"ignore","allowed_values":[{"value":"SALE","label":"Sales"},{"value":"LISTING","label":"Listings"},{"value":"OFFER","label":"Offers"},{"value":"TRANSFER","label":"Transfers"},{"value":"MINT","label":"Mints"}],"default":"SALE","example":"SALE","aliases":["type"]}],"returns":"activity[]{id, type, event_time, price{amount,symbol,usd}, item_name, token_id, contract_address}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"pudgypenguins","event_type":"SALE","limit":5}},{"name":"holders","description":"Top holders (owners) of a collection, ranked by quantity owned. Each holder: wallet address, display name (ENS / OpenSea username if any), quantity, % of supply and estimated total NFT portfolio value (USD). Cursor pagination.","required_params":["slug"],"optional_params":["limit","cursor"],"params":[{"name":"slug","type":"string","required":true,"description":"OpenSea collection slug — the last path segment of an OpenSea collection URL (opensea.io/collection/<slug>), e.g. 'pudgypenguins', 'boredapeyachtclub', 'azuki'. Use the search action to resolve a name to its slug.","on_invalid":"reject","example":"pudgypenguins","aliases":["collection","collection_slug"]},{"name":"limit","type":"integer","required":false,"description":"Holders per page (1-50, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor (meta.next_cursor from the previous page).","on_invalid":"ignore"}],"returns":"holders[]{address, display_name, quantity, percent, estimated_nft_value_usd} + meta{next_cursor, has_more}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"pudgypenguins","limit":5}},{"name":"trending","description":"Trending or top collections ranked over a time window — the OpenSea rankings/leaderboard. Each: rank score, slug, name, floor price, volume, owners and 1-day floor change. Choose TRENDING (momentum) or TOP (by volume), and a window (1h / 1d / 7d / 30d).","required_params":[],"optional_params":["ranking","timeframe","limit"],"params":[{"name":"ranking","type":"enum","required":false,"description":"TRENDING (momentum) or TOP (highest volume).","on_invalid":"ignore","allowed_values":[{"value":"TRENDING","label":"Trending"},{"value":"TOP","label":"Top"}],"default":"TRENDING","example":"TRENDING"},{"name":"timeframe","type":"enum","required":false,"description":"Ranking window.","on_invalid":"ignore","allowed_values":[{"value":"ONE_HOUR","label":"1 hour"},{"value":"ONE_DAY","label":"1 day"},{"value":"SEVEN_DAYS","label":"7 days"},{"value":"THIRTY_DAYS","label":"30 days"}],"default":"ONE_DAY","example":"ONE_DAY","aliases":["window"]},{"name":"limit","type":"integer","required":false,"description":"Max collections (1-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100}],"returns":"collections[]{score, slug, name, category, image_url, floor_price, total_volume, one_day_volume, owner_count, listed_count, total_supply, one_day_floor_change, opensea_url}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"ranking":"TRENDING","timeframe":"ONE_DAY","limit":5}}]},{"name":"otto","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Otto.de API scraper — search Germany's Otto.de marketplace: product search & filters, category browse, product facts, deals, new arrivals, brands and the department tree (DE / EUR)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/otto/v1","spec_available":true,"actions":[{"name":"search","description":"Keyword product search on Otto.de with brand, price, rating, condition and availability filters, sort order and offset pagination. Returns product cards (name, brand, price in EUR, condition, availability, rating, review count, image, URL).","required_params":["query"],"optional_params":["offset","marke","brand","sortierung","sort","preis","price_min","price_max","bewertung","min_rating","zustand","condition","verfuegbarkeit","availability"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword, e.g. iphone, sneaker, kaffeevollautomat.","on_invalid":"reject","example":"iphone"},{"name":"sort","type":"enum","required":false,"description":"Sort order (Otto 'sortierung' keys).","on_invalid":"ignore","allowed_values":[{"value":"beliebtheit","label":"Most popular (default)"},{"value":"preis-aufsteigend","label":"Price: low to high"},{"value":"preis-absteigend","label":"Price: high to low"},{"value":"bewertung","label":"Best rated"},{"value":"neuheiten","label":"Newest first"}],"example":"preis-aufsteigend","aliases":["sortierung"]},{"name":"brand","type":"string","required":false,"description":"Filter by brand slug (lowercased), e.g. apple, samsung, hp.","on_invalid":"reject","example":"apple","aliases":["marke"]},{"name":"price_min","type":"number","required":false,"description":"Minimum price (EUR).","on_invalid":"ignore","example":50},{"name":"price_max","type":"number","required":false,"description":"Maximum price (EUR).","on_invalid":"ignore","example":500},{"name":"preis","type":"string","required":false,"description":"Advanced: raw Otto price range 'lo-hi' (overrides price_min/price_max).","on_invalid":"reject"},{"name":"min_rating","type":"integer","required":false,"description":"Minimum star rating filter (1-5).","on_invalid":"ignore","example":4,"minimum":1,"maximum":5,"aliases":["bewertung"]},{"name":"condition","type":"string","required":false,"description":"Otto Zustand filter (German value, e.g. neu, gebraucht).","on_invalid":"reject","aliases":["zustand"]},{"name":"availability","type":"string","required":false,"description":"Otto Verfuegbarkeit filter (German value, e.g. sofort-lieferbar).","on_invalid":"reject","aliases":["verfuegbarkeit"]},{"name":"offset","type":"integer","required":false,"description":"Kept for compatibility only — Otto serves a single result grid per query and ignores any offset above 0, so a non-zero value is refused rather than answered with the same rows. Narrow the list with brand / price / rating / condition / sort instead.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"products[] (name, brand, price, currency, condition, availability, rating, review_count, image, url), offset, has_more, next_offset","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone"}},{"name":"browse","description":"Browse an Otto.de category landing (e.g. moebel, technik/computer, mode) with the same brand / price / rating / sort filters and offset pagination as search.","required_params":["category"],"optional_params":["offset","marke","brand","sortierung","sort","preis","price_min","price_max","bewertung","min_rating","zustand","condition","verfuegbarkeit","availability"],"params":[{"name":"category","type":"string","required":true,"description":"Otto category path, e.g. moebel or technik/computer (discover paths via the categories action).","on_invalid":"reject","example":"moebel"},{"name":"sort","type":"enum","required":false,"description":"Sort order (Otto 'sortierung' keys).","on_invalid":"ignore","allowed_values":[{"value":"beliebtheit","label":"Most popular (default)"},{"value":"preis-aufsteigend","label":"Price: low to high"},{"value":"preis-absteigend","label":"Price: high to low"},{"value":"bewertung","label":"Best rated"},{"value":"neuheiten","label":"Newest first"}],"example":"preis-aufsteigend","aliases":["sortierung"]},{"name":"brand","type":"string","required":false,"description":"Filter by brand slug (lowercased), e.g. apple, samsung, hp.","on_invalid":"reject","example":"apple","aliases":["marke"]},{"name":"price_min","type":"number","required":false,"description":"Minimum price (EUR).","on_invalid":"ignore","example":50},{"name":"price_max","type":"number","required":false,"description":"Maximum price (EUR).","on_invalid":"ignore","example":500},{"name":"preis","type":"string","required":false,"description":"Advanced: raw Otto price range 'lo-hi' (overrides price_min/price_max).","on_invalid":"reject"},{"name":"min_rating","type":"integer","required":false,"description":"Minimum star rating filter (1-5).","on_invalid":"ignore","example":4,"minimum":1,"maximum":5,"aliases":["bewertung"]},{"name":"condition","type":"string","required":false,"description":"Otto Zustand filter (German value, e.g. neu, gebraucht).","on_invalid":"reject","aliases":["zustand"]},{"name":"availability","type":"string","required":false,"description":"Otto Verfuegbarkeit filter (German value, e.g. sofort-lieferbar).","on_invalid":"reject","aliases":["verfuegbarkeit"]},{"name":"offset","type":"integer","required":false,"description":"Kept for compatibility only — Otto serves a single result grid per query and ignores any offset above 0, so a non-zero value is refused rather than answered with the same rows. Narrow the list with brand / price / rating / condition / sort instead.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"products[], category, offset, has_more, next_offset","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product","description":"Product facts for one Otto.de item by variation id — name, brand, price (EUR), condition, availability, aggregate rating, review count, image and URL. Read from the search grid, because Otto does not serve its standalone product page to this endpoint; individual review text, GTIN and the full spec table are therefore not available here.","required_params":["id","query"],"optional_params":["variation_id"],"params":[{"name":"id","type":"string","required":true,"description":"Otto variation id (e.g. 1786938267), as returned in search/browse products[].variation_id.","on_invalid":"reject","example":"1786938267","aliases":["variation_id"]},{"name":"query","type":"string","required":true,"description":"Keyword this variation appears under in Otto search — the item is located through the search grid, so the keyword is required.","on_invalid":"reject","example":"iphone"}],"returns":"product{} — variation_id, product_id, name, brand, price, currency, condition, availability, rating, review_count, image, url","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"1786938267","query":"iphone"}},{"name":"deals","description":"Current Otto.de deal / sale campaign products (e.g. Deal des Monats, Super Sale). Auto-discovers the active campaigns from the storefront and returns their product cards. Pick a specific campaign with the campaign param.","required_params":[],"optional_params":["campaign"],"params":[{"name":"campaign","type":"string","required":false,"description":"Specific deal campaign slug (e.g. deal-des-monats, super-sale). Omit to auto-pick the first active campaign; the full list is returned in available_campaigns.","on_invalid":"reject"}],"returns":"products[], campaign, available_campaigns[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"new_arrivals","description":"Newest products on Otto.de — keyword or category sorted newest-first (sortierung=neuheiten). Pass query OR category; supports the same filters and offset pagination.","required_params":[],"optional_params":["query","category","offset","marke","brand","preis","price_min","price_max","bewertung","min_rating","zustand","condition","verfuegbarkeit","availability"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to pull newest items for, e.g. sneaker.","on_invalid":"reject","example":"sneaker"},{"name":"category","type":"string","required":false,"description":"Category path to pull newest items for (alternative to query).","on_invalid":"reject","example":"mode"},{"name":"brand","type":"string","required":false,"description":"Filter by brand slug (lowercased), e.g. apple, samsung, hp.","on_invalid":"reject","example":"apple","aliases":["marke"]},{"name":"price_min","type":"number","required":false,"description":"Minimum price (EUR).","on_invalid":"ignore","example":50},{"name":"price_max","type":"number","required":false,"description":"Maximum price (EUR).","on_invalid":"ignore","example":500},{"name":"preis","type":"string","required":false,"description":"Advanced: raw Otto price range 'lo-hi' (overrides price_min/price_max).","on_invalid":"reject"},{"name":"min_rating","type":"integer","required":false,"description":"Minimum star rating filter (1-5).","on_invalid":"ignore","example":4,"minimum":1,"maximum":5,"aliases":["bewertung"]},{"name":"condition","type":"string","required":false,"description":"Otto Zustand filter (German value, e.g. neu, gebraucht).","on_invalid":"reject","aliases":["zustand"]},{"name":"availability","type":"string","required":false,"description":"Otto Verfuegbarkeit filter (German value, e.g. sofort-lieferbar).","on_invalid":"reject","aliases":["verfuegbarkeit"]},{"name":"offset","type":"integer","required":false,"description":"Kept for compatibility only — Otto serves a single result grid per query and ignores any offset above 0, so a non-zero value is refused rather than answered with the same rows. Narrow the list with brand / price / rating / condition / sort instead.","on_invalid":"ignore","default":0,"example":0,"minimum":0}],"returns":"products[] (newest first), query|category, offset, has_more, next_offset","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"brands","description":"Brand filter links available on an Otto.de category landing page — feed the slug to search/browse as the brand filter.","required_params":["category"],"optional_params":[],"params":[{"name":"category","type":"string","required":true,"description":"Otto category path to list brand filters for, e.g. technik.","on_invalid":"reject","example":"technik"}],"returns":"brands[] {name, slug, url}, category","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"Otto.de department tree — top-level departments from the homepage, or the child categories of a parent path (e.g. parent=technik). Feed paths to browse / brands.","required_params":[],"optional_params":["parent","category"],"params":[{"name":"parent","type":"string","required":false,"description":"Parent category path to list children of (omit for the top-level departments).","on_invalid":"reject","example":"technik","aliases":["category"]}],"returns":"categories[] {name, slug, path, url}, parent","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"filters","description":"Discover the sort orders and filter query params supported by Otto.de search/browse, with a live probe showing the available deal campaigns.","required_params":[],"optional_params":[],"params":[],"returns":"sort_options[], supported_filters{}, available_campaigns[], notes[]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"reviews","description":"Aggregate customer rating for an Otto.de item — average star rating and total review count from the search-embedded data. Individual review TEXT is only on the standalone product page, which Otto does not serve to this endpoint, so it is not available here (reviews[] is returned empty with text_available=false, honestly).","required_params":["id","query"],"optional_params":["variation_id"],"params":[{"name":"id","type":"string","required":true,"description":"Otto variation id (from search/browse products[].variation_id).","on_invalid":"reject","example":"1786938267","aliases":["variation_id"]},{"name":"query","type":"string","required":true,"description":"Keyword the variation appears under.","on_invalid":"reject","example":"iphone"}],"returns":"rating{average, count}, reviews[] (empty on this tier), text_available, variation_id","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"1786938267","query":"iphone"}}]},{"name":"packages","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Package Registries API — npm (Node.js) and PyPI (Python) metadata, version history, dependencies, download counts and keyword search (no API key required)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/packages/v1","spec_available":true,"actions":[{"name":"package","description":"full package metadata (latest version normalized)","required_params":["registry","name"],"optional_params":[],"params":[{"name":"registry","type":"enum","required":true,"description":"Which package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)","on_invalid":"reject","allowed_values":[{"value":"npm","label":"npm (Node.js registry)"},{"value":"pypi","label":"PyPI (Python Package Index)"},{"value":"node","label":"Alias for npm"},{"value":"nodejs","label":"Alias for npm"},{"value":"python","label":"Alias for pypi"},{"value":"pip","label":"Alias for pypi"}],"example":"npm"},{"name":"name","type":"string","required":true,"description":"Exact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.","on_invalid":"reject","example":"react"}],"returns":"package{} — name, latest version, description, license, homepage, repository, keywords, maintainers, dependencies, dist_tags/version_count, links","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"registry":"npm","name":"react"}},{"name":"versions","description":"paginated version list for a package","required_params":["registry","name"],"optional_params":["page","page_size"],"params":[{"name":"registry","type":"enum","required":true,"description":"Which package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)","on_invalid":"reject","allowed_values":[{"value":"npm","label":"npm (Node.js registry)"},{"value":"pypi","label":"PyPI (Python Package Index)"},{"value":"node","label":"Alias for npm"},{"value":"nodejs","label":"Alias for npm"},{"value":"python","label":"Alias for pypi"},{"value":"pip","label":"Alias for pypi"}],"example":"npm"},{"name":"name","type":"string","required":true,"description":"Exact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.","on_invalid":"reject","example":"react"},{"name":"page","type":"integer","required":false,"description":"1-based page number for paginated lists (versions / search).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-250, default 50). Larger values are clamped.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":250}],"returns":"versions[] (newest-first: version, latest flag, npm published_at / pypi file count); meta has page, page_size, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"registry":"npm","name":"react","page_size":10}},{"name":"version","description":"single version metadata","required_params":["registry","name","version"],"optional_params":[],"params":[{"name":"registry","type":"enum","required":true,"description":"Which package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)","on_invalid":"reject","allowed_values":[{"value":"npm","label":"npm (Node.js registry)"},{"value":"pypi","label":"PyPI (Python Package Index)"},{"value":"node","label":"Alias for npm"},{"value":"nodejs","label":"Alias for npm"},{"value":"python","label":"Alias for pypi"},{"value":"pip","label":"Alias for pypi"}],"example":"npm"},{"name":"name","type":"string","required":true,"description":"Exact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.","on_invalid":"reject","example":"react"},{"name":"version","type":"string","required":true,"description":"Exact version string to fetch (e.g. '18.2.0', '2.31.0').","on_invalid":"reject","example":"18.2.0"}],"returns":"version{} — that version's description, license, homepage, repository, dependencies, dist/engines (npm) or requires_dist/classifiers (pypi)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"registry":"pypi","name":"requests","version":"2.34.2"}},{"name":"dependencies","description":"runtime + dev dependencies for a version (latest if omitted)","required_params":["registry","name"],"optional_params":["version"],"params":[{"name":"registry","type":"enum","required":true,"description":"Which package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)","on_invalid":"reject","allowed_values":[{"value":"npm","label":"npm (Node.js registry)"},{"value":"pypi","label":"PyPI (Python Package Index)"},{"value":"node","label":"Alias for npm"},{"value":"nodejs","label":"Alias for npm"},{"value":"python","label":"Alias for pypi"},{"value":"pip","label":"Alias for pypi"}],"example":"npm"},{"name":"name","type":"string","required":true,"description":"Exact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.","on_invalid":"reject","example":"react"},{"name":"version","type":"string","required":false,"description":"Optional exact version; omit to use the latest published version.","on_invalid":"reject","example":"18.2.0"}],"returns":"registry, name, version + dependencies (npm: dependencies/dev/peer/optional; pypi: requires_dist[] + parsed dependencies map)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"registry":"npm","name":"react"}},{"name":"downloads","description":"download statistics (npm: period=last-day|week|month|year; pypi: recent day/week/month)","required_params":["registry","name"],"optional_params":["period"],"params":[{"name":"registry","type":"enum","required":true,"description":"Which package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)","on_invalid":"reject","allowed_values":[{"value":"npm","label":"npm (Node.js registry)"},{"value":"pypi","label":"PyPI (Python Package Index)"},{"value":"node","label":"Alias for npm"},{"value":"nodejs","label":"Alias for npm"},{"value":"python","label":"Alias for pypi"},{"value":"pip","label":"Alias for pypi"}],"example":"npm"},{"name":"name","type":"string","required":true,"description":"Exact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.","on_invalid":"reject","example":"react"},{"name":"period","type":"enum","required":false,"description":"npm download window (rejects unknown values). Ignored for PyPI, which always returns recent last-day/last-week/last-month totals.","on_invalid":"reject","allowed_values":[{"value":"last-day","label":"Last day (npm)"},{"value":"last-week","label":"Last week (npm)"},{"value":"last-month","label":"Last month (npm, default)"},{"value":"last-year","label":"Last year (npm)"}],"default":"last-month","example":"last-month"}],"returns":"npm: downloads count for the period (+ start/end); pypi: last_day/last_week/last_month totals (source pypistats.org)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"registry":"npm","name":"react","period":"last-month"}},{"name":"search","description":"search packages (npm: registry API; pypi: libraries.io→HTML→ranked simple-index+enrich)","required_params":["registry","query"],"optional_params":["page","page_size","from"],"params":[{"name":"registry","type":"enum","required":true,"description":"Which package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)","on_invalid":"reject","allowed_values":[{"value":"npm","label":"npm (Node.js registry)"},{"value":"pypi","label":"PyPI (Python Package Index)"},{"value":"node","label":"Alias for npm"},{"value":"nodejs","label":"Alias for npm"},{"value":"python","label":"Alias for pypi"},{"value":"pip","label":"Alias for pypi"}],"example":"npm"},{"name":"query","type":"string","required":true,"description":"Free-text search keywords matched against package name/description.","on_invalid":"reject","example":"http client"},{"name":"page","type":"integer","required":false,"description":"1-based page number for paginated lists (versions / search).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-250, default 20). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":250},{"name":"from","type":"integer","required":false,"description":"npm search only: raw result offset (alternative to page). Page forward with meta.next_from.","on_invalid":"ignore","example":0,"minimum":0}],"returns":"results[] (name, version, description, license, score, links/maintainers); meta has page, page_size, total/has_more, next_page/next_from, method","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"registry":"npm","query":"fastapi"}},{"name":"maintainer","description":"maintainer/author records for a package","required_params":["registry","name"],"optional_params":[],"params":[{"name":"registry","type":"enum","required":true,"description":"Which package registry to query. npm = Node.js packages; pypi = Python packages. (Synonyms node/nodejs -> npm, python/pip -> pypi.)","on_invalid":"reject","allowed_values":[{"value":"npm","label":"npm (Node.js registry)"},{"value":"pypi","label":"PyPI (Python Package Index)"},{"value":"node","label":"Alias for npm"},{"value":"nodejs","label":"Alias for npm"},{"value":"python","label":"Alias for pypi"},{"value":"pip","label":"Alias for pypi"}],"example":"npm"},{"name":"name","type":"string","required":true,"description":"Exact package name (e.g. npm 'react', PyPI 'requests'). Scoped npm names like '@scope/pkg' are supported.","on_invalid":"reject","example":"react"}],"returns":"maintainers[] (name/email) + author/publisher; pypi also author_email/maintainer_email","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"registry":"pypi","name":"requests"}}]},{"name":"passive-osint","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Passive OSINT & Recon API — passive subdomain discovery and a unified domain/IP recon report from certificate transparency logs, passive DNS, web archives, ASN/rDNS and threat blocklists (no active scanning)","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/passive-osint/v1","spec_available":true,"actions":[{"name":"subdomains","description":"Passive subdomain discovery across crt.sh + certspotter + OTX + hackertarget + Wayback, deduped, with a per-source matrix and an honest coverage note","required_params":["domain"],"optional_params":["sources"],"params":[{"name":"domain","type":"string","required":true,"description":"The registrable domain to enrich (a bare host like example.com; a full URL or leading www. is accepted and normalized). NOT a person.","on_invalid":"reject","example":"hackerone.com"},{"name":"sources","type":"array","required":false,"description":"Which passive sources to query (comma-separated string or array). Defaults to all five. Unknown names are ignored.","on_invalid":"ignore","allowed_values":[{"value":"crtsh","label":"crt.sh Certificate-Transparency logs"},{"value":"certspotter","label":"Cert Spotter CT issuances (reliable)"},{"value":"otx","label":"AlienVault/LevelBlue OTX passive-DNS + url_list"},{"value":"hackertarget","label":"hackertarget hostsearch (free-tier limited)"},{"value":"wayback","label":"Wayback Machine archived-host index"}],"example":"crtsh,certspotter,otx,hackertarget,wayback"}],"returns":"domain, count, subdomains[] (sorted unique), source_matrix{host:[sources]}, sources{per-source ok/count/note}, coverage_note","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"domain":"hackerone.com"}},{"name":"domain","description":"One-call unified passive report: subdomains + DNS summary + SSL summary + archive first/last-seen + threat blocklist flags, each section degrading independently","required_params":["domain"],"optional_params":["sources","include_pii"],"params":[{"name":"domain","type":"string","required":true,"description":"The registrable domain to enrich (a bare host like example.com; a full URL or leading www. is accepted and normalized). NOT a person.","on_invalid":"reject","example":"hackerone.com"},{"name":"sources","type":"array","required":false,"description":"Which passive sources to query (comma-separated string or array). Defaults to all five. Unknown names are ignored.","on_invalid":"ignore","allowed_values":[{"value":"crtsh","label":"crt.sh Certificate-Transparency logs"},{"value":"certspotter","label":"Cert Spotter CT issuances (reliable)"},{"value":"otx","label":"AlienVault/LevelBlue OTX passive-DNS + url_list"},{"value":"hackertarget","label":"hackertarget hostsearch (free-tier limited)"},{"value":"wayback","label":"Wayback Machine archived-host index"}],"example":"crtsh,certspotter,otx,hackertarget,wayback"},{"name":"include_pii","type":"boolean","required":false,"description":"If true, reveal the RDAP abuse mailbox / contact email. Default false → contact emails are masked (R17 privacy hygiene).","on_invalid":"ignore","default":false,"example":false}],"returns":"domain + subdomains_passive{} + dns{} + ssl{} + archive{} + threat_flags{} + dns_history{records:[hostname,record_type,address,first_seen,last_seen]} + associated_domains{domains[] sharing a TLS cert} (each with source/confidence) + provenance{cross_links}; meta.sections = per-section status","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"domain":"github.com"}},{"name":"ip","description":"Passive IP enrichment: rDNS (PTR) + ASN/org/country (Team-Cymru + RDAP) + threat blocklist flags + shared-host neighbours (reverse-IP + OTX IPv4 passive-DNS)","required_params":["ip"],"optional_params":["include_pii"],"params":[{"name":"ip","type":"string","required":true,"description":"A single IPv4 address to enrich (rDNS + ASN/org/country + threat + shared-host neighbours).","on_invalid":"reject","example":"8.8.8.8","aliases":["address","query"]},{"name":"include_pii","type":"boolean","required":false,"description":"If true, reveal the RDAP abuse mailbox / contact email. Default false → contact emails are masked (R17 privacy hygiene).","on_invalid":"ignore","default":false,"example":false}],"returns":"ip + rdns{ptr} + network{asn,as_name,bgp_prefix,country,org} + threat_flags{} + shared_host{neighbours[],approx_total} + provenance{cross_links}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"ip":"8.8.8.8"}},{"name":"batch","description":"Compact passive report (subdomain count+list, DNS, threat, archive-first-seen) across up to 10 domains in one call","required_params":["domains"],"optional_params":[],"params":[{"name":"domains","type":"array","required":true,"description":"Up to 10 domains. A JSON array or a comma/space/newline-separated string. Each gets a compact passive report.","on_invalid":"reject","example":["hackerone.com","github.com"],"aliases":["targets"]}],"returns":"count, results[] (domain, subdomain_count, subdomains[], resolves, mx, threat_verdict, archive_first_seen), coverage_note","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":null}]},{"name":"pazarama","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Pazarama API scraper — Turkish marketplace (pazarama.com): search listings by keyword, category or brand with price range and sort, and read the full listing — price and in-basket price in TRY, stock, barcode, attributes, seller and seller score, star rating with 1-5 breakdown, newest reviews and description. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/pazarama/v1","spec_available":true,"actions":[{"name":"search","description":"Search pazarama.com by keyword, or browse any Pazarama category or brand listing, with price range, brand and the site's seven sort orders. Each row is ONE seller's listing: product id and code, barcode (when the code is a valid GTIN), title, URL pointing at that seller, image, brand, seller, the price the site shows, the in-basket price when a basket campaign lowers it, the site's discount badge, star rating and Pazarama's search-index rating (the listing's own rating is in product/detail), availability and stock count, category and variant group.","required_params":[],"optional_params":["query","url","page","sort","price_min","price_max","brand","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to search on pazarama.com, Turkish or brand/model words ('airfryer', 'çay makinesi', 'iphone 15 128'). Optional when `url` is given; with `url` it narrows that listing.","on_invalid":"reject","example":"airfryer","aliases":["q","keyword"]},{"name":"url","type":"string","required":false,"description":"A pazarama.com LISTING URL to browse instead of (or together with) a keyword: a category (…-k-K03043), a brand (/apple), a brand inside a category (/apple/cep-telefonu-k-K03043) or a search page. Every breadcrumb item this engine returns is such a URL.","on_invalid":"reject","example":"https://www.pazarama.com/cep-telefonu-k-K03043","aliases":["category_url","listing_url"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Pazarama serves 20 listings per page; `total_pages` says how many exist. A page past the end returns an empty page (the site itself would silently show page 1).","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Order of the results — the seven orderings the site itself offers. The price orderings follow the IN-BASKET price (`lowest_price` on each row), not the shown `price`, so rows can look out of order by `price`.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Pazarama's default order"},{"value":"price_asc","label":"Lowest in-basket price first"},{"value":"price_desc","label":"Highest in-basket price first"},{"value":"newest","label":"Newest listings first"},{"value":"most_favorited","label":"Most favourited first"},{"value":"most_reviewed","label":"Most reviewed first"},{"value":"best_selling","label":"Best sellers first"}],"default":"relevance"},{"name":"price_min","type":"number","required":false,"description":"Lowest sale price in Turkish lira (inclusive).","on_invalid":"reject","example":1000,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest sale price in Turkish lira (inclusive).","on_invalid":"reject","example":3000,"minimum":0},{"name":"brand","type":"string","required":false,"description":"Pazarama's brand slug, as in its brand URLs (pazarama.com/philips → 'philips').","on_invalid":"reject","example":"philips"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id, listing_id, product_code, barcode (null unless the code is a valid GTIN), title, url (with ?magaza=<seller>), image, images[], brand, brand_id, seller{id, name, slug, url}, price (number, TRY — the price the page shows), price_display, basket_price (the lower 'Sepette İndirimli Fiyatı' when a basket campaign applies, else null), basket_price_display, basket_price_label, lowest_price (the lower of price and basket_price — what the price sorts follow), plus_member_price (Pazarama Plus members only, null when not lower), price_before_discount (always null — the site renders no struck price), discount_percent (the site's own badge, null when none), currency=TRY, lowest_price_in_30_days, search_index_rating, search_index_rating_count (Pazarama's search-index figures — NOT this listing's page figures: they differed from the product page on 9 of 19 measured listings; use product/detail for rating and rating_count), rating_scale (5), availability ('in_stock'|'out_of_stock'), in_stock, stock_count (seller-declared), category{id, name}, has_variants, variant_group_code, pazarama_plus}, count, total_results, total_pages, page, page_size, sort, applied_filters[{field, value}], breadcrumb[{name, url, category_id}], no_match_notice (set when Pazarama did not find the keyword — results are then empty instead of its unrelated suggestions), page_notice","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"airfryer"}},{"name":"seller/categories","description":"Pazarama's seller category tree, as used for product uploads: every category with its id (a UUID), full path and whether it is a leaf. Filter with `query`; take the id to seller/category-attributes.","required_params":[],"optional_params":["query","leaf_only","limit"],"params":[{"name":"query","type":"string","required":false,"description":"Case-insensitive text matched against the category name and path.","on_invalid":"ignore","example":"ayakkabı","aliases":["q","name"]},{"name":"leaf_only","type":"boolean","required":false,"description":"Only leaf categories (the ones products are uploaded to). Default true.","on_invalid":"ignore","default":true},{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (1-5000).","on_invalid":"ignore","default":200,"minimum":1,"maximum":5000}],"returns":"categories[]{id, name, path, parent_id, leaf}, count, total","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"seller/category-attributes","description":"The product upload template of one Pazarama category: every attribute, whether it is required, whether it creates variants, and the allowed values.","required_params":["category_id"],"optional_params":[],"params":[{"name":"category_id","type":"string","required":true,"description":"Leaf category id (UUID) from seller/categories.","on_invalid":"reject","example":"3053ce72-9208-40bb-8775-001fb4ca654b","aliases":["id","categoryId"]}],"returns":"category{id, name}, attributes[]{id, name, required, varianter, values[]{id, name}}, attribute_count, required_count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/detail","description":"The full Pazarama listing by product URL (or product_code + seller): title, brand, barcode, seller SKU, the price the page shows and the in-basket price, VAT rate, stock count and availability, image gallery, every attribute (with the variant axes flagged), seller with its Pazarama seller score, star rating with the 1-5 breakdown and total counts, the newest reviews, breadcrumb and the description text.","required_params":[],"optional_params":["url","product_code","seller","max_rotations"],"params":[{"name":"url","type":"string","required":false,"description":"A pazarama.com product URL (…-p-<code>, optionally with ?magaza=<seller>). Every search row returns one as `url`, already pointing at that seller.","on_invalid":"reject","example":"https://www.pazarama.com/apple-iphone-15-128-6-gb-ram-5g-apple-turkiye-garantili-p-195949036040?magaza=mediamarkt","aliases":["product_url"]},{"name":"product_code","type":"string","required":false,"description":"Alternative to `url`: the part after -p- in a product URL. Every search row returns it as `product_code`.","on_invalid":"reject","example":"195949036040","aliases":["code"]},{"name":"seller","type":"string","required":false,"description":"Seller slug (the ?magaza= value) to read THAT seller's listing of the product. Without it Pazarama shows its default seller, which can be a different seller at a different price.","on_invalid":"reject","example":"mediamarkt","aliases":["seller_slug","magaza"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, listing_id, product_code, barcode (null unless a valid GTIN), seller_sku, title, short_name, url, brand, brand_id, brand_url, price, price_display, basket_price, basket_price_display, basket_price_label, lowest_price, plus_member_price, price_before_discount (null), discount_percent, currency=TRY, vat_rate_percent, lowest_price_in_30_days, availability, in_stock, stock_count (seller-declared), stock_text, images[], rating, rating_count (the page's 'N Değerlendirme' — all star ratings), written_review_count (the subset of those ratings with written text), rating_scale (5), rating_breakdown{'1'..'5': count}, top_reviews[{id, rating, text, date, city, like_count, seller_name, variant, has_images}], seller{id, name, slug, url, rating (Pazarama seller score), rating_scale (null — the site prints no maximum), logo}, category{id, name, url}, breadcrumb[], attributes[{name, value, variant_axis}], variant_attributes, has_variants, variants (null — the sibling list is not published without a signed-in session), other_offers (null — same reason), origin, description}, requested_seller, requested_seller_served","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_code":"195949036040","seller":"mediamarkt"}}]},{"name":"phone-validate","category":{"id":"utilities","title":"Utilities & AI"},"title":"Phone Number Validation API — validate and parse phone numbers: validity, international and national format, region, line type, carrier and timezone","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/phone-validate/v1","spec_available":true,"actions":[{"name":"validate","description":"validate ONE number → validity + format/region/line-type/carrier/timezone/location","required_params":["number"],"optional_params":["region","default_region","lang"],"params":[{"name":"number","type":"string","required":true,"description":"The phone number to validate. Best supplied in E.164 (+countrycode…); a national number works too if you also pass `region`.","on_invalid":"reject","example":"+90 532 123 4567","aliases":["phone","input"]},{"name":"region","type":"string","required":false,"description":"Default ISO-3166 alpha-2 region (e.g. TR, US, DE, GB) used to parse NATIONAL-format numbers that have no +country-code. Ignored for E.164 input. Case-insensitive.","on_invalid":"ignore","example":"TR","aliases":["default_region","country"]},{"name":"lang","type":"string","required":false,"description":"Language for the carrier name + geocoded location text (e.g. en, de, fr, es). Falls back to English.","on_invalid":"ignore","default":"en","example":"en"}],"returns":"is_valid, is_possible, parse_error, e164/national_format/international_format/rfc3966, country_code, region_code, national_number, line_type (mobile/fixed_line/voip/toll_free/…), carrier, location, timezones[]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"number":"+90 532 123 4567"}},{"name":"batch","description":"validate up to 100 numbers in one call (shared default region)","required_params":["numbers"],"optional_params":["region","default_region","lang"],"params":[{"name":"numbers","type":"array","required":true,"description":"Up to 100 phone numbers. A JSON array, OR a comma/newline-separated string. Each is validated independently (a bad entry → is_valid=false, never fails the call).","on_invalid":"reject","example":["+90 532 123 4567","+1 415 555 2671"],"aliases":["phone"]},{"name":"region","type":"string","required":false,"description":"Default ISO-3166 alpha-2 region (e.g. TR, US, DE, GB) used to parse NATIONAL-format numbers that have no +country-code. Ignored for E.164 input. Case-insensitive.","on_invalid":"ignore","example":"TR","aliases":["default_region","country"]},{"name":"lang","type":"string","required":false,"description":"Language for the carrier name + geocoded location text (e.g. en, de, fr, es). Falls back to English.","on_invalid":"ignore","default":"en","example":"en"}],"returns":"count, valid_count, possible_count, results[] (each the same record as validate)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"numbers":["+90 532 123 4567","+90 212 245 5555","nonsense"]}}]},{"name":"pinterest","category":{"id":"social","title":"Social Media"},"title":"Pinterest API scraper — public Pinterest data: pin detail & comments, profiles, boards, board pins, related pins, search (pins / users / boards / videos) and autocomplete suggestions from pinterest.com (no account required)","version":"0.2.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/pinterest/v1","spec_available":true,"actions":[{"name":"search_pins","description":"Search Pinterest pins by keyword. Returns pin id/title/description/image/link/save-count with the pinner. Paginate with meta.bookmark.","required_params":["query"],"optional_params":["limit","bookmark"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (a topic, brand, product or idea).","on_invalid":"reject","example":"home decor"},{"name":"limit","type":"integer","required":false,"description":"How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"bookmark","type":"string","required":false,"description":"Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"pins[]{id, url, title, description, image_url, link, domain, repin_count, is_video, pinner}, bookmark","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"minimalist home office","limit":10}},{"name":"search_videos","description":"Search Pinterest video pins (Idea Pins / video) by keyword. Same shape as search_pins but scoped to video content (image_url + video_url). Paginate with meta.bookmark.","required_params":["query"],"optional_params":["limit","bookmark"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (a topic, brand, product or idea).","on_invalid":"reject","example":"home decor"},{"name":"limit","type":"integer","required":false,"description":"How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"bookmark","type":"string","required":false,"description":"Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"pins[]{id, url, title, image_url, video_url, is_video, repin_count, pinner}, bookmark","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"minimalist home office"}},{"name":"search_users","description":"Search Pinterest users/creators by keyword. Returns username/profile stats/avatar.","required_params":["query"],"optional_params":["limit","bookmark"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (a topic, brand, product or idea).","on_invalid":"reject","example":"home decor"},{"name":"limit","type":"integer","required":false,"description":"How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"bookmark","type":"string","required":false,"description":"Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"users[]{id, username, full_name, follower_count, board_count, pin_count, avatar_url}, bookmark","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"minimalist home office"}},{"name":"search_boards","description":"Search Pinterest boards by keyword. Returns board name/url/description/pin-count/owner.","required_params":["query"],"optional_params":["limit","bookmark"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (a topic, brand, product or idea).","on_invalid":"reject","example":"home decor"},{"name":"limit","type":"integer","required":false,"description":"How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"bookmark","type":"string","required":false,"description":"Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"boards[]{id, name, url, description, pin_count, follower_count, owner}, bookmark","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"minimalist home office"}},{"name":"suggestions","description":"Autocomplete / typeahead search suggestions for a partial query — the dropdown Pinterest shows as you type. Great for keyword research.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search query (a topic, brand, product or idea).","on_invalid":"reject","example":"home decor"}],"returns":"suggestions[]{term, display, type}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"minimalist home office"}},{"name":"pin","description":"Full detail for one pin: title, description, image, video, outbound link/domain, save & comment & share counts, reactions, hashtags, board, dominant color, product/price (when a shopping pin) and the pinner. Provide pin_id or pin_url.","required_params":[],"optional_params":["pin_id","pin_url","id"],"params":[{"name":"pin_id","type":"string","required":false,"description":"Numeric pin id (the digits in pinterest.com/pin/<pin_id>/). Provide pin_id OR pin_url.","on_invalid":"ignore","example":"99360735500167749","aliases":["id"]},{"name":"pin_url","type":"string","required":false,"description":"Full pin URL (alternative to pin_id).","on_invalid":"ignore","example":"https://www.pinterest.com/pin/99360735500167749/"}],"returns":"pin{id, url, title, description, image_url, video_url, link, domain, repin_count, comment_count, share_count, reaction_counts, hashtags, board, product, pinner}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"pin_comments","description":"Public comments & 'Tried it' notes on a pin: text, like/helpful counts, commenter and whether the pin owner highlighted it. Provide pin_id or pin_url. Paginate with meta.bookmark.","required_params":[],"optional_params":["pin_id","pin_url","id","limit","bookmark"],"params":[{"name":"pin_id","type":"string","required":false,"description":"Numeric pin id (the digits in pinterest.com/pin/<pin_id>/). Provide pin_id OR pin_url.","on_invalid":"ignore","example":"99360735500167749","aliases":["id"]},{"name":"pin_url","type":"string","required":false,"description":"Full pin URL (alternative to pin_id).","on_invalid":"ignore","example":"https://www.pinterest.com/pin/99360735500167749/"},{"name":"limit","type":"integer","required":false,"description":"How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"bookmark","type":"string","required":false,"description":"Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"comments[]{id, text, type, like_count, helpful_count, highlighted_by_pin_owner, user}, bookmark","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"related_pins","description":"'More like this' pins related to a source pin. Provide pin_id or pin_url.","required_params":[],"optional_params":["pin_id","pin_url","id","limit","bookmark"],"params":[{"name":"pin_id","type":"string","required":false,"description":"Numeric pin id (the digits in pinterest.com/pin/<pin_id>/). Provide pin_id OR pin_url.","on_invalid":"ignore","example":"99360735500167749","aliases":["id"]},{"name":"pin_url","type":"string","required":false,"description":"Full pin URL (alternative to pin_id).","on_invalid":"ignore","example":"https://www.pinterest.com/pin/99360735500167749/"},{"name":"limit","type":"integer","required":false,"description":"How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"bookmark","type":"string","required":false,"description":"Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"pins[]{id, url, title, image_url, link, repin_count, pinner}, bookmark","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"profile","description":"Public profile for a username: name, bio, follower/following/board/pin counts, avatar, website.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"Pinterest username (the handle in pinterest.com/<username>/).","on_invalid":"reject","example":"nike"}],"returns":"profile{id, username, full_name, bio, follower_count, following_count, board_count, pin_count, avatar_url, website_url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"nike"}},{"name":"user_boards","description":"Public boards owned by a username: name, url, description, pin-count, cover image.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"Pinterest username (the handle in pinterest.com/<username>/).","on_invalid":"reject","example":"nike"}],"returns":"boards[]{id, name, url, description, pin_count, cover_image_url, owner}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"nike"}},{"name":"user_pins","description":"Pins created by a username (their feed). Paginate with meta.bookmark.","required_params":["username"],"optional_params":["limit","bookmark"],"params":[{"name":"username","type":"string","required":true,"description":"Pinterest username (the handle in pinterest.com/<username>/).","on_invalid":"reject","example":"nike"},{"name":"limit","type":"integer","required":false,"description":"How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"bookmark","type":"string","required":false,"description":"Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"pins[]{id, url, title, description, image_url, link, repin_count, pinner}, bookmark","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"nike"}},{"name":"board","description":"Board metadata: name, description, pin & follower & section counts, cover image, owner. Provide board_url or username + board.","required_params":[],"optional_params":["board_url","username","board","board_slug"],"params":[{"name":"board_url","type":"string","required":false,"description":"Full board URL (alternative to username + board).","on_invalid":"ignore","example":"https://www.pinterest.com/marthastewart/home-decor/"},{"name":"username","type":"string","required":false,"description":"Pinterest username (the handle in pinterest.com/<username>/).","on_invalid":"reject","example":"nike"},{"name":"board","type":"string","required":false,"description":"Board slug — the segment after the username in a board URL (also accepted as 'board_slug'). Combine with username, or pass board_url.","on_invalid":"ignore","example":"home-decor","aliases":["board_slug"]}],"returns":"board{id, name, url, description, pin_count, follower_count, section_count, owner}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"board_pins","description":"Pins inside a board. Provide board_url or username + board. Paginate with meta.bookmark.","required_params":[],"optional_params":["board_url","username","board","board_slug","limit","bookmark"],"params":[{"name":"board_url","type":"string","required":false,"description":"Full board URL (alternative to username + board).","on_invalid":"ignore","example":"https://www.pinterest.com/marthastewart/home-decor/"},{"name":"username","type":"string","required":false,"description":"Pinterest username (the handle in pinterest.com/<username>/).","on_invalid":"reject","example":"nike"},{"name":"board","type":"string","required":false,"description":"Board slug — the segment after the username in a board URL (also accepted as 'board_slug'). Combine with username, or pass board_url.","on_invalid":"ignore","example":"home-decor","aliases":["board_slug"]},{"name":"limit","type":"integer","required":false,"description":"How many items to return per page (1–100, default 25). Use the returned meta.bookmark to fetch the next page.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100},{"name":"bookmark","type":"string","required":false,"description":"Pagination cursor — pass the previous response's meta.bookmark to get the next page. Omit for page one.","on_invalid":"ignore","example":""}],"returns":"pins[]{id, url, title, description, image_url, link, repin_count, pinner}, bookmark","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"poshmark","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Poshmark API scraper — search for-sale and SOLD resale listings on poshmark.com (US) and poshmark.ca (Canada), read a full listing with shipping and bundle discounts, browse a seller's closet and profile, similar listings and brand suggestions. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/poshmark/v1","spec_available":true,"actions":[{"name":"search","description":"Search Poshmark listings by keyword, or browse a department, category or brand, in the US or Canada. Every row: listing id and url, title, brand, current price with the seller's stated original price, price-drop percentage, sold or available with the sold date, condition, size with per-size quantities, department and category, colours, seller-paid shipping flag, likes, comments and shares, the seller's username and closet url. Filter by department, category, brand, size, colour, condition, price range, shipping discount and availability (set availability=sold for sold comparables); sort by relevance, newest, price, likes or price drops; page with `next_cursor`.","required_params":[],"optional_params":["query","include_similar","country","department","category","brand","size","color","condition","availability","price_min","price_max","shipping","sort","limit","cursor","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keywords. Optional when a department or brand is given (browse).","on_invalid":"reject","example":"nike dunk","aliases":["q","keyword"]},{"name":"include_similar","type":"boolean","required":false,"description":"When a keyword has no exact matches Poshmark fills the page with 'similar' listings. By default those are left out and counted in `similar_results_available`; true returns them, each marked `match: similar`.","on_invalid":"reject","default":false},{"name":"country","type":"enum","required":false,"description":"Poshmark marketplace. Prices come back in that marketplace's currency. Poshmark Australia and India have closed and return MARKET_UNAVAILABLE.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — poshmark.com (USD)"},{"value":"ca","label":"Canada — poshmark.ca (CAD)"}],"default":"us","example":"us"},{"name":"department","type":"enum","required":false,"description":"Poshmark department.","on_invalid":"reject","allowed_values":[{"value":"Women","label":"Women"},{"value":"Men","label":"Men"},{"value":"Kids","label":"Kids"},{"value":"Home","label":"Home"},{"value":"Pets","label":"Pets"},{"value":"Electronics","label":"Electronics"}],"example":"Women"},{"name":"category","type":"string","required":false,"description":"Category inside the department, e.g. Women → Dresses, Jackets_&_Coats; Men → Shoes; Home → Kitchen; Electronics → Headphones. Needs `department`. Spaces or underscores both work; an unknown category is rejected with the valid list.","on_invalid":"reject","example":"Dresses"},{"name":"brand","type":"string","required":false,"description":"Brand name as Poshmark lists it (comma-separate up to 10). Matching is case-insensitive. `suggest` returns exact brand names.","on_invalid":"reject","example":"Nike"},{"name":"size","type":"string","required":false,"description":"Size label(s) as sellers enter them, comma-separated: M, XL, 8, 10.5, OS (one size), 32x30.","on_invalid":"reject","example":"M"},{"name":"color","type":"string","required":false,"description":"Colour(s), comma-separated: Red, Pink, Orange, Yellow, Green, Blue, Purple, Gold, Silver, Black, Gray, White, Cream, Brown, Tan.","on_invalid":"reject","example":"Black"},{"name":"condition","type":"string","required":false,"description":"Condition(s), comma-separated: new_with_tags, not_new_with_tags, like_new, good, fair, boutique (new items from Poshmark boutique sellers).","on_invalid":"reject","example":"new_with_tags"},{"name":"availability","type":"enum","required":false,"description":"For-sale listings, or sold ones. A sold listing's price is its last listed price — Poshmark does not publish the amount an accepted offer closed at.","on_invalid":"reject","allowed_values":[{"value":"available","label":"For sale now"},{"value":"sold","label":"Sold listings (last listed price)"}],"default":"available","example":"sold"},{"name":"price_min","type":"number","required":false,"description":"Lowest listed price, in the marketplace currency.","on_invalid":"reject","example":20,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest listed price, in the marketplace currency.","on_invalid":"reject","example":150,"minimum":0},{"name":"shipping","type":"enum","required":false,"description":"Only listings whose seller pays part or all of the shipping.","on_invalid":"reject","allowed_values":[{"value":"free","label":"Free shipping offered by the seller"},{"value":"discounted","label":"Discounted or free shipping"}]},{"name":"sort","type":"enum","required":false,"description":"Order of results. Unknown values are rejected, not ignored.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Poshmark's default ranking"},{"value":"newest","label":"Just in"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"most_liked","label":"Most likes first"},{"value":"price_drop","label":"Recent price drops"}],"default":"relevance"},{"name":"limit","type":"integer","required":false,"description":"Listings per call, 1-100 (Poshmark's own page is 48).","on_invalid":"reject","default":48,"minimum":1,"maximum":100,"aliases":["count","page_size"]},{"name":"cursor","type":"string","required":false,"description":"Continue a previous call: pass back its `next_cursor`. `next_cursor: null` is the end.","on_invalid":"reject","aliases":["next_cursor","page_token"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, url, brand (as listed), brand_canonical, brand_id, price (number — current listed price), currency, original_price (the seller's stated retail price, null when not stated), discount_from_original_percent, first_listed_price, price_drop_percent, status (available|sold_out|not_for_sale|reserved…), is_sold, sold_at, condition (new_with_tags|not_new_with_tags|boutique|wholesale|like_new|good|fair|null), condition_code, size, size_code, size_system, sizes[]{size, size_code, size_system, quantity_available, quantity_sold}, quantity_available, multi_item, department, category, subcategories[], colors[], style_tags[], shipping_discount (free|discounted|null), image, image_count, like_count, comment_count, share_count, seller{id, username, url, picture}, listed_at (first published), available_since (when it last became available — what sort=newest follows), publish_count, updated_at, origin_country, available_in[], match (similar|null)}, count, next_cursor, total_results (exact matches, capped at 5000), total_results_capped, similar_results_available, similar_rows_dropped, filters{}, country, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike"}},{"name":"product/detail","description":"One Poshmark listing in full, by listing id or URL: title, description, brand, current price, the seller's stated original price, first listed price and price-drop percentage, availability and sold date, condition, size and per-size quantities, department / category / subcategory path, colours, style tags, every photo, the shipping price with any seller discount (free or reduced), the seller's bundle discount, like / comment / share counts and the public comments, and the seller's username and closet url.","required_params":["listing_id"],"optional_params":["country","max_rotations"],"params":[{"name":"listing_id","type":"string","required":true,"description":"Poshmark listing id (24 characters, the end of a listing URL) or the full listing URL. Every search row returns it as `listing_id`.","on_invalid":"reject","example":"6aa93f81441b194af9ae6d8f","aliases":["id","product_id","url"]},{"name":"country","type":"enum","required":false,"description":"Poshmark marketplace. Prices come back in that marketplace's currency. Poshmark Australia and India have closed and return MARKET_UNAVAILABLE.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — poshmark.com (USD)"},{"value":"ca","label":"Canada — poshmark.ca (CAD)"}],"default":"us","example":"us"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{listing_id, title, url, brand (as listed), brand_canonical, brand_id, price (number — current listed price), currency, original_price (the seller's stated retail price, null when not stated), discount_from_original_percent, first_listed_price, price_drop_percent, status (available|sold_out|not_for_sale|reserved…), is_sold, sold_at, condition (new_with_tags|not_new_with_tags|boutique|wholesale|like_new|good|fair|null), condition_code, size, size_code, size_system, sizes[]{size, size_code, size_system, quantity_available, quantity_sold}, quantity_available, multi_item, department, category, subcategories[], colors[], style_tags[], shipping_discount (free|discounted|null), image, image_count, like_count, comment_count, share_count, seller{id, username, url, picture}, listed_at (first published), available_since (when it last became available — what sort=newest follows), publish_count, updated_at, origin_country, available_in[], match (similar|null), description, images[], video_count, shipping{price (0 = free), price_before_discount, currency, discount_type, label}, bundle_discount{percent, min_items, label}, notices[], active_offer_count, comments[]{comment_id, username, text, created_at}, category_path[], availability_changed_at}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/similar","description":"The listings Poshmark shows as similar to one listing (usually 16), with the same row fields as `search`.","required_params":["listing_id"],"optional_params":["country","max_rotations"],"params":[{"name":"listing_id","type":"string","required":true,"description":"Poshmark listing id (24 characters, the end of a listing URL) or the full listing URL. Every search row returns it as `listing_id`.","on_invalid":"reject","example":"6aa93f81441b194af9ae6d8f","aliases":["id","product_id","url"]},{"name":"country","type":"enum","required":false,"description":"Poshmark marketplace. Prices come back in that marketplace's currency. Poshmark Australia and India have closed and return MARKET_UNAVAILABLE.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — poshmark.com (USD)"},{"value":"ca","label":"Canada — poshmark.ca (CAD)"}],"default":"us","example":"us"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing_id, results[]{listing_id, title, url, brand (as listed), brand_canonical, brand_id, price (number — current listed price), currency, original_price (the seller's stated retail price, null when not stated), discount_from_original_percent, first_listed_price, price_drop_percent, status (available|sold_out|not_for_sale|reserved…), is_sold, sold_at, condition (new_with_tags|not_new_with_tags|boutique|wholesale|like_new|good|fair|null), condition_code, size, size_code, size_system, sizes[]{size, size_code, size_system, quantity_available, quantity_sold}, quantity_available, multi_item, department, category, subcategories[], colors[], style_tags[], shipping_discount (free|discounted|null), image, image_count, like_count, comment_count, share_count, seller{id, username, url, picture}, listed_at (first published), available_since (when it last became available — what sort=newest follows), publish_count, updated_at, origin_country, available_in[], match (similar|null)}, count, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller/listings","description":"One seller's closet: their for-sale or sold listings with the same row fields and filters as `search` (department, category, brand, size, colour, condition, price, shipping), sorted and paged. Use availability=sold for a seller's sales history.","required_params":["seller"],"optional_params":["seller","country","department","category","brand","size","color","condition","availability","price_min","price_max","shipping","sort","limit","cursor","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Seller username (the closet name in poshmark.com/closet/<username>), the seller id (`seller.id` on every listing), or the closet URL.","on_invalid":"reject","example":"kkkkwwwww","aliases":["username","seller_id","closet","url"]},{"name":"country","type":"enum","required":false,"description":"Poshmark marketplace. Prices come back in that marketplace's currency. Poshmark Australia and India have closed and return MARKET_UNAVAILABLE.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — poshmark.com (USD)"},{"value":"ca","label":"Canada — poshmark.ca (CAD)"}],"default":"us","example":"us"},{"name":"department","type":"enum","required":false,"description":"Poshmark department.","on_invalid":"reject","allowed_values":[{"value":"Women","label":"Women"},{"value":"Men","label":"Men"},{"value":"Kids","label":"Kids"},{"value":"Home","label":"Home"},{"value":"Pets","label":"Pets"},{"value":"Electronics","label":"Electronics"}],"example":"Women"},{"name":"category","type":"string","required":false,"description":"Category inside the department, e.g. Women → Dresses, Jackets_&_Coats; Men → Shoes; Home → Kitchen; Electronics → Headphones. Needs `department`. Spaces or underscores both work; an unknown category is rejected with the valid list.","on_invalid":"reject","example":"Dresses"},{"name":"brand","type":"string","required":false,"description":"Brand name as Poshmark lists it (comma-separate up to 10). Matching is case-insensitive. `suggest` returns exact brand names.","on_invalid":"reject","example":"Nike"},{"name":"size","type":"string","required":false,"description":"Size label(s) as sellers enter them, comma-separated: M, XL, 8, 10.5, OS (one size), 32x30.","on_invalid":"reject","example":"M"},{"name":"color","type":"string","required":false,"description":"Colour(s), comma-separated: Red, Pink, Orange, Yellow, Green, Blue, Purple, Gold, Silver, Black, Gray, White, Cream, Brown, Tan.","on_invalid":"reject","example":"Black"},{"name":"condition","type":"string","required":false,"description":"Condition(s), comma-separated: new_with_tags, not_new_with_tags, like_new, good, fair, boutique (new items from Poshmark boutique sellers).","on_invalid":"reject","example":"new_with_tags"},{"name":"availability","type":"enum","required":false,"description":"For-sale listings, or sold ones. A sold listing's price is its last listed price — Poshmark does not publish the amount an accepted offer closed at.","on_invalid":"reject","allowed_values":[{"value":"available","label":"For sale now"},{"value":"sold","label":"Sold listings (last listed price)"}],"default":"available","example":"sold"},{"name":"price_min","type":"number","required":false,"description":"Lowest listed price, in the marketplace currency.","on_invalid":"reject","example":20,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest listed price, in the marketplace currency.","on_invalid":"reject","example":150,"minimum":0},{"name":"shipping","type":"enum","required":false,"description":"Only listings whose seller pays part or all of the shipping.","on_invalid":"reject","allowed_values":[{"value":"free","label":"Free shipping offered by the seller"},{"value":"discounted","label":"Discounted or free shipping"}]},{"name":"sort","type":"enum","required":false,"description":"Order of results. Unknown values are rejected, not ignored.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Poshmark's default ranking"},{"value":"newest","label":"Just in"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"most_liked","label":"Most likes first"},{"value":"price_drop","label":"Recent price drops"}],"default":"relevance"},{"name":"limit","type":"integer","required":false,"description":"Listings per call, 1-100 (Poshmark's own page is 48).","on_invalid":"reject","default":48,"minimum":1,"maximum":100,"aliases":["count","page_size"]},{"name":"cursor","type":"string","required":false,"description":"Continue a previous call: pass back its `next_cursor`. `next_cursor: null` is the end.","on_invalid":"reject","aliases":["next_cursor","page_token"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, url, brand (as listed), brand_canonical, brand_id, price (number — current listed price), currency, original_price (the seller's stated retail price, null when not stated), discount_from_original_percent, first_listed_price, price_drop_percent, status (available|sold_out|not_for_sale|reserved…), is_sold, sold_at, condition (new_with_tags|not_new_with_tags|boutique|wholesale|like_new|good|fair|null), condition_code, size, size_code, size_system, sizes[]{size, size_code, size_system, quantity_available, quantity_sold}, quantity_available, multi_item, department, category, subcategories[], colors[], style_tags[], shipping_discount (free|discounted|null), image, image_count, like_count, comment_count, share_count, seller{id, username, url, picture}, listed_at (first published), available_since (when it last became available — what sort=newest follows), publish_count, updated_at, origin_country, available_in[], match (similar|null)}, count, next_cursor, total_results (exact matches, capped at 5000), total_results_capped, similar_results_available, similar_rows_dropped, filters{}, country, seller","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller/profile","description":"A seller's public Poshmark profile by username, id or closet URL: username, picture, bio, join date, last active date, number of listings (resale, boutique, wholesale), followers and following, items sold as Poshmark displays it, orders shipped and whether the closet is on vacation hold.","required_params":["seller"],"optional_params":["country","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"Seller username (the closet name in poshmark.com/closet/<username>), the seller id (`seller.id` on every listing), or the closet URL.","on_invalid":"reject","example":"kkkkwwwww","aliases":["username","seller_id","closet","url"]},{"name":"country","type":"enum","required":false,"description":"Poshmark marketplace. Prices come back in that marketplace's currency. Poshmark Australia and India have closed and return MARKET_UNAVAILABLE.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — poshmark.com (USD)"},{"value":"ca","label":"Canada — poshmark.ca (CAD)"}],"default":"us","example":"us"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"seller{id, username, display_handle, url, picture, bio, joined_at, status, home_country, last_active_date, listings_count, resale_listings, boutique_listings, wholesale_listings, followers, following, items_sold_display (Poshmark's own rounded label, e.g. '30+'), orders_shipped, vacation_hold}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"suggest","description":"Poshmark's brand suggestions for a partial brand name — the exact names the `brand` filter matches.","required_params":["query"],"optional_params":["country","limit","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The start of a brand name.","on_invalid":"reject","example":"coach","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Poshmark marketplace. Prices come back in that marketplace's currency. Poshmark Australia and India have closed and return MARKET_UNAVAILABLE.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States — poshmark.com (USD)"},{"value":"ca","label":"Canada — poshmark.ca (CAD)"}],"default":"us","example":"us"},{"name":"limit","type":"integer","required":false,"description":"Maximum suggestions, 1-20.","on_invalid":"reject","default":10,"minimum":1,"maximum":20},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"suggestions[]{type (brand), id, name}, count, query, country","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike"}}]},{"name":"producthunt","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Product Hunt API scraper — daily/weekly/monthly leaderboards, product detail & reviews, launch comments, topic & category feeds, maker profiles, collections, and the discussions forum from producthunt.com (logged-out, no API key)","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/producthunt/v1","spec_available":true,"actions":[{"name":"posts","description":"Today's or historical leaderboard launches (daily/weekly/monthly/yearly).","required_params":[],"optional_params":["date","year","month","day","week","period","page"],"params":[{"name":"period","type":"enum","required":false,"description":"Leaderboard window. Unknown values fall back to the daily board.","on_invalid":"ignore","allowed_values":[{"value":"daily","label":"Daily leaderboard (default)"},{"value":"weekly","label":"Weekly leaderboard"},{"value":"monthly","label":"Monthly leaderboard"},{"value":"yearly","label":"Yearly leaderboard"}],"default":"daily","example":"daily"},{"name":"date","type":"string","required":false,"description":"Leaderboard date (YYYY-MM-DD). Overrides year/month/day when given.","on_invalid":"ignore","example":"2024-06-01"},{"name":"year","type":"integer","required":false,"description":"Leaderboard year (used with month/day/week; defaults to today).","on_invalid":"ignore","example":2024,"minimum":2013},{"name":"month","type":"integer","required":false,"description":"Leaderboard month 1-12 (for daily/monthly periods).","on_invalid":"ignore","example":6,"minimum":1,"maximum":12},{"name":"day","type":"integer","required":false,"description":"Leaderboard day of month 1-31 (for the daily period).","on_invalid":"ignore","example":1,"minimum":1,"maximum":31},{"name":"week","type":"integer","required":false,"description":"ISO week number 1-53 (for the weekly period).","on_invalid":"ignore","example":1,"minimum":1,"maximum":53},{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"posts[] (id, slug, name, tagline, upvotes, comments_count, daily/weekly/monthly_rank, topics, product), has_more + next_date/next_page","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"post","description":"Full launch/product detail by slug: tagline, description, website, makers, hunter, topics, media gallery, external links, review aggregates, alternatives, and launch history.","required_params":["slug"],"optional_params":[],"params":[{"name":"slug","type":"string","required":true,"description":"Launch post or product slug (the segment in producthunt.com/products/<slug> or /posts/<slug>).","on_invalid":"reject","example":"notion"}],"returns":"post{}, product{} (+ ai_review_summary, pro_con_tags), makers[], hunter{}, topics[], media[], links[], alternatives[], launches[], rating_breakdown[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"notion"}},{"name":"reviews","description":"Product reviews by slug: per-question answer text, rating + rating histogram, pro/con tags, and the AI review summary.","required_params":["slug"],"optional_params":["page"],"params":[{"name":"slug","type":"string","required":true,"description":"Product slug (producthunt.com/products/<slug>).","on_invalid":"reject","example":"notion"},{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"product{}, rating, reviews_count, rating_breakdown[], reviews[] (question/answer), pro_con_tags[], ai_review_summary, has_more, page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"notion"}},{"name":"topics","description":"Browse Product Hunt topics (interest tags applied to launches).","required_params":[],"optional_params":["page"],"params":[{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"topics[] (id, slug, name, description, followers_count, image_url), has_more, page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"topic_posts","description":"Launches filtered by topic slug.","required_params":["slug"],"optional_params":["page"],"params":[{"name":"slug","type":"string","required":true,"description":"Topic slug (the segment in producthunt.com/topics/<slug>).","on_invalid":"reject","example":"artificial-intelligence"},{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"posts[] for the topic (same shape as posts), has_more, page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"notion"}},{"name":"categories","description":"Browse Product Hunt product categories (the curated category tree, distinct from topics).","required_params":[],"optional_params":["page"],"params":[{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"categories[] (id, name, path, url, subcategories[]), has_more, page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"category","description":"Products and launches inside one product category by slug.","required_params":["slug"],"optional_params":["page"],"params":[{"name":"slug","type":"string","required":true,"description":"Category slug (the segment in producthunt.com/categories/<slug>).","on_invalid":"reject","example":"engineering-development"},{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"products[] / posts[] in the category, has_more, page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"notion"}},{"name":"search","description":"Keyword search across Product Hunt — products (default) or makers/users (type=users).","required_params":["query"],"optional_params":["type","page"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search keywords.","on_invalid":"reject","example":"ai","aliases":["q"]},{"name":"type","type":"enum","required":false,"description":"What to search: products (default) or users. Unknown values fall back to products.","on_invalid":"ignore","allowed_values":[{"value":"products","label":"Search products/launches (default)"},{"value":"users","label":"Search makers/users"}],"default":"products","example":"products"},{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"products[] OR users[] (depending on type), has_more, page","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"ai"}},{"name":"collections","description":"Public curated product collections index.","required_params":[],"optional_params":["page"],"params":[{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"collections[] (id, slug, name, description, path, products_count, user), has_more, page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"collection","description":"Single collection (its products) by user+collection slug or full path.","required_params":[],"optional_params":["path","username","collection_slug"],"params":[{"name":"path","type":"string","required":false,"description":"Full collection path (e.g. /@user/collections/<slug>). Alternative to username + collection_slug.","on_invalid":"ignore","example":"/@rrhoover/collections/my-tools"},{"name":"username","type":"string","required":false,"description":"Collection owner's username (with/without @). Combine with collection_slug, or pass the full path.","on_invalid":"ignore","example":"rrhoover"},{"name":"collection_slug","type":"string","required":false,"description":"Collection slug — the trailing segment of a collection path.","on_invalid":"ignore","example":"my-tools"}],"returns":"collection{id, slug, name, description, products_count, user, products[]}, products[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"user","description":"Maker/user profile plus their submitted launches.","required_params":["username"],"optional_params":["page"],"params":[{"name":"username","type":"string","required":true,"description":"Product Hunt username/handle, with or without @ (the name in producthunt.com/@<username>).","on_invalid":"reject","example":"rrhoover"},{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"user{} (id, username, name, headline, followers_count, products_count, is_maker), posts[] (submitted launches), has_more, page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"rrhoover"}},{"name":"discussions","description":"Product Hunt discussions/forum thread feed (popular or newest).","required_params":[],"optional_params":["order","page"],"params":[{"name":"order","type":"enum","required":false,"description":"Discussion feed ordering. Unknown values fall back to popular.","on_invalid":"ignore","allowed_values":[{"value":"popular","label":"Most popular / hot (default)"},{"value":"newest","label":"Newest threads first"}],"default":"popular","example":"popular"},{"name":"page","type":"integer","required":false,"description":"Result page number (1-based). Use meta.next_page to go further.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"threads[] (id, slug, title, description_preview, votes_count, comments_count, user, url), has_more, page","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"discussion","description":"Single discussion thread with its full nested comment tree.","required_params":["slug"],"optional_params":["forum","path"],"params":[{"name":"slug","type":"string","required":true,"description":"Discussion thread slug — the trailing segment of a producthunt.com/p/<forum>/<slug> URL.","on_invalid":"reject","example":"cursor-or-claude-code"},{"name":"forum","type":"string","required":false,"description":"Discussion forum segment (the part before the thread slug in /p/<forum>/<slug>). Optional — alternatively pass the full thread path.","on_invalid":"ignore","example":"cursor"},{"name":"path","type":"string","required":false,"description":"Full collection path (e.g. /@user/collections/<slug>). Alternative to username + collection_slug.","on_invalid":"ignore","example":"/@rrhoover/collections/my-tools"}],"returns":"thread{}, comments[] (nested replies[], votes_count, user, created_at), comments_count","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"notion"}}]},{"name":"rakuten","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Rakuten Ichiba API scraper — Japan e-commerce product search, item detail, full reviews, shop catalog, rankings & genres (rakuten.co.jp)","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/rakuten/v1","spec_available":true,"actions":[{"name":"search","description":"Search Rakuten Ichiba by keyword or genre with sort and price filters — returns items with name, price (JPY), shop, points, shipping, rating and images. Paginated.","required_params":[],"optional_params":["keyword","q","genre_id","page","sort","min_price","max_price"],"params":[{"name":"keyword","type":"string","required":false,"description":"Search keyword (Japanese or English). Provide keyword OR genre_id.","on_invalid":"reject","example":"ヘッドホン","aliases":["q"]},{"name":"genre_id","type":"string","required":false,"description":"Rakuten genre id to browse (discover ids via the genres action).","on_invalid":"reject"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"standard","label":"Standard relevance (default)"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"review","label":"Highest review score"},{"value":"new","label":"Newest first"}],"default":"standard","example":"price_asc"},{"name":"min_price","type":"integer","required":false,"description":"Minimum price filter (JPY).","on_invalid":"ignore","example":1000},{"name":"max_price","type":"integer","required":false,"description":"Maximum price filter (JPY).","on_invalid":"ignore","example":50000}],"returns":"results[] (item_name, item_price JPY, shop, points, shipping_price, review_url, images), page, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"keyword":"ヘッドホン"}},{"name":"item","description":"Get a Rakuten Ichiba product's detail — title, price (JPY), brand, shop, rating, images, category breadcrumbs, spec attributes, shipping and points.","required_params":[],"optional_params":["url","item_url","shop_code","item_path","manage_number"],"params":[{"name":"url","type":"string","required":false,"description":"Full Rakuten item URL (the simplest input). Alternative: shop_code + item_path.","on_invalid":"reject","example":"https://item.rakuten.co.jp/seedcoms/10003515-198/","aliases":["item_url"]},{"name":"shop_code","type":"string","required":false,"description":"Rakuten shop code (pair with item_path as an alternative to url).","on_invalid":"reject"},{"name":"item_path","type":"string","required":false,"description":"Item path within the shop (pair with shop_code).","on_invalid":"reject","aliases":["manage_number"]}],"returns":"item{} — item_id, item_name, item_price, brand, shop, review_average/count, image_urls, breadcrumbs[], attributes[], description, free_shipping, variant_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://item.rakuten.co.jp/seedcoms/10003515-198/"}},{"name":"reviews","description":"Get ALL buyer reviews for a Rakuten Ichiba item, paginated (30/page) — rating, body, reviewer nickname, post date and helpful count, plus the total review count.","required_params":[],"optional_params":["url","item_url","shop_code","item_path","manage_number","page"],"params":[{"name":"url","type":"string","required":false,"description":"Full Rakuten item URL (the simplest input). Alternative: shop_code + item_path.","on_invalid":"reject","example":"https://item.rakuten.co.jp/seedcoms/10003515-198/","aliases":["item_url"]},{"name":"shop_code","type":"string","required":false,"description":"Rakuten shop code (pair with item_path as an alternative to url).","on_invalid":"reject"},{"name":"item_path","type":"string","required":false,"description":"Item path within the shop (pair with shop_code).","on_invalid":"reject","aliases":["manage_number"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"reviews[] (rating, body, reviewer, posted_at, helpful_count), summary{review_average, review_count}, page, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://item.rakuten.co.jp/seedcoms/10003515-198/"}},{"name":"variants","description":"Get a Rakuten Ichiba item's SKU variant matrix — every color/size/option combination with its price and images.","required_params":[],"optional_params":["url","item_url","shop_code","item_path","manage_number"],"params":[{"name":"url","type":"string","required":false,"description":"Full Rakuten item URL (the simplest input). Alternative: shop_code + item_path.","on_invalid":"reject","example":"https://item.rakuten.co.jp/seedcoms/10003515-198/","aliases":["item_url"]},{"name":"shop_code","type":"string","required":false,"description":"Rakuten shop code (pair with item_path as an alternative to url).","on_invalid":"reject"},{"name":"item_path","type":"string","required":false,"description":"Item path within the shop (pair with shop_code).","on_invalid":"reject","aliases":["manage_number"]}],"returns":"variants[] {variant_id, selector_values, item_price, images}, selectors[], variant_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://item.rakuten.co.jp/seedcoms/10003515-198/"}},{"name":"shop","description":"List a Rakuten Ichiba shop's catalog by shop_code — every item the shop sells, paginated.","required_params":["shop_code"],"optional_params":["sid","page"],"params":[{"name":"shop_code","type":"string","required":true,"description":"Rakuten shop code (the shop's urlCode, e.g. 'rakuten24').","on_invalid":"reject","example":"rakuten24","aliases":["sid"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"results[] shop catalog items, shop_code, page, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"shop_code":"rakuten24"}},{"name":"ranking","description":"Get the Rakuten Ichiba best-seller ranking — overall or for a genre, by day/week/realtime/month.","required_params":[],"optional_params":["genre_id","period","page"],"params":[{"name":"genre_id","type":"string","required":false,"description":"Genre id to rank within ('0' = overall, the default).","on_invalid":"reject","example":"0"},{"name":"period","type":"enum","required":false,"description":"Ranking time window.","on_invalid":"ignore","allowed_values":[{"value":"daily","label":"Daily"},{"value":"weekly","label":"Weekly"},{"value":"realtime","label":"Realtime"},{"value":"monthly","label":"Monthly"}],"default":"daily","example":"weekly"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"results[] ranked items {rank, item_name, item_price, item_url}, genre_id, period","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"genre_id":"0"}},{"name":"genres","description":"Browse the Rakuten Ichiba category (genre) tree — top-level categories, or pass genre_id for a subtree.","required_params":[],"optional_params":["genre_id"],"params":[{"name":"genre_id","type":"string","required":false,"description":"Genre id to read the subtree of (omit for the top-level tree).","on_invalid":"reject"}],"returns":"genres{} — genre tree with children[] {genre_id, name, count, leaf}, genre_id","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"rappi","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Rappi — Latin America delivery & quick-commerce (9 countries)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/rappi/v1","spec_available":true,"actions":[{"name":"restaurant/search","description":"Restaurants deliverable in one city, with that city's own restaurant count and its cuisine taxonomy. Pass `cuisine` to get the site's own complete list for that cuisine.","required_params":["country"],"optional_params":["city","cuisine","sort","limit","offset","min_rating","free_delivery_only","open_now","max_delivery_cost"],"params":[{"name":"country","type":"enum","required":true,"description":"Rappi storefront. Each country is a separate catalogue and currency.","on_invalid":"reject","allowed_values":[{"value":"co","label":"Colombia (www.rappi.com.co)"},{"value":"mx","label":"Mexico (www.rappi.com.mx)"},{"value":"br","label":"Brazil (www.rappi.com.br)"},{"value":"ar","label":"Argentina (www.rappi.com.ar)"},{"value":"cl","label":"Chile (www.rappi.cl)"},{"value":"pe","label":"Peru (www.rappi.com.pe)"},{"value":"uy","label":"Uruguay (www.rappi.com.uy)"},{"value":"ec","label":"Ecuador (www.rappi.com.ec)"},{"value":"cr","label":"Costa Rica (www.rappi.co.cr)"}],"default":"co","example":"co"},{"name":"city","type":"string","required":false,"description":"City slug, e.g. `bogota`, `medellin`, `sao-paulo`. Omit for the country's default city. Use the `cities` action for the live list.","on_invalid":"reject","example":"medellin"},{"name":"cuisine","type":"string","required":false,"description":"Cuisine slug from `cuisine_taxonomy`, e.g. `hamburguesa`, `sushi`, `pizza`. Returns the site's complete list for that cuisine.","on_invalid":"reject","example":"sushi"},{"name":"sort","type":"enum","required":false,"description":"Order the returned rows.","on_invalid":"reject","allowed_values":[{"value":"rating","label":"rating"},{"value":"eta","label":"eta"},{"value":"delivery_cost","label":"delivery_cost"},{"value":"name","label":"name"},{"value":"reviews","label":"reviews"}],"example":"rating"},{"name":"limit","type":"integer","required":false,"description":"Rows to return (1-200).","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":200},{"name":"offset","type":"integer","required":false,"description":"Rows to skip.","on_invalid":"reject","default":0,"minimum":0},{"name":"min_rating","type":"number","required":false,"description":"Keep rows whose catalogue rating is at least this.","on_invalid":"reject","example":4.5,"minimum":0,"maximum":5},{"name":"free_delivery_only","type":"boolean","required":false,"description":"Keep only rows Rappi flags as free shipping.","on_invalid":"reject","default":false},{"name":"open_now","type":"boolean","required":false,"description":"Keep only rows whose status is OPEN.","on_invalid":"reject","default":false},{"name":"max_delivery_cost","type":"number","required":false,"description":"Keep rows whose delivery cost is at most this, in the local currency.","on_invalid":"reject","minimum":0}],"returns":"restaurants[] with store_id, name, url, cuisines, list_rating, list_review_count, delivery_cost, eta_minutes, plus the city record, total_in_city and the cuisine taxonomy.","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"country":"co","city":"bogota","limit":10}},{"name":"restaurant/detail","description":"One restaurant's full record and its COMPLETE menu with prices, sections, discounts, rating histogram, schedule and offers.","required_params":["country"],"optional_params":["store_id","url"],"params":[{"name":"country","type":"enum","required":true,"description":"Rappi storefront.","on_invalid":"reject","allowed_values":[{"value":"co","label":"Colombia (www.rappi.com.co)"},{"value":"mx","label":"Mexico (www.rappi.com.mx)"},{"value":"br","label":"Brazil (www.rappi.com.br)"},{"value":"ar","label":"Argentina (www.rappi.com.ar)"},{"value":"cl","label":"Chile (www.rappi.cl)"},{"value":"pe","label":"Peru (www.rappi.com.pe)"},{"value":"uy","label":"Uruguay (www.rappi.com.uy)"},{"value":"ec","label":"Ecuador (www.rappi.com.ec)"},{"value":"cr","label":"Costa Rica (www.rappi.co.cr)"}],"default":"co","example":"co"},{"name":"store_id","type":"integer","required":false,"description":"Rappi restaurant id, as returned by restaurant/search. Ids are namespaced per country.","on_invalid":"reject","example":900044812},{"name":"url","type":"string","required":false,"description":"A rappi.com restaurant URL instead of store_id.","on_invalid":"reject","example":"https://www.rappi.com.co/restaurantes/900044812-home-burgers"}],"returns":"store{…, rating, review_count, rating_histogram, lat, lng, address, currency} and menu{sections[]{items[]{price, original_price, …}}}.","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"country":"co","store_id":900044812}},{"name":"store/search","description":"Grocery, pharmacy and retail STORES of one store type. This listing is country-wide: Rappi redirects the city form to the country URL (measured), so it is not city-scoped and says so.","required_params":["country"],"optional_params":["store_type","query","limit","offset"],"params":[{"name":"country","type":"enum","required":true,"description":"Rappi storefront.","on_invalid":"reject","allowed_values":[{"value":"co","label":"Colombia (www.rappi.com.co)"},{"value":"mx","label":"Mexico (www.rappi.com.mx)"},{"value":"br","label":"Brazil (www.rappi.com.br)"},{"value":"ar","label":"Argentina (www.rappi.com.ar)"},{"value":"cl","label":"Chile (www.rappi.cl)"},{"value":"pe","label":"Peru (www.rappi.com.pe)"},{"value":"uy","label":"Uruguay (www.rappi.com.uy)"},{"value":"ec","label":"Ecuador (www.rappi.com.ec)"},{"value":"cr","label":"Costa Rica (www.rappi.co.cr)"}],"default":"co","example":"co"},{"name":"store_type","type":"string","required":false,"description":"Parent store type slug, e.g. `market`, `rappimall-parent`, `super-farma`, `express`, `turbox`.","on_invalid":"reject","default":"market","example":"market"},{"name":"query","type":"string","required":false,"description":"Keep only stores whose name contains this (accent-insensitive).","on_invalid":"reject","example":"makro"},{"name":"limit","type":"integer","required":false,"description":"Rows to return (1-200).","on_invalid":"reject","default":50,"minimum":1,"maximum":200},{"name":"offset","type":"integer","required":false,"description":"Rows to skip.","on_invalid":"reject","default":0,"minimum":0}],"returns":"stores[] with store_id, name, url, store_type, vertical, eta_minutes.","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"country":"co"}},{"name":"store/detail","description":"One grocery/retail store's record, its aisle directory with each aisle's product count, and its products with prices. `pages` walks deeper into the aisles.","required_params":["country","store_id"],"optional_params":["pages"],"params":[{"name":"country","type":"enum","required":true,"description":"Rappi storefront.","on_invalid":"reject","allowed_values":[{"value":"co","label":"Colombia (www.rappi.com.co)"},{"value":"mx","label":"Mexico (www.rappi.com.mx)"},{"value":"br","label":"Brazil (www.rappi.com.br)"},{"value":"ar","label":"Argentina (www.rappi.com.ar)"},{"value":"cl","label":"Chile (www.rappi.cl)"},{"value":"pe","label":"Peru (www.rappi.com.pe)"},{"value":"uy","label":"Uruguay (www.rappi.com.uy)"},{"value":"ec","label":"Ecuador (www.rappi.com.ec)"},{"value":"cr","label":"Costa Rica (www.rappi.co.cr)"}],"default":"co","example":"co"},{"name":"store_id","type":"integer","required":true,"description":"Rappi store id from store/search.","on_invalid":"reject","example":900189604},{"name":"pages","type":"integer","required":false,"description":"How many aisle pages to read (1-4). Each page adds more aisles and their products; 1 returns the store's front shelves only.","on_invalid":"reject","default":2,"example":2,"minimum":1,"maximum":4}],"returns":"store{…}, aisle_directory[]{name, product_count} and aisles[]{items[]{product_id, name, price, original_price, sale_type, …}}.","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"country":"co","store_id":900044812}},{"name":"cities","description":"The city slugs one country's storefront actually serves, read from Rappi's own published sitemap. These are the values `city` accepts.","required_params":["country"],"optional_params":[],"params":[{"name":"country","type":"enum","required":true,"description":"Rappi storefront.","on_invalid":"reject","allowed_values":[{"value":"co","label":"Colombia (www.rappi.com.co)"},{"value":"mx","label":"Mexico (www.rappi.com.mx)"},{"value":"br","label":"Brazil (www.rappi.com.br)"},{"value":"ar","label":"Argentina (www.rappi.com.ar)"},{"value":"cl","label":"Chile (www.rappi.cl)"},{"value":"pe","label":"Peru (www.rappi.com.pe)"},{"value":"uy","label":"Uruguay (www.rappi.com.uy)"},{"value":"ec","label":"Ecuador (www.rappi.com.ec)"},{"value":"cr","label":"Costa Rica (www.rappi.co.cr)"}],"default":"co","example":"co"}],"returns":"cities[] with slug and url.","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":0},"example_params":{"country":"co"}}]},{"name":"realtor","category":{"id":"real-estate","title":"Real Estate"},"title":"Realtor.com API scraper — US real estate data: for-sale, for-rent and recently-sold listings with full filters (price, beds, baths, property type, sqft, lot, year built, HOA, days-on-market, keywords), complete property detail with RealEstimate value, price & tax history, schools, photos, features and listing agent, multi-source home-value estimates (Collateral Analytics / Quantarium / Cotality), local market trends, location autocomplete and comparable homes — no API key required","version":"1.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/realtor/v1","spec_available":true,"actions":[{"name":"search","description":"Search Realtor.com listings by location (for sale / for rent / recently sold), with structured filters: price, beds, baths, property type, sqft, lot size, year built, HOA, days-on-market and keywords. Paginate with offset.","required_params":["location"],"optional_params":["status","sort","limit","offset","map_bounds","price_min","price_max","beds_min","beds_max","baths_min","home_type","sqft_min","sqft_max","lot_min","lot_max","year_built_min","year_built_max","max_hoa","days_on_max","keywords"],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — a US city, ZIP, neighborhood, county or state ('Austin, TX', '78704', 'Brooklyn, NY', 'TX').","on_invalid":"reject","example":"Austin, TX","aliases":["loc"]},{"name":"status","type":"enum","required":false,"description":"Listing status (synonyms rent/sale/recently_sold also accepted).","on_invalid":"ignore","allowed_values":[{"value":"for_sale","label":"For sale"},{"value":"for_rent","label":"For rent"},{"value":"sold","label":"Recently sold"}],"default":"for_sale","example":"for_sale"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Newest listed"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"sold_date","label":"Most recently sold"}],"default":"newest","example":"newest"},{"name":"limit","type":"integer","required":false,"description":"Listings to return per call (1-200).","on_invalid":"ignore","default":42,"example":42,"minimum":1,"maximum":200},{"name":"offset","type":"integer","required":false,"description":"Pagination offset — skip this many results (page through with offset += limit).","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"map_bounds","type":"object","required":false,"description":"Search an exact map viewport {west, east, south, north} in decimal degrees (alternative/addition to location).","on_invalid":"ignore","example":{"west":-97.78,"east":-97.7,"south":30.24,"north":30.3},"aliases":["bounds"]},{"name":"price_min","type":"integer","required":false,"description":"Minimum price in USD (sale price, or monthly rent for status=for_rent).","on_invalid":"ignore","example":300000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum price in USD.","on_invalid":"ignore","example":700000,"minimum":0},{"name":"beds_min","type":"integer","required":false,"description":"Minimum bedrooms (3 = 3+).","on_invalid":"ignore","example":3,"minimum":0,"maximum":10,"aliases":["beds"]},{"name":"beds_max","type":"integer","required":false,"description":"Maximum bedrooms.","on_invalid":"ignore","example":5,"minimum":0,"maximum":10},{"name":"baths_min","type":"number","required":false,"description":"Minimum bathrooms (2 = 2+).","on_invalid":"ignore","example":2,"minimum":0,"maximum":10,"aliases":["baths"]},{"name":"home_type","type":"string","required":false,"description":"Property type — one or several comma-separated. One of: single_family, condos, townhomes, multi_family, mobile, land, farm (e.g. 'single_family,condos').","on_invalid":"ignore","example":"single_family"},{"name":"sqft_min","type":"integer","required":false,"description":"Minimum living area in square feet.","on_invalid":"ignore","example":1500,"minimum":0},{"name":"sqft_max","type":"integer","required":false,"description":"Maximum living area in square feet.","on_invalid":"ignore","example":3000,"minimum":0},{"name":"lot_min","type":"integer","required":false,"description":"Minimum lot size in SQUARE FEET (43560 sqft = 1 acre).","on_invalid":"ignore","example":5000,"minimum":0},{"name":"lot_max","type":"integer","required":false,"description":"Maximum lot size in square feet.","on_invalid":"ignore","example":43560,"minimum":0},{"name":"year_built_min","type":"integer","required":false,"description":"Earliest year built.","on_invalid":"ignore","example":2010,"minimum":1800,"maximum":2030},{"name":"year_built_max","type":"integer","required":false,"description":"Latest year built.","on_invalid":"ignore","example":2024,"minimum":1800,"maximum":2030},{"name":"max_hoa","type":"integer","required":false,"description":"Maximum monthly HOA fee in USD.","on_invalid":"ignore","example":100,"minimum":0},{"name":"days_on_max","type":"integer","required":false,"description":"Only listings on Realtor.com at most this many days (7 = new this week).","on_invalid":"ignore","example":7,"minimum":1},{"name":"keywords","type":"string","required":false,"description":"Free-text listing keyword filter, comma-separated ('pool', 'waterfront', 'guest house').","on_invalid":"ignore","example":"pool"}],"returns":"results[]{property_id, url, list_price_usd, status, property_type, beds, baths, sqft, lot_sqft, year_built, realestimate_usd, address_line, city, state_code, postal_code, latitude, longitude, primary_photo_url, flags} + total + count + filters_applied","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Austin, TX"}},{"name":"detail","description":"Full property record by property_id: RealEstimate value (+ range), price history, tax history, schools (with ratings), photos, interior/exterior feature groups, HOA, status flags, monthly-payment estimate and the listing agent/broker.","required_params":["property_id"],"optional_params":[],"params":[{"name":"property_id","type":"string","required":true,"description":"Realtor.com property id (from a search result's property_id, or the M-code in a listing URL).","on_invalid":"reject","example":"7211899596","aliases":["id"]}],"returns":"property{property_id, address_line, list_price_usd, realestimate_usd, realestimate_range_usd, beds, baths, sqft, lot_sqft, year_built, description_text, hoa_fee_usd, photos[], schools[], price_history[], tax_history[], feature_groups[], flags, advertisers[]} (agent email requires include_pii)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{"property_id":"7211899596"}},{"name":"estimates","description":"Multi-source home-value estimates (AVMs) for a property — Realtor.com surfaces several independent valuation models (Collateral Analytics, Quantarium, Cotality/CoreLogic), each with its own value and high/low range. Returns the full set plus the best estimate. The valuation surface for pricing a home.","required_params":["property_id"],"optional_params":[],"params":[{"name":"property_id","type":"string","required":true,"description":"Realtor.com property id (from a search result's property_id, or the M-code in a listing URL).","on_invalid":"reject","example":"7211899596","aliases":["id"]}],"returns":"property_id, estimates[]{source_name, source_type, estimate_usd, estimate_high_usd, estimate_low_usd, date, is_best}, best_estimate{}, count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"property_id":"7211899596"}},{"name":"sold","description":"Recently-sold homes by location (or map bounds), with the same structured filters as search — the comparable-sales surface for valuing a home.","required_params":["location"],"optional_params":["sort","limit","offset","map_bounds","price_min","price_max","beds_min","beds_max","baths_min","home_type","sqft_min","sqft_max","lot_min","lot_max","year_built_min","year_built_max","max_hoa","days_on_max","keywords"],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — a US city, ZIP, neighborhood, county or state ('Austin, TX', '78704', 'Brooklyn, NY', 'TX').","on_invalid":"reject","example":"Austin, TX","aliases":["loc"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Newest listed"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"sold_date","label":"Most recently sold"}],"default":"newest","example":"newest"},{"name":"limit","type":"integer","required":false,"description":"Listings to return per call (1-200).","on_invalid":"ignore","default":42,"example":42,"minimum":1,"maximum":200},{"name":"offset","type":"integer","required":false,"description":"Pagination offset — skip this many results (page through with offset += limit).","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"map_bounds","type":"object","required":false,"description":"Search an exact map viewport {west, east, south, north} in decimal degrees (alternative/addition to location).","on_invalid":"ignore","example":{"west":-97.78,"east":-97.7,"south":30.24,"north":30.3},"aliases":["bounds"]},{"name":"price_min","type":"integer","required":false,"description":"Minimum price in USD (sale price, or monthly rent for status=for_rent).","on_invalid":"ignore","example":300000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum price in USD.","on_invalid":"ignore","example":700000,"minimum":0},{"name":"beds_min","type":"integer","required":false,"description":"Minimum bedrooms (3 = 3+).","on_invalid":"ignore","example":3,"minimum":0,"maximum":10,"aliases":["beds"]},{"name":"beds_max","type":"integer","required":false,"description":"Maximum bedrooms.","on_invalid":"ignore","example":5,"minimum":0,"maximum":10},{"name":"baths_min","type":"number","required":false,"description":"Minimum bathrooms (2 = 2+).","on_invalid":"ignore","example":2,"minimum":0,"maximum":10,"aliases":["baths"]},{"name":"home_type","type":"string","required":false,"description":"Property type — one or several comma-separated. One of: single_family, condos, townhomes, multi_family, mobile, land, farm (e.g. 'single_family,condos').","on_invalid":"ignore","example":"single_family"},{"name":"sqft_min","type":"integer","required":false,"description":"Minimum living area in square feet.","on_invalid":"ignore","example":1500,"minimum":0},{"name":"sqft_max","type":"integer","required":false,"description":"Maximum living area in square feet.","on_invalid":"ignore","example":3000,"minimum":0},{"name":"lot_min","type":"integer","required":false,"description":"Minimum lot size in SQUARE FEET (43560 sqft = 1 acre).","on_invalid":"ignore","example":5000,"minimum":0},{"name":"lot_max","type":"integer","required":false,"description":"Maximum lot size in square feet.","on_invalid":"ignore","example":43560,"minimum":0},{"name":"year_built_min","type":"integer","required":false,"description":"Earliest year built.","on_invalid":"ignore","example":2010,"minimum":1800,"maximum":2030},{"name":"year_built_max","type":"integer","required":false,"description":"Latest year built.","on_invalid":"ignore","example":2024,"minimum":1800,"maximum":2030},{"name":"max_hoa","type":"integer","required":false,"description":"Maximum monthly HOA fee in USD.","on_invalid":"ignore","example":100,"minimum":0},{"name":"days_on_max","type":"integer","required":false,"description":"Only listings on Realtor.com at most this many days (7 = new this week).","on_invalid":"ignore","example":7,"minimum":1},{"name":"keywords","type":"string","required":false,"description":"Free-text listing keyword filter, comma-separated ('pool', 'waterfront', 'guest house').","on_invalid":"ignore","example":"pool"}],"returns":"results[] (same card shape; status=sold, last_sold_price_usd / last_sold_date) + total + count + filters_applied","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Austin, TX"}},{"name":"market_trends","description":"Local housing-market intelligence for a US city or ZIP — median listing price, median sold price, median price per square foot, median days-on-market and median rent. The market-overview surface for a neighborhood or metro.","required_params":["location"],"optional_params":[],"params":[{"name":"location","type":"string","required":true,"description":"Market area to report on — a US city ('Austin, TX', 'Las Vegas, NV') or a 5-digit ZIP code ('78704').","on_invalid":"reject","example":"Austin, TX","aliases":["loc","area"]}],"returns":"slug_id, location, geo_type, market{median_listing_price_usd, median_sold_price_usd, median_price_per_sqft_usd, median_days_on_market, median_rent_price_usd}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"location":"Austin, TX"}},{"name":"comps","description":"Comparable homes near a property — synthesized from recently-sold and active listings around the subject's coordinates, scored by distance, beds and sqft.","required_params":["property_id"],"optional_params":["radius_miles","max_comps","include_active"],"params":[{"name":"property_id","type":"string","required":true,"description":"Realtor.com property id (from a search result's property_id, or the M-code in a listing URL).","on_invalid":"reject","example":"7211899596","aliases":["id"]},{"name":"radius_miles","type":"number","required":false,"description":"Search radius around the subject in miles.","on_invalid":"ignore","default":2.0,"example":2.0,"minimum":0.25,"maximum":25},{"name":"max_comps","type":"integer","required":false,"description":"How many comparables to return.","on_invalid":"ignore","default":12,"example":12,"minimum":1,"maximum":50},{"name":"include_active","type":"boolean","required":false,"description":"Also include currently-active listings as comps (default: recently-sold only).","on_invalid":"reject","default":false,"example":false}],"returns":"subject{property_id, address_line, list_price_usd, beds, baths, sqft} + comps[]{property_id, address_line, last_sold_price_usd, last_sold_date, list_price_usd, beds, baths, sqft, distance_miles} + radius_miles + method","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":2},"example_params":{"property_id":"7211899596"}},{"name":"autocomplete","description":"Location autocomplete — suggest Realtor.com cities, ZIPs, neighborhoods, counties and schools for a free-text query. Resolve a fuzzy term before searching, or power a search box.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text location to autocomplete — a partial city, ZIP, neighborhood, county or school ('Austi', '787', 'Brookl').","on_invalid":"reject","example":"Austi","aliases":["q","input","location"]},{"name":"limit","type":"integer","required":false,"description":"Max suggestions to return (1-25).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":25}],"returns":"suggestions[]{id, type, name, city, state_code, postal_code, neighborhood, latitude, longitude, geo_id} + count + query","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Austin"}}]},{"name":"recall","category":{"id":"utilities","title":"Utilities & AI"},"title":"Product Recall & Safety API — search and track product recalls from the US FDA (food, drug, device) and the EU Safety Gate (RAPEX): search, detail, by-company, latest and stats","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/recall/v1","spec_available":true,"actions":[{"name":"search","description":"Search FDA recalls by keyword, category, classification, status, company, and date range with skip/limit pagination. Pass category=all (default) to span food+drug+device.","required_params":[],"optional_params":["query","category","classification","status","company","date_from","date_to","sort","limit","skip","include_severity"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text product/keyword search over the recall's product description and reason . e.g. 'peanut butter', 'listeria', 'airbag'. Combine with category/classification/date.","on_invalid":"reject","example":"peanut butter","aliases":["q","keyword","keywords","product"]},{"name":"category","type":"enum","required":false,"description":"FDA recall category. food / drug / device, or 'all' to search every category at once. (CPSC consumer-product & NHTSA vehicle recalls are out of scope — see docs; vehicle recalls live in the `vehicle` API.)","on_invalid":"reject","allowed_values":[{"value":"food","label":"Food & cosmetics recalls (FDA RES)"},{"value":"drug","label":"Human & animal drug recalls (FDA RES)"},{"value":"device","label":"Medical device recalls (FDA RES)"},{"value":"all","label":"All three FDA categories (fan-out)"}],"default":"all","example":"food","aliases":["product_type","productType"]},{"name":"classification","type":"enum","required":false,"description":"FDA hazard classification. Case-insensitive. Filters to recalls of that seriousness tier.","on_invalid":"reject","allowed_values":[{"value":"Class I","label":"Class I — reasonable probability of serious adverse health consequences or death (most serious)"},{"value":"Class II","label":"Class II — temporary/medically reversible adverse health consequences"},{"value":"Class III","label":"Class III — unlikely to cause adverse health consequences (least serious)"}],"example":"Class I","aliases":["recall_class"]},{"name":"status","type":"enum","required":false,"description":"Recall lifecycle status. Case-insensitive; unknown values are ignored rather than rejected.","on_invalid":"ignore","allowed_values":[{"value":"Ongoing","label":"Recall is ongoing"},{"value":"Completed","label":"Recall completed"},{"value":"Terminated","label":"Recall terminated (FDA closed it)"},{"value":"Pending","label":"Recall classification pending"}],"example":"Ongoing"},{"name":"company","type":"string","required":false,"description":"Optional recalling-firm filter to narrow a search.","on_invalid":"ignore","example":"Pfizer","aliases":["firm","recalling_firm","firmName","manufacturer"]},{"name":"date_from","type":"string","required":false,"description":"Filter by recall report_date from (on or after). ISO YYYY-MM-DD (or YYYYMMDD). Pair date_from + date_to for a range.","on_invalid":"ignore","example":"2025-01-01","aliases":["dateFrom","report_date_from","dateFrom"]},{"name":"date_to","type":"string","required":false,"description":"Filter by recall report_date to (on or before). ISO YYYY-MM-DD (or YYYYMMDD). Pair date_from + date_to for a range.","on_invalid":"ignore","example":"2026-06-01","aliases":["dateTo","report_date_to","dateTo"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering by date field.","on_invalid":"ignore","allowed_values":[{"value":"report_date:desc","label":"Newest report date first (default)"},{"value":"report_date:asc","label":"Oldest report date first"},{"value":"recall_initiation_date:desc","label":"Newest initiation first"},{"value":"recall_initiation_date:asc","label":"Oldest initiation first"}],"default":"report_date:desc","example":"report_date:desc"},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["maxResults","max_results","count_limit"]},{"name":"skip","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_skip. openFDA ceiling: skip+limit <= 25000.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":25000,"aliases":["offset"]},{"name":"include_severity","type":"boolean","required":false,"description":"Include the 0-100 severity_score on each recall (default true).","on_invalid":"ignore","default":true,"example":true,"aliases":["includeIntelligenceScore","include_score"]}],"returns":"recalls[] (normalized FDA enforcement records w/ severity_score), total, skip, limit, has_more, next_skip, categories_searched[]","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"listeria","category":"food","limit":3}},{"name":"recall_detail","description":"Full detail for one recall by its FDA recall_number (category auto-detected from prefix).","required_params":["recall_number"],"optional_params":["category"],"params":[{"name":"recall_number","type":"string","required":true,"description":"The FDA recall_number (e.g. F-0001-2018, D-1234-2025, Z-1234-2025) from a search result. Category is auto-detected from the prefix (F=food, D=drug, Z=device) but pass category to be explicit.","on_invalid":"reject","example":"F-1397-2012","aliases":["id","recallNumber"]},{"name":"category","type":"enum","required":false,"description":"FDA recall category. food / drug / device, or 'all' to search every category at once. (CPSC consumer-product & NHTSA vehicle recalls are out of scope — see docs; vehicle recalls live in the `vehicle` API.)","on_invalid":"reject","allowed_values":[{"value":"food","label":"Food & cosmetics recalls (FDA RES)"},{"value":"drug","label":"Human & animal drug recalls (FDA RES)"},{"value":"device","label":"Medical device recalls (FDA RES)"},{"value":"all","label":"All three FDA categories (fan-out)"}],"example":"food","aliases":["product_type","productType"]}],"returns":"recall{} — the full normalized recall record","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"recall_number":"F-1397-2012"}},{"name":"by_company","description":"All recalls for a recalling firm / manufacturer, newest first, paginated.","required_params":["company"],"optional_params":["category","classification","status","date_from","date_to","limit","skip","include_severity"],"params":[{"name":"company","type":"string","required":true,"description":"Recalling firm / company name (matched against openFDA recalling_firm). Case-insensitive, partial words allowed.","on_invalid":"reject","example":"Pfizer","aliases":["firm","recalling_firm","firmName","manufacturer"]},{"name":"category","type":"enum","required":false,"description":"FDA recall category. food / drug / device, or 'all' to search every category at once. (CPSC consumer-product & NHTSA vehicle recalls are out of scope — see docs; vehicle recalls live in the `vehicle` API.)","on_invalid":"reject","allowed_values":[{"value":"food","label":"Food & cosmetics recalls (FDA RES)"},{"value":"drug","label":"Human & animal drug recalls (FDA RES)"},{"value":"device","label":"Medical device recalls (FDA RES)"},{"value":"all","label":"All three FDA categories (fan-out)"}],"default":"all","example":"food","aliases":["product_type","productType"]},{"name":"classification","type":"enum","required":false,"description":"FDA hazard classification. Case-insensitive. Filters to recalls of that seriousness tier.","on_invalid":"reject","allowed_values":[{"value":"Class I","label":"Class I — reasonable probability of serious adverse health consequences or death (most serious)"},{"value":"Class II","label":"Class II — temporary/medically reversible adverse health consequences"},{"value":"Class III","label":"Class III — unlikely to cause adverse health consequences (least serious)"}],"example":"Class I","aliases":["recall_class"]},{"name":"status","type":"enum","required":false,"description":"Recall lifecycle status. Case-insensitive; unknown values are ignored rather than rejected.","on_invalid":"ignore","allowed_values":[{"value":"Ongoing","label":"Recall is ongoing"},{"value":"Completed","label":"Recall completed"},{"value":"Terminated","label":"Recall terminated (FDA closed it)"},{"value":"Pending","label":"Recall classification pending"}],"example":"Ongoing"},{"name":"date_from","type":"string","required":false,"description":"Filter by recall report_date from (on or after). ISO YYYY-MM-DD (or YYYYMMDD). Pair date_from + date_to for a range.","on_invalid":"ignore","example":"2025-01-01","aliases":["dateFrom","report_date_from","dateFrom"]},{"name":"date_to","type":"string","required":false,"description":"Filter by recall report_date to (on or before). ISO YYYY-MM-DD (or YYYYMMDD). Pair date_from + date_to for a range.","on_invalid":"ignore","example":"2026-06-01","aliases":["dateTo","report_date_to","dateTo"]},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["maxResults","max_results","count_limit"]},{"name":"skip","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_skip. openFDA ceiling: skip+limit <= 25000.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":25000,"aliases":["offset"]},{"name":"include_severity","type":"boolean","required":false,"description":"Include the 0-100 severity_score on each recall (default true).","on_invalid":"ignore","default":true,"example":true,"aliases":["includeIntelligenceScore","include_score"]}],"returns":"recalls[] for the firm, company, total, has_more, next_skip","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"company":"Pfizer","category":"drug","limit":3}},{"name":"latest","description":"Most recent recalls across all categories (or one), within the last N days.","required_params":[],"optional_params":["category","classification","days","limit","skip","include_severity"],"params":[{"name":"category","type":"enum","required":false,"description":"FDA recall category. food / drug / device, or 'all' to search every category at once. (CPSC consumer-product & NHTSA vehicle recalls are out of scope — see docs; vehicle recalls live in the `vehicle` API.)","on_invalid":"reject","allowed_values":[{"value":"food","label":"Food & cosmetics recalls (FDA RES)"},{"value":"drug","label":"Human & animal drug recalls (FDA RES)"},{"value":"device","label":"Medical device recalls (FDA RES)"},{"value":"all","label":"All three FDA categories (fan-out)"}],"default":"all","example":"food","aliases":["product_type","productType"]},{"name":"classification","type":"enum","required":false,"description":"FDA hazard classification. Case-insensitive. Filters to recalls of that seriousness tier.","on_invalid":"reject","allowed_values":[{"value":"Class I","label":"Class I — reasonable probability of serious adverse health consequences or death (most serious)"},{"value":"Class II","label":"Class II — temporary/medically reversible adverse health consequences"},{"value":"Class III","label":"Class III — unlikely to cause adverse health consequences (least serious)"}],"example":"Class I","aliases":["recall_class"]},{"name":"days","type":"integer","required":false,"description":"`latest` window: recalls reported in the last N days (default 90).","on_invalid":"ignore","default":90,"example":90,"minimum":1,"maximum":3650},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["maxResults","max_results","count_limit"]},{"name":"skip","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_skip. openFDA ceiling: skip+limit <= 25000.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":25000,"aliases":["offset"]},{"name":"include_severity","type":"boolean","required":false,"description":"Include the 0-100 severity_score on each recall (default true).","on_invalid":"ignore","default":true,"example":true,"aliases":["includeIntelligenceScore","include_score"]}],"returns":"recalls[] (newest first), window_days, categories_searched[], total, has_more","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"days":120,"limit":3}},{"name":"batch","description":"Run multiple keyword searches in one call (compliance-watch over a product list).","required_params":["queries"],"optional_params":["category","classification","limit"],"params":[{"name":"queries","type":"array","required":true,"description":"Up to 20 keyword queries; each is searched and returned with its own results. A JSON array or a comma/newline-separated string.","on_invalid":"reject","example":["listeria","salmonella","undeclared allergen"],"aliases":["items","q_list"]},{"name":"category","type":"enum","required":false,"description":"FDA recall category. food / drug / device, or 'all' to search every category at once. (CPSC consumer-product & NHTSA vehicle recalls are out of scope — see docs; vehicle recalls live in the `vehicle` API.)","on_invalid":"reject","allowed_values":[{"value":"food","label":"Food & cosmetics recalls (FDA RES)"},{"value":"drug","label":"Human & animal drug recalls (FDA RES)"},{"value":"device","label":"Medical device recalls (FDA RES)"},{"value":"all","label":"All three FDA categories (fan-out)"}],"default":"all","example":"food","aliases":["product_type","productType"]},{"name":"classification","type":"enum","required":false,"description":"FDA hazard classification. Case-insensitive. Filters to recalls of that seriousness tier.","on_invalid":"reject","allowed_values":[{"value":"Class I","label":"Class I — reasonable probability of serious adverse health consequences or death (most serious)"},{"value":"Class II","label":"Class II — temporary/medically reversible adverse health consequences"},{"value":"Class III","label":"Class III — unlikely to cause adverse health consequences (least serious)"}],"example":"Class I","aliases":["recall_class"]},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["maxResults","max_results","count_limit"]}],"returns":"results[] — one {query, count, recalls[]} block per query","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"queries":["listeria","salmonella"],"category":"food","limit":2}},{"name":"stats","description":"Aggregate recall counts grouped by a field (classification/status/firm/state/type).","required_params":[],"optional_params":["category","field","query","date_from","date_to"],"params":[{"name":"category","type":"enum","required":false,"description":"FDA recall category. food / drug / device, or 'all' to search every category at once. (CPSC consumer-product & NHTSA vehicle recalls are out of scope — see docs; vehicle recalls live in the `vehicle` API.)","on_invalid":"reject","allowed_values":[{"value":"food","label":"Food & cosmetics recalls (FDA RES)"},{"value":"drug","label":"Human & animal drug recalls (FDA RES)"},{"value":"device","label":"Medical device recalls (FDA RES)"},{"value":"all","label":"All three FDA categories (fan-out)"}],"default":"all","example":"food","aliases":["product_type","productType"]},{"name":"field","type":"enum","required":false,"description":"Aggregate recall counts grouped by this field (openFDA count). Returns term→count buckets.","on_invalid":"reject","allowed_values":[{"value":"classification","label":"Count by hazard class (I/II/III)"},{"value":"status","label":"Count by lifecycle status"},{"value":"recalling_firm","label":"Top recalling firms"},{"value":"state","label":"Count by US state"},{"value":"product_type","label":"Count by product type"}],"default":"classification","example":"classification"},{"name":"query","type":"string","required":false,"description":"Free-text product/keyword search over the recall's product description and reason . e.g. 'peanut butter', 'listeria', 'airbag'. Combine with category/classification/date.","on_invalid":"reject","example":"peanut butter","aliases":["q","keyword","keywords","product"]},{"name":"date_from","type":"string","required":false,"description":"Filter by recall report_date from (on or after). ISO YYYY-MM-DD (or YYYYMMDD). Pair date_from + date_to for a range.","on_invalid":"ignore","example":"2025-01-01","aliases":["dateFrom","report_date_from","dateFrom"]},{"name":"date_to","type":"string","required":false,"description":"Filter by recall report_date to (on or before). ISO YYYY-MM-DD (or YYYYMMDD). Pair date_from + date_to for a range.","on_invalid":"ignore","example":"2026-06-01","aliases":["dateTo","report_date_to","dateTo"]}],"returns":"buckets[] (term, count), field, category, total_terms","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"food","field":"classification"}},{"name":"categories","description":"The recall taxonomy: FDA categories + EU Safety Gate product-category & risk-type enums + EU country list (reference data for filters).","required_params":[],"optional_params":[],"params":[],"returns":"fda_categories[], fda_classifications[], eu_product_categories[], eu_risk_types[], eu_countries_count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"eu_recall","description":"One EU Safety Gate (RAPEX) recall/alert by notification id — product, risk, measure, traceability, reacting countries.","required_params":["id"],"optional_params":["language"],"params":[{"name":"id","type":"integer","required":true,"description":"EU Safety Gate notification id (from a safety-gate-alerts URL).","on_invalid":"reject","example":10000308,"aliases":["notification_id"]},{"name":"language","type":"string","required":false,"description":"Preferred language for the EU notification text (e.g. en, de, fr).","on_invalid":"ignore","default":"en","example":"en","aliases":["lang"]}],"returns":"recall{} — normalized EU notification (source=EU Safety Gate)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"id":10000308}},{"name":"eu_recalls","description":"Search/list EU Safety Gate alerts (the EU analogue of `search`): pages over recent weekly reports (open-data XML) and filters by query, product category, country and risk type, with skip/limit pagination. Each alert carries product, barcode, brand, risk, measures, notifying country and country of origin.","required_params":[],"optional_params":["query","category","country","risk_type","weeks","limit","skip"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text filter over the EU alert's product name/description, brand, category and risk description (case-insensitive substring).","on_invalid":"ignore","example":"toy","aliases":["q","keyword"]},{"name":"category","type":"string","required":false,"description":"EU Safety Gate product category to filter on (e.g. Toys, Motor vehicles, Electrical appliances). See the `categories` action for the full enum. Substring match.","on_invalid":"ignore","example":"Toys","aliases":["product_category"]},{"name":"country","type":"string","required":false,"description":"Filter to alerts whose notifying country OR country of origin matches (e.g. Germany, China). Substring, case-insensitive.","on_invalid":"ignore","example":"Germany"},{"name":"risk_type","type":"string","required":false,"description":"Filter by risk type / hazard (e.g. Chemical, Choking, Suffocation, Injuries, Electric shock). Substring over the alert's risk types.","on_invalid":"ignore","example":"Chemical","aliases":["risk"]},{"name":"weeks","type":"integer","required":false,"description":"How many of the most-recent weekly reports to scan (1-12; each carries ~80-100 alerts). Larger = more coverage + more upstream fetches.","on_invalid":"ignore","default":12,"example":8,"aliases":["reports"]},{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["maxResults","max_results","count_limit"]},{"name":"skip","type":"integer","required":false,"description":"Pagination offset (skip N results). Page forward with meta.next_skip. openFDA ceiling: skip+limit <= 25000.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":25000,"aliases":["offset"]}],"returns":"recalls[] (normalized EU alerts), total, reports_scanned, weeks_window, newest_report{}, filters{}, skip, limit, has_more, next_skip","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"Toys","weeks":2,"limit":3}},{"name":"eu_latest","description":"The newest EU Safety Gate weekly report fully expanded into its ~80-100 product alerts (newest-published recalls across the EU/EEA).","required_params":[],"optional_params":["limit"],"params":[{"name":"limit","type":"integer","required":false,"description":"Results per page (1-100, default 20). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["maxResults","max_results","count_limit"]}],"returns":"report{reference,week,year,publication_date}, recalls[], total_in_report","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":3}}]},{"name":"reclameaqui","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"ReclameAqui API (Brazil) — company reputation, ratings, statistics and consumer complaints from ReclameAqui","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/reclameaqui/v1","spec_available":true,"actions":[{"name":"company/search","description":"resolve a company by name/slug","required_params":[],"optional_params":["query","slug"],"params":[{"name":"query","type":"string","required":false,"description":"Company name (resolved to a slug) or, for complaints/search, the keyword to match in complaint titles/bodies.","on_invalid":"reject","example":"nubank"},{"name":"slug","type":"string","required":false,"description":"ReclameAqui company shortname/slug (e.g. 'nubank'). Provide this OR query / company_id.","on_invalid":"reject","example":"nubank"}],"returns":"companies[]{name,slug,id,reputation,...} (the resolved company)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nubank"}},{"name":"company/detail","description":"company profile + reputation index","required_params":[],"optional_params":["slug","company_id"],"params":[{"name":"slug","type":"string","required":false,"description":"ReclameAqui company shortname/slug (e.g. 'nubank'). Provide this OR query / company_id.","on_invalid":"reject","example":"nubank"},{"name":"company_id","type":"string","required":false,"description":"ReclameAqui numeric company id (from company/detail or company/search).","on_invalid":"reject","example":"62820"}],"returns":"company{} — profile + reputation index + pageviews; raw payload","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"nubank"}},{"name":"company/stats","description":"reputation metrics + main/performance problems","required_params":[],"optional_params":["slug","company_id"],"params":[{"name":"slug","type":"string","required":false,"description":"ReclameAqui company shortname/slug (e.g. 'nubank'). Provide this OR query / company_id.","on_invalid":"reject","example":"nubank"},{"name":"company_id","type":"string","required":false,"description":"ReclameAqui numeric company id (from company/detail or company/search).","on_invalid":"reject","example":"62820"}],"returns":"stats{pageviews,main_problems,performance_problems_6m}, unavailable[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{"slug":"nubank"}},{"name":"company/complaints","description":"paginated complaints for a company","required_params":["company_id"],"optional_params":["status","statuses","limit","page_size","date_from","date_to","company_slug","company_name"],"params":[{"name":"company_id","type":"string","required":true,"description":"ReclameAqui numeric company id (from company/detail or company/search).","on_invalid":"reject","example":"62820"},{"name":"status","type":"enum","required":false,"description":"Complaint status to page through (default ANSWERED). Use `statuses` to combine several.","on_invalid":"ignore","allowed_values":[{"value":"ANSWERED","label":"Answered by the company (default)"},{"value":"EVALUATED","label":"Evaluated by the consumer"},{"value":"NOT_ANSWERED","label":"Not answered"},{"value":"PROCESSING","label":"Awaiting / in progress"}],"default":"ANSWERED","example":"ANSWERED"},{"name":"statuses","type":"array","required":false,"description":"Optional list of statuses to fetch (overrides `status`).","on_invalid":"ignore","example":["ANSWERED","EVALUATED"]},{"name":"limit","type":"integer","required":false,"description":"Maximum complaints to return (public cap is 255).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":255},{"name":"page_size","type":"integer","required":false,"description":"Complaints fetched per upstream page (tuning knob).","on_invalid":"ignore","default":5,"example":5,"minimum":1,"maximum":50},{"name":"date_from","type":"string","required":false,"description":"Only include complaints on/after this date (YYYY-MM-DD).","on_invalid":"ignore","example":"2024-01-01"},{"name":"date_to","type":"string","required":false,"description":"Only include complaints on/before this date (YYYY-MM-DD).","on_invalid":"ignore","example":"2024-12-31"},{"name":"company_slug","type":"string","required":false,"description":"Company slug (used to build the complaint URL / label rows).","on_invalid":"reject","example":"nubank"},{"name":"company_name","type":"string","required":false,"description":"Optional company display name to stamp onto returned complaint rows.","on_invalid":"reject","example":"Nubank"}],"returns":"complaints[] (deduplicated, date-filtered; personal data is redacted by default), with meta.stop_reason, pages fetched and cap info","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"company_id":"88850","company_slug":"nubank","limit":10}},{"name":"complaints/search","description":"search complaints by keyword","required_params":["query"],"optional_params":["limit","page_size","date_from","date_to"],"params":[{"name":"query","type":"string","required":true,"description":"Company name (resolved to a slug) or, for complaints/search, the keyword to match in complaint titles/bodies.","on_invalid":"reject","example":"banco"},{"name":"limit","type":"integer","required":false,"description":"Maximum complaints to return (public cap is 255).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":255},{"name":"page_size","type":"integer","required":false,"description":"Complaints fetched per upstream page (tuning knob).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"date_from","type":"string","required":false,"description":"Only include complaints on/after this date (YYYY-MM-DD).","on_invalid":"ignore","example":"2024-01-01"},{"name":"date_to","type":"string","required":false,"description":"Only include complaints on/before this date (YYYY-MM-DD).","on_invalid":"ignore","example":"2024-12-31"}],"returns":"query, complaints[]{title,description,date,company,...}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"query":"banco","limit":10}},{"name":"complaint/detail","description":"single complaint thread (HTML timeline)","required_params":["company_slug","complaint_url_slug"],"optional_params":[],"params":[{"name":"company_slug","type":"string","required":true,"description":"Company slug (used to build the complaint URL / label rows).","on_invalid":"reject","example":"nubank"},{"name":"complaint_url_slug","type":"string","required":true,"description":"The complaint's URL slug (the last path segment of its ReclameAqui page).","on_invalid":"reject","example":"meu-cartao-foi-bloqueado_AbCdEf"}],"returns":"detail{} — the full complaint thread (title, body, timeline, status)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"reddit","category":{"id":"social","title":"Social Media"},"title":"Reddit API — subreddit posts, comments, search, user profiles, trending & community data from reddit.com (no account required)","version":"0.4.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/reddit/v1","spec_available":true,"actions":[{"name":"subreddit_posts","description":"Posts in a subreddit, ranked by `sort`. Returns title/author/score/comment-count. Supports deep paging (`page`) and `flair` filtering.","required_params":["subreddit"],"optional_params":["sub","sort","time","limit","after","page","cursor","flair","source"],"params":[{"name":"subreddit","type":"string","required":true,"description":"Subreddit name (without 'r/').","on_invalid":"reject","example":"python","aliases":["sub"]},{"name":"sort","type":"enum","required":false,"description":"How posts are ranked.","on_invalid":"reject","allowed_values":[{"value":"hot","label":"Hot"},{"value":"new","label":"Newest"},{"value":"top","label":"Top"},{"value":"rising","label":"Rising"},{"value":"controversial","label":"Controversial"}],"default":"hot"},{"name":"time","type":"enum","required":false,"description":"Time window — applies ONLY when sort = top or controversial.","on_invalid":"reject","allowed_values":[{"value":"hour","label":"Past hour"},{"value":"day","label":"Past day"},{"value":"week","label":"Past week"},{"value":"month","label":"Past month"},{"value":"year","label":"Past year"},{"value":"all","label":"All time"}],"default":"day"},{"name":"limit","type":"integer","required":false,"description":"How many posts to return (1–100).","on_invalid":"reject","default":10,"minimum":1,"maximum":100},{"name":"flair","type":"string","required":false,"description":"Filter to one post flair, e.g. 'Discussion' (case-insensitive, live source only).","on_invalid":"ignore","example":"Discussion"},{"name":"source","type":"enum","required":false,"description":"Which Reddit data source to use — 'auto' picks the best source automatically.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto (recommended — best freshness and coverage)"},{"value":"live","label":"Live Reddit (most recent data)"},{"value":"arctic","label":"Reddit archive — great coverage for older posts"},{"value":"pullpush","label":"Deep historical archive — best for old or deleted content"}],"default":"auto"},{"name":"page","type":"integer","required":false,"description":"Deep paging: page 2 returns the NEXT batch after page 1 (server chains cursors for you, 1–20). Live source only — archive sources page via after_utc/before_utc.","on_invalid":"ignore","default":1,"minimum":1,"maximum":20},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore","aliases":["after"]}],"returns":"posts[]{title, author, author_fullname, score, num_comments, created_utc, url, id}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"subreddit":"python","limit":10}},{"name":"multi_subreddit_posts","description":"ONE merged newest-first feed across a whole watchlist of subreddits — pass up to 5000 names in a single call instead of polling each one. Built for near-real-time monitoring: posts show up seconds after they go live, `since_utc` returns only what is new since your last poll.","required_params":["subreddits"],"optional_params":["subs","subreddit","sub","sort","time","limit","since_utc","max_pages","after","cursor"],"params":[{"name":"subreddits","type":"string","required":true,"description":"Subreddit names to merge, comma-separated (no 'r/'). Up to 5000 — long lists are split across parallel fetches for you and returned as one feed.","on_invalid":"reject","example":"python,rust,golang","aliases":["subs","subreddit","sub"]},{"name":"sort","type":"enum","required":false,"description":"How posts are ranked.","on_invalid":"reject","allowed_values":[{"value":"new","label":"Newest"},{"value":"hot","label":"Hot"},{"value":"rising","label":"Rising"},{"value":"top","label":"Top"},{"value":"controversial","label":"Controversial"}],"default":"new"},{"name":"time","type":"enum","required":false,"description":"Time window — applies ONLY when sort = top or controversial.","on_invalid":"reject","allowed_values":[{"value":"hour","label":"Past hour"},{"value":"day","label":"Past day"},{"value":"week","label":"Past week"},{"value":"month","label":"Past month"},{"value":"year","label":"Past year"},{"value":"all","label":"All time"}],"default":"day"},{"name":"limit","type":"integer","required":false,"description":"How many posts to return after merging (1–500).","on_invalid":"reject","default":100,"minimum":1,"maximum":500},{"name":"since_utc","type":"integer","required":false,"description":"Polling mode: return ONLY posts created after this unix time. Pass the previous response's newest_utc to get just the new ones.","on_invalid":"ignore"},{"name":"max_pages","type":"integer","required":false,"description":"Fetch this many pages per group (1–5) — raise it when a poll interval is long enough that 100 posts may not cover it.","on_invalid":"reject","default":1,"minimum":1,"maximum":5},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore","aliases":["after"]}],"returns":"posts[]{title, author, author_fullname, subreddit, score, num_comments, created_utc, url, id}, subreddits_requested, shards, newest_utc, oldest_utc","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":5},"example_params":{"subreddits":"python,rust,golang","limit":25}},{"name":"post_comments","description":"Threaded comments for a post. Returns author/body/score per comment.","required_params":["post_id"],"optional_params":["id","url","sort","limit","depth","source"],"params":[{"name":"post_id","type":"string","required":true,"description":"Post ID or full Reddit URL.","on_invalid":"reject","example":"f08dxb","aliases":["id","url"]},{"name":"sort","type":"enum","required":false,"description":"Comment ordering.","on_invalid":"reject","allowed_values":[{"value":"top","label":"Top"},{"value":"new","label":"Newest"},{"value":"controversial","label":"Controversial"},{"value":"old","label":"Oldest"},{"value":"qa","label":"Q&A"}],"default":"top"},{"name":"limit","type":"integer","required":false,"description":"How many comments (1–500).","on_invalid":"reject","default":50,"minimum":1,"maximum":500},{"name":"depth","type":"integer","required":false,"description":"Comment-tree depth (1–50).","on_invalid":"reject","default":10,"minimum":1,"maximum":50},{"name":"source","type":"enum","required":false,"description":"Which Reddit data source to use — 'auto' picks the best source automatically.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto (recommended — best freshness and coverage)"},{"value":"live","label":"Live Reddit (most recent data)"},{"value":"arctic","label":"Reddit archive — great coverage for older posts"},{"value":"pullpush","label":"Deep historical archive — best for old or deleted content"}],"default":"auto"}],"returns":"comments[]{author, author_fullname, body, score, created_utc, depth, id, replies[]}; more_ids[] + has_more (feed more_ids into load_more_comments for the full tree)","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search","description":"Search posts, comments, or users by `q` and/or `subreddit`/`author`. Returns results[]. Comment search reads Reddit's own live comment index. Cursor pagination + `flair` filter apply on the live source.","required_params":[],"optional_params":["q","query","subreddit","sub","author","type","sort","limit","flair","after","page","cursor","after_utc","before_utc","source"],"params":[{"name":"q","type":"string","required":false,"description":"Search text. Provide `q` and/or `subreddit`/`author`.","on_invalid":"reject","example":"async","aliases":["query"]},{"name":"subreddit","type":"string","required":false,"description":"Limit the search to one subreddit (optional).","on_invalid":"reject","example":"python","aliases":["sub"]},{"name":"author","type":"string","required":false,"description":"Limit to one author's content (optional).","on_invalid":"reject","example":"spez"},{"name":"type","type":"enum","required":false,"description":"What to search for.","on_invalid":"reject","allowed_values":[{"value":"post","label":"Posts"},{"value":"comment","label":"Comments"},{"value":"user","label":"People / usernames (live source)"}],"default":"post"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"new","label":"Newest"},{"value":"top","label":"Top"},{"value":"comments","label":"Most comments"}],"default":"relevance"},{"name":"limit","type":"integer","required":false,"description":"How many results (1–100).","on_invalid":"reject","default":10,"minimum":1,"maximum":100},{"name":"after_utc","type":"integer","required":false,"description":"Only results AFTER this unix time (optional).","on_invalid":"ignore"},{"name":"before_utc","type":"integer","required":false,"description":"Only results BEFORE this unix time (optional).","on_invalid":"ignore"},{"name":"flair","type":"string","required":false,"description":"Filter to one post flair, e.g. 'Discussion' (case-insensitive, live source only).","on_invalid":"ignore","example":"Discussion"},{"name":"source","type":"enum","required":false,"description":"Which Reddit data source to use — 'auto' picks the best source automatically.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto (recommended — best freshness and coverage)"},{"value":"live","label":"Live Reddit (most recent data)"},{"value":"arctic","label":"Reddit archive — great coverage for older posts"},{"value":"pullpush","label":"Deep historical archive — best for old or deleted content"}],"default":"auto"},{"name":"page","type":"integer","required":false,"description":"Deep paging: page 2 returns the NEXT batch after page 1 (server chains cursors for you, 1–20). Live source only — archive sources page via after_utc/before_utc.","on_invalid":"ignore","default":1,"minimum":1,"maximum":20},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore","aliases":["after"]}],"returns":"results[]{title, author, author_fullname, subreddit, score, created_utc, url, id}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"subreddit":"python","limit":10}},{"name":"user","description":"User profile or content. kind=about returns karma/profile; submitted/comments list items (with deep paging).","required_params":["username"],"optional_params":["user","name","kind","limit","after","page","cursor","sort","source"],"params":[{"name":"username","type":"string","required":true,"description":"Reddit username (without 'u/').","on_invalid":"reject","example":"spez","aliases":["user","name"]},{"name":"kind","type":"enum","required":false,"description":"What to return.","on_invalid":"reject","allowed_values":[{"value":"about","label":"Profile / karma"},{"value":"submitted","label":"Their posts"},{"value":"comments","label":"Their comments"}],"default":"about"},{"name":"limit","type":"integer","required":false,"description":"How many items (for submitted/comments, 1–100).","on_invalid":"reject","default":25,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Ordering (for submitted/comments).","on_invalid":"reject","allowed_values":[{"value":"new","label":"Newest"},{"value":"top","label":"Top"},{"value":"hot","label":"Hot"}],"default":"new"},{"name":"source","type":"enum","required":false,"description":"Which Reddit data source to use — 'auto' picks the best source automatically.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto (recommended — best freshness and coverage)"},{"value":"live","label":"Live Reddit (most recent data)"},{"value":"arctic","label":"Reddit archive — great coverage for older posts"},{"value":"pullpush","label":"Deep historical archive — best for old or deleted content"}],"default":"auto"},{"name":"page","type":"integer","required":false,"description":"Deep paging: page 2 returns the NEXT batch after page 1 (server chains cursors for you, 1–20). Live source only — archive sources page via after_utc/before_utc.","on_invalid":"ignore","default":1,"minimum":1,"maximum":20},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore","aliases":["after"]}],"returns":"user{...} or items[] (depends on kind)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"spez","kind":"about"}},{"name":"subreddit_about","description":"Subreddit metadata: subscribers, description, created date, etc.","required_params":["subreddit"],"optional_params":["sub","source"],"params":[{"name":"subreddit","type":"string","required":true,"description":"Subreddit name (without 'r/').","on_invalid":"reject","example":"python","aliases":["sub"]},{"name":"source","type":"enum","required":false,"description":"Which Reddit data source to use — 'auto' picks the best source automatically.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto (recommended — best freshness and coverage)"},{"value":"live","label":"Live Reddit (most recent data)"},{"value":"arctic","label":"Reddit archive — great coverage for older posts"},{"value":"pullpush","label":"Deep historical archive — best for old or deleted content"}],"default":"auto"}],"returns":"subreddit{subscribers, title, public_description, created_utc, over18}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"subreddit":"python"}},{"name":"communities","description":"Search subreddits by name/keyword — find communities matching a term, with each one's subscribers, title, description and over-18 flag.","required_params":["q"],"optional_params":["limit"],"params":[{"name":"q","type":"string","required":true,"description":"Name or keyword to search subreddits for.","on_invalid":"reject","example":"python","aliases":["query","subreddit","sub"]},{"name":"limit","type":"integer","required":false,"description":"Max communities to return (1–100).","on_invalid":"ignore","default":25,"minimum":1,"maximum":100}],"returns":"communities[]{name, title, subscribers, public_description, over18, created_utc}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"python"}},{"name":"trending","description":"Site-wide discovery — hot/popular posts from r/popular or r/all (what's trending across Reddit right now), or the most-popular communities. No subreddit needed.","required_params":[],"optional_params":["scope","kind","sort","time","limit","flair","after","page","source"],"params":[{"name":"scope","type":"enum","required":false,"description":"Which site-wide feed.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"r/popular — curated front page"},{"value":"all","label":"r/all — everything, unfiltered"}],"default":"popular"},{"name":"kind","type":"enum","required":false,"description":"Return trending posts or the most-popular communities.","on_invalid":"reject","allowed_values":[{"value":"posts","label":"Trending posts"},{"value":"communities","label":"Most-popular subreddits"}],"default":"posts"},{"name":"sort","type":"enum","required":false,"description":"How posts are ranked.","on_invalid":"reject","allowed_values":[{"value":"hot","label":"Hot"},{"value":"new","label":"Newest"},{"value":"top","label":"Top"},{"value":"rising","label":"Rising"},{"value":"controversial","label":"Controversial"}],"default":"hot"},{"name":"time","type":"enum","required":false,"description":"Time window — applies ONLY when sort = top or controversial.","on_invalid":"reject","allowed_values":[{"value":"hour","label":"Past hour"},{"value":"day","label":"Past day"},{"value":"week","label":"Past week"},{"value":"month","label":"Past month"},{"value":"year","label":"Past year"},{"value":"all","label":"All time"}],"default":"day"},{"name":"limit","type":"integer","required":false,"description":"How many to return (1–100).","on_invalid":"reject","default":25,"minimum":1,"maximum":100},{"name":"flair","type":"string","required":false,"description":"Filter to one post flair, e.g. 'Discussion' (case-insensitive, live source only).","on_invalid":"ignore","example":"Discussion"},{"name":"page","type":"integer","required":false,"description":"Deep paging: page 2 returns the NEXT batch after page 1 (server chains cursors for you, 1–20). Live source only — archive sources page via after_utc/before_utc.","on_invalid":"ignore","default":1,"minimum":1,"maximum":20},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore","aliases":["after"]},{"name":"source","type":"enum","required":false,"description":"Which Reddit data source to use — 'auto' picks the best source automatically.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto (recommended — best freshness and coverage)"},{"value":"live","label":"Live Reddit (most recent data)"},{"value":"arctic","label":"Reddit archive — great coverage for older posts"},{"value":"pullpush","label":"Deep historical archive — best for old or deleted content"}],"default":"auto"}],"returns":"posts[]{title, author, author_fullname, subreddit, score, num_comments, ...} (kind=posts) OR communities[]{name, title, subscribers, ...} (kind=communities)","cacheable":true,"cache_ttl_seconds":180,"pricing":{"mode":"flat","credits":2},"example_params":{"scope":"popular","limit":10}},{"name":"user_search","description":"Find Reddit users by name/keyword — people search. Returns matching profiles with karma. (Same as search with type=user.)","required_params":["q"],"optional_params":["query","username","limit","after","source"],"params":[{"name":"q","type":"string","required":true,"description":"Name or keyword to search users for.","on_invalid":"reject","example":"python","aliases":["query","username"]},{"name":"limit","type":"integer","required":false,"description":"How many users to return (1–100).","on_invalid":"reject","default":25,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore","aliases":["after"]},{"name":"source","type":"enum","required":false,"description":"Which Reddit data source to use — 'auto' picks the best source automatically.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto (recommended — best freshness and coverage)"},{"value":"live","label":"Live Reddit (most recent data)"},{"value":"arctic","label":"Reddit archive — great coverage for older posts"},{"value":"pullpush","label":"Deep historical archive — best for old or deleted content"}],"default":"auto"}],"returns":"results[]{name, id, link_karma, comment_karma, total_karma, created_utc, ...}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"python","limit":10}},{"name":"load_more_comments","description":"Expand the collapsed 'more comments' nodes from a post_comments call — pass that response's more_ids to reveal the rest of the thread (build the FULL comment tree).","required_params":["post_id","more_ids"],"optional_params":["link_id","id","url","comment_ids","limit","sort","source"],"params":[{"name":"post_id","type":"string","required":true,"description":"The post these comments belong to (ID or Reddit URL).","on_invalid":"reject","example":"f08dxb","aliases":["link_id","id","url"]},{"name":"more_ids","type":"string","required":true,"description":"Comma-separated comment IDs from a post_comments response's more_ids list (or comments[].more_ids).","on_invalid":"reject","example":"fh0xhez,fgsriwh,fj9b0aj,fgyfmaj,fgss3kw","aliases":["comment_ids","children"]},{"name":"limit","type":"integer","required":false,"description":"Max collapsed IDs to expand per call (1–100; Reddit caps ~100).","on_invalid":"reject","default":100,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Comment ordering.","on_invalid":"reject","allowed_values":[{"value":"top","label":"Top"},{"value":"new","label":"Newest"},{"value":"controversial","label":"Controversial"},{"value":"old","label":"Oldest"},{"value":"qa","label":"Q&A"}],"default":"top"},{"name":"source","type":"enum","required":false,"description":"Which Reddit data source to use — 'auto' picks the best source automatically.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto (recommended — best freshness and coverage)"},{"value":"live","label":"Live Reddit (most recent data)"},{"value":"arctic","label":"Reddit archive — great coverage for older posts"},{"value":"pullpush","label":"Deep historical archive — best for old or deleted content"}],"default":"auto"}],"returns":"comments[]{author, author_fullname, body, score, depth, id, ...}, more_ids[] (further collapsed ids)","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"subreddit_extras","description":"Public subreddit extras: the community's rules and its wiki page index/content. (Moderator list is mod-only on Reddit and is not available logged-out.)","required_params":["subreddit"],"optional_params":["sub","include","wiki_page","source"],"params":[{"name":"subreddit","type":"string","required":true,"description":"Subreddit name (without 'r/').","on_invalid":"reject","example":"python","aliases":["sub"]},{"name":"include","type":"string","required":false,"description":"Which extras to return: 'rules', 'wiki', or both (comma-separated).","on_invalid":"ignore","default":"rules,wiki","example":"rules,wiki"},{"name":"wiki_page","type":"string","required":false,"description":"Fetch ONE wiki page's full content (e.g. 'index', 'faq'). Omit to list available page names.","on_invalid":"ignore","example":"index"},{"name":"source","type":"enum","required":false,"description":"Which Reddit data source to use — 'auto' picks the best source automatically.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Auto (recommended — best freshness and coverage)"},{"value":"live","label":"Live Reddit (most recent data)"},{"value":"arctic","label":"Reddit archive — great coverage for older posts"},{"value":"pullpush","label":"Deep historical archive — best for old or deleted content"}],"default":"auto"}],"returns":"rules[]{short_name, description, kind, ...}, wiki_pages[] (names) OR wiki_page{page, content_md, revision_date, ...}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"subreddit":"python"}}]},{"name":"redfin","category":{"id":"real-estate","title":"Real Estate"},"title":"Redfin API scraper — US real estate data: for-sale, recently-sold and rental listings with full filters (price, beds, baths, property type, square feet, lot size, year built, HOA, days-on-market) and sorting, complete property detail with Redfin Estimate, price & tax history, schools, photos, amenities and listing agent, comparable homes, market stats and location autocomplete","version":"1.3.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/redfin/v1","spec_available":true,"actions":[{"name":"search","description":"Search Redfin listings by location (for sale / recently sold / for rent) with structured filters: price, beds, baths, property type, square feet, lot size, year built, HOA and days-on-market, plus result sorting.","required_params":["location"],"optional_params":["url","status","sort","max_results","sold_within_days","min_price","max_price","min_beds","max_beds","min_baths","max_baths","min_sqft","max_sqft","min_lot_sqft","max_lot_sqft","min_year_built","max_year_built","max_hoa","max_days_on_market","property_types"],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — a US city, neighborhood or county ('Austin, TX', 'Brooklyn, NY'). A 'City, ST' or neighborhood is the most reliable; bare 5-digit ZIPs are best-effort (Redfin maps them through autocomplete).","on_invalid":"reject","example":"Austin, TX"},{"name":"status","type":"enum","required":false,"description":"Listing status to search (case-insensitive).","on_invalid":"ignore","allowed_values":[{"value":"for_sale","label":"For sale"},{"value":"sold","label":"Recently sold"},{"value":"for_rent","label":"For rent"}],"default":"for_sale","example":"for_sale"},{"name":"sort","type":"enum","required":false,"description":"Result ordering (default: Redfin-recommended).","on_invalid":"ignore","allowed_values":[{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"newest","label":"Newest (fewest days on market)"},{"value":"oldest","label":"Oldest (most days on market)"},{"value":"sqft_desc","label":"Largest square footage"},{"value":"sqft_asc","label":"Smallest square footage"},{"value":"beds_desc","label":"Most bedrooms"},{"value":"price_per_sqft_asc","label":"$/sqft: low to high"},{"value":"price_per_sqft_desc","label":"$/sqft: high to low"},{"value":"sold_date","label":"Most recently sold (status=sold)"}],"example":"price_asc"},{"name":"max_results","type":"integer","required":false,"description":"How many listings to return. The engine pages internally — no page/cursor needed.","on_invalid":"reject","default":100,"example":100,"minimum":1,"maximum":10000},{"name":"sold_within_days","type":"integer","required":false,"description":"For status=sold: how far back to look (30/90/180/365 typical).","on_invalid":"ignore","default":90,"example":90,"minimum":1,"maximum":1825},{"name":"min_price","type":"integer","required":false,"description":"Minimum price in USD (list price; sold price for status=sold; monthly rent for status=for_rent).","on_invalid":"reject","example":200000,"minimum":0},{"name":"max_price","type":"integer","required":false,"description":"Maximum price in USD.","on_invalid":"reject","example":600000,"minimum":0},{"name":"min_beds","type":"integer","required":false,"description":"Minimum bedrooms (3 = 3+).","on_invalid":"reject","example":3,"minimum":0,"maximum":20},{"name":"max_beds","type":"integer","required":false,"description":"Maximum bedrooms.","on_invalid":"reject","example":5,"minimum":0,"maximum":20},{"name":"min_baths","type":"number","required":false,"description":"Minimum bathrooms (2 = 2+).","on_invalid":"reject","example":2,"minimum":0,"maximum":20},{"name":"max_baths","type":"number","required":false,"description":"Maximum bathrooms.","on_invalid":"ignore","example":4,"minimum":0,"maximum":20},{"name":"min_sqft","type":"integer","required":false,"description":"Minimum living area in square feet.","on_invalid":"ignore","example":1500,"minimum":0},{"name":"max_sqft","type":"integer","required":false,"description":"Maximum living area in square feet.","on_invalid":"ignore","example":3000,"minimum":0},{"name":"min_lot_sqft","type":"integer","required":false,"description":"Minimum lot size in SQUARE FEET (43560 sqft = 1 acre).","on_invalid":"ignore","example":5000,"minimum":0,"aliases":["min_lot"]},{"name":"max_lot_sqft","type":"integer","required":false,"description":"Maximum lot size in square feet.","on_invalid":"ignore","example":43560,"minimum":0,"aliases":["max_lot"]},{"name":"min_year_built","type":"integer","required":false,"description":"Earliest year the home was built.","on_invalid":"ignore","example":2010,"minimum":1800,"maximum":2035},{"name":"max_year_built","type":"integer","required":false,"description":"Latest year the home was built.","on_invalid":"ignore","example":2024,"minimum":1800,"maximum":2035},{"name":"max_hoa","type":"integer","required":false,"description":"Maximum monthly HOA fee in USD. Homes with no HOA always pass.","on_invalid":"ignore","example":200,"minimum":0},{"name":"max_days_on_market","type":"integer","required":false,"description":"Only listings on Redfin at most this many days (7 = new this week).","on_invalid":"ignore","example":7,"minimum":0,"aliases":["days_on_max"]},{"name":"property_types","type":"array","required":false,"description":"Only these property types (Redfin type codes — pick from the list; applies to for-sale and rentals, not the sold CSV).","on_invalid":"reject","allowed_values":[{"value":1,"label":"Single Family Residential"},{"value":2,"label":"Condo/Co-op"},{"value":3,"label":"Townhouse"},{"value":4,"label":"Multi-Family (2-4 Unit)"},{"value":5,"label":"Vacant Land"},{"value":6,"label":"Other"},{"value":7,"label":"Manufactured"},{"value":8,"label":"Multi-Family (5+ Unit)"}],"example":[1,3]},{"name":"url","type":"string","required":false,"description":"Advanced: a Redfin search URL (alternative to location — the region is read from the URL).","on_invalid":"ignore","example":"https://www.redfin.com/city/30818/TX/Austin"}],"returns":"items[]{property_id, listing_id, url, address_line, city, state_code, postal_code, list_price_usd (or price_usd+sold_date for sold, rent_price for rentals), beds, baths, sqft, lot_sqft, year_built, price_per_sqft_usd, hoa_fee_monthly_usd, property_type, property_type_code, status, latitude, longitude, days_on_market, mls_id, num_photos} + region + status + filters_applied","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Austin, TX","max_results":30}},{"name":"listing_detail","description":"Everything Redfin holds on one address: the live listing when the home is on the market (status, asking price, days on market, listing agent, description, photos) plus the property record underneath it - up to 17 years of price and tax history, schools, amenities, Redfin Estimate, mortgage and parcel. The current listing is looked up from the property id automatically; pass `listing_id` as well if you already have it and want to skip that step. `meta.is_live_listing` tells you which of the two you got: false means the home is not currently listed and what you see is the property record - the last closed sale.","required_params":["property_id"],"optional_params":["listing_id","url"],"params":[{"name":"property_id","type":"string","required":true,"description":"Redfin property ID — `property_id` from a search result, or the last number in a /home/ URL.","on_invalid":"reject","example":"124719","aliases":["propertyId"]},{"name":"listing_id","type":"string","required":false,"description":"Advanced: Redfin listing ID (pairs with property_id for the exact active listing).","on_invalid":"ignore","aliases":["listingId"]},{"name":"url","type":"string","required":false,"description":"Redfin /home/ property URL (alternative to property_id).","on_invalid":"reject","example":"https://www.redfin.com/TX/Austin/123-Main-St-78745/home/124719"}],"returns":"listing{property_id (always echoed), listing_id (the live listing, when there is one), url, address_line, city, state_code, postal_code, list_price_usd, beds, baths, sqft, lot_sqft, year_built, stories, property_type, status, days_on_market, latitude, longitude, apn, price_history[]{date, price_usd, event, mls_status, source}, tax{roll_year, taxes_due_usd, tax_history[]}, schools[], amenities, agent{...}, photos[], redfin_estimate, mortgage, description} + meta.is_live_listing + meta.listing_id_source (caller | resolved | none)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{"property_id":"31287179"}},{"name":"similar","description":"Comparable/similar listings near a property, with the comp price band.","required_params":["property_id"],"optional_params":["listing_id","url"],"params":[{"name":"property_id","type":"string","required":true,"description":"Redfin property ID — `property_id` from a search result, or the last number in a /home/ URL.","on_invalid":"reject","example":"124719","aliases":["propertyId"]},{"name":"listing_id","type":"string","required":false,"description":"Advanced: Redfin listing ID (pairs with property_id for the exact active listing).","on_invalid":"ignore","aliases":["listingId"]},{"name":"url","type":"string","required":false,"description":"Redfin /home/ property URL (alternative to property_id).","on_invalid":"reject","example":"https://www.redfin.com/TX/Austin/123-Main-St-78745/home/124719"}],"returns":"items[]{property_id, address_line, list_price_usd, beds, baths, sqft, url} + count + min_price_usd + max_price_usd + avg_price_per_sqft","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":2},"example_params":{"property_id":"31287179"}},{"name":"autocomplete","description":"Resolve free text to Redfin places / agents / schools / buildings (ids + types).","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free text: a city, neighborhood, address, school or agent name.","on_invalid":"reject","example":"Seattle"}],"returns":"items[]{name, type, region_id, url} + count + query","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Seattle"}},{"name":"market_stats","description":"Derived market snapshot for an area: median list price, $/sqft, days on market, inventory, price band.","required_params":["location"],"optional_params":["url"],"params":[{"name":"location","type":"string","required":true,"description":"The market area — city, ZIP or neighborhood.","on_invalid":"reject","example":"Austin, TX"},{"name":"url","type":"string","required":false,"description":"Advanced: a Redfin search URL instead of location.","on_invalid":"ignore"}],"returns":"market{active_inventory, median_list_price_usd, median_price_per_sqft_usd, median_days_on_market, min_list_price_usd, max_list_price_usd} + region","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Austin, TX"}}]},{"name":"reed","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Reed.co.uk API — UK jobs scraper: search Reed job postings by keyword, location, salary, distance, job-type, date and remote/hybrid filters; get full job detail (title, company, salary, location, description, contract type, sector, apply link); list all jobs at a company; and browse jobs by sector — from reed.co.uk, no login or API key required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/reed/v1","spec_available":true,"actions":[{"name":"search","description":"Search Reed.co.uk job postings by keyword with optional location, distance, salary range, job-type, date-posted, remote and sort filters. Returns up to 25 jobs per page with title, company, salary, location, dates and a plain-text description.","required_params":["keywords"],"optional_params":["location","distance","job_type","full_time","part_time","graduate","agency","employer","salary_from","salary_to","date_posted","remote","visa_sponsorship","easy_apply","sort","page"],"params":[{"name":"keywords","type":"string","required":true,"description":"What job to search for — a job title, skill or keyword ('python developer', 'registered nurse', 'accountant').","on_invalid":"reject","example":"python developer","aliases":["query","q"]},{"name":"location","type":"string","required":false,"description":"UK town, city or region to search in (free text, e.g. 'London', 'Manchester', 'Birmingham'). Pair with `distance`.","on_invalid":"ignore","example":"London"},{"name":"distance","type":"integer","required":false,"description":"Search radius in miles around the location (Reed bands: 0/1/3/5/10/15/20/30/50).","on_invalid":"ignore","default":10,"example":10,"minimum":0,"maximum":50},{"name":"job_type","type":"enum","required":false,"description":"Restrict to one employment type.","on_invalid":"ignore","allowed_values":[{"value":"permanent","label":"Permanent"},{"value":"temporary","label":"Temporary"},{"value":"contract","label":"Contract"}]},{"name":"full_time","type":"boolean","required":false,"description":"Only full-time jobs.","on_invalid":"ignore"},{"name":"part_time","type":"boolean","required":false,"description":"Only part-time jobs.","on_invalid":"ignore"},{"name":"graduate","type":"boolean","required":false,"description":"Only graduate-level jobs.","on_invalid":"ignore"},{"name":"agency","type":"boolean","required":false,"description":"Only jobs posted by recruitment agencies.","on_invalid":"ignore"},{"name":"employer","type":"boolean","required":false,"description":"Only jobs posted directly by the employer (not an agency).","on_invalid":"ignore"},{"name":"salary_from","type":"integer","required":false,"description":"Minimum annual salary in GBP (Reed banded, e.g. 40000).","on_invalid":"ignore","example":40000,"minimum":0},{"name":"salary_to","type":"integer","required":false,"description":"Maximum annual salary in GBP (Reed banded, e.g. 80000).","on_invalid":"ignore","example":80000,"minimum":0},{"name":"date_posted","type":"enum","required":false,"description":"Only jobs posted within this window.","on_invalid":"ignore","allowed_values":[{"value":"anytime","label":"Anytime"},{"value":"today","label":"Today"},{"value":"lastthreedays","label":"Last three days"},{"value":"lastweek","label":"Last week"},{"value":"lasttwoweeks","label":"Last two weeks"}]},{"name":"remote","type":"enum","required":false,"description":"Filter by working arrangement.","on_invalid":"ignore","allowed_values":[{"value":"remote","label":"Remote"},{"value":"hybrid","label":"Hybrid"},{"value":"onsite","label":"On-site"}]},{"name":"visa_sponsorship","type":"boolean","required":false,"description":"Only jobs offering visa sponsorship.","on_invalid":"ignore"},{"name":"easy_apply","type":"boolean","required":false,"description":"Only Reed 'Easy Apply' jobs.","on_invalid":"ignore"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"default","label":"Best match"},{"value":"date","label":"Most recent"},{"value":"salarydesc","label":"Highest salary"},{"value":"salaryasc","label":"Lowest salary"},{"value":"distance","label":"Nearest"}],"default":"default"},{"name":"page","type":"integer","required":false,"description":"Result page (25 jobs per page). Page until meta.total_pages.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200}],"returns":"jobs[]{job_id, title, url, company, company_slug, location, county, job_type, is_full_time, is_part_time, remote_option, posted_date, expiry_date, salary_from, salary_to, salary_description, currency, sector_top, sector, is_easy_apply, is_promoted, description_text} + total + meta.pagination{page, total_pages, has_more, next_page}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"keywords":"python developer","location":"London"}},{"name":"detail","description":"Full posting for one Reed job by job_id (or a Reed job URL): title, company, salary (range + display), location breakdown (town/county/region/country/postcode/remote), full HTML + plain-text description, contract type, sector, eligibility, dates and breadcrumbs — plus related jobs.","required_params":[],"optional_params":["job_id","url","include_similar"],"params":[{"name":"job_id","type":"string","required":false,"description":"Reed job ID — the number in the job URL (reed.co.uk/jobs/<slug>/<job_id>) or `job_id` from search.","on_invalid":"reject","example":"56531217","aliases":["jobId","id"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full Reed job URL.","on_invalid":"ignore","example":"https://www.reed.co.uk/jobs/python-developer/56531217"},{"name":"include_similar","type":"boolean","required":false,"description":"Also return Reed's related/similar jobs for this posting.","on_invalid":"ignore","default":false}],"returns":"job{job_id, title, url, company, company_slug, company_profile_url, description_text, description_html, contract_type, is_full_time, is_part_time, is_agency, location, town, county, region, country, post_code, is_remote, salary_from, salary_to, salary_description, currency, sector, parent_sector, posted_date, expiry_date, breadcrumbs[]} + similar_jobs[] (with include_similar)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"job_id":"57258187"}},{"name":"company-jobs","description":"All public job postings at a specific company on Reed. Pass the company's Reed profile slug, full company URL, or its name; optionally narrow with the same keyword/location/salary/job-type/date filters as search.","required_params":["company"],"optional_params":["keywords","location","distance","job_type","salary_from","salary_to","date_posted","remote","sort","page"],"params":[{"name":"company","type":"string","required":true,"description":"The employer — its Reed company profile slug (the part of reed.co.uk/jobs/<slug>-jobs), a full Reed company URL, or the company name (resolved to a slug automatically). The `company_slug` field on any search result is a valid input.","on_invalid":"reject","example":"reed-specialist-recruitment-limited","aliases":["slug","profile"]},{"name":"keywords","type":"string","required":false,"description":"Optional: also filter the company's jobs by keyword.","on_invalid":"ignore","example":"developer","aliases":["query","q"]},{"name":"location","type":"string","required":false,"description":"UK town, city or region to search in (free text, e.g. 'London', 'Manchester', 'Birmingham'). Pair with `distance`.","on_invalid":"ignore","example":"London"},{"name":"distance","type":"integer","required":false,"description":"Search radius in miles around the location (Reed bands: 0/1/3/5/10/15/20/30/50).","on_invalid":"ignore","default":10,"example":10,"minimum":0,"maximum":50},{"name":"job_type","type":"enum","required":false,"description":"Restrict to one employment type.","on_invalid":"ignore","allowed_values":[{"value":"permanent","label":"Permanent"},{"value":"temporary","label":"Temporary"},{"value":"contract","label":"Contract"}]},{"name":"salary_from","type":"integer","required":false,"description":"Minimum annual salary in GBP (Reed banded, e.g. 40000).","on_invalid":"ignore","example":40000,"minimum":0},{"name":"salary_to","type":"integer","required":false,"description":"Maximum annual salary in GBP (Reed banded, e.g. 80000).","on_invalid":"ignore","example":80000,"minimum":0},{"name":"date_posted","type":"enum","required":false,"description":"Only jobs posted within this window.","on_invalid":"ignore","allowed_values":[{"value":"anytime","label":"Anytime"},{"value":"today","label":"Today"},{"value":"lastthreedays","label":"Last three days"},{"value":"lastweek","label":"Last week"},{"value":"lasttwoweeks","label":"Last two weeks"}]},{"name":"remote","type":"enum","required":false,"description":"Filter by working arrangement.","on_invalid":"ignore","allowed_values":[{"value":"remote","label":"Remote"},{"value":"hybrid","label":"Hybrid"},{"value":"onsite","label":"On-site"}]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"default","label":"Best match"},{"value":"date","label":"Most recent"},{"value":"salarydesc","label":"Highest salary"},{"value":"salaryasc","label":"Lowest salary"},{"value":"distance","label":"Nearest"}],"default":"default"},{"name":"page","type":"integer","required":false,"description":"Result page (25 jobs per page). Page until meta.total_pages.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200}],"returns":"jobs[]{job_id, title, url, company, company_slug, location, county, job_type, is_full_time, is_part_time, remote_option, posted_date, expiry_date, salary_from, salary_to, salary_description, currency, sector_top, sector, is_easy_apply, is_promoted, description_text} + total + meta.pagination{page, total_pages, has_more, next_page} + company","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"sector","description":"Browse Reed jobs by sector/category (e.g. 'it', 'accountancy', 'healthcare', 'engineering', 'sales', 'marketing'). Optionally scope by location and the same salary/job-type/date/remote filters as search.","required_params":["sector"],"optional_params":["location","distance","job_type","salary_from","salary_to","date_posted","remote","sort","page"],"params":[{"name":"sector","type":"string","required":true,"description":"Reed sector slug — e.g. 'it', 'accountancy', 'healthcare', 'engineering', 'sales', 'marketing', 'education', 'construction', 'hospitality', 'legal'.","on_invalid":"reject","example":"it","aliases":["category"]},{"name":"location","type":"string","required":false,"description":"UK town, city or region to search in (free text, e.g. 'London', 'Manchester', 'Birmingham'). Pair with `distance`.","on_invalid":"ignore","example":"London"},{"name":"distance","type":"integer","required":false,"description":"Search radius in miles around the location (Reed bands: 0/1/3/5/10/15/20/30/50).","on_invalid":"ignore","default":10,"example":10,"minimum":0,"maximum":50},{"name":"job_type","type":"enum","required":false,"description":"Restrict to one employment type.","on_invalid":"ignore","allowed_values":[{"value":"permanent","label":"Permanent"},{"value":"temporary","label":"Temporary"},{"value":"contract","label":"Contract"}]},{"name":"salary_from","type":"integer","required":false,"description":"Minimum annual salary in GBP (Reed banded, e.g. 40000).","on_invalid":"ignore","example":40000,"minimum":0},{"name":"salary_to","type":"integer","required":false,"description":"Maximum annual salary in GBP (Reed banded, e.g. 80000).","on_invalid":"ignore","example":80000,"minimum":0},{"name":"date_posted","type":"enum","required":false,"description":"Only jobs posted within this window.","on_invalid":"ignore","allowed_values":[{"value":"anytime","label":"Anytime"},{"value":"today","label":"Today"},{"value":"lastthreedays","label":"Last three days"},{"value":"lastweek","label":"Last week"},{"value":"lasttwoweeks","label":"Last two weeks"}]},{"name":"remote","type":"enum","required":false,"description":"Filter by working arrangement.","on_invalid":"ignore","allowed_values":[{"value":"remote","label":"Remote"},{"value":"hybrid","label":"Hybrid"},{"value":"onsite","label":"On-site"}]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"default","label":"Best match"},{"value":"date","label":"Most recent"},{"value":"salarydesc","label":"Highest salary"},{"value":"salaryasc","label":"Lowest salary"},{"value":"distance","label":"Nearest"}],"default":"default"},{"name":"page","type":"integer","required":false,"description":"Result page (25 jobs per page). Page until meta.total_pages.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200}],"returns":"jobs[]{job_id, title, url, company, company_slug, location, county, job_type, is_full_time, is_part_time, remote_option, posted_date, expiry_date, salary_from, salary_to, salary_description, currency, sector_top, sector, is_easy_apply, is_promoted, description_text} + total + meta.pagination{page, total_pages, has_more, next_page}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"sector":"it"}}]},{"name":"reverb","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Reverb API — musical instrument marketplace data scraper: guitars, synths, pedals, amps and pro audio from reverb.com with prices in USD, seller and shipping detail, model pages with the lowest new and used asking price, and filters for condition, brand, price band, year and country — no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/reverb/v1","spec_available":true,"actions":[{"name":"search","description":"Search Reverb's live marketplace. Every filter offered here was measured to change the result set: price band, condition, brand, category, the seller's country, the country an item ships to, a year range, free shipping, local pickup, preferred sellers and one shop. Rows carry the price in USD (whatever currency the seller lists in), the condition, the year, the shop, the shipping rate per region and the full description.","required_params":[],"optional_params":["query","make","product_type","category_uuid","condition","price_min","price_max","year_min","year_max","item_region","ships_to","shop_id","handmade","free_shipping","local_pickup","preferred_seller","sort","page","limit"],"params":[{"name":"query","type":"string","required":false,"description":"Free text: a model name, a brand, a serial-era nickname, anything a buyer would type. Optional — leave it out and send a filter instead to browse a whole category or shop.","on_invalid":"ignore","example":"stratocaster","aliases":["q","keyword","term"]},{"name":"make","type":"array","required":false,"description":"Brand name(s), exactly as Reverb spells them (Fender, Gibson, Squier, Boss, Roland). Several values are OR-ed: ['Fender','Gibson'] returned 117 853 guitars against 790 216 unfiltered. 🔴 Reverb matches brand FAMILIES: asking for Squier also returns rows whose own `make` field reads 'Fender' (5 of 24 on a measured page — 'Fender Squier Sonic Stratocaster'). Filter on the row's `make` yourself if you need the strict brand.","on_invalid":"ignore","example":"Fender","aliases":["brand"]},{"name":"product_type","type":"enum","required":false,"description":"Top-level department. Only ONE value is accepted — an array here is a 400 from the source. Use `category_uuid` for a sub-category such as Solid Body.","on_invalid":"reject","allowed_values":[{"value":"electric-guitars","label":"Electric Guitars"},{"value":"acoustic-guitars","label":"Acoustic Guitars"},{"value":"bass-guitars","label":"Bass Guitars"},{"value":"effects-and-pedals","label":"Effects and Pedals"},{"value":"amps","label":"Amps"},{"value":"drums-and-percussion","label":"Drums and Percussion"},{"value":"keyboards-and-synths","label":"Keyboards and Synths"},{"value":"pro-audio","label":"Pro Audio"},{"value":"folk-instruments","label":"Folk Instruments"},{"value":"orchestral-strings","label":"Orchestral Strings"},{"value":"band-and-orchestra","label":"Band and Orchestra"},{"value":"dj-and-lighting-gear","label":"DJ and Lighting Gear"},{"value":"home-audio","label":"Home Audio"},{"value":"parts","label":"Parts"},{"value":"accessories","label":"Accessories"},{"value":"software","label":"Software"}],"example":"electric-guitars"},{"name":"category_uuid","type":"string","required":false,"description":"A sub-category uuid from `categories` — e.g. Electric Guitars / Solid Body narrowed the marketplace to 148 331 listings. 🔴 The category SLUG on its own is silently ignored by the source, which is why this API takes the uuid.","on_invalid":"ignore","example":"e57deb7a-382b-4e18-a008-67d4fbcb2879","aliases":["category"]},{"name":"condition","type":"array","required":false,"description":"Condition grade(s). Several values are OR-ed. 🔴 The source silently ignores a slug it does not know, so this API validates it — and note that Brand New is `new`, not `brand-new`.","on_invalid":"reject","allowed_values":[{"value":"new","label":"Brand New — sold by an authorised dealer or the builder, in its original packaging"},{"value":"b-stock","label":"B-Stock — factory second or open box, sold by a dealer"},{"value":"mint","label":"Mint — essentially new, but opened or played"},{"value":"excellent","label":"Excellent — almost free of blemishes, played with care"},{"value":"very-good","label":"Very Good — light cosmetic wear, fully functional"},{"value":"good","label":"Good — noticeable wear, fully functional"},{"value":"fair","label":"Fair — heavy wear, works"},{"value":"poor","label":"Poor — heavy wear and at least one fault"},{"value":"non-functioning","label":"Non Functioning — for parts or repair"},{"value":"used","label":"Used — everything that is not Brand New or B-Stock"}],"example":"excellent"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in US dollars, inclusive.","on_invalid":"reject","example":1000,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in US dollars, inclusive. With price_min=1000 this narrowed 'stratocaster' from 76 993 to 8 390.","on_invalid":"reject","example":2000,"minimum":0},{"name":"year_min","type":"integer","required":false,"description":"Earliest build year the seller stated. 🔴 Only ~49 % of listings state a year, so a year filter also drops every listing with no year.","on_invalid":"reject","example":1960,"minimum":1800,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest build year. 1960-1969 left 770 stratocasters of 76 993.","on_invalid":"reject","example":1969,"minimum":1800,"maximum":2100},{"name":"item_region","type":"string","required":false,"description":"Where the ITEM is, as a two-letter country code (US, GB, DE, JP). US 56 778 vs GB 5 051 on the same search.","on_invalid":"ignore","example":"US"},{"name":"ships_to","type":"string","required":false,"description":"Only listings that ship to this two-letter country code. 🔴 Leave it out and the source answers for 'Everywhere Else', which is NOT the whole marketplace — pinning ships_to=US cut 'stratocaster' from 77 000 to 41 496. The value actually used is echoed in `ships_to` on every response.","on_invalid":"ignore","example":"US"},{"name":"shop_id","type":"integer","required":false,"description":"Only this shop's listings. The NUMERIC id — a shop slug here is silently ignored by the source and hands you the whole marketplace, so use `shop/listings` if you only have a slug.","on_invalid":"reject","example":348730},{"name":"handmade","type":"boolean","required":false,"description":"Only items the seller marked handmade (2 817 of 76 993).","on_invalid":"ignore","example":true},{"name":"free_shipping","type":"boolean","required":false,"description":"Only items that ship free to somewhere (416 of 76 993). 🔴 This is NOT the row's `free_expedited_shipping` flag, which was False on all 8 rows a measured call returned — read `has_free_shipping` and `shipping_rates` to see which region the 0.00 rate is for.","on_invalid":"ignore","example":true},{"name":"local_pickup","type":"boolean","required":false,"description":"Only items offering local pickup (26 252 of 76 993).","on_invalid":"ignore","example":true},{"name":"preferred_seller","type":"boolean","required":false,"description":"Only Reverb Preferred Sellers (48 914 of 76 993).","on_invalid":"ignore","example":true},{"name":"sort","type":"enum","required":false,"description":"Leave empty for Reverb's own relevance order. Only the three orders the source demonstrably applies are offered; it silently ignores any other value. 🔴 The price sort is monotonic in the SELLER's currency, not in the USD you are handed: on a measured `price_desc` page a JPY listing converting to $98,652 came ahead of a USD one at $100,000. Sort by `price_usd` yourself if you need exact USD order.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"newest","label":"Most recently published first"}],"example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. The source prints `total_pages: 50` on every envelope no matter how large the result is — that cap is cosmetic and this API ignores it: pages 51, 60, 100 and 200 all return real, distinct rows. Read `total_pages` from this response, which is computed from `total`.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-50. 50 is the source's own ceiling; it clamps anything larger instead of refusing it, so this API clamps it too and tells you in `limit`.","on_invalid":"ignore","default":24,"example":24,"minimum":1,"maximum":50,"aliases":["per_page"]}],"returns":"listings[]{listing_id, url, title, make, model, year, finish, condition, condition_slug, price_usd, price_display, currency, original_price_usd, price_drop_percent, listing_currency, categories[], shop_name, shop_id, shop_slug, preferred_seller, inventory, offers_enabled, auction, state, published_at, created_at, free_expedited_shipping, has_free_shipping, local_pickup, shipping_rates[]{region, amount_usd, display}, image, description}, total, page, limit, total_pages, ships_to, filters_applied","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"listing","description":"One listing in full: everything a search row carries plus the seller's city and country, the shipping rate to every region it ships to, how many people have viewed and watched it, the offer count, the return and shipping policy, whether it is sold as-is, and the model id that links it to Reverb's model page.","required_params":["listing_id"],"optional_params":[],"params":[{"name":"listing_id","type":"string","required":true,"description":"The numeric Reverb listing id (98282577), the id-slug form (98282577-fender-stratocaster-…) or a reverb.com/item/… URL. Every search row carries the id and the URL.","on_invalid":"reject","example":"98282577","aliases":["id","url","slug"]}],"returns":"listing{… every search field …, images[], location{city, region, country_code, display}, origin_country_code, handmade, sold_as_is, local_pickup_only, offer_count, views, watches, accepted_payment_methods[], return_policy, shipping_policy, model_id, live}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"shop","description":"One seller's record by slug: name, city and country, whether Reverb marks them a Preferred Seller / quick shipper / quick responder, their feedback count and rating, their shipping and payment policy, and whether the shop is on vacation.","required_params":["shop"],"optional_params":[],"params":[{"name":"shop","type":"string","required":true,"description":"The shop slug as it appears in reverb.com/shop/<slug>, or the full shop URL. Search rows carry it as `shop_slug`.","on_invalid":"reject","example":"chicago-music-exchange","aliases":["slug","shop_slug","url"]}],"returns":"shop{shop_id, slug, name, description, url, location{…}, preferred_seller, quick_shipper, quick_responder, on_vacation, feedback_count, rating_percent, website, shipping_policy, payment_policy, avatar}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"shop/listings","description":"One seller's whole inventory, paged — the same rows as `search`, plus the shop record when you addressed it by slug. This is how a dealer's catalogue is mirrored: a shop with 603 listings is 13 calls at 50 rows a page.","required_params":[],"optional_params":["shop","shop_id","query","condition","price_min","price_max","product_type","sort","page","limit"],"params":[{"name":"shop","type":"string","required":false,"description":"The shop slug. Costs one extra upstream call to resolve the slug to the numeric id the marketplace filter needs; pass `shop_id` instead to skip it.","on_invalid":"ignore","example":"chicago-music-exchange","aliases":["slug","shop_slug","url"]},{"name":"shop_id","type":"integer","required":false,"description":"The numeric shop id, from a search row or from `shop`. One of `shop` / `shop_id` is required.","on_invalid":"reject","example":348730},{"name":"query","type":"string","required":false,"description":"Optional keyword to search inside this seller's inventory.","on_invalid":"ignore","example":"stratocaster","aliases":["q"]},{"name":"condition","type":"array","required":false,"description":"Condition grade(s), same enum as search.","on_invalid":"reject","allowed_values":[{"value":"new","label":"Brand New — sold by an authorised dealer or the builder, in its original packaging"},{"value":"b-stock","label":"B-Stock — factory second or open box, sold by a dealer"},{"value":"mint","label":"Mint — essentially new, but opened or played"},{"value":"excellent","label":"Excellent — almost free of blemishes, played with care"},{"value":"very-good","label":"Very Good — light cosmetic wear, fully functional"},{"value":"good","label":"Good — noticeable wear, fully functional"},{"value":"fair","label":"Fair — heavy wear, works"},{"value":"poor","label":"Poor — heavy wear and at least one fault"},{"value":"non-functioning","label":"Non Functioning — for parts or repair"},{"value":"used","label":"Used — everything that is not Brand New or B-Stock"}],"example":"used"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in US dollars.","on_invalid":"reject","example":500,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in US dollars.","on_invalid":"reject","example":5000,"minimum":0},{"name":"product_type","type":"string","required":false,"description":"Department slug, same values as search.","on_invalid":"ignore","example":"electric-guitars"},{"name":"sort","type":"enum","required":false,"description":"Same three orders as search.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"newest","label":"Most recently published first"}],"example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. The source prints `total_pages: 50` on every envelope no matter how large the result is — that cap is cosmetic and this API ignores it: pages 51, 60, 100 and 200 all return real, distinct rows. Read `total_pages` from this response, which is computed from `total`.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-50. 50 is the source's own ceiling; it clamps anything larger instead of refusing it, so this API clamps it too and tells you in `limit`.","on_invalid":"ignore","default":24,"example":24,"minimum":1,"maximum":50,"aliases":["per_page"]}],"returns":"listings[] (same shape as search), shop{…} (only when addressed by slug), shop_id, total, page, limit, total_pages","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":{}},{"name":"models","description":"Reverb's MODEL pages — one row per instrument model rather than per listing, each with the lowest live asking price for a NEW one, the lowest for a USED one, and how many of each are for sale. This is the closest thing Reverb publishes to a price guide, and it is a snapshot of asks, not of completed sales. 78 791 models are browsable with no keyword at all.","required_params":[],"optional_params":["query","make","product_type","category_uuid","year_min","year_max","page","limit"],"params":[{"name":"query","type":"string","required":false,"description":"A model or family name. Omit it to walk the whole model catalogue.","on_invalid":"ignore","example":"les paul","aliases":["q","keyword"]},{"name":"make","type":"array","required":false,"description":"Brand name(s). 'les paul' 1 387 models → 799 for Gibson.","on_invalid":"ignore","example":"Gibson","aliases":["brand"]},{"name":"product_type","type":"string","required":false,"description":"Department slug, same values as search (935 of the 1 387).","on_invalid":"ignore","example":"electric-guitars"},{"name":"category_uuid","type":"string","required":false,"description":"Sub-category uuid from `categories` (919 of the 1 387).","on_invalid":"ignore","example":"e57deb7a-382b-4e18-a008-67d4fbcb2879","aliases":["category"]},{"name":"year_min","type":"integer","required":false,"description":"Earliest model year.","on_invalid":"reject","example":2000,"minimum":1800,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest model year.","on_invalid":"reject","example":2024,"minimum":1800,"maximum":2100},{"name":"page","type":"integer","required":false,"description":"1-based page number. The source prints `total_pages: 50` on every envelope no matter how large the result is — that cap is cosmetic and this API ignores it: pages 51, 60, 100 and 200 all return real, distinct rows. Read `total_pages` from this response, which is computed from `total`.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-50. 50 is the source's own ceiling; it clamps anything larger instead of refusing it, so this API clamps it too and tells you in `limit`.","on_invalid":"ignore","default":24,"example":24,"minimum":1,"maximum":50,"aliases":["per_page"]}],"returns":"models[]{model_id, slug, url, title, brand, summary, new_low_price_usd, new_low_price_display, new_listings, used_low_price_usd, used_low_price_display, used_listings, category_slug, category_uuid, image}, total, page, limit, total_pages","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"model/detail","description":"One model page by numeric id: the lowest new and used asking price, the live count of each, Reverb's own star rating and review count for the model, the description and the image.","required_params":["model_id"],"optional_params":[],"params":[{"name":"model_id","type":"string","required":true,"description":"The numeric model id, from a `models` row (`model_id`) or from a listing's `model_id`. 🔴 The model's slug does NOT work as an id — the source answers 404 for it. Use `models` to look one up by name.","on_invalid":"reject","example":"126164","aliases":["id","csp_id","url"]}],"returns":"model{model_id, slug, url, title, brand, summary, new_low_price_usd, new_listings, used_low_price_usd, used_listings, rating, review_count, category_slug, category_uuid, image}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"model/listings","description":"Every live listing OF one model, not merely matching its name — Reverb keeps a list of the exact product variants behind each model page and this action uses it, so a search for 'Fender American Professional II Stratocaster' that would return 76 000 loose matches returns the 574 that really are one. Two upstream calls: the model page, then its listings.","required_params":["model_id"],"optional_params":["condition","price_min","price_max","sort","page","limit"],"params":[{"name":"model_id","type":"string","required":true,"description":"The numeric model id, from a `models` row (`model_id`) or from a listing's `model_id`. 🔴 The model's slug does NOT work as an id — the source answers 404 for it. Use `models` to look one up by name.","on_invalid":"reject","example":"126164","aliases":["id","csp_id","url"]},{"name":"condition","type":"array","required":false,"description":"Condition grade(s) — this is how you read only the used market for one model.","on_invalid":"reject","allowed_values":[{"value":"new","label":"Brand New — sold by an authorised dealer or the builder, in its original packaging"},{"value":"b-stock","label":"B-Stock — factory second or open box, sold by a dealer"},{"value":"mint","label":"Mint — essentially new, but opened or played"},{"value":"excellent","label":"Excellent — almost free of blemishes, played with care"},{"value":"very-good","label":"Very Good — light cosmetic wear, fully functional"},{"value":"good","label":"Good — noticeable wear, fully functional"},{"value":"fair","label":"Fair — heavy wear, works"},{"value":"poor","label":"Poor — heavy wear and at least one fault"},{"value":"non-functioning","label":"Non Functioning — for parts or repair"},{"value":"used","label":"Used — everything that is not Brand New or B-Stock"}],"example":"used"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in US dollars.","on_invalid":"reject","example":800,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in US dollars.","on_invalid":"reject","example":3000,"minimum":0},{"name":"sort","type":"enum","required":false,"description":"Same three orders as search.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"newest","label":"Most recently published first"}],"example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. The source prints `total_pages: 50` on every envelope no matter how large the result is — that cap is cosmetic and this API ignores it: pages 51, 60, 100 and 200 all return real, distinct rows. Read `total_pages` from this response, which is computed from `total`.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page, 1-50. 50 is the source's own ceiling; it clamps anything larger instead of refusing it, so this API clamps it too and tells you in `limit`.","on_invalid":"ignore","default":24,"example":24,"minimum":1,"maximum":50,"aliases":["per_page"]}],"returns":"listings[] (same shape as search), model{model_id, title, brand, new_low_price_usd, used_low_price_usd}, total, page, limit, total_pages","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"categories","description":"Reverb's whole category tree, flattened: 320 categories with the uuid that `search` and `models` take as `category_uuid`, the department slug that `product_type` takes, and the human name. One call, and it barely changes.","required_params":[],"optional_params":["product_type","query"],"params":[{"name":"product_type","type":"string","required":false,"description":"Only the sub-categories of this department.","on_invalid":"ignore","example":"electric-guitars","aliases":["root"]},{"name":"query","type":"string","required":false,"description":"Only categories whose name contains this text.","on_invalid":"ignore","example":"pedal","aliases":["q"]}],"returns":"categories[]{category_uuid, name, full_name, slug, product_type, root_uuid, listable}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"conditions","description":"The condition grades Reverb uses, with the slug each filter takes and Reverb's own definition of the grade. 🔴 Note that Brand New's slug is `new`, not `brand-new`.","required_params":[],"optional_params":[],"params":[],"returns":"conditions[]{slug, name, description, filterable}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"brand","description":"One brand record by slug: its Reverb id, its canonical name — which is the spelling the `make` filter wants — and its header images. There is no brand INDEX to walk: the source's `/brands` route answers with an empty list whatever you ask it.","required_params":["brand"],"optional_params":[],"params":[{"name":"brand","type":"string","required":true,"description":"The brand slug as it appears in reverb.com/brand/<slug> — lowercase, hyphenated ('fender', 'gibson', 'electro-harmonix').","on_invalid":"reject","example":"fender","aliases":["slug","make","url"]}],"returns":"brand{brand_id, name, slug, url, image}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"ricardo","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Ricardo API scraper - Switzerland's #1 marketplace (ricardo.ch): auction and fixed-price article search with the current asking price, buy-now price, bid count, condition, shipping and pickup, seller and promoted flags; the live bid ladder and full bid history for any article; the seller's listings; the category tree; and keyword suggestions. Swiss francs, de/fr/it. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/ricardo/v1","spec_available":true,"actions":[{"name":"search","description":"Search ricardo.ch by keyword and/or category: article id, title, image, condition, the current asking price (next bid) and buy-now price in CHF, bid count, closing time, shipping cost and pickup location, seller id and promoted/highlight flags. Filter by offer type (auction / buy-now), condition, shipping or pickup, price range, location (zip + radius), seller type and 'has bids'; sort by relevance, ending soon, newest, price or bids. Promoted 'Top-Angebot' rows are dropped and counted; a misspelling returns its matches plus the site's spelling suggestion.","required_params":[],"optional_params":["query","category","offer_type","condition","shipping","seller_type","price_min","price_max","zip_code","radius","with_bids_only","sort","page","include_sponsored","language","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword as typed into ricardo's search box (de/fr/it).","on_invalid":"reject","example":"velo","aliases":["q","keyword"]},{"name":"category","type":"string","required":false,"description":"A ricardo category: its slug (velos-82249), a /c/<slug>/ URL, or a numeric id (resolved to the slug for `language`). `categories` and search rows list them. Combine with query to search within a category.","on_invalid":"reject","example":"velos-82249","aliases":["category_slug","category_id"]},{"name":"offer_type","type":"enum","required":false,"description":"auction, fixed_price or auction_with_buynow.","on_invalid":"reject","allowed_values":[{"value":"auction","label":"auction"},{"value":"fixed_price","label":"fixed_price"},{"value":"auction_with_buynow","label":"auction_with_buynow"}]},{"name":"condition","type":"array","required":false,"description":"One or more of new, like_new, used, defective, antique.","on_invalid":"reject","allowed_values":[{"value":"new","label":"new"},{"value":"like_new","label":"like_new"},{"value":"used","label":"used"},{"value":"defective","label":"defective"},{"value":"antique","label":"antique"}]},{"name":"shipping","type":"enum","required":false,"description":"free_shipping, paid_shipping or pickup.","on_invalid":"reject","allowed_values":[{"value":"free_shipping","label":"free_shipping"},{"value":"paid_shipping","label":"paid_shipping"},{"value":"pickup","label":"pickup"}]},{"name":"seller_type","type":"enum","required":false,"description":"private, private_commercial or dealer.","on_invalid":"reject","allowed_values":[{"value":"private","label":"private"},{"value":"dealer","label":"dealer"}]},{"name":"price_min","type":"number","required":false,"description":"Lowest item price in CHF (bid or buy-now).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest item price in CHF.","on_invalid":"reject","example":500,"minimum":0},{"name":"zip_code","type":"string","required":false,"description":"Swiss postcode to search around (with radius).","on_invalid":"reject","example":"8001"},{"name":"radius","type":"integer","required":false,"description":"Kilometres around zip_code.","on_invalid":"reject","minimum":0,"maximum":200,"aliases":["range"]},{"name":"with_bids_only","type":"boolean","required":false,"description":"Only auctions that already have at least one bid.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"Order. Only orderings measured to change the results are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"ricardo's own relevance (default)"},{"value":"ending_soon","label":"Closing soonest first"},{"value":"newest","label":"Most recently listed first"},{"value":"price_asc","label":"Cheapest item price first"},{"value":"price_desc","label":"Most expensive item price first"},{"value":"most_bids","label":"Most bids first"},{"value":"total_price_asc","label":"Cheapest incl. shipping first"},{"value":"total_price_desc","label":"Most expensive incl. shipping first"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based (60 articles per page). A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"include_sponsored","type":"boolean","required":false,"description":"ricardo promotes 'Top-Angebot' articles at the top, ignoring the sort. They are dropped by default and counted in sponsored_dropped; true returns them with is_promoted: true. count is the organic rows.","on_invalid":"reject","default":false},{"name":"language","type":"enum","required":false,"description":"Site language for titles and category slugs: de, fr or it (ricardo.ch is Swiss).","on_invalid":"reject","allowed_values":[{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"}],"default":"de","example":"de","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Cloudflare challenges (1-6).","on_invalid":"ignore","default":5,"minimum":1,"maximum":8}],"returns":"articles[]{article_id, title, url, image, thumbnail, category_id, condition (new|like_new|used|defective|antique), currency (CHF), offer_type (auction|fixed_price|auction_with_buynow), is_auction, is_buy_now, next_bid_price (the current ASKING price / next bid, CHF; NOT the current highest bid), current_bid (null on rows - use article/bids), bids_count, has_bids, buy_now_price, can_make_offer, money_guard, start_date, end_date, created_date, seller_id, brand, size, product_type, co2_savings, shipping[]{method (pickup|shipping|freight), cost, currency, zip_code, city}, pickup_location{zip_code, city}, is_promoted, promo_tier, highlight}, count, total_results, sponsored_dropped, spellcheck{from,to,corrected_total}, page, page_size, has_more","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"velo"}},{"name":"seller/articles","description":"Every live article a ricardo seller currently has listed, by seller nickname - same rows as search, with the same filters and sorts. ricardo does not publish a browser-free seller rating/score.","required_params":["seller"],"optional_params":["offer_type","condition","shipping","price_min","price_max","sort","page","include_sponsored","language","max_rotations"],"params":[{"name":"seller","type":"string","required":true,"description":"The seller's ricardo nickname (a search/bids row's seller nickname).","on_invalid":"reject","example":"JBMNT2020","aliases":["seller_nickname","nickname"]},{"name":"offer_type","type":"enum","required":false,"description":"auction, fixed_price or auction_with_buynow.","on_invalid":"reject","allowed_values":[{"value":"auction","label":"auction"},{"value":"fixed_price","label":"fixed_price"},{"value":"auction_with_buynow","label":"auction_with_buynow"}]},{"name":"condition","type":"array","required":false,"description":"One or more of new, like_new, used, defective, antique.","on_invalid":"reject","allowed_values":[{"value":"new","label":"new"},{"value":"like_new","label":"like_new"},{"value":"used","label":"used"},{"value":"defective","label":"defective"},{"value":"antique","label":"antique"}]},{"name":"shipping","type":"enum","required":false,"description":"free_shipping, paid_shipping or pickup.","on_invalid":"reject","allowed_values":[{"value":"free_shipping","label":"free_shipping"},{"value":"paid_shipping","label":"paid_shipping"},{"value":"pickup","label":"pickup"}]},{"name":"price_min","type":"number","required":false,"description":"Lowest item price in CHF (bid or buy-now).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest item price in CHF.","on_invalid":"reject","example":500,"minimum":0},{"name":"sort","type":"enum","required":false,"description":"Order. Only orderings measured to change the results are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"ricardo's own relevance (default)"},{"value":"ending_soon","label":"Closing soonest first"},{"value":"newest","label":"Most recently listed first"},{"value":"price_asc","label":"Cheapest item price first"},{"value":"price_desc","label":"Most expensive item price first"},{"value":"most_bids","label":"Most bids first"},{"value":"total_price_asc","label":"Cheapest incl. shipping first"},{"value":"total_price_desc","label":"Most expensive incl. shipping first"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based (60 articles per page). A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"include_sponsored","type":"boolean","required":false,"description":"ricardo promotes 'Top-Angebot' articles at the top, ignoring the sort. They are dropped by default and counted in sponsored_dropped; true returns them with is_promoted: true. count is the organic rows.","on_invalid":"reject","default":false},{"name":"language","type":"enum","required":false,"description":"Site language for titles and category slugs: de, fr or it (ricardo.ch is Swiss).","on_invalid":"reject","allowed_values":[{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"}],"default":"de","example":"de","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Cloudflare challenges (1-6).","on_invalid":"ignore","default":5,"minimum":1,"maximum":8}],"returns":"articles[]{article_id, title, url, image, thumbnail, category_id, condition (new|like_new|used|defective|antique), currency (CHF), offer_type (auction|fixed_price|auction_with_buynow), is_auction, is_buy_now, next_bid_price (the current ASKING price / next bid, CHF; NOT the current highest bid), current_bid (null on rows - use article/bids), bids_count, has_bids, buy_now_price, can_make_offer, money_guard, start_date, end_date, created_date, seller_id, brand, size, product_type, co2_savings, shipping[]{method (pickup|shipping|freight), cost, currency, zip_code, city}, pickup_location{zip_code, city}, is_promoted, promo_tier, highlight}, count, total_results, sponsored_dropped, spellcheck{from,to,corrected_total}, page, page_size, has_more","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"article/bids","description":"The live bid ladder and full bid history for one article: current highest bid, start price, next minimum bid, bid increment, bid count, the time left, and every bid (amount, masked bidder nick, time, winning/autobid) - all in CHF. This is ricardo's auction core; the rich static record (description, photo gallery, seller score) is not available browser-free (see the docs).","required_params":["article_id"],"optional_params":["language","max_rotations"],"params":[{"name":"article_id","type":"string","required":true,"description":"The ricardo article id (the number in an article URL), or the URL itself.","on_invalid":"reject","example":"1308678306","aliases":["id","offer_id","url"]},{"name":"language","type":"enum","required":false,"description":"Site language for titles and category slugs: de, fr or it (ricardo.ch is Swiss).","on_invalid":"reject","allowed_values":[{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"}],"default":"de","example":"de","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Cloudflare challenges (1-6).","on_invalid":"ignore","default":5,"minimum":1,"maximum":8}],"returns":"article_id, currency (CHF), current_bid (highest bid, null if none), start_price, next_minimum_bid, bid_increment, maximum_bid, bids_count, has_bids, end_date, remaining_time_seconds, is_open, bids[]{bid_id, amount, currency, time, bidder (masked), is_winning, is_autobid, transaction_method}","cacheable":true,"cache_ttl_seconds":30,"pricing":{"mode":"flat","credits":1},"example_params":{"article_id":"1308678306"}},{"name":"categories","description":"ricardo's category tree in the chosen language: id, name, slug, parent id and top-level flag. Use a slug (or id) as search's category. Filter by parent_id, or top_level for the top categories only.","required_params":[],"optional_params":["parent_id","top_level","language","max_rotations"],"params":[{"name":"parent_id","type":"integer","required":false,"description":"Only categories directly under this category id.","on_invalid":"reject","example":38399,"minimum":1},{"name":"top_level","type":"boolean","required":false,"description":"Only the ~28 top-level categories.","on_invalid":"reject","default":false},{"name":"language","type":"enum","required":false,"description":"Site language for titles and category slugs: de, fr or it (ricardo.ch is Swiss).","on_invalid":"reject","allowed_values":[{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"}],"default":"de","example":"de","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Cloudflare challenges (1-6).","on_invalid":"ignore","default":5,"minimum":1,"maximum":8}],"returns":"categories[]{category_id, name, display_name, slug, parent_id, is_top_level}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"top_level":true}},{"name":"suggest","description":"ricardo's own keyword suggestions for the start of a search term, each with the category it points to when ricardo attaches one.","required_params":["query"],"optional_params":["language","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The start of a keyword.","on_invalid":"reject","example":"velo","aliases":["q","keyword"]},{"name":"language","type":"enum","required":false,"description":"Site language for titles and category slugs: de, fr or it (ricardo.ch is Swiss).","on_invalid":"reject","allowed_values":[{"value":"de","label":"German"},{"value":"fr","label":"French"},{"value":"it","label":"Italian"}],"default":"de","example":"de","aliases":["lang","locale"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many fresh exits to try when Cloudflare challenges (1-6).","on_invalid":"ignore","default":5,"minimum":1,"maximum":8}],"returns":"suggestions[]{label, type, category_id, category_name, category_slug}, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"velo"}}]},{"name":"rightmove","category":{"id":"real-estate","title":"Real Estate"},"title":"Rightmove API scraper — UK property data: for-sale, to-rent, commercial and student listings with full filters (price, beds, baths, property type, size, radius, added-within, sort, furnishing), complete property detail (price, EPC, floorplans, key features, nearest stations, agent), estate-agent branch profiles, Land-Registry sold prices and location autocomplete — no API key required","version":"1.2.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/rightmove/v1","spec_available":true,"actions":[{"name":"location_search","description":"resolve a text location to a Rightmove locationIdentifier (LOS typeahead)","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text place to resolve (town, postcode, station, region).","on_invalid":"reject","example":"London","aliases":["location"]},{"name":"limit","type":"integer","required":false,"description":"Max location matches to return.","on_invalid":"ignore","default":10,"example":10,"minimum":1}],"returns":"matches[] (location_identifier/id/type/display_name), count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"query":"London"}},{"name":"search","description":"Search UK property listings by location (for sale / to rent / commercial / student) with structured filters: price, beds, baths, property type, size, radius, added-within, sort, and (rent) furnishing & let-type. Paginate with index/max_pages.","required_params":[],"optional_params":["location","location_identifier","channel","for_rent","price_min","price_max","beds_min","beds_max","baths_min","property_type","sqft_min","sqft_max","radius","added_within_days","sort","furnished","let_type","must_have","dont_show","include_sstc","max_pages","fetch_all","index","filters"],"params":[{"name":"location","type":"string","required":false,"description":"Free-text location (auto-resolved to a Rightmove locationIdentifier). Provide this OR location_identifier.","on_invalid":"ignore","example":"London","aliases":["query"]},{"name":"location_identifier","type":"string","required":false,"description":"A Rightmove locationIdentifier from location_search (e.g. REGION^87490, OUTCODE^2522, BRANCH^45021). Provide this OR location.","on_invalid":"ignore","example":"REGION^87490","aliases":["locationIdentifier"]},{"name":"channel","type":"enum","required":false,"description":"Rightmove channel to search (default buy). Canonical values + the listed aliases are accepted; any other value is rejected with this list.","on_invalid":"reject","allowed_values":[{"value":"buy","label":"For sale"},{"value":"rent","label":"To rent"},{"value":"new_homes","label":"New homes"},{"value":"commercial_sale","label":"Commercial for sale"},{"value":"commercial_rent","label":"Commercial to rent"},{"value":"student","label":"Student accommodation"},{"value":"for_sale","label":"= buy"},{"value":"sale","label":"= buy"},{"value":"to_rent","label":"= rent"},{"value":"lettings","label":"= rent"},{"value":"commercial","label":"= commercial_sale"},{"value":"new_build","label":"= new_homes"}],"default":"buy","example":"buy"},{"name":"for_rent","type":"boolean","required":false,"description":"Shortcut: true selects the rent channel when `channel` is not set.","on_invalid":"ignore","example":false},{"name":"price_min","type":"integer","required":false,"description":"Minimum price in GBP (sale price, or monthly rent for channel=rent).","on_invalid":"ignore","example":400000,"minimum":0,"aliases":["min_price","minPrice"]},{"name":"price_max","type":"integer","required":false,"description":"Maximum price in GBP (sale price, or monthly rent for channel=rent).","on_invalid":"ignore","example":800000,"minimum":0,"aliases":["max_price","maxPrice"]},{"name":"beds_min","type":"integer","required":false,"description":"Minimum bedrooms (2 = 2+; use 0 for studios).","on_invalid":"ignore","example":2,"minimum":0,"maximum":10,"aliases":["beds","min_bedrooms","minBedrooms"]},{"name":"beds_max","type":"integer","required":false,"description":"Maximum bedrooms.","on_invalid":"ignore","example":4,"minimum":0,"maximum":10,"aliases":["max_bedrooms","maxBedrooms"]},{"name":"baths_min","type":"integer","required":false,"description":"Minimum bathrooms (2 = 2+).","on_invalid":"ignore","example":2,"minimum":0,"maximum":10,"aliases":["baths","min_bathrooms","minBathrooms"]},{"name":"property_type","type":"string","required":false,"description":"Property type — one or several comma-separated. One of: detached, semi-detached, terraced, flat, bungalow, land, park-home (e.g. 'detached,semi-detached'). 'apartment'=flat.","on_invalid":"ignore","example":"flat","aliases":["property_types","home_type","propertyTypes"]},{"name":"sqft_min","type":"integer","required":false,"description":"Minimum floor area in square FEET.","on_invalid":"ignore","example":800,"minimum":0,"aliases":["min_size","minSize"]},{"name":"sqft_max","type":"integer","required":false,"description":"Maximum floor area in square feet.","on_invalid":"ignore","example":2000,"minimum":0,"aliases":["max_size","maxSize"]},{"name":"radius","type":"number","required":false,"description":"Search radius in MILES around the location (0=this area only; 0.25/0.5/1/3/5/10/15/20/30/40).","on_invalid":"ignore","example":1.0,"minimum":0,"maximum":40,"aliases":["radius_miles"]},{"name":"added_within_days","type":"integer","required":false,"description":"Only listings added within the last N days (1=last 24h, 7=this week, 14, 30...).","on_invalid":"ignore","example":7,"minimum":1,"aliases":["max_days_since_added","maxDaysSinceAdded"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering (default = Rightmove's relevance/featured order).","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Newest listed"},{"value":"oldest","label":"Oldest listed"},{"value":"price_high","label":"Price: high to low"},{"value":"price_low","label":"Price: low to high"}],"example":"newest"},{"name":"furnished","type":"enum","required":false,"description":"RENT only: furnishing type.","on_invalid":"ignore","allowed_values":[{"value":"furnished","label":"Furnished"},{"value":"unfurnished","label":"Unfurnished"},{"value":"partFurnished","label":"Part furnished"},{"value":"furnishedOrUnfurnished","label":"Either"}],"example":"furnished","aliases":["furnish_type","furnishTypes"]},{"name":"let_type","type":"enum","required":false,"description":"RENT only: let duration.","on_invalid":"ignore","allowed_values":[{"value":"longTerm","label":"Long term let"},{"value":"shortTerm","label":"Short term let"}],"example":"longTerm","aliases":["letType"]},{"name":"must_have","type":"enum","required":false,"description":"Require a feature (one of garden/parking/newHome/retirement/auction).","on_invalid":"ignore","allowed_values":[{"value":"garden","label":"Garden"},{"value":"parking","label":"Parking"},{"value":"newHome","label":"New home"},{"value":"retirement","label":"Retirement"},{"value":"auction","label":"Auction"}],"example":"garden","aliases":["mustHave"]},{"name":"dont_show","type":"enum","required":false,"description":"Exclude a listing class (newHome/retirement/sharedOwnership/auction).","on_invalid":"ignore","allowed_values":[{"value":"newHome","label":"Hide new homes"},{"value":"retirement","label":"Hide retirement"},{"value":"sharedOwnership","label":"Hide shared ownership"},{"value":"auction","label":"Hide auctions"}],"example":"retirement","aliases":["hide","dontShow"]},{"name":"include_sstc","type":"boolean","required":false,"description":"Include Sold STC / Under Offer listings (buy channel). Default false.","on_invalid":"ignore","example":false,"aliases":["includeSSTC"]},{"name":"max_pages","type":"integer","required":false,"description":"How many 24-result pages to fetch and merge (ignored when fetch_all=true).","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"fetch_all","type":"boolean","required":false,"description":"Fetch every page up to Rightmove's ~1,000-result cap (overrides max_pages).","on_invalid":"ignore","example":false},{"name":"index","type":"integer","required":false,"description":"Starting result offset; increments by 24 per page (0, 24, 48, ...).","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"filters","type":"object","required":false,"description":"Advanced escape-hatch: extra raw Rightmove query params as a key->value map, merged AFTER (and overriding) the typed filters above. Only needed for niche params not exposed as first-class fields.","on_invalid":"ignore","example":{"maxFloorLevel":0}}],"returns":"items[] (property_id/price_amount/price_display/bedrooms/bathrooms/lat/lon/agent/...), count, channel, result_count (true market total), filters_applied, pages_fetched, stop_reason","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"London"}},{"name":"property_detail","description":"Full property record: price (+£/sqft), description, key features, tenure & lease years, living costs (council tax band, service charge, ground rent), structured features (utilities/heating/parking/garden/flood-risk), images, floorplans, EPC graphs, sizings, nearest stations, street-view coords and the listing agent.","required_params":["property_id"],"optional_params":[],"params":[{"name":"property_id","type":"string","required":true,"description":"Rightmove property id (the digits in a /properties/<id> URL or a search result's property_id).","on_invalid":"reject","example":"148711631","aliases":["id"]}],"returns":"listing{} — description, key_features[], price(+£/sqft), tenure, years_remaining_on_lease, living_costs{council_tax_band, annual_service_charge, annual_ground_rent}, features{}, images[], floorplans[], epc_graphs[], sizings[], nearest_stations[], street_view{}, shared_ownership{}, agent{}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"property_id":"148711631"}},{"name":"agent","description":"estate-agent branch profile (+ that branch's live listings via BRANCH^id)","required_params":[],"optional_params":["branch_url","branch_id","max_pages"],"params":[{"name":"branch_url","type":"string","required":false,"description":"An estate-agent branch landing-page URL (full or path). Provide this OR branch_id.","on_invalid":"ignore","example":"/estate-agents/agent/Aspire/Clapham-45021.html","aliases":["branch_profile_url"]},{"name":"branch_id","type":"integer","required":false,"description":"Rightmove branch id — lists that branch's live stock via BRANCH^id. Provide this OR branch_url.","on_invalid":"ignore","example":45021,"aliases":["id"]},{"name":"max_pages","type":"integer","required":false,"description":"How many 24-result pages to fetch and merge (ignored when fetch_all=true).","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"agent{} (branch_display_name/company_name/telephones/total_properties_for_sale/...); with branch_id also returns that branch's listings[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"branch_url":"/estate-agents/agent/Aspire/Clapham-45021.html"}},{"name":"similar","description":"listings similar to a property (same area + price/bedroom band)","required_params":["property_id"],"optional_params":[],"params":[{"name":"property_id","type":"string","required":true,"description":"Rightmove property id (the digits in a /properties/<id> URL or a search result's property_id).","on_invalid":"reject","example":"148711631","aliases":["id"]}],"returns":"items[] (comparable listings, same shape as search), count, source_property_id, similar_url","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"property_id":"148711631"}},{"name":"sold_prices","description":"sold/transaction history: by location (search) or per-property (detail_url|uuid). Land-Registry sold data with full per-address transaction history. Area mode pages with `page` (25 rows/page, different rows on every page).","required_params":[],"optional_params":["location","detail_url","uuid","page"],"params":[{"name":"location","type":"string","required":false,"description":"Area for sold-price history (postcode/outcode/town, e.g. 'SW9', 'KT2 5HF'). Provide this OR detail_url/uuid.","on_invalid":"ignore","example":"SW9","aliases":["query"]},{"name":"detail_url","type":"string","required":false,"description":"A house-prices detail URL for one property's sold history (alternative to location).","on_invalid":"ignore","example":"https://www.rightmove.co.uk/house-prices/details/e1dea6e6"},{"name":"uuid","type":"string","required":false,"description":"A house-prices detail uuid for one property's sold history (alternative to location).","on_invalid":"ignore","example":"e1dea6e6"},{"name":"page","type":"integer","required":false,"description":"1-based page of sold-price results (area mode), 25 rows per page. Each page returns different transactions. The reachable depth is capped per area (returned as `page_cap` / `max_records`, e.g. 40 pages = 1,000 rows for a busy London outcode) — that cap is usually SMALLER than `total_reported`; a page past it returns no rows and `page_clamped: true`. Narrow the area to reach more history.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"area mode: items[] (address/property_type/transactions[]/latest_price/lat/lon), count, page, page_size (25), page_cap (last reachable page for this area), max_records (page_cap x 25 — how much of the history paging can actually reach), page_clamped (true when `page` is past page_cap: no rows are returned rather than repeating the last page), total_reported (every transaction the area has, usually LARGER than max_records), pagination; per-property mode (detail_url|uuid): listing{} with full transactions[]","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"SW9"}}]},{"name":"sam-gov","category":{"id":"government","title":"Government & Tenders"},"title":"SAM.gov API — every US federal contract opportunity in clean JSON: solicitations, RFPs, sources-sought and award notices with the full solicitation text, the response deadline, the contracting office, the contracting officer's published contact details, NAICS/PSC codes and the attachment list. No api_key, no registration.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/sam-gov/v1","spec_available":true,"actions":[{"name":"search","description":"Search every US federal contract opportunity by phrase — the demand side of a $700bn/year buyer. Each hit carries the response deadline, the buying department and office, the notice type (is this a heads-up, a live RFP, or an award?) and a 250-character preview of the solicitation text. Pair with `active_only=true` for things you can still bid on, or with notice type 'a' to see who won what.","required_params":["q"],"optional_params":["phrase","active_only","notice_types","published_within_days","sort","limit","offset"],"params":[{"name":"q","type":"string","required":true,"description":"What to search for across the whole notice text (title, description and the indexed attachment text). By default this is treated as an EXACT PHRASE — the engine quotes it for you, because the raw upstream index otherwise matches single words anywhere and returns thousands of irrelevant notices (measured: 'web scraping' unquoted = 241,508 hits, quoted = 11). Set `phrase=false` for the loose all-words behaviour.","on_invalid":"ignore","example":"web scraping","aliases":["query","keyword","search","keywords"]},{"name":"phrase","type":"boolean","required":false,"description":"true (default): match `q` as an exact phrase. false: match notices containing EVERY word of `q` anywhere, in any order — far broader, and the right choice when you are casting a wide net rather than hunting one term. Whatever is actually sent upstream is echoed back as `query_sent`.","on_invalid":"ignore","default":true,"example":true,"aliases":["exact","exact_phrase"]},{"name":"active_only","type":"boolean","required":false,"description":"Only notices that are still OPEN (response deadline not passed, not archived). This filter runs upstream and bites hard — measured 485 → 2 on the same query — so use it when you want something you can still bid on, and leave it off when you are researching who bought what (award notices are inactive by definition).","on_invalid":"ignore","default":false,"example":true,"aliases":["is_active","open_only"]},{"name":"notice_types","type":"array","required":false,"description":"Restrict to these notice-type codes (comma-separated string or list). Leave empty for all types. 'r' (Sources Sought) and 'p' (Presolicitation) are where a buyer is still shopping; 'a' (Award Notice) tells you who the incumbent is and when the contract runs out.","on_invalid":"ignore","allowed_values":[{"value":"p","label":"Presolicitation — the buyer is announcing an upcoming requirement"},{"value":"k","label":"Combined Synopsis/Solicitation — announcement and solicitation in one, bid on this"},{"value":"r","label":"Sources Sought — the buyer is asking who can do this; the cheapest door for a new vendor"},{"value":"o","label":"Solicitation — the formal RFP/RFQ"},{"value":"g","label":"Sale of Surplus Property"},{"value":"s","label":"Special Notice — industry days, RFIs, Commercial Solutions Openings"},{"value":"i","label":"Intent to Bundle Requirements"},{"value":"a","label":"Award Notice — who won, for how much (tells you the incumbent and the renewal date)"},{"value":"u","label":"Justification & Approval — why a sole-source award was made"}],"example":["r","o","k"],"aliases":["notice_type","type","types"]},{"name":"published_within_days","type":"integer","required":false,"description":"Only keep notices published within the last N days. ⚠️ SAM.gov has NO working server-side date filter (every documented date parameter is silently ignored — measured), so this is applied here, after fetching. That means it narrows what you receive but does NOT reduce upstream cost, and `total_matches` still reports the unfiltered upstream count. `filtered_out` says how many rows it removed.","on_invalid":"ignore","example":90,"minimum":1,"maximum":3650,"aliases":["within_days","max_age_days","since_days"]},{"name":"sort","type":"enum","required":false,"description":"Row order. 'newest' sorts by publish date (applied locally — upstream's '-publishDate' is broken and returns 2007 notices first). 'modified' is the raw upstream order.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Newest first by PUBLISH date. Upstream cannot do this (see module docstring), so rows are ordered locally after fetching — accurate within what was fetched."},{"value":"modified","label":"Most recently MODIFIED first — the raw upstream order, and the only true server-side sort. An amended old notice outranks a fresh one."},{"value":"relevance","label":"The index's own relevance score (`_rScore`)."}],"default":"newest","example":"newest"},{"name":"limit","type":"integer","required":false,"description":"How many notices to return (1–500, default 25). The engine pages upstream 100 at a time to fill this.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":500,"aliases":["max_results","count","size"]},{"name":"offset","type":"integer","required":false,"description":"Skip this many matches before returning rows. offset + limit may not exceed 10000 — the index's own hard ceiling, which it publishes as `maxAllowedRecords`.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":9999,"aliases":["skip","from"]}],"returns":"opportunities[]{id, url, title, solicitation_number, notice_type, notice_type_code, description_preview, published_at, modified_at, response_deadline, response_timezone, is_active, is_cancelled, buyer_name, buyer{department,office,office_code,office_location,chain[]}, awardee, relevance_score, revisions}, total_matches, returned, offset, query_sent, description_truncated, filtered_out","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"web scraping","limit":5}},{"name":"opportunity","description":"One notice in full: the COMPLETE solicitation text (search only ever returns the first 250 characters), the response deadline with its timezone, the set-aside type, NAICS and PSC classification, place of performance, and the contracting officer's name, e-mail and phone as published on the notice.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"The 32-character SAM.gov notice id, as returned by `search` in `id`. A full https://sam.gov/opp/<id>/view URL also works — the id is read out of it.","on_invalid":"ignore","example":"ffabe21b876649d2a1669edb4858cd48","aliases":["notice_id","opportunity_id","url"]}],"returns":"opportunity{id, url, title, solicitation_number, notice_type_code, body, body_html, published_at, modified_at, response_deadline, response_timezone, archive_date, set_aside, naics_codes[], product_service_code, place_of_performance, contacts[]{type,name,email,phone}, is_active, is_archived, is_cancelled, revision, award}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"ffabe21b876649d2a1669edb4858cd48"}},{"name":"attachments","description":"The documents attached to a notice — the statement of work, the pricing sheet, the Q&A, the amendment. Returns each file's name, MIME type, size, posting date and a direct public download URL. The real requirement usually lives in these PDFs, not in the notice body.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"The 32-character SAM.gov notice id, as returned by `search` in `id`. A full https://sam.gov/opp/<id>/view URL also works — the id is read out of it.","on_invalid":"ignore","example":"ffabe21b876649d2a1669edb4858cd48","aliases":["notice_id","opportunity_id","url"]}],"returns":"attachments[]{id, name, kind, mime, size_bytes, posted_at, access, url}, returned","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"ffabe21b876649d2a1669edb4858cd48"}}]},{"name":"sanctions","category":{"id":"finance","title":"Finance & Data"},"title":"Sanctions Screening API — fuzzy name screening against official government watchlists (OFAC SDN, OFAC Consolidated, UK OFSI) with transliteration, alias matching and an audit trail. Screening tool, not legal advice.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/sanctions/v1","spec_available":true,"actions":[{"name":"screen","description":"Screen ONE name against the official sanctions lists → status (match | possible_match | no_match) + ranked matches with score, matched aliases, programs, DOB/place-of-birth, IDs, and the audit trail (which sources + thresholds were used). Add type/country/dob descriptors to cut false positives.","required_params":["name"],"optional_params":["type","country","dob","threshold","limit","sources"],"params":[{"name":"name","type":"string","required":true,"description":"The person/entity/vessel name to screen. Matching is fuzzy + transliteration-aware (Cyrillic/Arabic/diacritics are folded to ASCII, so Алишер/محمد/Müller match their Latin spellings) and alias-aware (every a.k.a. on a record is screened). Name-only screening is false-positive-heavy — add dob/country/type to narrow.","on_invalid":"reject","example":"Ismail Haniya","aliases":["q","query","full_name","entity_name"]},{"name":"type","type":"enum","required":false,"description":"Optional entity type. When set, ONLY same-type list records are compared (a person query never matches a vessel record) — the single biggest precision lever. Omit to screen across all types.","on_invalid":"reject","allowed_values":[{"value":"person","label":"an individual (OFAC 'Individual' / OFSI 'Individual')"},{"value":"entity","label":"an organization/company"},{"value":"vessel","label":"a ship (OFAC vessel / OFSI ship)"},{"value":"aircraft","label":"an aircraft"}],"example":"person","aliases":["entity_type","kind"]},{"name":"country","type":"string","required":false,"description":"Optional country/nationality descriptor. A match on the record's country / nationality / place-of-birth adds 'country' to matched_fields and boosts the score. A mismatch does NOT exclude (lists are sparsely populated) — it is simply not corroborated.","on_invalid":"ignore","example":"Palestinian","aliases":["country_code","nationality"]},{"name":"dob","type":"string","required":false,"description":"Optional date of birth (full date or just the year). A year match against the record's DOB(s) adds 'dob' to matched_fields and boosts the score. Persons only; ignored for entities/vessels.","on_invalid":"ignore","example":"1962","aliases":["date_of_birth","birth_year","yob"]},{"name":"threshold","type":"number","required":false,"description":"Minimum match score (0-1) to surface a candidate. Default 0.85. Lower → higher recall (more false positives); raise toward 0.95 for high-precision exact screening. Scores >= 0.95 are reported as status 'match', between threshold and that as 'possible_match'.","on_invalid":"ignore","default":0.85,"example":0.85,"minimum":0.62,"maximum":1.0},{"name":"limit","type":"integer","required":false,"description":"Max matches to return per name (1-100, default 20), highest score first.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"sources","type":"string","required":false,"description":"Optional comma-separated list of source ids to restrict screening to: ofac_sdn, ofac_consolidated, uk_ofsi. Omit to screen ALL reachable sources (recommended).","on_invalid":"ignore","example":"ofac_sdn,uk_ofsi","aliases":["source","lists"]}],"returns":"status, query, matches[]{uid, score, status, matched_name, matched_via, matched_fields[], source, source_authority, jurisdiction, list_ref, entity_type, name, aliases[], programs[], dobs[], places_of_birth[], nationalities[], countries[], ids[], vessel_info, remarks}, match_count, audit{query, threshold, type, screened_sources[]{id,authority,reachable,record_count,source_updated_at}, records_checked}, legal{disclaimer,...}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"name":"Ismail Haniya","type":"person"}},{"name":"batch","description":"Screen up to 100 names in one call (in-memory → cheap). Each item is a string or {name,type?,country?,dob?,threshold?}; per-item options override call defaults.","required_params":["names"],"optional_params":["type","country","threshold","limit","sources"],"params":[{"name":"names","type":"array","required":true,"description":"Up to 100 names to screen in one call. Each item is a string OR an object {name, type?, country?, dob?, threshold?}. Per-item options override the call-level defaults. Screening is in-memory so a batch is cheap.","on_invalid":"reject","example":["Ismail Haniya","Bank of Kunlun",{"name":"MAR AZUL","type":"vessel"}],"aliases":["queries","batch","items"]},{"name":"type","type":"enum","required":false,"description":"Optional entity type. When set, ONLY same-type list records are compared (a person query never matches a vessel record) — the single biggest precision lever. Omit to screen across all types.","on_invalid":"reject","allowed_values":[{"value":"person","label":"an individual (OFAC 'Individual' / OFSI 'Individual')"},{"value":"entity","label":"an organization/company"},{"value":"vessel","label":"a ship (OFAC vessel / OFSI ship)"},{"value":"aircraft","label":"an aircraft"}],"example":"person","aliases":["entity_type","kind"]},{"name":"country","type":"string","required":false,"description":"Optional country/nationality descriptor. A match on the record's country / nationality / place-of-birth adds 'country' to matched_fields and boosts the score. A mismatch does NOT exclude (lists are sparsely populated) — it is simply not corroborated.","on_invalid":"ignore","example":"Palestinian","aliases":["country_code","nationality"]},{"name":"threshold","type":"number","required":false,"description":"Minimum match score (0-1) to surface a candidate. Default 0.85. Lower → higher recall (more false positives); raise toward 0.95 for high-precision exact screening. Scores >= 0.95 are reported as status 'match', between threshold and that as 'possible_match'.","on_invalid":"ignore","default":0.85,"example":0.85,"minimum":0.62,"maximum":1.0},{"name":"limit","type":"integer","required":false,"description":"Max matches to return per name (1-100, default 20), highest score first.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"sources","type":"string","required":false,"description":"Optional comma-separated list of source ids to restrict screening to: ofac_sdn, ofac_consolidated, uk_ofsi. Omit to screen ALL reachable sources (recommended).","on_invalid":"ignore","example":"ofac_sdn,uk_ofsi","aliases":["source","lists"]}],"returns":"count, results[]{query, status, match_count, matches[] (same shape as screen, capped)}, summary{match, possible_match, no_match}, audit{...}, legal{...}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"names":["Ismail Haniya","Bank of Kunlun"]}},{"name":"entity","description":"Fetch ONE full normalized list record by its uid ('<source>:<list_ref>', from a screen match) — every field on the designation.","required_params":["uid"],"optional_params":[],"params":[{"name":"uid","type":"string","required":true,"description":"The match uid from a screen result ('<source>:<list_ref>', e.g. ofac_sdn:9639) → the full normalized list record.","on_invalid":"reject","example":"ofac_sdn:9639","aliases":["id","source_id"]}],"returns":"record{uid, source, source_authority, jurisdiction, list_ref, entity_type, name, aliases[], programs[], dobs[], places_of_birth[], nationalities[], countries[], ids[], addresses[], vessel_info, remarks}, legal{...}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"uid":"ofac_sdn:35096"}},{"name":"sources_status","description":"List freshness + reachability of every sanctions source (the trust signal): which lists were screened, how many records, the source's own published date, and whether the last .gov fetch succeeded.","required_params":[],"optional_params":["refresh"],"params":[{"name":"refresh","type":"boolean","required":false,"description":"Force a re-fetch of all sources before reporting (bypasses the cache; slower).","on_invalid":"ignore","default":false,"example":false}],"returns":"sources[]{id, label, host, jurisdiction, authority, license, reachable, record_count, source_updated_at, http_status, fetch_s}, total_records, index_age_seconds, reachable_count, legal{...}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"seek","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"SEEK API — Australia jobs scraper: search SEEK (seek.com.au) job postings by keyword, location, salary, work-type, date and remote/hybrid filters; get full job detail (title, company, salary, location, description, work arrangement, posted/expiry dates, apply link, employer profile); list all jobs at a company; and browse jobs by classification/category — from Australia's #1 job board, no login or API key required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/seek/v1","spec_available":true,"actions":[{"name":"search","description":"Search SEEK (seek.com.au) job postings by keyword with optional location, salary range, work-type, work-arrangement (remote/hybrid/on-site), date-posted, classification and sort filters. Returns up to 32 jobs per page with title, company, salary, location, dates and a teaser.","required_params":["keywords"],"optional_params":["location","job_type","work_arrangement","salary_from","salary_to","date_posted","classification","subclassification","sort","page"],"params":[{"name":"keywords","type":"string","required":true,"description":"What job to search for — a job title, skill or keyword ('software developer', 'registered nurse', 'accountant').","on_invalid":"reject","example":"software developer","aliases":["query","q"]},{"name":"location","type":"string","required":false,"description":"Australian/NZ location to search in — a city, suburb or city+state ('Sydney NSW', 'Melbourne VIC', 'Brisbane QLD', 'Perth WA'). Free text; the state suffix sharpens the match.","on_invalid":"ignore","example":"Sydney NSW"},{"name":"job_type","type":"enum","required":false,"description":"Restrict to one work type.","on_invalid":"ignore","allowed_values":[{"value":"full_time","label":"Full time"},{"value":"part_time","label":"Part time"},{"value":"contract","label":"Contract/Temp"},{"value":"casual","label":"Casual/Vacation"}]},{"name":"work_arrangement","type":"enum","required":false,"description":"Filter by working arrangement.","on_invalid":"ignore","allowed_values":[{"value":"onsite","label":"On-site"},{"value":"remote","label":"Remote"},{"value":"hybrid","label":"Hybrid"}],"aliases":["remote"]},{"name":"salary_from","type":"integer","required":false,"description":"Minimum annual salary in AUD (e.g. 100000).","on_invalid":"ignore","example":100000,"minimum":0},{"name":"salary_to","type":"integer","required":false,"description":"Maximum annual salary in AUD (e.g. 150000).","on_invalid":"ignore","example":150000,"minimum":0},{"name":"date_posted","type":"enum","required":false,"description":"Only jobs listed within this window.","on_invalid":"ignore","allowed_values":[{"value":"today","label":"Today"},{"value":"last3days","label":"Last 3 days"},{"value":"lastweek","label":"Last 7 days"},{"value":"lasttwoweeks","label":"Last 14 days"},{"value":"lastmonth","label":"Last 31 days"}]},{"name":"classification","type":"string","required":false,"description":"Narrow to a SEEK classification — its numeric id (e.g. 6281 = Information & Communication Technology) from a job's classifications[].classification_id.","on_invalid":"ignore","example":"6281"},{"name":"subclassification","type":"string","required":false,"description":"Narrow to a SEEK sub-classification numeric id (e.g. 6287 = Developers/Programmers).","on_invalid":"ignore","example":"6287"},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"date","label":"Most recent"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page (32 jobs per page). Page until meta.pagination.total_pages.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500}],"returns":"jobs[]{job_id, title, url, company, advertiser_id, location, locations[], salary_label, currency, work_types[], work_arrangement, classifications[], bullet_points[], teaser, posted_date, posted_relative, is_featured, logo_url, company_url, role_id} + total + meta.pagination{page, total_pages, has_more, next_page}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"keywords":"developer","location":"Sydney NSW"}},{"name":"detail","description":"Full posting for one SEEK job by job_id (or a SEEK job URL): title, company, salary, location breakdown (suburb/state/postcode/country), full HTML + plain-text description, work types, work arrangement, classifications, bullet points, posted & expiry dates, apply/share link, and the employer's company profile (industry, size, website, rating, review count).","required_params":[],"optional_params":["job_id","url"],"params":[{"name":"job_id","type":"string","required":false,"description":"SEEK job ID — the number in the job URL (seek.com.au/job/<job_id>) or `job_id` from search.","on_invalid":"reject","example":"92851167","aliases":["jobId","id"]},{"name":"url","type":"string","required":false,"description":"Alternatively a full SEEK job URL.","on_invalid":"ignore","example":"https://www.seek.com.au/job/92851167"}],"returns":"job{job_id, title, url, share_link, description_text, description_html, abstract, company, advertiser_id, advertiser_verified, company_url, salary_label, currency, location, country, state, suburb, post_code, work_types[], work_arrangements[], classifications[], bullet_points[], posted_date, expires_at, is_expired, status, logo_url, company_profile{name, industry, size, website, rating, review_count, url}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"job_id":"92851167"}},{"name":"company-jobs","description":"All public job postings at a specific company on SEEK. Pass the company's numeric advertiser id (the `advertiser_id` field on any search/detail result), its SEEK company slug, a full SEEK company URL, or its name; optionally narrow with the same keyword/location/salary/work-type/date filters as search.","required_params":["company"],"optional_params":["keywords","location","job_type","work_arrangement","salary_from","salary_to","date_posted","sort","page"],"params":[{"name":"company","type":"string","required":true,"description":"The employer — its SEEK numeric advertiser id (best; the `advertiser_id` on any search result), a SEEK company slug, a full SEEK company URL, or the company name (resolved to a slug automatically).","on_invalid":"reject","example":"2852","aliases":["advertiser_id","slug","profile"]},{"name":"keywords","type":"string","required":false,"description":"Optional: also filter the company's jobs by keyword.","on_invalid":"ignore","example":"developer","aliases":["query","q"]},{"name":"location","type":"string","required":false,"description":"Australian/NZ location to search in — a city, suburb or city+state ('Sydney NSW', 'Melbourne VIC', 'Brisbane QLD', 'Perth WA'). Free text; the state suffix sharpens the match.","on_invalid":"ignore","example":"Sydney NSW"},{"name":"job_type","type":"enum","required":false,"description":"Restrict to one work type.","on_invalid":"ignore","allowed_values":[{"value":"full_time","label":"Full time"},{"value":"part_time","label":"Part time"},{"value":"contract","label":"Contract/Temp"},{"value":"casual","label":"Casual/Vacation"}]},{"name":"work_arrangement","type":"enum","required":false,"description":"Filter by working arrangement.","on_invalid":"ignore","allowed_values":[{"value":"onsite","label":"On-site"},{"value":"remote","label":"Remote"},{"value":"hybrid","label":"Hybrid"}],"aliases":["remote"]},{"name":"salary_from","type":"integer","required":false,"description":"Minimum annual salary in AUD (e.g. 100000).","on_invalid":"ignore","example":100000,"minimum":0},{"name":"salary_to","type":"integer","required":false,"description":"Maximum annual salary in AUD (e.g. 150000).","on_invalid":"ignore","example":150000,"minimum":0},{"name":"date_posted","type":"enum","required":false,"description":"Only jobs listed within this window.","on_invalid":"ignore","allowed_values":[{"value":"today","label":"Today"},{"value":"last3days","label":"Last 3 days"},{"value":"lastweek","label":"Last 7 days"},{"value":"lasttwoweeks","label":"Last 14 days"},{"value":"lastmonth","label":"Last 31 days"}]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"date","label":"Most recent"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page (32 jobs per page). Page until meta.pagination.total_pages.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500}],"returns":"jobs[]{job_id, title, url, company, advertiser_id, location, locations[], salary_label, currency, work_types[], work_arrangement, classifications[], bullet_points[], teaser, posted_date, posted_relative, is_featured, logo_url, company_url, role_id} + total + meta.pagination{page, total_pages, has_more, next_page}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"classification","description":"Browse SEEK jobs by classification/category — either a SEEK classification numeric id (e.g. 6281 = Information & Communication Technology) or a category slug ('information-communication-technology', 'healthcare-medical', 'trades-services', 'accounting', 'sales', 'education-training'). Optionally scope by location and the same salary/work-type/date filters as search.","required_params":["classification"],"optional_params":["location","job_type","work_arrangement","salary_from","salary_to","date_posted","sort","page"],"params":[{"name":"classification","type":"string","required":true,"description":"SEEK classification — numeric id (e.g. '6281' = Information & Communication Technology, '1203' = Healthcare & Medical) or a category slug ('information-communication-technology', 'healthcare-medical', 'trades-services', 'accounting').","on_invalid":"reject","example":"6281","aliases":["category","id"]},{"name":"location","type":"string","required":false,"description":"Australian/NZ location to search in — a city, suburb or city+state ('Sydney NSW', 'Melbourne VIC', 'Brisbane QLD', 'Perth WA'). Free text; the state suffix sharpens the match.","on_invalid":"ignore","example":"Sydney NSW"},{"name":"job_type","type":"enum","required":false,"description":"Restrict to one work type.","on_invalid":"ignore","allowed_values":[{"value":"full_time","label":"Full time"},{"value":"part_time","label":"Part time"},{"value":"contract","label":"Contract/Temp"},{"value":"casual","label":"Casual/Vacation"}]},{"name":"work_arrangement","type":"enum","required":false,"description":"Filter by working arrangement.","on_invalid":"ignore","allowed_values":[{"value":"onsite","label":"On-site"},{"value":"remote","label":"Remote"},{"value":"hybrid","label":"Hybrid"}],"aliases":["remote"]},{"name":"salary_from","type":"integer","required":false,"description":"Minimum annual salary in AUD (e.g. 100000).","on_invalid":"ignore","example":100000,"minimum":0},{"name":"salary_to","type":"integer","required":false,"description":"Maximum annual salary in AUD (e.g. 150000).","on_invalid":"ignore","example":150000,"minimum":0},{"name":"date_posted","type":"enum","required":false,"description":"Only jobs listed within this window.","on_invalid":"ignore","allowed_values":[{"value":"today","label":"Today"},{"value":"last3days","label":"Last 3 days"},{"value":"lastweek","label":"Last 7 days"},{"value":"lasttwoweeks","label":"Last 14 days"},{"value":"lastmonth","label":"Last 31 days"}]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"date","label":"Most recent"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page (32 jobs per page). Page until meta.pagination.total_pages.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500}],"returns":"jobs[]{job_id, title, url, company, advertiser_id, location, locations[], salary_label, currency, work_types[], work_arrangement, classifications[], bullet_points[], teaser, posted_date, posted_relative, is_featured, logo_url, company_url, role_id} + total + meta.pagination{page, total_pages, has_more, next_page}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"classification":"6281"}}]},{"name":"sephora","category":{"id":"other","title":"Other"},"title":"Sephora API — search sephora.com for makeup, skincare, haircare, fragrance and beauty tools, and pull one product in full: the whole image gallery, every shade/size variant with its own Sephora SKU id, price and stock, the specification attributes, ingredients, brand, availability, star rating and the top customer reviews with their text inline — no API key or account required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/sephora/v1","spec_available":true,"actions":[{"name":"search","description":"Search the Sephora catalog. Give a `query` ('mascara', 'vitamin c serum', 'dior lipstick', 'rare beauty blush') and get back 60 products per page, each with Sephora's own product id and default SKU id, brand, price (both ends when Sephora quotes a range), sale flag, star rating, review count, how many shades the product has, the image set, and Sephora's own merchandising flags (bestseller, new, limited edition, Sephora exclusive, same-day/pickup eligibility). Narrow by price band, sort by rating, price or newest. The live facet vocabulary Sephora publishes for your query comes back in `facets`, and the category counts and its own related searches come with it.","required_params":["query"],"optional_params":["max_results","page","sort","price_min","price_max","brand"],"params":[{"name":"query","type":"string","required":true,"description":"What to search sephora.com for — a category ('mascara', 'vitamin c serum', 'perfume'), a brand ('rare beauty'), a brand + category ('dior lipstick') or a product name. Sephora runs this through its own NLP search, so it is forgiving of phrasing. ⚠ It is forgiving to a fault: Sephora's search NEVER returns zero — a nonsense query still comes back with ~56 loosely-matched products (measured). Read `search.keyword` and judge the rows; do not treat a non-empty response as proof the term matched.","on_invalid":"reject","example":"vitamin c serum","aliases":["q","keyword","term","text","search"]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return (1-300). Sephora paginates 60 per page; asking for more fetches the following pages automatically, up to five.","on_invalid":"ignore","default":60,"example":60,"minimum":1,"maximum":300,"aliases":["limit","max","count"]},{"name":"page","type":"integer","required":false,"description":"Which result page to start from (1-based, 60 products per page). Page until `meta.pagination.has_more` is false. Sephora repeats a small number of sponsored rows across pages; those are de-duplicated by `product_id` before you see them.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Result ordering, using Sephora's own sort tokens. Only the five listed here were MEASURED to change the ordering — Sephora's code also defines BEST_SELLING, EXCLUSIVE and BRAND_NAME, and all three return the identical default order on this endpoint, so they are deliberately not offered rather than accepted and ignored. An unknown value is rejected, not silently dropped (Sephora itself silently ignores it).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Sephora's own relevance ranking (default)"},{"value":"top_rated","label":"Highest customer rating first"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"newest","label":"Newest first"}],"example":"price_low","aliases":["order","sort_by"]},{"name":"price_min","type":"number","required":false,"description":"Only products priced at or above this, in US dollars. This is Sephora's own `pl`/`ph` filter and it is the ONE filter this endpoint applies at all. ⚠ It NARROWS hard but it is not a strict predicate: 'foundation' goes 191 → 39 with price_max=25, and 8 of those 39 are priced entirely above $25 (verified variant-by-variant — they do not have a cheaper size). Those rows are passed through rather than dropped, and `meta.filters.applied[].rows_outside_band` counts them for the call you actually made.","on_invalid":"reject","example":25,"minimum":0,"maximum":100000,"aliases":["min_price"]},{"name":"price_max","type":"number","required":false,"description":"Only products priced at or below this, in US dollars. Sephora prices a multi-shade product as a RANGE ('$16.00 - $25.00'); the filter is Sephora's own and it decides how a range is matched, not us. Same caveat as `price_min`: it narrows hard but lets some out-of-band rows through, and `meta.filters` counts them.","on_invalid":"reject","example":50,"minimum":0,"maximum":100000,"aliases":["max_price"]},{"name":"brand","type":"string","required":false,"description":"Keep only products from this brand, matched against the `brand` on each row (case-insensitive, exact then 'contains'). ⚠ HONEST NOTE: this is applied BY THIS ENGINE to the pages it fetched, not by Sephora. Sephora publishes a Brand facet on this endpoint and then ignores it — every brand value returns the identical unfiltered 191 results (measured, both bracket spellings, with and without its NLP engine). So `meta.pagination.total_results` stays Sephora's unfiltered number and `meta.filters` reports exactly what was dropped and by whom. The live brand vocabulary for your query is in `facets`.","on_invalid":"ignore","example":"Rare Beauty","aliases":["brand_name"]}],"returns":"products[]{product_id, sku_id, name, brand, url, price, price_max, price_display, sale_price, currency, in_stock (always null: Sephora search publishes no stock; use `price`), on_sale, on_sale_label, rating, review_count, variant_count, image, images[]{url, url_250, alt}, is_sponsored, is_new, is_bestseller, is_limited_edition, is_limited_time_offer, is_online_only, is_sephora_exclusive, is_app_exclusive, ships_to_home, same_day_eligible, next_day_eligible, store_pickup_eligible} + search{keyword, total_results, engine, categories[]{name, category_id, level, product_count}, related_searches[]} + facets[]{name, type, values[]{label, query_fragment, status}}. meta.pagination{page, per_page, total_results, returned, has_more, next_page}; meta.filters{applied, note}. Honest caveats, all measured: Sephora's NLP search NEVER returns zero — a nonsense query still yields ~56 loosely-related products, so judge the rows rather than the count; `price` is the LOW end when Sephora quotes a range and `price_display` is its own string verbatim; `rating`/`review_count` arrive from Sephora as strings here and as numbers on the product page and are pinned to float/int in both; `variant_count` is Sephora's `moreColors` and counts shades, which for a single-shade product is 1; search rows carry NO per-shade price, stock, ingredients or reviews — that is what `product_detail` is for; and `facets` is returned because it is real published data about your query, NOT because it filters — this endpoint ignores every facet value except the price band (proven in the BUILD-LOG), which is why `price_min`/`price_max` are the only upstream filters offered and `brand` says plainly that it is applied here rather than by Sephora. Even the price band is a narrowing filter rather than a strict predicate, so `meta.filters.applied[].rows_outside_band` reports how many rows of YOUR result set fall outside the band you asked for.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"mascara","max_results":30}},{"name":"price","description":"Re-check ONE shade's price and stock, cheaply. Give it the Sephora SKU id you already hold and it returns the current price, the regular price, whether that shade is in stock and whether Sephora is flagging it as nearly gone — and nothing else: no description, images, ingredients, shade matrix or reviews. Built for refreshing a catalogue you already have rather than discovering products. It reads Sephora's own SKU-scoped route instead of the whole product document, so it costs a fraction of `product_detail` — measured live on ten products in ten categories: 7.9-14.3 KB against 59.9-421.5 KB for a full `product_detail` (5.2x-45.9x), or 32.5-350.5 KB with its reviews switched off (2.9x-38.1x). The saving grows with the shade count, because the product document carries every sibling shade and this one carries yours. Pass a `sku_id` for that cheap route. If you hold only a `product_id` (or a product URL with no `?skuId=`), pass that instead: Sephora's primary/default shade is priced by reading the product document — honest note, that costs like `product_detail` (the whole document is read), NOT like the cheap SKU route, because Sephora prices and stocks each shade and size separately (a 49-shade foundation had 9 shades sold out while the product was on sale), so the SKU route stays the right tool whenever you can name the shade.","required_params":[],"optional_params":["sku_id","product_id","url"],"params":[{"name":"sku_id","type":"string","required":false,"description":"Sephora's own SKU id for the ONE shade or size you want re-priced — digits only, exactly as `search` and `product_detail` publish it (`2837375`). This is the CHEAPEST route: it reads Sephora's SKU-scoped document (~8-14 KB) rather than the whole product. Give it whenever you have it, because Sephora prices and stocks every shade and size separately — the same lipstick can be on sale in one shade and sold out in the next. A SKU Sephora does not have returns NOT_FOUND. Not strictly required: if you have only a `product_id` (or a product URL with no `?skuId=`), pass that instead and Sephora's primary/default shade is priced from the product document. You may also pass a sephora.com URL carrying `?skuId=…` here or in `url`.","on_invalid":"ignore","example":"2837375","aliases":["skuId","sku","variant_id"]},{"name":"product_id","type":"string","required":false,"description":"Sephora's own product id (`P477838`). It plays TWO roles. (1) On its own, with no `sku_id`, it is a LOOKUP KEY: the product's primary/default shade is priced by reading the product document — use this when you hold a product id but no sku. This costs like `product_detail` (the product document is read), not like the cheap SKU route. (2) Alongside a `sku_id` it is a SAFETY CHECK: the call fails with NOT_FOUND if Sephora files that SKU under a different product, so a drifted catalogue is caught instead of quietly writing another product's price into it.","on_invalid":"ignore","example":"P477838","aliases":["id","productId","product","pid"]},{"name":"url","type":"string","required":false,"description":"A sephora.com product URL carrying `?skuId=…` — an alternative to `sku_id`. A URL without a `skuId` cannot be priced, because it names a product rather than a purchasable shade.","on_invalid":"ignore","example":"https://www.sephora.com/product/mac-cosmetics-macximal-sleek-satin-lipstick-P513655?skuId=2837375","aliases":["product_url","link"]}],"returns":"product_id, sku_id, variant_label, variant_type, current_price, regular_price, currency, on_sale, in_stock, is_low_stock. `current_price` is what a shopper pays now and `regular_price` is the struck-through one; when Sephora prints a single price the two are equal. `in_stock` is null — NEVER false — when Sephora states nothing, because silence is not an out-of-stock claim; the same rule applies to `on_sale` and `is_low_stock`. `variant_label` is Sephora's own name for the shade or size ('Stone', '1.7oz/50ml') so you can see the answer is about the variant you meant. `regular_price_max`/`current_price_max` appear only when Sephora prints a range for that SKU. Honest caveats: (1) an unknown SKU returns NOT_FOUND — measured, Sephora's SKU route rejects a SKU it does not have rather than substituting a default shade, and the response is additionally checked against the SKU that was asked for; (2) pass `product_id` too and a SKU that has moved to a different product fails with NOT_FOUND instead of silently repricing the wrong item; (3) stock is a BOOLEAN, because Sephora publishes no unit count anywhere; (4) there is no `condition` field — Sephora is a first-party retailer of new goods with no marketplace and no used stock; (5) every value is read from the same Sephora keys `product_detail` reads for the same SKU, so the two actions agree by construction — verified live on 13 SKUs including on-sale and out-of-stock ones.","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":2},"example_params":{"sku_id":"2837375"}},{"name":"product_detail","description":"Get one Sephora product in full, by its product id (or its sephora.com URL). One call returns: the complete image gallery; the complete variant matrix — one row per shade/size with Sephora's own SKU id, that variant's price, sale price, in-stock flag, low-stock flag, swatch, image and URL; the specification set Sephora publishes (size, the structured attribute map — coverage, finish, formulation, skin type, skin concerns, ingredient preferences —, the highlight badges with their explanations, the full ingredient list and the how-to-use copy); the brand with its id and page; availability and price range; the star rating with its distribution; and the top customer reviews with their full text, titles, dates, helpfulness votes, reviewer skin-tone/skin-type/eye/age context and photos. It also returns the product's UPC/EAN barcodes, which Sephora's own product API does not publish anywhere.","required_params":["product_id"],"optional_params":["url","sku_id","include_reviews","reviews_limit","reviews_sort","reviews_offset","include_variant_images"],"params":[{"name":"product_id","type":"string","required":true,"description":"Sephora's own product id — the `P…` code at the end of every sephora.com/product/… URL and the `product_id` on every `search` row. A 'P' followed by 5-9 digits (`P427418`, and 8-digit ones like `P87985432` are real). Always a string, taken verbatim; never hashed, composed or re-derived. You may pass the full product URL in `url` instead of this.","on_invalid":"reject","example":"P427418","aliases":["id","productId","product","pid"]},{"name":"url","type":"string","required":false,"description":"A full sephora.com product URL — an alternative to `product_id`. A `?skuId=` on the URL is honoured and selects that shade as `selected_variant`.","on_invalid":"ignore","example":"https://www.sephora.com/product/the-ordinary-deciem-granactive-retinoid-2-emulsion-P427418","aliases":["product_url","link"]},{"name":"sku_id","type":"string","required":false,"description":"Which shade/size to return as `selected_variant`. Sephora's own SKU id, exactly as `search` and the variant rows publish it (digits only). Omit to get the SKU Sephora shows by default. Every variant comes back either way — this only moves the `is_selected` flag. An id that does not belong to the product fails with NOT_FOUND and lists the ones that do; it never quietly returns a different shade.","on_invalid":"ignore","example":"2837375","aliases":["skuId","sku","variant_id"]},{"name":"include_reviews","type":"boolean","required":false,"description":"Return the product's top customer reviews inline, with full text, title, star rating, date, helpfulness votes, reviewer skin-tone/skin-type/eye/age context and photo URLs — plus the rating distribution and the product's UPC/EAN codes. Costs one extra upstream call (~27 KB at the default limit). Set false to skip it.","on_invalid":"ignore","default":true,"aliases":["with_reviews","reviews"]},{"name":"reviews_limit","type":"integer","required":false,"description":"How many reviews to embed (0-100). 100 is the upstream ceiling — bisected, 101 is refused. 0 keeps the summary (total, average, rating distribution, UPC/EAN) and returns no review bodies. Reviews are ~2.5 KB each, so this is the main lever on response size.","on_invalid":"ignore","default":8,"example":8,"minimum":0,"maximum":100,"aliases":["review_limit","top_reviews"]},{"name":"reviews_sort","type":"enum","required":false,"description":"Which reviews count as 'top'. These are exactly the five options Sephora's own review widget offers, with the same underlying sort keys — read out of the product payload's own `reviewFilters`, not invented.","on_invalid":"reject","allowed_values":[{"value":"most_helpful","label":"Most Helpful (Sephora's default)"},{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"highest_rating","label":"Highest rating first"},{"value":"lowest_rating","label":"Lowest rating first"}],"default":"most_helpful","example":"newest","aliases":["review_sort"]},{"name":"reviews_offset","type":"integer","required":false,"description":"Skip this many reviews before returning `reviews_limit` of them — page through a product's full review history (`review_summary.total_reviews` tells you how many there are; some products have more than 17 000).","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":10000},{"name":"include_variant_images","type":"boolean","required":false,"description":"By default every variant carries its swatch and its own main image, and the FULL gallery is returned once at product level. Set true to also get each variant's complete alternate-image set — no extra request, just a much larger response (a 60-shade foundation carries about nine images per shade).","on_invalid":"ignore","default":false,"aliases":["all_variant_images"]}],"returns":"product{product_id, name, headline, brand, brand_id, brand_url, brand_description, url, category, category_id, breadcrumbs[]{name, url}, product_type, description, description_html, short_description, short_description_html, quick_look, seo_title, seo_description, loves_count, related_links[]} + images[]{url, url_250, alt} + specifications{size, variation_type, variation_type_label, attributes{<sephora attribute>: [values]}, highlights[]{id, name, description, icon}, ingredients, ingredients_html, how_to_use, how_to_use_html, warnings, is_electronic, hawaii_hazmat} + availability{in_stock, in_stock_variant_count, variant_count, is_low_stock, price_min, price_max, currency, ships_to_home, store_pickup_eligible, same_day_eligible, is_online_only, is_returnable, free_shipping_message} + rating{average, review_count, best_rating, average_schema_org, review_count_schema_org} + variants[]{sku_id, is_selected, variation_type, variation_type_label, variation_value, variation_description, size, sku_type, price, price_max, price_display, sale_price, value_price, currency, on_sale, in_stock, is_low_stock, availability_schema_org, price_schema_org, max_purchase_quantity, swatch_text, swatch_image, image, images[], url, is_new, is_limited_edition, is_limited_time_offer, is_sephora_exclusive, is_online_only, is_returnable, is_free_shipping, free_shipping_message, is_replenishment_eligible, store_pickup_eligible, same_day_eligible} + selected_variant{…same…} + reviews[]{review_id, title, text, rating, rating_range, is_recommended, submitted_at, updated_at, author, author_id, location, helpful_votes, unhelpful_votes, total_votes, comment_count, is_syndicated, is_featured, is_ratings_only, badges[], pros, cons, reviewer_context{}, secondary_ratings{}, photos[]{url, thumbnail}, bazaarvoice_product_id, reviewed_product_name} + review_summary{total_reviews, returned, average_rating, recommended_count, rating_distribution{}, with_photos} + gtins{upcs[], eans[], isbns[], mpns[], model_numbers[]}. Honest caveats, every one measured across ten product categories: (1) Sephora publishes NO shipping weight and NO product dimensions anywhere in this payload — the only physical figure is the fill volume ('1.7 oz / 50 mL') inside `specifications.size`, which is contents, not parcel weight; do not compute shipping from it. (2) `gtins` is PRODUCT-level and family-wide, not per-variant: a 51-shade lipstick returns 51 EANs with no mapping from EAN to `sku_id`, because the source publishes no such mapping. It comes from the catalogue feed Sephora sends its reviews provider, so it needs `include_reviews` (the same single call). (3) Stock is a BOOLEAN — `in_stock` plus Sephora's own `is_low_stock` — because Sephora publishes no unit count; a caller needing quantities will not find them here. (4) `variants` is one row per real SKU: single-shade products legitimately return exactly one (hair tools 0/3 had a shade matrix; mascara, perfume, moisturizer and shampoo 4/4 did). (5) Per-variant price IS returned verbatim and is never copied down from the product; where a variant has no sale price the field is null, not filled in. (6) `description`, `short_description`, `ingredients` and `how_to_use` are HTML at source and are published BOTH ways — stripped, and raw in the `_html` twin. (7) `reviews[].author` is the reviewer's public Bazaarvoice display nickname and `author_id` their stable id there. The gateway's redactor removes emails and phone numbers, NOT display names — so the switch for a caller who does not want that data is `include_reviews=false`. (8) `bazaarvoice_matches_product_id` in meta tells you when Sephora's reviews provider filed this product's reviews under a sibling id.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"shein","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Shein — product search, product detail and price/stock refresh","version":"0.3.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/shein/v1","spec_available":true,"actions":[{"name":"search","description":"Return JSON product cards from the selected storefront with local prices, currency and product URLs. Global and regional search support page=1 and up to 40 results. US search retains pagination. Source totals can exceed returned rows; there is no automatic regional pagination. Global is the default.","required_params":["query"],"optional_params":["market","max_results","page","limit"],"params":[{"name":"query","type":"string","required":true,"description":"Search phrase.","on_invalid":"ignore","example":"summer dress"},{"name":"market","type":"enum","required":false,"description":"Select the storefront and its local currency.","on_invalid":"reject","allowed_values":[{"value":"global","label":"Global (www.shein.com)"},{"value":"us","label":"United States"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"kw","label":"Kuwait (KWD)"}],"default":"global","aliases":["region","country"]},{"name":"max_results","type":"integer","required":false,"description":"Global: at most 40 results on page 1. US: auto-paginate up to 600 results.","on_invalid":"ignore","default":40,"minimum":1,"maximum":600},{"name":"page","type":"integer","required":false,"description":"Result page. Empty page = end of list.","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Global: 1-40 results. US: 1-120 per page. Default 40 in the playground.","on_invalid":"ignore","default":40,"minimum":1,"maximum":120}],"returns":"results[]{goods_id, name, url, price, list_price, discount_pct, currency_code, image, images[], rating, reviews_count, colors[], fit_true_size_pct, category, brand, store_name, in_stock} + query + page + has_next; global also returns pagination_supported=false + source_has_more. meta.result_count is Shein's own total match count, and meta.rows_withheld_by_source counts rows Shein listed as matches but refused to serve card data for on this page (0 in the normal case)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":4},"example_params":null},{"name":"product/detail","description":"Read a complete selected regional product page in its local currency, by product id or URL. Includes current page prices, all published SKUs with size and stock, total stock, images, and available size charts, attributes and description. These fields are included by default. sizes[] carries each size's price, list_price and base_price next to its stock. Shein runs price tests: two shopper sessions can see different promotional prices for the same product. price is the offer of the session that read the page; base_price (the price before any promotion) and list_price are the same for every session, and price_test_applied tells whether the test discount is in price. Shein shows stock up to 20 per SKU: a stock of 20 means 20 or more (stock_is_minimum / total_stock_is_minimum). colors[] lists the colour variants with name, goods_id and swatch image. Optional fields/exclude shape the response; the raw source blocks are about 95% of its size. Unavailable global SKU prices are null and sku_prices_complete is false. Missing product prices return an error without additional price lookup requests. Prices can change; no global product is successful without a verified positive product price. Global is the default; an explicit market wins, otherwise a product URL selects its storefront. NOT_FOUND means the selected storefront returned a product 404. UPSTREAM_HTTP with error.detail.reason=global_offer_price_unavailable means a complete priced offer could not be supplied; it does not mean the product is free or permanently removed. These outcomes are not retried within the call. Transient failures remain retryable; inspect error.retryable. Billing: a verified NOT_FOUND (error.detail.reason=product_not_found) costs 4 credits per request, including when the product is absent from the selected market. The response stays ok=false and includes meta.charged_credits=4. Timeouts, capacity limits, blocked requests, parsing errors and unavailable-price errors are not charged.","required_params":[],"optional_params":["market","url","fields","exclude"],"params":[{"name":"goods_id","type":"string","required":false,"description":"Product id. Supply either goods_id or a product URL.","on_invalid":"ignore","example":"387752092","aliases":["id","product_id"]},{"name":"url","type":"string","required":false,"description":"Full product URL (alternative to goods_id).","on_invalid":"ignore","example":"https://us.shein.com/x-p-387752092.html"},{"name":"market","type":"enum","required":false,"description":"Explicit market takes precedence. Otherwise infer from the product URL; id-only defaults to global. Global uses www.shein.com in USD; availability and shipping are destination-dependent. An unavailable global product price returns an error without additional price lookup requests.","on_invalid":"ignore","allowed_values":[{"value":"global","label":"Global (www.shein.com)"},{"value":"us","label":"United States"},{"value":"uk","label":"United Kingdom (www.shein.co.uk, GBP)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"kw","label":"Kuwait (KWD)"}],"default":"global","aliases":["region","country"]},{"name":"fields","type":"array","required":false,"description":"Return only these product keys (goods_id is always kept). Optional; the default is the full record. Applied keys are echoed in meta.field_selection.","on_invalid":"ignore","example":["price","list_price","sizes"]},{"name":"exclude","type":"array","required":false,"description":"Drop these product keys. The raw source blocks (sale_attributes, skus, price_details, product_details, image_details, color_images, size_chart) are about 95% of a detail response; their useful values are already typed in sizes[], colors[], attributes[] and the price fields.","on_invalid":"ignore","example":["sale_attributes","skus","price_details","product_details","image_details","color_images","size_chart"]}],"returns":"product{goods_id, goods_sn, name, price, price_display, list_price, base_price, promotion_discount, price_test_applied, currency_code, in_stock, total_stock, total_stock_is_minimum, brand (US), sizes[]{size, size_local, in_stock, stock, stock_is_minimum, sku_code, price, list_price, base_price}, colors[]{name, goods_id, image, url, is_current}, color, skus[], images[], color_names[], url, size_chart, sale_attributes, price_details, product_details, image_details, color_images, attributes[], description, price_source?, price_basis?, sku_prices_complete?}. Optional descriptive fields depend on what the source publishes.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":4},"example_params":{}},{"name":"price","description":"Read current price and stock from the selected regional product page in its local currency. Returns only price and availability fields, including total stock. Prices reflect the offer at retrieval time and can change. It reads the same product page as product/detail. Shein runs price tests, so price can differ between sessions; base_price (before any promotion) is the same for every session and is the stable value for change detection. Missing product prices return an error without additional price lookup requests. Global is the default; an explicit market wins, otherwise a product URL selects its storefront. NOT_FOUND means the selected storefront returned a product 404. UPSTREAM_HTTP with error.detail.reason=global_offer_price_unavailable means a complete priced offer could not be supplied; it does not mean the product is free or permanently removed. These outcomes are not retried within the call. Transient failures remain retryable; inspect error.retryable. Billing: a verified NOT_FOUND (error.detail.reason=product_not_found) costs 4 credits per request, including when the product is absent from the selected market. The response stays ok=false and includes meta.charged_credits=4. Timeouts, capacity limits, blocked requests, parsing errors and unavailable-price errors are not charged.","required_params":[],"optional_params":["market","url"],"params":[{"name":"goods_id","type":"string","required":false,"description":"Product id. Supply either goods_id or a product URL.","on_invalid":"ignore","example":"387752092","aliases":["id","product_id"]},{"name":"url","type":"string","required":false,"description":"Full product URL (alternative to goods_id).","on_invalid":"ignore"},{"name":"market","type":"enum","required":false,"description":"Explicit market takes precedence. Otherwise infer from the product URL; id-only defaults to global. Global uses www.shein.com in USD; availability and shipping are destination-dependent. An unavailable global product price returns an error without additional price lookup requests.","on_invalid":"ignore","allowed_values":[{"value":"global","label":"Global (www.shein.com)"},{"value":"us","label":"United States"},{"value":"uk","label":"United Kingdom (www.shein.co.uk, GBP)"},{"value":"de","label":"Germany (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"se","label":"Sweden (SEK)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"sa","label":"Saudi Arabia (SAR)"},{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"kw","label":"Kuwait (KWD)"}],"default":"global","aliases":["region","country"]}],"returns":"product{goods_id, price, price_display, list_price, base_price, promotion_discount, price_test_applied, discount_pct, currency_code, in_stock, total_stock, total_stock_is_minimum, url, price_source?, price_basis?, sku_prices_complete?}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"category/browse","description":"Browse a Shein category shelf by category id (the number in a /-c-<id>.html URL) or by the URL itself, with pagination — returns the same rich product cards as search. IMPORTANT (measured 2026-09-03): Shein currently risk-gates this category endpoint on direct access (it answers even a real browser's own request with a block on a cold category navigation), so this action returns a clear retryable 'not reachable' error rather than a faked or empty shelf. Use `search` with a text query for catalogue coverage today. This endpoint activates automatically if/when the gate loosens.","required_params":["category_id"],"optional_params":["market","url","page","limit"],"params":[{"name":"category_id","type":"string","required":true,"description":"Shein category id (the number in a /-c-<id>.html URL), or pass the category URL.","on_invalid":"ignore","example":"2030","aliases":["cat_id","category","category_url","url"]},{"name":"market","type":"enum","required":false,"description":"Which Shein storefront to read. Prices and availability are per-storefront.","on_invalid":"ignore","allowed_values":[{"value":"us","label":"us.shein.com — United States"},{"value":"uk","label":"uk.shein.com — United Kingdom"},{"value":"de","label":"de.shein.com — Germany"},{"value":"fr","label":"fr.shein.com — France"},{"value":"es","label":"es.shein.com — Spain"},{"value":"it","label":"it.shein.com — Italy"}],"default":"us","aliases":["region","country"]},{"name":"page","type":"integer","required":false,"description":"Result page. Empty page = end of list.","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page (max 120).","on_invalid":"ignore","default":100,"minimum":1,"maximum":120}],"returns":"results[]{same shape as search} + category_id + page + has_next","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"shixian","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Shixian (实现网) remote-work brief API — China's freelance/remote contract board in clean JSON. Every brief carries the client's own CNY budget, the project duration, the complete requirement text, hiring city, role category, applicant count and poster profile. Keyword search, paginated board, single-brief detail. No login, no token, no China exit required.","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/shixian/v1","spec_available":true,"actions":[{"name":"search","description":"Find remote-work briefs by keyword — the ones that mention 爬虫 (scraping), 数据采集 (data collection), API, 小程序 or any term you care about — each with the client's published CNY budget, duration, full requirement text and applicant count. 🔴 shixian publishes no job-search endpoint (its own `keyword=` parameter is accepted and ignored — verified: a nonsense keyword still returns the full front page), so this action scans the board pages and matches here; the response states exactly how many pages and briefs were scanned.","required_params":["q"],"optional_params":["match","fields","pages","limit","city","category","type","sort"],"params":[{"name":"q","type":"string","required":true,"description":"Search term, Chinese or English — e.g. '爬虫' (web scraping), '数据采集' (data collection), 'API', '小程序' (WeChat mini program), 'AI', 'Python'. 🔴 shixian has NO job-search endpoint (its `keyword=` parameter is accepted and ignored — measured: a nonsense keyword still returns the full front page), so this is matched HERE against the briefs on the pages scanned. Every response says so in `note`.","on_invalid":"ignore","example":"爬虫","aliases":["query","keyword","search","term"]},{"name":"match","type":"enum","required":false,"description":"How strictly a multi-word query must match. Chinese queries have no spaces, so for them 'any' and 'all' behave identically and 'phrase' is the same as a plain substring search.","on_invalid":"ignore","allowed_values":[{"value":"any","label":"Keep a brief if it contains ANY whitespace-separated token of the query. Default."},{"value":"all","label":"Keep a brief only if it contains EVERY token of the query."},{"value":"phrase","label":"Keep a brief only if it contains the query as an exact substring (spaces included)."}],"default":"any","example":"all","aliases":["match_mode"]},{"name":"fields","type":"enum","required":false,"description":"Which part of the brief the query is matched against. The board ships the COMPLETE requirement text in the listing HTML, so 'description' searches the real body, not a teaser.","on_invalid":"ignore","allowed_values":[{"value":"both","label":"Match against the title AND the full requirement text (default)."},{"value":"title","label":"Match against the job title only — far stricter, use for role names."},{"value":"description","label":"Match against the requirement text only."}],"default":"both","example":"both","aliases":["search_in","scope"]},{"name":"pages","type":"integer","required":false,"description":"How many board pages to scan before matching (1–25, default 5). Each page is 20 briefs and roughly 100 KB upstream, so the default reads ~100 briefs and the ceiling ~500. Scanning stops early once `limit` matches are found. Narrow with `category`/`city`/`type` before raising this.","on_invalid":"ignore","default":5,"example":5,"minimum":1,"maximum":25,"aliases":["scan_pages","depth","max_pages"]},{"name":"limit","type":"integer","required":false,"description":"How many matching briefs to return (1–200, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":200,"aliases":["max_results","count","size"]},{"name":"city","type":"enum","required":false,"description":"Hiring city / province, as the board's own slug. The filter genuinely bites (measured: 'shanghai' shared 1 of 20 ids with the unfiltered board, 'beijing' 9 of 20). 🔴 An UNKNOWN slug is silently ignored upstream and would hand you the unfiltered board, so anything outside this list is rejected here instead. Cannot be combined with `type` — they are separate routes on the site.","on_invalid":"reject","allowed_values":[{"value":"all","label":"全国 — nationwide, no city filter (default)"},{"value":"beijing","label":"北京 Beijing"},{"value":"shanghai","label":"上海 Shanghai"},{"value":"shenzhen","label":"深圳 Shenzhen"},{"value":"hangzhou","label":"杭州 Hangzhou"},{"value":"guangzhou","label":"广州 Guangzhou"},{"value":"chengdu","label":"成都 Chengdu"},{"value":"nanjing","label":"南京 Nanjing"},{"value":"xian","label":"西安 Xi'an"},{"value":"hubei","label":"湖北 Hubei province"},{"value":"xiamen","label":"厦门 Xiamen"},{"value":"shandong","label":"山东 Shandong province"},{"value":"suzhou","label":"苏州 Suzhou"},{"value":"zhengzhou","label":"郑州 Zhengzhou"},{"value":"fuzhou","label":"福州 Fuzhou"},{"value":"changsha","label":"长沙 Changsha"},{"value":"chongqing","label":"重庆 Chongqing"},{"value":"tianjin","label":"天津 Tianjin"},{"value":"ningbo","label":"宁波 Ningbo"},{"value":"remote","label":"远程 remote-only bucket — measured EMPTY (0 rows); the board is remote-first anyway, so use type=part-time / type=full-time instead"},{"value":"qita","label":"其它 elsewhere in China"}],"default":"all","example":"beijing","aliases":["location","region"]},{"name":"category","type":"enum","required":false,"description":"Role category. Measured bite against the unfiltered board: 'ui' shared 0 of 20 ids, 'ios' 1 of 20, 'backend' 5 of 20. Unknown values are rejected here because the site ignores them silently. Cannot be combined with `type`.","on_invalid":"reject","allowed_values":[{"value":"all","label":"全部 — every role (default)"},{"value":"backend","label":"后端工程师 backend engineer"},{"value":"frontend","label":"前端工程师 frontend engineer"},{"value":"full_stack","label":"全栈 full-stack"},{"value":"ios","label":"iOS工程师 iOS engineer"},{"value":"android","label":"Android工程师 Android engineer"},{"value":"ui","label":"UI设计师 UI designer"},{"value":"pm","label":"产品经理 product manager"},{"value":"operator","label":"运营/编辑 ops / editorial"},{"value":"tester","label":"测试 QA"},{"value":"others","label":"其它 everything else"}],"default":"all","example":"backend","aliases":["role","job_category","discipline"]},{"name":"type","type":"enum","required":false,"description":"Contract shape. 🔴 On shixian this is a DIFFERENT route from the city/role board (/jobs/full-time vs /job/<city>/<role>), so it cannot be combined with `city` or `category` — passing both is rejected with INVALID_PARAM rather than silently dropping one.","on_invalid":"reject","allowed_values":[{"value":"all","label":"Both remote full-time and remote part-time (default)"},{"value":"full-time","label":"远程全职 — remote full-time contracts. Budget is quoted per MONTH and the row also carries a per-workday rate (e.g. 900元 / 8小时)."},{"value":"part-time","label":"远程兼职 — remote part-time / project gigs. Budget is the whole engagement over the quoted 工期 (duration)."}],"default":"all","example":"full-time","aliases":["job_type","employment","contract"]},{"name":"sort","type":"enum","required":false,"description":"Board ordering / shortlist. 'nobody' is the interesting one for lead generation — briefs nobody has applied to yet: it shares only 1 of 20 ids with the default board, and `applicant_count` is null on 20/20 of its rows, which is the filter proving itself twice over.","on_invalid":"reject","allowed_values":[{"value":"default","label":"The board's own default order (default)"},{"value":"last","label":"最新职位 — newest postings first"},{"value":"nobody","label":"无人投递 — briefs nobody has applied to yet (least competition)"},{"value":"accept_remote","label":"接受远程 — postings explicitly flagged as accepting remote workers"}],"default":"default","example":"last","aliases":["filter","order","order_by"]}],"returns":"jobs[]{id, title, url, job_type, description, budget{amount,currency,period,label,raw}, rate{amount,currency,per,raw}, duration{days,raw}, employer{id,url,avatar}, published_relative, published_approx_iso, published_approx_days_ago, applicant_count}, returned, matched, jobs_scanned, pages_scanned, query, match, note","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"爬虫","pages":6}},{"name":"jobs","description":"One page of the shixian board — 20 remote-work briefs with the complete requirement text and the client's published CNY budget on every row. Filter by city, role category, contract shape or the board's own shortlists (newest, zero-applicant, accepts-remote) and page through roughly 3,200 live briefs.","required_params":[],"optional_params":["page","limit","city","category","type","sort"],"params":[{"name":"page","type":"integer","required":false,"description":"Which board page to return (1–300). Each page holds 20 briefs and consecutive pages share NO ids (measured: p1/p2, p2/p3 and p1/p3 overlap = 0). The unfiltered board bottoms out around page 164 (~3,200 live briefs) and a filtered one much sooner; past the end the site serves an empty page and this action returns NOT_FOUND rather than an empty success.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":300,"aliases":["p","page_number"]},{"name":"limit","type":"integer","required":false,"description":"How many briefs to return (1–20, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":20,"aliases":["max_results","count","size"]},{"name":"city","type":"enum","required":false,"description":"Hiring city / province, as the board's own slug. The filter genuinely bites (measured: 'shanghai' shared 1 of 20 ids with the unfiltered board, 'beijing' 9 of 20). 🔴 An UNKNOWN slug is silently ignored upstream and would hand you the unfiltered board, so anything outside this list is rejected here instead. Cannot be combined with `type` — they are separate routes on the site.","on_invalid":"reject","allowed_values":[{"value":"all","label":"全国 — nationwide, no city filter (default)"},{"value":"beijing","label":"北京 Beijing"},{"value":"shanghai","label":"上海 Shanghai"},{"value":"shenzhen","label":"深圳 Shenzhen"},{"value":"hangzhou","label":"杭州 Hangzhou"},{"value":"guangzhou","label":"广州 Guangzhou"},{"value":"chengdu","label":"成都 Chengdu"},{"value":"nanjing","label":"南京 Nanjing"},{"value":"xian","label":"西安 Xi'an"},{"value":"hubei","label":"湖北 Hubei province"},{"value":"xiamen","label":"厦门 Xiamen"},{"value":"shandong","label":"山东 Shandong province"},{"value":"suzhou","label":"苏州 Suzhou"},{"value":"zhengzhou","label":"郑州 Zhengzhou"},{"value":"fuzhou","label":"福州 Fuzhou"},{"value":"changsha","label":"长沙 Changsha"},{"value":"chongqing","label":"重庆 Chongqing"},{"value":"tianjin","label":"天津 Tianjin"},{"value":"ningbo","label":"宁波 Ningbo"},{"value":"remote","label":"远程 remote-only bucket — measured EMPTY (0 rows); the board is remote-first anyway, so use type=part-time / type=full-time instead"},{"value":"qita","label":"其它 elsewhere in China"}],"default":"all","example":"beijing","aliases":["location","region"]},{"name":"category","type":"enum","required":false,"description":"Role category. Measured bite against the unfiltered board: 'ui' shared 0 of 20 ids, 'ios' 1 of 20, 'backend' 5 of 20. Unknown values are rejected here because the site ignores them silently. Cannot be combined with `type`.","on_invalid":"reject","allowed_values":[{"value":"all","label":"全部 — every role (default)"},{"value":"backend","label":"后端工程师 backend engineer"},{"value":"frontend","label":"前端工程师 frontend engineer"},{"value":"full_stack","label":"全栈 full-stack"},{"value":"ios","label":"iOS工程师 iOS engineer"},{"value":"android","label":"Android工程师 Android engineer"},{"value":"ui","label":"UI设计师 UI designer"},{"value":"pm","label":"产品经理 product manager"},{"value":"operator","label":"运营/编辑 ops / editorial"},{"value":"tester","label":"测试 QA"},{"value":"others","label":"其它 everything else"}],"default":"all","example":"backend","aliases":["role","job_category","discipline"]},{"name":"type","type":"enum","required":false,"description":"Contract shape. 🔴 On shixian this is a DIFFERENT route from the city/role board (/jobs/full-time vs /job/<city>/<role>), so it cannot be combined with `city` or `category` — passing both is rejected with INVALID_PARAM rather than silently dropping one.","on_invalid":"reject","allowed_values":[{"value":"all","label":"Both remote full-time and remote part-time (default)"},{"value":"full-time","label":"远程全职 — remote full-time contracts. Budget is quoted per MONTH and the row also carries a per-workday rate (e.g. 900元 / 8小时)."},{"value":"part-time","label":"远程兼职 — remote part-time / project gigs. Budget is the whole engagement over the quoted 工期 (duration)."}],"default":"all","example":"full-time","aliases":["job_type","employment","contract"]},{"name":"sort","type":"enum","required":false,"description":"Board ordering / shortlist. 'nobody' is the interesting one for lead generation — briefs nobody has applied to yet: it shares only 1 of 20 ids with the default board, and `applicant_count` is null on 20/20 of its rows, which is the filter proving itself twice over.","on_invalid":"reject","allowed_values":[{"value":"default","label":"The board's own default order (default)"},{"value":"last","label":"最新职位 — newest postings first"},{"value":"nobody","label":"无人投递 — briefs nobody has applied to yet (least competition)"},{"value":"accept_remote","label":"接受远程 — postings explicitly flagged as accepting remote workers"}],"default":"default","example":"last","aliases":["filter","order","order_by"]}],"returns":"jobs[]{id, title, url, job_type, job_type_en, description, budget{amount,currency,period,label,raw}, rate{amount,currency,per,raw}, duration{days,raw}, employer{id,url,avatar}, published_relative, published_approx_iso, published_approx_days_ago, applicant_count}, returned, page, page_size, filters{city,category,type,sort}, source_url","cacheable":true,"cache_ttl_seconds":180,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"job","description":"One brief in full: the complete requirement text straight out of the page's own schema.org block, the client's budget, the hiring city and role, the project type, workdays per month, how many people have applied, how many have viewed it, and the poster's public marketplace profile (display name, location, team size, funding stage, product and team blurbs) — the profile fields the board hides behind a login wall on the list page.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"The brief to fetch: a numeric job id (1192790804) or a full URL (https://shixian.com/jobs/1192790804).","on_invalid":"ignore","example":"1192790804","aliases":["job_id","url","job"]}],"returns":"job{id, title, url, job_type, description, budget, project_type, workdays_per_month, work_mode, city{name,slug}, category{name,slug}, employer{id,name,url,avatar,location,team_size,funding_stage,product_intro,team_intro}, published_relative, published_approx_iso, applicant_count, view_count}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"1192790804"}},{"name":"filters","description":"The board's own filter taxonomy, read live off the site: every city slug, every role-category slug, the contract shapes and the sort modes, each with its Chinese label. Use it to discover the exact values `search` and `jobs` accept — the site silently ignores a slug it does not know, so a typo would otherwise return the unfiltered board.","required_params":[],"optional_params":[],"params":[],"returns":"cities[]{slug,name_zh}, categories[]{slug,name_zh}, types[]{slug,label}, sorts[]{slug,label}, page_size, max_page, board_end_measured","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"shopify","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Shopify Store API — browse products, variants, prices, and collections from any public Shopify store (no API key required)","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/shopify/v1","spec_available":true,"actions":[{"name":"products","description":"Paginated product catalog from any public Shopify store: title, vendor, variants, prices, inventory status, tags, and images.","required_params":["store"],"optional_params":["page","limit","max_items","vendor","product_type","tag","tags","title_contains","sku_contains","min_price","max_price","only_on_sale","only_in_stock","new_arrivals_days"],"params":[{"name":"store","type":"string","required":true,"description":"Shopify store domain or URL (e.g. allbirds.com or https://shop.example.com) — works for ANY Shopify-powered store.","on_invalid":"reject","example":"allbirds.com"},{"name":"page","type":"integer","required":false,"description":"Page number (1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Items per page (1–250; larger values are capped at 250).","on_invalid":"ignore","default":50,"minimum":1,"maximum":250},{"name":"max_items","type":"integer","required":false,"description":"Auto-walk pages until this many items are collected (overrides single-page mode; recommended when using filters).","on_invalid":"ignore","minimum":1},{"name":"vendor","type":"string","required":false,"description":"Only products whose vendor/brand contains this text (filter, post-fetch).","on_invalid":"ignore","example":"Allbirds"},{"name":"product_type","type":"string","required":false,"description":"Only products whose type contains this text (filter, post-fetch).","on_invalid":"ignore","example":"Shoes"},{"name":"tags","type":"string","required":false,"description":"Only products carrying at least one of these tags (comma-separated or a list; filter, post-fetch).","on_invalid":"ignore","example":"wool,summer","aliases":["tag"]},{"name":"title_contains","type":"string","required":false,"description":"Only products whose title contains this text (filter, post-fetch).","on_invalid":"ignore","example":"runner"},{"name":"sku_contains","type":"string","required":false,"description":"Only products with a variant SKU containing this text (filter, post-fetch).","on_invalid":"ignore"},{"name":"min_price","type":"number","required":false,"description":"Only products priced at or above this (store currency; post-fetch).","on_invalid":"ignore","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Only products priced at or below this (store currency; post-fetch).","on_invalid":"ignore","minimum":0},{"name":"only_on_sale","type":"boolean","required":false,"description":"Only products with at least one discounted variant.","on_invalid":"ignore","default":false},{"name":"only_in_stock","type":"boolean","required":false,"description":"Only products with at least one available variant.","on_invalid":"ignore","default":false},{"name":"new_arrivals_days","type":"integer","required":false,"description":"Only products published within the last N days.","on_invalid":"ignore","example":30,"minimum":1}],"returns":"products[]{id, title, handle, vendor, type, tags[], description, options[], variants[]{id, title, price, sku, available, compare_at_price, on_sale, discount_percent, inventory}, images[], price_min, price_max, available, on_sale, max_discount_percent, featured_image, url} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"store":"allbirds.com","limit":5}},{"name":"product","description":"Full detail for a single Shopify product by its handle (URL slug) or product page URL: title, vendor, variants, prices, images, and inventory.","required_params":["store","handle"],"optional_params":[],"params":[{"name":"store","type":"string","required":true,"description":"Shopify store domain or URL (e.g. allbirds.com or https://shop.example.com) — works for ANY Shopify-powered store.","on_invalid":"reject","example":"allbirds.com"},{"name":"handle","type":"string","required":true,"description":"Product handle — the slug in the product URL (…/products/<handle>); a full product URL also works.","on_invalid":"reject","example":"mens-tree-runners-mist"}],"returns":"product{…same shape as products[] items}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"store":"allbirds.com","handle":"mens-tree-runners-mist"}},{"name":"collections","description":"Paginated list of public collections from a Shopify store: collection id, title, handle, description, and cover image.","required_params":["store"],"optional_params":["page","limit","max_items"],"params":[{"name":"store","type":"string","required":true,"description":"Shopify store domain or URL (e.g. allbirds.com or https://shop.example.com) — works for ANY Shopify-powered store.","on_invalid":"reject","example":"allbirds.com"},{"name":"page","type":"integer","required":false,"description":"Page number (1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Items per page (1–250; larger values are capped at 250).","on_invalid":"ignore","default":50,"minimum":1,"maximum":250},{"name":"max_items","type":"integer","required":false,"description":"Auto-walk pages until this many items are collected (overrides single-page mode; recommended when using filters).","on_invalid":"ignore","minimum":1}],"returns":"collections[]{id, title, handle, description_html, updated_at, image, url} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"store":"kith.com","limit":5}},{"name":"collection_products","description":"Paginated products within a specific Shopify collection — same product shape as the products action, filterable and sortable.","required_params":["store","handle"],"optional_params":["page","limit","max_items","sort_by","vendor","product_type","tag","tags","title_contains","sku_contains","min_price","max_price","only_on_sale","only_in_stock","new_arrivals_days"],"params":[{"name":"store","type":"string","required":true,"description":"Shopify store domain or URL (e.g. allbirds.com or https://shop.example.com) — works for ANY Shopify-powered store.","on_invalid":"reject","example":"allbirds.com"},{"name":"handle","type":"string","required":true,"description":"Collection handle — the slug in the collection URL (…/collections/<handle>); take it from the collections action. A full collection URL also works.","on_invalid":"reject","example":"all"},{"name":"sort_by","type":"enum","required":false,"description":"Requested ordering — passed to the store's collection endpoint, but MANY stores ignore it (theme-dependent); ordering is not guaranteed. Aliases like priceAsc/newest are also accepted.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"price-ascending","label":"Price: low to high"},{"value":"price-descending","label":"Price: high to low"},{"value":"created-descending","label":"Newest"},{"value":"best-selling","label":"Best selling"},{"value":"title-ascending","label":"Title A–Z"}]},{"name":"page","type":"integer","required":false,"description":"Page number (1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Items per page (1–250; larger values are capped at 250).","on_invalid":"ignore","default":50,"minimum":1,"maximum":250},{"name":"max_items","type":"integer","required":false,"description":"Auto-walk pages until this many items are collected (overrides single-page mode; recommended when using filters).","on_invalid":"ignore","minimum":1},{"name":"vendor","type":"string","required":false,"description":"Only products whose vendor/brand contains this text (filter, post-fetch).","on_invalid":"ignore","example":"Allbirds"},{"name":"product_type","type":"string","required":false,"description":"Only products whose type contains this text (filter, post-fetch).","on_invalid":"ignore","example":"Shoes"},{"name":"tags","type":"string","required":false,"description":"Only products carrying at least one of these tags (comma-separated or a list; filter, post-fetch).","on_invalid":"ignore","example":"wool,summer","aliases":["tag"]},{"name":"title_contains","type":"string","required":false,"description":"Only products whose title contains this text (filter, post-fetch).","on_invalid":"ignore","example":"runner"},{"name":"sku_contains","type":"string","required":false,"description":"Only products with a variant SKU containing this text (filter, post-fetch).","on_invalid":"ignore"},{"name":"min_price","type":"number","required":false,"description":"Only products priced at or above this (store currency; post-fetch).","on_invalid":"ignore","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Only products priced at or below this (store currency; post-fetch).","on_invalid":"ignore","minimum":0},{"name":"only_on_sale","type":"boolean","required":false,"description":"Only products with at least one discounted variant.","on_invalid":"ignore","default":false},{"name":"only_in_stock","type":"boolean","required":false,"description":"Only products with at least one available variant.","on_invalid":"ignore","default":false},{"name":"new_arrivals_days","type":"integer","required":false,"description":"Only products published within the last N days.","on_invalid":"ignore","example":30,"minimum":1}],"returns":"products[]{id, title, handle, vendor, type, tags[], description, options[], variants[]{id, title, price, sku, available, compare_at_price, on_sale, discount_percent, inventory}, images[], price_min, price_max, available, on_sale, max_discount_percent, featured_image, url} — products of ONE collection (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"store":"allbirds.com","handle":"mens-tree-runners-mist"}},{"name":"search","description":"Predictive search across a Shopify store: matching products (title, price, variants, image) plus optional collection, page, and autocomplete query suggestions.","required_params":["store","query"],"optional_params":["limit","page","max_items","resource_types","resources","vendor","product_type","tag","tags","min_price","max_price","only_on_sale","only_in_stock"],"params":[{"name":"store","type":"string","required":true,"description":"Shopify store domain or URL (e.g. allbirds.com or https://shop.example.com) — works for ANY Shopify-powered store.","on_invalid":"reject","example":"allbirds.com"},{"name":"query","type":"string","required":true,"description":"What to search for in the store.","on_invalid":"reject","example":"wool"},{"name":"limit","type":"integer","required":false,"description":"Results per page (1–250; larger values are capped at 250).","on_invalid":"ignore","default":10,"minimum":1,"maximum":250},{"name":"page","type":"integer","required":false,"description":"Page number (1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"max_items","type":"integer","required":false,"description":"Auto-walk pages until this many items are collected (overrides single-page mode; recommended when using filters).","on_invalid":"ignore","minimum":1},{"name":"resource_types","type":"string","required":false,"description":"Comma-separated suggest resources to include: product, collection, page, query (default product). 'query' returns the store's autocomplete search-term suggestions.","on_invalid":"ignore","example":"product,collection","aliases":["resources"]},{"name":"vendor","type":"string","required":false,"description":"Only products whose vendor/brand contains this text (filter, post-fetch).","on_invalid":"ignore","example":"Allbirds"},{"name":"product_type","type":"string","required":false,"description":"Only products whose type contains this text (filter, post-fetch).","on_invalid":"ignore","example":"Shoes"},{"name":"tags","type":"string","required":false,"description":"Only products carrying at least one of these tags (comma-separated or a list; filter, post-fetch).","on_invalid":"ignore","example":"wool,summer","aliases":["tag"]},{"name":"min_price","type":"number","required":false,"description":"Only products priced at or above this (store currency; post-fetch).","on_invalid":"ignore","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Only products priced at or below this (store currency; post-fetch).","on_invalid":"ignore","minimum":0},{"name":"only_on_sale","type":"boolean","required":false,"description":"Only products with at least one discounted variant.","on_invalid":"ignore","default":false},{"name":"only_in_stock","type":"boolean","required":false,"description":"Only products with at least one available variant.","on_invalid":"ignore","default":false}],"returns":"products[]{id, title, handle, vendor, type, tags[], description, options[], variants[]{id, title, price, sku, available, compare_at_price, on_sale, discount_percent, inventory}, images[], price_min, price_max, available, on_sale, max_discount_percent, featured_image, url} — predictive product matches for `query`; plus collections[], pages[], query_suggestions[] when requested via resource_types (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"recommendations","description":"Related or complementary products that a Shopify store recommends for a given product — the store's own 'you may also like' / 'goes well with' set, same rich product shape.","required_params":["store","handle"],"optional_params":["intent","limit"],"params":[{"name":"store","type":"string","required":true,"description":"Shopify store domain or URL (e.g. allbirds.com or https://shop.example.com) — works for ANY Shopify-powered store.","on_invalid":"reject","example":"allbirds.com"},{"name":"handle","type":"string","required":true,"description":"Product handle — the slug in the product URL (…/products/<handle>); a full product URL also works.","on_invalid":"reject","example":"mens-tree-runners-mist"},{"name":"intent","type":"enum","required":false,"description":"Which Shopify recommendation set to return. 'related' = similar products (works on every store); 'complementary' = goes-well-with picks (only on stores that configured Search & Discovery — falls back to related).","on_invalid":"ignore","allowed_values":[{"value":"related","label":"Similar products"},{"value":"complementary","label":"Complementary / goes-well-with"}],"default":"related"},{"name":"limit","type":"integer","required":false,"description":"How many recommended products to return (1–250).","on_invalid":"ignore","default":10,"minimum":1,"maximum":250}],"returns":"products[]{id, title, handle, vendor, type, tags[], description, options[], variants[]{id, title, price, sku, available, compare_at_price, on_sale, discount_percent, inventory}, images[], price_min, price_max, available, on_sale, max_discount_percent, featured_image, url} — the store's recommended products for the given product (meta.intent shows which set was returned)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"store":"allbirds.com","handle":"mens-tree-runners-mist","limit":4}},{"name":"collection","description":"Metadata for a single Shopify collection by handle: title, description, cover image, published/updated dates, and product count.","required_params":["store","handle"],"optional_params":[],"params":[{"name":"store","type":"string","required":true,"description":"Shopify store domain or URL (e.g. allbirds.com or https://shop.example.com) — works for ANY Shopify-powered store.","on_invalid":"reject","example":"allbirds.com"},{"name":"handle","type":"string","required":true,"description":"Collection handle — the slug in the collection URL (…/collections/<handle>). A full collection URL also works.","on_invalid":"reject","example":"all"}],"returns":"collection{id, title, handle, description, description_html, image, products_count, published_at, updated_at, url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"store":"allbirds.com","handle":"mens-tree-runners-mist"}},{"name":"pages","description":"Content pages published on a Shopify store (About, FAQ, Shipping, size guides, etc.): title, handle, URL, and HTML/plain-text body.","required_params":["store"],"optional_params":["page","limit","max_items"],"params":[{"name":"store","type":"string","required":true,"description":"Shopify store domain or URL (e.g. allbirds.com or https://shop.example.com) — works for ANY Shopify-powered store.","on_invalid":"reject","example":"allbirds.com"},{"name":"page","type":"integer","required":false,"description":"Page number (1, 2, 3…).","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Items per page (1–250; larger values are capped at 250).","on_invalid":"ignore","default":50,"minimum":1,"maximum":250},{"name":"max_items","type":"integer","required":false,"description":"Auto-walk pages until this many items are collected (overrides single-page mode; recommended when using filters).","on_invalid":"ignore","minimum":1}],"returns":"pages[]{id, title, handle, url, body_html, body_text, published_at, updated_at} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"store":"allbirds.com"}},{"name":"store_info","description":"Rich profile for a Shopify store: name, currency, country/city, product & collection counts, accepted card brands, social links, myshopify domain, and platform confirmation.","required_params":["store"],"optional_params":[],"params":[{"name":"store","type":"string","required":true,"description":"Shopify store domain or URL (e.g. allbirds.com or https://shop.example.com) — works for ANY Shopify-powered store.","on_invalid":"reject","example":"allbirds.com"}],"returns":"platform + store + name + domain + myshopify_domain + currency + money_format + country + city + province + ships_to_countries[] + published_products_count + published_collections_count + card_brands[] + socials[] + description + raw{}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"store":"allbirds.com"}}]},{"name":"sitejabber","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Sitejabber API — business reviews, ratings and TrustScore scraper: overall star rating, total review count, 5-to-1-star rating distribution, sub-ratings (service, value, shipping, returns, quality), and every customer review with rating, text, date, country, verified status, helpful votes and the business's reply — by domain, plus business search and category browse from Sitejabber.com (SmartCustomer), no API key required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/sitejabber/v1","spec_available":true,"actions":[{"name":"reviews","description":"Get a business's customer reviews from Sitejabber by domain — paginated, 20 per page. Each review has the 1-5 star rating, title, full text, the five sub-ratings (service, value, shipping, returns, quality), date, the reviewer's country, verified status, products used, helpful/not-helpful vote counts and the business's reply. Page with `page` until meta.pagination.has_more is false.","required_params":["domain"],"optional_params":["page"],"params":[{"name":"domain","type":"string","required":true,"description":"The business's website domain on Sitejabber, e.g. 'amazon.com' or 'nike.com' (a full sitejabber.com/reviews/<domain> URL also works).","on_invalid":"reject","example":"amazon.com","aliases":["company","company_domain","business","url","site"]},{"name":"page","type":"integer","required":false,"description":"Page number. Reviews are 20 per page — page until meta.pagination.has_more is false (meta.pagination.total tells you the total review count).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500}],"returns":"reviews[]{review_id, review_no, rating, title, text, tip, sub_ratings, date, experience_date, is_verified, helpful_votes, not_helpful_votes, comment_count, products_used, reviewer_name*, reviewer_country*, business_reply, photo_count, url} + business{name, domain, rating, review_count} + meta.pagination{page, per_page, total, has_more, next_page} (*reviewer name/country redacted by default; pass include_pii=true for full data)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":20,"min":1},"example_params":{"domain":"amazon.com"}},{"name":"aggregate","description":"The rating summary for a business by domain (no individual reviews) — overall star rating, total review count, the 5★→1★ rating distribution, and the five sub-rating averages (service, value, shipping, returns, quality). Cheaper than `reviews` when you only need the score.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The business's website domain on Sitejabber, e.g. 'amazon.com' or 'nike.com' (a full sitejabber.com/reviews/<domain> URL also works).","on_invalid":"reject","example":"amazon.com","aliases":["company","company_domain","business","url","site"]}],"returns":"business{name, domain, rating, review_count, sub_ratings} + rating_distribution{5_star..1_star} + total_reviews","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"amazon.com"}},{"name":"detail","description":"The full business profile on Sitejabber by domain — name, website, founded year, industry, the AI summary of what customers say, categories, overall rating, total review count, sub-rating breakdown and the rating distribution.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"The business's website domain on Sitejabber, e.g. 'amazon.com' or 'nike.com' (a full sitejabber.com/reviews/<domain> URL also works).","on_invalid":"reject","example":"amazon.com","aliases":["company","company_domain","business","url","site"]}],"returns":"business{business_id, name, domain, website, title, description, ai_summary, founded, subindustry, categories[], rating, review_count, sub_ratings, views} + rating_distribution{5_star..1_star} + similar_businesses[]{name, domain}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"nike.com"}},{"name":"search","description":"Search Sitejabber for businesses by name or keyword — returns matching businesses with name, domain, overall rating, total review count, industry and AI summary. 28 per page.","required_params":["query"],"optional_params":["page"],"params":[{"name":"query","type":"string","required":true,"description":"The business name or keyword to search for (e.g. 'amazon', 'shoes', 'vpn').","on_invalid":"reject","example":"amazon","aliases":["q","name"]},{"name":"page","type":"integer","required":false,"description":"Page number. Reviews are 20 per page — page until meta.pagination.has_more is false (meta.pagination.total tells you the total review count).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500}],"returns":"businesses[]{business_id, name, domain, website, rating, review_count, subindustry, categories[]} + meta.pagination{page, total, has_more, next_page}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"amazon"}},{"name":"category","description":"Browse the businesses listed in a Sitejabber category — returns each business's name, domain, rating, review count and industry, ranked. 10 per page; paginate with `page`. Pick a top-level category from the list, or pass any deeper sub-category slug from a sitejabber.com/categories/<slug> URL (e.g. 'banking', 'insurance', 'web-hosting', 'dating') — those work too.","required_params":["category"],"optional_params":["page"],"params":[{"name":"category","type":"enum","required":true,"description":"The Sitejabber category. Choose a top-level slug from the list, or type any deeper sub-category slug from a sitejabber.com/categories/<slug> URL — those resolve too.","on_invalid":"ignore","allowed_values":[{"value":"shopping","label":"Shopping"},{"value":"clothing-fashion","label":"Clothing & Fashion"},{"value":"computers-technology","label":"Computers & Technology"},{"value":"beauty","label":"Beauty"},{"value":"health","label":"Health"},{"value":"home-garden","label":"Home & Garden"},{"value":"food-drink","label":"Food & Drink"},{"value":"travel","label":"Travel"},{"value":"finance","label":"Finance"},{"value":"cryptocurrency","label":"Cryptocurrency"},{"value":"business","label":"Business"},{"value":"education","label":"Education"},{"value":"entertainment","label":"Entertainment"},{"value":"autos-vehicles","label":"Autos & Vehicles"},{"value":"real-estate","label":"Real Estate"},{"value":"pets-animals","label":"Pets & Animals"},{"value":"baby-kids","label":"Baby & Kids"},{"value":"sports","label":"Sports"},{"value":"hobbies-interests","label":"Hobbies & Interests"},{"value":"art-design","label":"Art & Design"},{"value":"relationships","label":"Relationships"},{"value":"jobs","label":"Jobs"},{"value":"law-government","label":"Law & Government"},{"value":"news","label":"News"},{"value":"science","label":"Science"},{"value":"society","label":"Society"},{"value":"reference","label":"Reference"},{"value":"black-owned","label":"Black-Owned"}],"example":"shopping","aliases":["slug","category_slug"]},{"name":"page","type":"integer","required":false,"description":"Page number. Reviews are 20 per page — page until meta.pagination.has_more is false (meta.pagination.total tells you the total review count).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":500}],"returns":"businesses[]{business_id, name, domain, rating, review_count, subindustry, categories[]} + category{slug} + meta.pagination{page, total, has_more, next_page}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"shopping"}}]},{"name":"skroutz","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Skroutz API scraper — Greek price comparison: search products, read the full product record, and get EVERY Greek merchant's offer (price, shipping, shop rating, delivery date, stock) for one product on skroutz.gr. Prices in EUR. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/skroutz/v1","spec_available":true,"actions":[{"name":"search","description":"Search skroutz.gr by keyword and get the matching products: Skroutz product id, title, image, the price skroutz prints on the card (the offer it FEATURES, which is not always the cheapest one — measured 120,00 € on a card whose cheapest merchant offer was 108,99 €; null when the card shows a variant range instead, with the endpoints in price_from/price_to), the customer rating and review count, the category and skroutz's own key-spec summary. Use the returned `product_id` with `product/offers` to get every Greek shop's price for that product.","required_params":["query"],"optional_params":["page","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for on skroutz.gr. Greek keywords match best, but brand and model names ('teka gfh 73', 'iphone 15 128gb') work directly. Skroutz often answers a broad keyword with one of its own category or brand pages — `search_mode` and `resolved_url` tell you when that happened.","on_invalid":"reject","example":"teka gfh 73","aliases":["q","keyword","keyphrase"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-BASED. Skroutz returns 56-60 products per page and the exact number varies, so read `count` rather than assuming a page size; `total_results` tells you how many products exist.","on_invalid":"ignore","default":1,"minimum":1,"maximum":200},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{product_id, title, url, image, price (number — the price skroutz shows on the card, i.e. the offer it features; NOT guaranteed to be the cheapest merchant, and null when the card shows a variant range instead), price_display (exactly what the card printed), price_from, price_to (the endpoints when skroutz printed a variant range), variant_family (true when this card covers a family of sibling products), price_before_discount, currency=EUR, rating (number), review_count, rating_scale (null — skroutz publishes no rating maximum anywhere), category, category_url, key_specs, delivery, promoted}, count, total_results, duplicate_cards_dropped (sponsored cards repeated inside the organic grid), search_mode ('keyword' | 'resolved' when skroutz answered the keyword with one of its own category/brand pages), resolved_title, resolved_url, query (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"teka gfh 73"}},{"name":"product/detail","description":"The full Skroutz product record by `product_id` (or product URL): title, brand, description, image gallery, manufacturer part number, model and colour, the price skroutz features on the page, the customer rating with its review count and per-star breakdown, the category, and the complete technical specification grouped exactly as skroutz groups it.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Skroutz product (SKU) id — the number in the product URL (https://www.skroutz.gr/s/809/…html → 809). A full product URL is also accepted. Every `search` row returns it as `product_id`.","on_invalid":"reject","example":"809","aliases":["id","sku","sku_id","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, title, brand, url, description (skroutz's own product text, null when it has none), images[], mpn, model, color, price (number — the offer skroutz FEATURES on the product page; it is one of the real merchant prices but not necessarily the cheapest), price_display, price_min (null — the product page publishes no band, call product/offers), price_max (null — same reason), offer_count (null — same reason), currency=EUR, availability, condition, rating (number), review_count, rating_scale (null — skroutz publishes no maximum), rating_breakdown{'1'..'5': count}, category, category_url, specs[]{group, attributes{name: value}}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"809"}},{"name":"product/offers","description":"Every Greek merchant offer for one product — the price comparison itself, in a single request. For the given `product_id` you get one row per shop: the shop with its Skroutz id, name, storefront link, star rating and how many reviews it rests on, its town, the price (numeric and formatted), the price before a running coupon and the discount, the shipping fee and the total, the promised delivery date, declared stock, and the merchant's own listing title. Rows are ordered cheapest first.","required_params":["product_id"],"optional_params":["sort","include_product","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Skroutz product (SKU) id — the number in the product URL (https://www.skroutz.gr/s/809/…html → 809). A full product URL is also accepted. Every `search` row returns it as `product_id`.","on_invalid":"reject","example":"809","aliases":["id","sku","sku_id","url"]},{"name":"sort","type":"enum","required":false,"description":"Order of the merchant rows. Only the orderings skroutz.gr actually honours are accepted; anything else is rejected rather than silently ignored. (The site's third ordering, 'nearest shop', needs a shopper location and is not offered here.) The response is additionally sorted cheapest-first by `price`.","on_invalid":"reject","allowed_values":[{"value":"price","label":"Cheapest item price first (skroutz's own default)"},{"value":"final_price","label":"Cheapest price INCLUDING shipping first"}],"default":"price"},{"name":"include_product","type":"boolean","required":false,"description":"false (default) keeps this a single 105 KB request and returns the product block skroutz publishes on the merchant table itself (id, brand, category, price band, offer count) with `title` null. true fetches the product page as well so `product.title`, images, rating and specs are filled in — one extra request, ~200 KB.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, title (null unless include_product=true), brand, category, url, price_min, price_max (the REAL band, computed from the merchant rows below), price_min_display, price_max_display, currency=EUR, offer_count, offer_count_published (skroutz's own '14 Καταστήματα' figure), rating, review_count, rating_scale (null)} + offers[]{position, offer_id, seller{id, name, url, rating (null for a shop skroutz has not rated), rating_count, location, store_pickup, official_reseller}, price (number — the price AFTER any running coupon), price_display, price_before_discount, discount, currency=EUR, shipping_cost, shipping_display, free_shipping, total_price, delivery_estimate, stock, stock_quantity (null when the shop declares a band like '5+'), offer_url, offer_title, brand, promoted, product_id} + count, cheapest, most_expensive","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"809"}}]},{"name":"snapchat","category":{"id":"social","title":"Social Media"},"title":"Snapchat Public Data API scraper — public profiles, stories, highlights, AR lenses and Spotlight videos from snapchat.com without login: display name, snapcode, subscriber count, bio, website, verified badge, public story snaps, curated and Spotlight highlights, a creator's lenses, the trending Spotlight feed with engagement stats, and lens directory/detail — no API key or account required","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/snapchat/v1","spec_available":true,"actions":[{"name":"profile","description":"Full public Snapchat profile by username: display name, snapcode, subscriber count, bio, website, verified badge, profile picture, business id, related/suggested accounts, plus flags for whether the account has a live story and saved highlights.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"Snapchat public username — the name in snapchat.com/add/<username> (with or without a leading @). Public creator/brand accounts only.","on_invalid":"reject","example":"kyliejenner","aliases":["user","handle"]}],"returns":"profile{username, display_name, bio, subscriber_count, website_url, profile_pic, snapcode_url, is_verified, category, publisher_type, business_profile_id, has_story, has_curated_highlights, has_spotlight_highlights, created_at_ms, related_accounts[]}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"kyliejenner"}},{"name":"story","description":"The account's current public story — the live snaps (image/video media URLs, timestamps, titles) that the profile is publicly broadcasting right now.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"Snapchat public username — the name in snapchat.com/add/<username> (with or without a leading @). Public creator/brand accounts only.","on_invalid":"reject","example":"kyliejenner","aliases":["user","handle"]},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-100). The page is sliced; omit for all.","on_invalid":"ignore","example":25,"minimum":1,"maximum":100}],"returns":"story{story_id, thumbnail_url, snap_count, snaps[]{snap_id, media_type, media_url, media_preview_url, timestamp_sec, title}}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"kyliejenner"}},{"name":"highlights","description":"The account's saved public highlight stories (curated highlights + Spotlight highlights), each with its snaps. First page (the SSR page serves the first batch; deeper pagination is not exposed to logged-out clients).","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"Snapchat public username — the name in snapchat.com/add/<username> (with or without a leading @). Public creator/brand accounts only.","on_invalid":"reject","example":"kyliejenner","aliases":["user","handle"]},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-100). The page is sliced; omit for all.","on_invalid":"ignore","example":25,"minimum":1,"maximum":100}],"returns":"curated_highlights[]{story_id, title, thumbnail_url, snap_count, snaps[]}, spotlight_highlights[]{story_id, thumbnail_url, snap_count, snaps[]}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"kyliejenner"}},{"name":"lenses","description":"The creator's own public AR lenses listed on their profile: name, preview image/video, icon, unlock URL and scannable UUID.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"Snapchat public username — the name in snapchat.com/add/<username> (with or without a leading @). Public creator/brand accounts only.","on_invalid":"reject","example":"kyliejenner","aliases":["user","handle"]},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-100). The page is sliced; omit for all.","on_invalid":"ignore","example":25,"minimum":1,"maximum":100}],"returns":"lenses[]{lens_id, scannable_uuid, name, creator_display_name, preview_image_url, preview_video_url, icon_url, unlock_url, is_official}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"kyliejenner"}},{"name":"spotlight","description":"The public trending Spotlight feed — ~25 popular Spotlight videos with engagement stats (views, shares, comments, boosts), creator, AI-generated title/description/keywords and media URLs. No input needed; returns what Snapchat is surfacing now.","required_params":[],"optional_params":[],"params":[{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-100). The page is sliced; omit for all.","on_invalid":"ignore","example":25,"minimum":1,"maximum":100}],"returns":"stories[]{story_id, url, thumbnail_url, name, description, view_count, share_count, comment_count, boost_count, duration_ms, creator, ai_title, ai_keywords[], snaps[]}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"spotlight_detail","description":"Full metadata for one public Spotlight video by its story id (from a spotlight result's story_id or a snapchat.com/spotlight/<id> URL): name, description, view count, duration, dimensions, creator and media URL.","required_params":["story_id"],"optional_params":[],"params":[{"name":"story_id","type":"string","required":true,"description":"Spotlight story id (the code in snapchat.com/spotlight/<id>). A full Spotlight URL is also accepted.","on_invalid":"reject","example":"W7_EDlXWTBiXAEEniNoMPwAAYa2l2eW9jZ3F5AZpsBHb6","aliases":["id","url"]}],"returns":"video{name, description, thumbnail_url, content_url, view_count, duration_ms, width, height, creator, upload_date_ms}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"lens_directory","description":"Snapchat's public top/trending AR lens directory: the featured lenses plus the lens category list. First page (the SSR catalog serves the first ~25; deeper cursor pagination is not exposed to logged-out clients).","required_params":[],"optional_params":[],"params":[{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-100). The page is sliced; omit for all.","on_invalid":"ignore","example":25,"minimum":1,"maximum":100}],"returns":"lenses[]{lens_id, scannable_uuid, name, creator_display_name, preview_image_url, icon_url, unlock_url, is_official, search_tags[]}, categories[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"lens_detail","description":"Detail for one public AR lens by its scannable UUID (from a lens result's scannable_uuid or a snapchat.com/lens/<uuid> URL): name, creator, preview media, unlock URL, the Spotlight videos that use this lens, and related lenses.","required_params":["uuid"],"optional_params":[],"params":[{"name":"uuid","type":"string","required":true,"description":"Lens scannable UUID (the code in snapchat.com/lens/<uuid>). A full lens URL is also accepted.","on_invalid":"reject","example":"565e7595ec4e4a0da689762b127308ef","aliases":["scannable_uuid","lens","url"]}],"returns":"lens{lens_id, scannable_uuid, name, creator_display_name, preview_image_url, preview_video_url, icon_url, unlock_url, spotlights_using_lens[], more_lenses[]}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"snkrdunk","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"SNKRDUNK API — live Japanese trading-card and sneaker marketplace data scraper: card search, product detail, every live listing with its grade (PSA 10, A-D) and price in USD, the floor price per grade for daily price tracking, a 30-product batch lookup and full brand catalogues from snkrdunk.com — no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/snkrdunk/v1","spec_available":true,"actions":[{"name":"search","description":"Search SNKRDUNK by keyword. Returns trading cards (and, when `include_sneakers` is on, sneakers) with the current floor price, the live listing count and the id you feed into every other action. `total` is the source's own match count, so you can page through a whole set.","required_params":["query"],"optional_params":["page","limit","include_sneakers"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for: a card name, set, character, sneaker model or product number ('charizard', 'umbreon vmax', 'one piece op-01').","on_invalid":"reject","example":"charizard","aliases":["q","keyword","term"]},{"name":"page","type":"integer","required":false,"description":"1-based page number.","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page (1-100). The source refuses more than 100.","on_invalid":"ignore","default":30,"minimum":1,"maximum":100,"aliases":["per_page"]},{"name":"include_sneakers","type":"boolean","required":false,"description":"Also return the sneaker matches. Off by default, because the trading-card half is what this endpoint is for.","on_invalid":"ignore","default":false}],"returns":"results[]{product_id, code, url, name, product_number, min_price_usd, listing_count, offer_count, released_at, image, is_trading_card}, sneakers[] (optional), total, page, limit","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/detail","description":"One product record by id, code or URL: name, product number, brand, the current floor price, how many listings are live and the images. Optionally merges the floor price per grade and the other prints of the same card in the SAME call.","required_params":["product_id"],"optional_params":["include_prices","include_variations"],"params":[{"name":"product_id","type":"string","required":false,"description":"The product to read. Accepts the numeric id (107574), the site code (SW---107574) or a snkrdunk.com product URL.","on_invalid":"reject","example":107574,"aliases":["id","code","url","trading_card_id"]},{"name":"include_prices","type":"boolean","required":false,"description":"Also return the floor price per grade (one extra upstream call).","on_invalid":"ignore","default":false},{"name":"include_variations","type":"boolean","required":false,"description":"Also return the other prints/variants of this card.","on_invalid":"ignore","default":false}],"returns":"product{product_id, code, url, name, product_number, brand, min_price_usd, listing_count, offer_count, image, images} + prices_by_condition[] (optional) + variations[] (optional)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/listings","description":"Every live listing on one product: price in USD, grade (PSA 10, A, B, C, D), whether it is still for sale and an opaque listing id. This is the order book a pricing model reads, and the only place the source publishes individual asks.","required_params":["product_id"],"optional_params":["page","limit","sort","only_on_sale"],"params":[{"name":"product_id","type":"string","required":false,"description":"The product to read. Accepts the numeric id (107574), the site code (SW---107574) or a snkrdunk.com product URL.","on_invalid":"reject","example":107574,"aliases":["id","code","url","trading_card_id"]},{"name":"page","type":"integer","required":false,"description":"1-based page number.","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page (1-100). The source refuses more than 100.","on_invalid":"ignore","default":30,"minimum":1,"maximum":100,"aliases":["per_page"]},{"name":"sort","type":"string","required":false,"description":"`latest` for newest first, anything else for the source's own order. Measured: these are the only two orders the source actually applies.","on_invalid":"ignore","allowed_values":[{"value":"latest","label":"Newest listings first"},{"value":"default","label":"The source's own ordering"}],"default":"default","example":"latest","aliases":["sort_type"]},{"name":"only_on_sale","type":"boolean","required":false,"description":"Only listings that are still for sale. Default false, which also returns recently sold ones (each carries `is_sold`).","on_invalid":"ignore","default":false}],"returns":"listings[]{listing_id, price_usd, price_display, currency, condition, condition_note, size, is_sold, is_new, image}, product{product_id, code, url, name} (identity only — this envelope carries no floor price or listing count; use product/detail for those), page, limit","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"prices_by_condition","description":"The current floor price for each grade of one card (PSA 10, A, B, C, D and the rest). One small call per card, which is what a daily price tracker stores.","required_params":["product_id"],"optional_params":[],"params":[{"name":"product_id","type":"string","required":false,"description":"The product to read. Accepts the numeric id (107574), the site code (SW---107574) or a snkrdunk.com product URL.","on_invalid":"reject","example":107574,"aliases":["id","code","url","trading_card_id"]}],"returns":"prices[]{condition_id, condition, min_price_usd, min_price_display}, product_id","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"products/batch","description":"Up to 30 products in ONE call: name, floor price, listing count and image for each. This is how a catalogue of thousands is refreshed without spending a call per card. Ids that no longer exist are simply absent from the answer.","required_params":["product_ids"],"optional_params":[],"params":[{"name":"product_ids","type":"array","required":true,"description":"Up to 30 product ids, codes or URLs. Accepts a JSON array or a comma-separated string.","on_invalid":"reject","example":[107574,882281],"maximum":30,"aliases":["ids","identifiers","codes"]}],"returns":"products[]{product_id, code, url, name, min_price_usd, listing_count, image}, requested, returned, missing[] (min_price_display is null here: the batch rows carry the number, not the formatted string)","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/variations","description":"The other prints and variants of the same card (or the other colourways of a sneaker), each with its own id and floor price.","required_params":["product_id"],"optional_params":[],"params":[{"name":"product_id","type":"string","required":false,"description":"The product to read. Accepts the numeric id (107574), the site code (SW---107574) or a snkrdunk.com product URL.","on_invalid":"reject","example":107574,"aliases":["id","code","url","trading_card_id"]}],"returns":"variations[]{product_id, code, url, name, min_price_usd, image}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"browse","description":"Walk the used trading-card market: every card with a live listing, filtered by brand and category, newest first or in the source's own order. Use it to build a catalogue without a keyword.","required_params":[],"optional_params":["brand","category_id","page","limit","sort","only_on_sale"],"params":[{"name":"brand","type":"string","required":false,"description":"Brand slug ('pokemon', 'one-piece', 'yu-gi-oh'). Omit for all.","on_invalid":"ignore","example":"pokemon","aliases":["brand_id","brand_slug"]},{"name":"category_id","type":"integer","required":false,"description":"Category id from brand/detail. Omit for all categories.","on_invalid":"ignore","example":25},{"name":"page","type":"integer","required":false,"description":"1-based page number.","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page (1-100). The source refuses more than 100.","on_invalid":"ignore","default":30,"minimum":1,"maximum":100,"aliases":["per_page"]},{"name":"sort","type":"string","required":false,"description":"`latest` for newest first, anything else for the source's own order. Measured: these are the only two orders the source actually applies.","on_invalid":"ignore","allowed_values":[{"value":"latest","label":"Newest listings first"},{"value":"default","label":"The source's own ordering"}],"default":"default","example":"latest","aliases":["sort_type"]},{"name":"only_on_sale","type":"boolean","required":false,"description":"Only listings that are still for sale. Default false, which also returns recently sold ones (each carries `is_sold`).","on_invalid":"ignore","default":false}],"returns":"cards[]{listing_id, trading_card_id, url, name, price_usd, condition, is_sold, image}, page, limit","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"brand/products","description":"One brand's catalogue, paged: every product SNKRDUNK carries for that brand with its floor price and listing count. With `department=tradingCard` this is the route that builds a card database set by set.","required_params":["brand"],"optional_params":["department","page","limit"],"params":[{"name":"brand","type":"string","required":true,"description":"Brand slug exactly as it appears in a snkrdunk URL. Trading cards: pokemon, yu-gi-oh, onepiece, dragonball, mtg. Sneakers and apparel use their own slugs ('nike', 'supreme', 'air-jordan', 'newbalance').","on_invalid":"reject","example":"pokemon","aliases":["brand_id","brand_slug"]},{"name":"department","type":"string","required":false,"description":"Which half of the marketplace to read.","on_invalid":"ignore","allowed_values":[{"value":"tradingCard","label":"Trading cards"},{"value":"sneaker","label":"Sneakers"},{"value":"streetwear","label":"Apparel and collectibles"}],"default":"tradingCard"},{"name":"page","type":"integer","required":false,"description":"1-based page number.","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Rows per page (1-100). The source refuses more than 100.","on_invalid":"ignore","default":30,"minimum":1,"maximum":100,"aliases":["per_page"]}],"returns":"results[]{product_id, code, url, name, product_number, min_price_usd, listing_count, released_at, image}, brand, page, limit","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"brand/detail","description":"One brand record and the category ids under it — the ids `browse` takes.","required_params":["brand"],"optional_params":[],"params":[{"name":"brand","type":"string","required":true,"description":"Brand slug exactly as it appears in a snkrdunk URL. Trading cards: pokemon, yu-gi-oh, onepiece, dragonball, mtg. Sneakers and apparel use their own slugs ('nike', 'supreme', 'air-jordan', 'newbalance').","on_invalid":"reject","example":"pokemon","aliases":["brand_id","brand_slug"]}],"returns":"brand{id, name}, categories[]{id, name, title}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"conditions","description":"The grade enum the marketplace uses (A, B, C, D and the PSA grades), with the id and key behind each label. The values `condition` fields come back as.","required_params":[],"optional_params":[],"params":[],"returns":"conditions[]{id, name, key}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"sports-data","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Sports Data API — live scores, fixtures, standings, teams, players & odds (ESPN + SofaScore)","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/sports-data/v1","spec_available":true,"actions":[{"name":"scores","description":"Live and final scores for a league — pass a date (YYYYMMDD) or range to get scores for any day; omit it for today/in-play games.","required_params":["sport","league"],"optional_params":["date","dates"],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"},{"name":"date","type":"string","required":false,"description":"Date filter, ESPN format YYYYMMDD (or a range 'YYYYMMDD-YYYYMMDD'). Omit for today / live.","on_invalid":"ignore","example":"20260115","aliases":["dates"]}],"returns":"events[] (scoreboard: teams, score, status, competition), count","cacheable":true,"cache_ttl_seconds":30,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"soccer","league":"eng.1","dates":"20260301-20260331"}},{"name":"fixtures","description":"Upcoming fixtures and the match schedule for a league, by date or date range (same event shape as scores).","required_params":["sport","league"],"optional_params":["date","dates"],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"},{"name":"date","type":"string","required":false,"description":"Date filter, ESPN format YYYYMMDD (or a range 'YYYYMMDD-YYYYMMDD'). Omit for today / live.","on_invalid":"ignore","example":"20260115","aliases":["dates"]}],"returns":"events[] (schedule by date/range), count","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"soccer","league":"eng.1","dates":"20260301-20260331"}},{"name":"standings","description":"Full league table / standings with wins, losses, points and per-team stats (soccer leagues accept a season year).","required_params":["sport","league"],"optional_params":["season"],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025}],"returns":"league, season, standings[]{rank,team,played,wins,draws,losses,points}, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"basketball","league":"nba"}},{"name":"team","description":"Every team in a league, or one team's detail (record, next game, logo) when you pass a team_id.","required_params":["sport","league"],"optional_params":["team_id"],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"},{"name":"team_id","type":"string","required":false,"description":"ESPN team id — get it from the `team` action's teams[].team_id for the same sport/league (e.g. 13 = NBA Denver Nuggets).","on_invalid":"reject","example":"13"}],"returns":"teams[] for the league, OR a single team{} when team_id is given","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"basketball","league":"nba"}},{"name":"roster","description":"A team's full roster / squad with jersey, position, age, height, weight and nationality for each player.","required_params":["sport","league","team_id"],"optional_params":[],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"},{"name":"team_id","type":"string","required":true,"description":"ESPN team id — get it from the `team` action's teams[].team_id for the same sport/league (e.g. 13 = NBA Denver Nuggets).","on_invalid":"reject","example":"13"}],"returns":"roster{} — squad with player fields, player_count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"basketball","league":"nba","team_id":"13"}},{"name":"summary","description":"Full match summary: boxscore, per-player stats, lineups, play-by-play count, head-to-head, win probability and odds.","required_params":["sport","league","event_id"],"optional_params":[],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"},{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"boxscore + player stats + play-by-play + H2H + win-probability + lineups + pickcenter","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":2},"example_params":{"sport":"baseball","league":"mlb","event_id":"401815591"}},{"name":"odds","description":"Betting odds (moneyline, spread, over/under) — for one game by event_id, or every scheduled game in the league that has odds.","required_params":["sport","league"],"optional_params":["event_id","dates"],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"},{"name":"event_id","type":"string","required":false,"description":"Optional ESPN event id: returns the closing line for that one game; omit to list every scheduled game that currently has odds.","on_invalid":"reject","example":"401815591"},{"name":"date","type":"string","required":false,"description":"Date filter, ESPN format YYYYMMDD (or a range 'YYYYMMDD-YYYYMMDD'). Omit for today / live.","on_invalid":"ignore","example":"20260115","aliases":["dates"]}],"returns":"events_with_odds[] (or odds[] for one event_id): moneyline/spread/total, count","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"baseball","league":"mlb","event_id":"401815591"}},{"name":"news","description":"Latest news headlines and articles for a league.","required_params":["sport","league"],"optional_params":[],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"}],"returns":"league, articles[] (headlines), count","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"basketball","league":"nba"}},{"name":"search","description":"Look up a team or player by name across all sports (returns ids, badges, league, country) — start here when you only have a name.","required_params":["query"],"optional_params":["type"],"params":[{"name":"query","type":"string","required":true,"description":"Search text for a team/player/tournament/manager/referee.","on_invalid":"reject","example":"Messi","aliases":["q"]},{"name":"type","type":"enum","required":false,"description":"What to look up in the (thesportsdb) search. Defaults to team.","on_invalid":"ignore","allowed_values":[{"value":"team","label":"Teams"},{"value":"player","label":"Players"}],"default":"team","example":"player"}],"returns":"type, query, results[] (teams or players from thesportsdb), count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Arsenal","type":"team"}},{"name":"injuries","description":"Current injury report for a league, grouped by team, with each player's status and detail.","required_params":["sport","league"],"optional_params":[],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"}],"returns":"league, teams[]{team, injuries[]{player,position,status,date,detail}}, count","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"basketball","league":"nba"}},{"name":"team_schedule","description":"One team's full season schedule and results (every game the team plays, unlike league-wide fixtures).","required_params":["sport","league","team_id"],"optional_params":["season"],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"},{"name":"team_id","type":"string","required":true,"description":"ESPN team id — get it from the `team` action's teams[].team_id for the same sport/league (e.g. 13 = NBA Denver Nuggets).","on_invalid":"reject","example":"13"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025}],"returns":"team, season, events[] (same shape as scores/fixtures), count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"basketball","league":"nba","team_id":"13"}},{"name":"conferences","description":"A league's conference / division structure (the directory of groups and sub-groups, e.g. college conferences).","required_params":["sport","league"],"optional_params":[],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"},{"name":"league","type":"enum","required":true,"description":"League key (e.g. nba, nfl, mlb, nhl, eng.1, esp.1, ita.1, ger.1, fra.1, uefa.champions, usa.1) or a raw ESPN segment ('bra.1') / cricket series id. SofaScore actions also accept a numeric tournament id.","on_invalid":"ignore","allowed_values":[{"value":"nba","label":"NBA"},{"value":"wnba","label":"WNBA"},{"value":"ncaam","label":"NCAA Men's Basketball"},{"value":"ncaaw","label":"NCAA Women's Basketball"},{"value":"nfl","label":"NFL"},{"value":"ncaaf","label":"NCAA Football"},{"value":"mlb","label":"MLB"},{"value":"college-baseball","label":"NCAA Baseball"},{"value":"nhl","label":"NHL"},{"value":"atp","label":"ATP"},{"value":"wta","label":"WTA"},{"value":"eng.1","label":"English Premier League"},{"value":"eng.2","label":"EFL Championship"},{"value":"esp.1","label":"Spanish La Liga"},{"value":"ita.1","label":"Italian Serie A"},{"value":"ger.1","label":"German Bundesliga"},{"value":"fra.1","label":"French Ligue 1"},{"value":"ned.1","label":"Dutch Eredivisie"},{"value":"por.1","label":"Portuguese Primeira Liga"},{"value":"usa.1","label":"Major League Soccer"},{"value":"mex.1","label":"Liga MX"},{"value":"bra.1","label":"Brazilian Serie A"},{"value":"uefa.champions","label":"UEFA Champions League"},{"value":"uefa.europa","label":"UEFA Europa League"},{"value":"fifa.world","label":"FIFA World Cup"},{"value":"ipl","label":"Indian Premier League"},{"value":"bbl","label":"Big Bash League"},{"value":"sheffield-shield","label":"Sheffield Shield"},{"value":"county-championship","label":"County Championship Div One"},{"value":"cricket-world-cup","label":"ICC Cricket World Cup"}],"example":"eng.1"}],"returns":"league, groups[]{name,abbreviation,is_conference,children[] (nested conferences/divisions)}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"basketball","league":"ncaam"}},{"name":"leagues","description":"Directory of every supported league/competition (key, name, sport) — call this first to discover the league keys the other actions take.","required_params":[],"optional_params":["sport"],"params":[{"name":"sport","type":"enum","required":false,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"example":"soccer"}],"returns":"sport, leagues[]{league (key to pass to other actions), name, sport}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"entity_search","description":"search players/teams/tournaments/managers/referees → SofaScore ids","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Search text for a team/player/tournament/manager/referee.","on_invalid":"reject","example":"Messi","aliases":["q"]}],"returns":"query, results[]{type,id,name,slug,sport,country}, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Haaland"}},{"name":"live_events","description":"all in-play events for a sport","required_params":["sport"],"optional_params":[],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"default":"football","example":"football"}],"returns":"sport, events[] (in-play, unified brief), count","cacheable":true,"cache_ttl_seconds":15,"pricing":{"mode":"flat","credits":1},"example_params":{"sport":"soccer"}},{"name":"scheduled_events","description":"all scheduled events for a sport on a date","required_params":["sport","date"],"optional_params":[],"params":[{"name":"sport","type":"enum","required":true,"description":"Sport family (ESPN path). Required with a raw league segment; a known league key (e.g. 'nba') can resolve the sport on its own.","on_invalid":"ignore","allowed_values":[{"value":"baseball","label":"Baseball"},{"value":"basketball","label":"Basketball"},{"value":"cricket","label":"Cricket"},{"value":"football","label":"Football"},{"value":"hockey","label":"Hockey"},{"value":"soccer","label":"Soccer"},{"value":"tennis","label":"Tennis"}],"default":"football","example":"football"},{"name":"date","type":"string","required":true,"description":"Date filter, ESPN format YYYYMMDD (or a range 'YYYYMMDD-YYYYMMDD'). Omit for today / live.","on_invalid":"ignore","example":"20260115","aliases":["dates"]}],"returns":"sport, date, events[] (scheduled, unified brief), count","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"tournament_seasons","description":"Every season available for a competition (season id + year) — use the id to scope season-specific calls.","required_params":["league"],"optional_params":[],"params":[{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"}],"returns":"unique_tournament_id, seasons[]{season_id,name,year}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"league":"eng.1"}},{"name":"match_statistics","description":"detailed match stats (possession/shots/xG)","required_params":["event_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"per-period stat groups (possession/shots/xG/...) keyed by period","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":2},"example_params":{"event_id":"14025079"}},{"name":"match_lineups","description":"lineups + per-player ratings & stats","required_params":["event_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"confirmed, home/away{formation, players[]{rating,minutes,goals,...}, missing[]}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":2},"example_params":{"event_id":"14025079"}},{"name":"match_momentum","description":"attack-momentum graph","required_params":["event_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"momentum[]{minute,value}, period_minutes, periods","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"event_id":"14025079"}},{"name":"match_incidents","description":"goal/card/sub timeline","required_params":["event_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"event_id, items[] (goal/card/sub timeline), count","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"event_id":"14025079"}},{"name":"match_best_players","description":"best player per team","required_params":["event_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"home/away best player {name,rating,label}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"event_id":"401815591"}},{"name":"match_h2h","description":"head-to-head duel record","required_params":["event_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"team_duel{home_wins,away_wins,draws}, manager_duel","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"event_id":"14025079"}},{"name":"match_managers","description":"both managers for a match","required_params":["event_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"home/away manager {manager_id,name}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"event_id":"401815591"}},{"name":"match_odds","description":"multi-market odds for a match","required_params":["event_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"event_id, markets[]{market,choices[]{name,odds,...}}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":2},"example_params":{"event_id":"401815591"}},{"name":"match_player_heatmap","description":"a player's touch heatmap in a match","required_params":["event_id","player_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"},{"name":"player_id","type":"string","required":true,"description":"SofaScore player id (e.g. 839956 = Erling Haaland). Resolve unknown players from a SofaScore player URL or a team_squad result.","on_invalid":"reject","example":"839956"}],"returns":"points[]{x,y}, count (a player's touch heatmap in the match)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"event_id":"401815591","player_id":"839956"}},{"name":"match_player_shotmap","description":"a player's shotmap in a match","required_params":["event_id","player_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"},{"name":"player_id","type":"string","required":true,"description":"SofaScore player id (e.g. 839956 = Erling Haaland). Resolve unknown players from a SofaScore player URL or a team_squad result.","on_invalid":"reject","example":"839956"}],"returns":"shots[]{player,shot_type,x,y,xg,minute}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"event_id":"401815591","player_id":"839956"}},{"name":"match_average_positions","description":"average player positions on the pitch","required_params":["event_id"],"optional_params":[],"params":[{"name":"event_id","type":"string","required":true,"description":"ESPN event/game id — take it from the `event_id` of any scores, fixtures or team_schedule result for the same sport/league.","on_invalid":"reject","example":"401815591"}],"returns":"home/away[]{player,avg_x,avg_y,touches}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"event_id":"14025079"}},{"name":"player","description":"Player profile: current team, position, market value, preferred foot, height, date of birth and contract — by SofaScore player id.","required_params":["player_id"],"optional_params":[],"params":[{"name":"player_id","type":"string","required":true,"description":"SofaScore player id (e.g. 839956 = Erling Haaland). Resolve unknown players from a SofaScore player URL or a team_squad result.","on_invalid":"reject","example":"839956"}],"returns":"player profile {name,team,position,value,foot,contract,...}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"player_id":"839956"}},{"name":"player_season_stats","description":"player's season statistics in a league","required_params":["player_id","league"],"optional_params":["season","type"],"params":[{"name":"player_id","type":"string","required":true,"description":"SofaScore player id (e.g. 839956 = Erling Haaland). Resolve unknown players from a SofaScore player URL or a team_squad result.","on_invalid":"reject","example":"839956"},{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"type","type":"enum","required":false,"description":"Stat split. Other SofaScore split keys are accepted but a wrong one 404s.","on_invalid":"ignore","allowed_values":[{"value":"overall","label":"All competitions"},{"value":"home","label":"Home only"},{"value":"away","label":"Away only"}],"default":"overall","example":"overall"},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"team, statistics{} for the season","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"player_id":"839956","league":"eng.1","season_id":"61627"}},{"name":"player_heatmap","description":"player's season heatmap","required_params":["player_id","league"],"optional_params":["season"],"params":[{"name":"player_id","type":"string","required":true,"description":"SofaScore player id (e.g. 839956 = Erling Haaland). Resolve unknown players from a SofaScore player URL or a team_squad result.","on_invalid":"reject","example":"839956"},{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"points[]{x,y}, count (season heatmap)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"player_id":"839956","league":"eng.1"}},{"name":"player_attributes","description":"player attribute radar (att/tech/tac/def/cre)","required_params":["player_id"],"optional_params":[],"params":[{"name":"player_id","type":"string","required":true,"description":"SofaScore player id (e.g. 839956 = Erling Haaland). Resolve unknown players from a SofaScore player URL or a team_squad result.","on_invalid":"reject","example":"839956"}],"returns":"player + position_average attribute radars","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"player_id":"839956"}},{"name":"player_transfers","description":"A player's full transfer history (from/to club, fee, date) by SofaScore player id.","required_params":["player_id"],"optional_params":[],"params":[{"name":"player_id","type":"string","required":true,"description":"SofaScore player id (e.g. 839956 = Erling Haaland). Resolve unknown players from a SofaScore player URL or a team_squad result.","on_invalid":"reject","example":"839956"}],"returns":"transfers[]{from,to,fee,date}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"player_id":"839956"}},{"name":"player_recent","description":"player's recent matches","required_params":["player_id"],"optional_params":[],"params":[{"name":"player_id","type":"string","required":true,"description":"SofaScore player id (e.g. 839956 = Erling Haaland). Resolve unknown players from a SofaScore player URL or a team_squad result.","on_invalid":"reject","example":"839956"}],"returns":"player_id, recent_matches[] (unified brief), count","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"player_id":"839956"}},{"name":"team_details","description":"Team profile: manager, venue, founding year and recent pregame form — by SofaScore team id.","required_params":["team_id"],"optional_params":[],"params":[{"name":"team_id","type":"string","required":true,"description":"SofaScore team id (NOT the ESPN id) — e.g. 17 = Manchester City, 42 = Arsenal. Resolve unknown teams via a SofaScore team URL.","on_invalid":"reject","example":"17"}],"returns":"team profile {name,manager,venue,founded,pregame_form,...}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"team_id":"17"}},{"name":"team_squad","description":"A club's full current squad (every player with id, position, value) by SofaScore team id.","required_params":["team_id"],"optional_params":[],"params":[{"name":"team_id","type":"string","required":true,"description":"SofaScore team id (NOT the ESPN id) — e.g. 17 = Manchester City, 42 = Arsenal. Resolve unknown teams via a SofaScore team URL.","on_invalid":"reject","example":"17"}],"returns":"team_id, squad[] (players), count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"team_id":"17"}},{"name":"team_transfers","description":"A club's transfers in and out (player, club, fee, date) by SofaScore team id.","required_params":["team_id"],"optional_params":[],"params":[{"name":"team_id","type":"string","required":true,"description":"SofaScore team id (NOT the ESPN id) — e.g. 17 = Manchester City, 42 = Arsenal. Resolve unknown teams via a SofaScore team URL.","on_invalid":"reject","example":"17"}],"returns":"transfers{in[],out[]}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"team_id":"17"}},{"name":"team_season_stats","description":"team's season statistics in a league","required_params":["team_id","league"],"optional_params":["season","type"],"params":[{"name":"team_id","type":"string","required":true,"description":"SofaScore team id (NOT the ESPN id) — e.g. 17 = Manchester City, 42 = Arsenal. Resolve unknown teams via a SofaScore team URL.","on_invalid":"reject","example":"17"},{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"type","type":"enum","required":false,"description":"Stat split. Other SofaScore split keys are accepted but a wrong one 404s.","on_invalid":"ignore","allowed_values":[{"value":"overall","label":"All competitions"},{"value":"home","label":"Home only"},{"value":"away","label":"Away only"}],"default":"overall","example":"overall"},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"statistics{} for the team's season","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"team_id":"17","league":"eng.1","season_id":"61627"}},{"name":"team_form","description":"team recent form + next/prev event","required_params":["team_id"],"optional_params":[],"params":[{"name":"team_id","type":"string","required":true,"description":"SofaScore team id (NOT the ESPN id) — e.g. 17 = Manchester City, 42 = Arsenal. Resolve unknown teams via a SofaScore team URL.","on_invalid":"reject","example":"17"}],"returns":"recent[]{result}, next_event, previous_event","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"team_id":"13"}},{"name":"team_goal_distributions","description":"goals scored/conceded by match period","required_params":["team_id","league"],"optional_params":["season"],"params":[{"name":"team_id","type":"string","required":true,"description":"SofaScore team id (NOT the ESPN id) — e.g. 17 = Manchester City, 42 = Arsenal. Resolve unknown teams via a SofaScore team URL.","on_invalid":"reject","example":"17"},{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"distributions[] (goals scored/conceded by match period)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"team_id":"13","league":"eng.1"}},{"name":"season_standings","description":"SofaScore league table for a competition (overall / home / away splits) with goals for/against and goal difference.","required_params":["league"],"optional_params":["season","type"],"params":[{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"type","type":"enum","required":false,"description":"Which standings table to return.","on_invalid":"ignore","allowed_values":[{"value":"total","label":"Overall table"},{"value":"home","label":"Home table"},{"value":"away","label":"Away table"}],"default":"total","example":"total"},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"standings[] tables{rows[]} (overall/home/away split, any season), count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"league":"eng.1"}},{"name":"season_top_players","description":"season leaders by category","required_params":["league"],"optional_params":["season","type"],"params":[{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"type","type":"enum","required":false,"description":"Split for the season leaders.","on_invalid":"ignore","allowed_values":[{"value":"overall","label":"Overall"},{"value":"home","label":"Home"},{"value":"away","label":"Away"}],"default":"overall","example":"overall"},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"top_players{category:[{player,team,value}]}, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"league":"eng.1","season_id":"61627"}},{"name":"season_top_teams","description":"season top teams by category","required_params":["league"],"optional_params":["season","type"],"params":[{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"type","type":"enum","required":false,"description":"Split for the season leaders.","on_invalid":"ignore","allowed_values":[{"value":"overall","label":"Overall"},{"value":"home","label":"Home"},{"value":"away","label":"Away"}],"default":"overall","example":"overall"},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"top_teams{category:[{team,value}]}, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"league":"eng.1","season_id":"61627"}},{"name":"team_of_week","description":"team of the week (round or rounds list)","required_params":["league"],"optional_params":["season","round_id"],"params":[{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"round_id","type":"string","required":false,"description":"Specific round id; omit to list the available rounds.","on_invalid":"ignore","example":"1"},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"the round's TOTW {formation,players[]} OR the rounds[] list","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"league":"eng.1"}},{"name":"power_rankings","description":"season power rankings","required_params":["league"],"optional_params":["season","round_id"],"params":[{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"round_id","type":"string","required":false,"description":"Specific round id; omit to list the available rounds.","on_invalid":"ignore","example":"1"},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"rankings[]{rank,team,points,change} (or rounds list)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"league":"eng.1"}},{"name":"cup_tree","description":"knockout bracket / cup tree","required_params":["league"],"optional_params":["season"],"params":[{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"},{"name":"season","type":"integer","required":false,"description":"Season year (soccer standings need it; default current season).","on_invalid":"ignore","example":2025},{"name":"season_id","type":"string","required":false,"description":"Explicit SofaScore season id (skips season resolution).","on_invalid":"ignore","example":"61627"}],"returns":"cup_trees[]{rounds[]{blocks[]}}, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"league":"eng.1"}},{"name":"tournament_details","description":"Competition metadata: country, tier, and the clubs with the most titles — by league key.","required_params":["league"],"optional_params":[],"params":[{"name":"league","type":"string","required":true,"description":"League key (e.g. 'eng.1', 'nba'), a raw name to search, or a SofaScore numeric unique-tournament id.","on_invalid":"reject","example":"eng.1"}],"returns":"tournament meta {name,country,tier,titles,...}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"league":"eng.1"}},{"name":"manager","description":"Manager profile and full club-by-club career history (matches, wins, points) by SofaScore manager id.","required_params":["manager_id"],"optional_params":[],"params":[{"name":"manager_id","type":"string","required":true,"description":"SofaScore manager id (from entity_search).","on_invalid":"reject","example":"794075"}],"returns":"manager profile + career[] history","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"manager_id":"794075"}},{"name":"referee","description":"referee details + per-tournament stats","required_params":["referee_id"],"optional_params":[],"params":[{"name":"referee_id","type":"string","required":true,"description":"SofaScore referee id (from entity_search).","on_invalid":"reject","example":"111815"}],"returns":"referee profile + by_tournament[] stats","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"referee_id":"65702"}},{"name":"rankings","description":"World rankings — FIFA men's football, or ATP / WTA tennis (set type; defaults to FIFA).","required_params":[],"optional_params":["type"],"params":[{"name":"type","type":"enum","required":false,"description":"Which world ranking to return. Closed set: fifa, atp, wta (a wrong value returns INVALID_PARAM).","on_invalid":"reject","allowed_values":[{"value":"fifa","label":"FIFA men"},{"value":"atp","label":"ATP tennis"},{"value":"wta","label":"WTA tennis"}],"default":"fifa","example":"fifa"}],"returns":"type, rankings[]{rank,name,points,previous_rank,country}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"fifa"}}]},{"name":"ssense","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"SSENSE API scraper — the luxury & streetwear retailer (ssense.com): search menswear, womenswear and everything-else in 235 shipping countries with local prices, read the full product (every size with real stock and GTIN, composition, made-in, final-sale and the duties line), batch prices, designer autocomplete and the designer directory. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/ssense/v1","spec_available":true,"actions":[{"name":"search","description":"Search SSENSE in any shipping country by keyword, designer or category, with the site's own sorts and the sale listing. Each row: product id, SKU, designer, name, the price a shopper pays in that country's currency, the struck price + discount %, in-stock flag, category ids and image. Totals and optional facets (designers, category tree with counts, colours, sizes). A query with no genuine match returns empty (padding counted in fallback_results_dropped).","required_params":[],"optional_params":["country","language","gender","query","sort","page","designer_id","category_id","on_sale","include_facets","include_fallback_results"],"params":[{"name":"country","type":"enum","required":false,"description":"Shipping country (ISO-2; 'uk' is accepted for gb). Prices, the currency and the duties/taxes line follow it. 235 countries. Default us.","on_invalid":"reject","allowed_values":[{"value":"ad","label":"AD (USD)"},{"value":"ae","label":"AE (USD)"},{"value":"af","label":"AF (USD)"},{"value":"ag","label":"AG (USD)"},{"value":"ai","label":"AI (USD)"},{"value":"al","label":"AL (USD)"},{"value":"am","label":"AM (USD)"},{"value":"ao","label":"AO (USD)"},{"value":"aq","label":"AQ (USD)"},{"value":"ar","label":"AR (USD)"},{"value":"as","label":"AS (USD)"},{"value":"at","label":"AT (EUR)"},{"value":"au","label":"AU (AUD)"},{"value":"aw","label":"AW (USD)"},{"value":"az","label":"AZ (USD)"},{"value":"ba","label":"BA (USD)"},{"value":"bb","label":"BB (USD)"},{"value":"bd","label":"BD (USD)"},{"value":"be","label":"BE (EUR)"},{"value":"bf","label":"BF (USD)"},{"value":"bg","label":"BG (USD)"},{"value":"bh","label":"BH (USD)"},{"value":"bi","label":"BI (USD)"},{"value":"bj","label":"BJ (USD)"},{"value":"bm","label":"BM (USD)"},{"value":"bn","label":"BN (USD)"},{"value":"bo","label":"BO (USD)"},{"value":"br","label":"BR (USD)"},{"value":"bs","label":"BS (USD)"},{"value":"bt","label":"BT (USD)"},{"value":"bv","label":"BV (USD)"},{"value":"bw","label":"BW (USD)"},{"value":"by","label":"BY (USD)"},{"value":"bz","label":"BZ (USD)"},{"value":"ca","label":"CA (CAD)"},{"value":"cc","label":"CC (USD)"},{"value":"cd","label":"CD (USD)"},{"value":"cf","label":"CF (USD)"},{"value":"cg","label":"CG (USD)"},{"value":"ch","label":"CH (EUR)"},{"value":"ci","label":"CI (USD)"},{"value":"ck","label":"CK (USD)"},{"value":"cl","label":"CL (USD)"},{"value":"cm","label":"CM (USD)"},{"value":"cn","label":"CN (USD)"},{"value":"co","label":"CO (USD)"},{"value":"cr","label":"CR (USD)"},{"value":"cv","label":"CV (USD)"},{"value":"cw","label":"CW (USD)"},{"value":"cx","label":"CX (USD)"},{"value":"cy","label":"CY (EUR)"},{"value":"cz","label":"CZ (EUR)"},{"value":"de","label":"DE (EUR)"},{"value":"dj","label":"DJ (USD)"},{"value":"dk","label":"DK (EUR)"},{"value":"dm","label":"DM (USD)"},{"value":"do","label":"DO (USD)"},{"value":"dz","label":"DZ (USD)"},{"value":"ec","label":"EC (USD)"},{"value":"ee","label":"EE (EUR)"},{"value":"eg","label":"EG (USD)"},{"value":"eh","label":"EH (USD)"},{"value":"er","label":"ER (USD)"},{"value":"es","label":"ES (EUR)"},{"value":"et","label":"ET (USD)"},{"value":"fi","label":"FI (EUR)"},{"value":"fj","label":"FJ (USD)"},{"value":"fk","label":"FK (USD)"},{"value":"fm","label":"FM (USD)"},{"value":"fo","label":"FO (USD)"},{"value":"fr","label":"FR (EUR)"},{"value":"ga","label":"GA (USD)"},{"value":"gb","label":"GB (GBP)"},{"value":"gd","label":"GD (USD)"},{"value":"ge","label":"GE (USD)"},{"value":"gf","label":"GF (USD)"},{"value":"gh","label":"GH (USD)"},{"value":"gi","label":"GI (USD)"},{"value":"gl","label":"GL (USD)"},{"value":"gm","label":"GM (USD)"},{"value":"gn","label":"GN (USD)"},{"value":"gp","label":"GP (USD)"},{"value":"gq","label":"GQ (USD)"},{"value":"gr","label":"GR (EUR)"},{"value":"gs","label":"GS (USD)"},{"value":"gt","label":"GT (USD)"},{"value":"gu","label":"GU (USD)"},{"value":"gw","label":"GW (USD)"},{"value":"gy","label":"GY (USD)"},{"value":"hk","label":"HK (HKD)"},{"value":"hm","label":"HM (USD)"},{"value":"hn","label":"HN (USD)"},{"value":"hr","label":"HR (USD)"},{"value":"ht","label":"HT (USD)"},{"value":"hu","label":"HU (EUR)"},{"value":"id","label":"ID (USD)"},{"value":"ie","label":"IE (EUR)"},{"value":"il","label":"IL (USD)"},{"value":"in","label":"IN (USD)"},{"value":"io","label":"IO (USD)"},{"value":"iq","label":"IQ (USD)"},{"value":"is","label":"IS (USD)"},{"value":"it","label":"IT (EUR)"},{"value":"jm","label":"JM (USD)"},{"value":"jo","label":"JO (USD)"},{"value":"jp","label":"JP (JPY)"},{"value":"ke","label":"KE (USD)"},{"value":"kg","label":"KG (USD)"},{"value":"kh","label":"KH (USD)"},{"value":"ki","label":"KI (USD)"},{"value":"km","label":"KM (USD)"},{"value":"kn","label":"KN (USD)"},{"value":"kr","label":"KR (USD)"},{"value":"kw","label":"KW (USD)"},{"value":"ky","label":"KY (USD)"},{"value":"kz","label":"KZ (USD)"},{"value":"la","label":"LA (USD)"},{"value":"lb","label":"LB (USD)"},{"value":"lc","label":"LC (USD)"},{"value":"li","label":"LI (USD)"},{"value":"lk","label":"LK (USD)"},{"value":"lr","label":"LR (USD)"},{"value":"ls","label":"LS (USD)"},{"value":"lt","label":"LT (EUR)"},{"value":"lu","label":"LU (EUR)"},{"value":"lv","label":"LV (EUR)"},{"value":"ly","label":"LY (USD)"},{"value":"ma","label":"MA (USD)"},{"value":"mc","label":"MC (USD)"},{"value":"md","label":"MD (USD)"},{"value":"me","label":"ME (USD)"},{"value":"mg","label":"MG (USD)"},{"value":"mh","label":"MH (USD)"},{"value":"mk","label":"MK (USD)"},{"value":"ml","label":"ML (USD)"},{"value":"mm","label":"MM (USD)"},{"value":"mn","label":"MN (USD)"},{"value":"mo","label":"MO (USD)"},{"value":"mp","label":"MP (USD)"},{"value":"mq","label":"MQ (USD)"},{"value":"mr","label":"MR (USD)"},{"value":"ms","label":"MS (USD)"},{"value":"mt","label":"MT (EUR)"},{"value":"mu","label":"MU (USD)"},{"value":"mv","label":"MV (USD)"},{"value":"mw","label":"MW (USD)"},{"value":"mx","label":"MX (USD)"},{"value":"my","label":"MY (USD)"},{"value":"mz","label":"MZ (USD)"},{"value":"na","label":"NA (USD)"},{"value":"nc","label":"NC (USD)"},{"value":"ne","label":"NE (USD)"},{"value":"nf","label":"NF (USD)"},{"value":"ng","label":"NG (USD)"},{"value":"ni","label":"NI (USD)"},{"value":"nl","label":"NL (EUR)"},{"value":"no","label":"NO (EUR)"},{"value":"np","label":"NP (USD)"},{"value":"nr","label":"NR (USD)"},{"value":"nu","label":"NU (USD)"},{"value":"nz","label":"NZ (USD)"},{"value":"om","label":"OM (USD)"},{"value":"pa","label":"PA (USD)"},{"value":"pe","label":"PE (USD)"},{"value":"pf","label":"PF (USD)"},{"value":"pg","label":"PG (USD)"},{"value":"ph","label":"PH (USD)"},{"value":"pk","label":"PK (USD)"},{"value":"pl","label":"PL (EUR)"},{"value":"pm","label":"PM (USD)"},{"value":"pn","label":"PN (USD)"},{"value":"pr","label":"PR (USD)"},{"value":"ps","label":"PS (USD)"},{"value":"pt","label":"PT (EUR)"},{"value":"pw","label":"PW (USD)"},{"value":"py","label":"PY (USD)"},{"value":"qa","label":"QA (USD)"},{"value":"re","label":"RE (USD)"},{"value":"ro","label":"RO (USD)"},{"value":"rs","label":"RS (USD)"},{"value":"ru","label":"RU (USD)"},{"value":"rw","label":"RW (USD)"},{"value":"sa","label":"SA (USD)"},{"value":"sb","label":"SB (USD)"},{"value":"sc","label":"SC (USD)"},{"value":"se","label":"SE (EUR)"},{"value":"sg","label":"SG (USD)"},{"value":"sh","label":"SH (USD)"},{"value":"si","label":"SI (EUR)"},{"value":"sj","label":"SJ (USD)"},{"value":"sk","label":"SK (EUR)"},{"value":"sl","label":"SL (USD)"},{"value":"sm","label":"SM (USD)"},{"value":"sn","label":"SN (USD)"},{"value":"so","label":"SO (USD)"},{"value":"sr","label":"SR (USD)"},{"value":"st","label":"ST (USD)"},{"value":"sv","label":"SV (USD)"},{"value":"sx","label":"SX (USD)"},{"value":"sz","label":"SZ (USD)"},{"value":"tc","label":"TC (USD)"},{"value":"td","label":"TD (USD)"},{"value":"tf","label":"TF (USD)"},{"value":"tg","label":"TG (USD)"},{"value":"th","label":"TH (USD)"},{"value":"tj","label":"TJ (USD)"},{"value":"tk","label":"TK (USD)"},{"value":"tm","label":"TM (USD)"},{"value":"tn","label":"TN (USD)"},{"value":"to","label":"TO (USD)"},{"value":"tr","label":"TR (USD)"},{"value":"tt","label":"TT (USD)"},{"value":"tv","label":"TV (USD)"},{"value":"tw","label":"TW (USD)"},{"value":"tz","label":"TZ (USD)"},{"value":"ua","label":"UA (USD)"},{"value":"ug","label":"UG (USD)"},{"value":"um","label":"UM (USD)"},{"value":"us","label":"US (USD)"},{"value":"uy","label":"UY (USD)"},{"value":"uz","label":"UZ (USD)"},{"value":"va","label":"VA (USD)"},{"value":"vc","label":"VC (USD)"},{"value":"ve","label":"VE (USD)"},{"value":"vg","label":"VG (USD)"},{"value":"vi","label":"VI (USD)"},{"value":"vn","label":"VN (USD)"},{"value":"vu","label":"VU (USD)"},{"value":"wf","label":"WF (USD)"},{"value":"ws","label":"WS (USD)"},{"value":"ye","label":"YE (USD)"},{"value":"yt","label":"YT (USD)"},{"value":"za","label":"ZA (USD)"},{"value":"zm","label":"ZM (USD)"},{"value":"zw","label":"ZW (USD)"}],"default":"us","example":"gb"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions, composition and made-in, and of the keyword index (search 'manteau' with language=fr). Independent of country. Default en.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"},{"value":"ja","label":"Japanese"},{"value":"zh","label":"Chinese"},{"value":"ko","label":"Korean"}],"default":"en","example":"fr"},{"name":"gender","type":"enum","required":false,"description":"SSENSE department. The site searches one department at a time. Default men.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Menswear"},{"value":"women","label":"Womenswear"},{"value":"everything-else","label":"Everything Else (home, pets, kids, lifestyle)"}],"default":"men","example":"women"},{"name":"query","type":"string","required":false,"description":"Keyword. Optional when designer_id or category_id is given, or with on_sale.","on_invalid":"reject","example":"moncler jacket","aliases":["q","keyword"]},{"name":"sort","type":"enum","required":false,"description":"Result order. Default: the site's own (relevance for a keyword, latest arrivals otherwise).","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"newest","label":"Latest arrivals"},{"value":"trending","label":"Trending"},{"value":"price_asc","label":"Price low→high"},{"value":"price_desc","label":"Price high→low"},{"value":"discount_desc","label":"Discount high→low"},{"value":"discount_asc","label":"Discount low→high"}],"example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page (120 rows a page, fixed by SSENSE).","on_invalid":"reject","default":1,"example":2,"minimum":1,"maximum":500},{"name":"designer_id","type":"string","required":false,"description":"SSENSE designer id (rows return brand_id; the designers action lists them all). Comma-separate several.","on_invalid":"reject","example":"115","aliases":["brand_id"]},{"name":"category_id","type":"string","required":false,"description":"SSENSE category id (from include_facets or product/detail breadcrumb), e.g. 178 men's jackets & coats. Comma-separate several.","on_invalid":"reject","example":"178"},{"name":"on_sale","type":"boolean","required":false,"description":"Only the sale listing.","on_invalid":"reject","default":false},{"name":"include_facets","type":"boolean","required":false,"description":"Also return facets: designers, the category tree with counts, colours and sizes available for this listing.","on_invalid":"reject","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When a query matches nothing, SSENSE fills the page with unrelated products. By default they are dropped (fallback_results_dropped counts them); true returns them apart in fallback_results.","on_invalid":"reject","default":false}],"returns":"results[]{product_id, sku, url, brand, brand_id, name, gender, category_ids[], price, was_price, discount_percent, on_sale, currency, in_stock, image}, count, total_results, total_pages, page, page_size, has_more, page_out_of_range, query, gender, on_sale, sort, designer_id, category_id, country, language, currency, site_currency_code, keyword_matches_on_page, fallback_results_dropped, facets{designers,categories,colors,sizes}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"country":"us","query":"jacket"}},{"name":"product/detail","description":"The full SSENSE product by id or URL in a shipping country: SKU, designer, name, description with its detail bullets and supplier colour, composition, made-in, gender, category breadcrumb, the price with struck price, discount %, final-sale flag and the duties/taxes line shown for that country, every size with its size system, SKU, GTIN, real stock quantity and low-stock flag, garment measurements, the model's size and measurements, listing date and images.","required_params":[],"optional_params":["country","language","product_id","url"],"params":[{"name":"country","type":"enum","required":false,"description":"Shipping country (ISO-2; 'uk' is accepted for gb). Prices, the currency and the duties/taxes line follow it. 235 countries. Default us.","on_invalid":"reject","allowed_values":[{"value":"ad","label":"AD (USD)"},{"value":"ae","label":"AE (USD)"},{"value":"af","label":"AF (USD)"},{"value":"ag","label":"AG (USD)"},{"value":"ai","label":"AI (USD)"},{"value":"al","label":"AL (USD)"},{"value":"am","label":"AM (USD)"},{"value":"ao","label":"AO (USD)"},{"value":"aq","label":"AQ (USD)"},{"value":"ar","label":"AR (USD)"},{"value":"as","label":"AS (USD)"},{"value":"at","label":"AT (EUR)"},{"value":"au","label":"AU (AUD)"},{"value":"aw","label":"AW (USD)"},{"value":"az","label":"AZ (USD)"},{"value":"ba","label":"BA (USD)"},{"value":"bb","label":"BB (USD)"},{"value":"bd","label":"BD (USD)"},{"value":"be","label":"BE (EUR)"},{"value":"bf","label":"BF (USD)"},{"value":"bg","label":"BG (USD)"},{"value":"bh","label":"BH (USD)"},{"value":"bi","label":"BI (USD)"},{"value":"bj","label":"BJ (USD)"},{"value":"bm","label":"BM (USD)"},{"value":"bn","label":"BN (USD)"},{"value":"bo","label":"BO (USD)"},{"value":"br","label":"BR (USD)"},{"value":"bs","label":"BS (USD)"},{"value":"bt","label":"BT (USD)"},{"value":"bv","label":"BV (USD)"},{"value":"bw","label":"BW (USD)"},{"value":"by","label":"BY (USD)"},{"value":"bz","label":"BZ (USD)"},{"value":"ca","label":"CA (CAD)"},{"value":"cc","label":"CC (USD)"},{"value":"cd","label":"CD (USD)"},{"value":"cf","label":"CF (USD)"},{"value":"cg","label":"CG (USD)"},{"value":"ch","label":"CH (EUR)"},{"value":"ci","label":"CI (USD)"},{"value":"ck","label":"CK (USD)"},{"value":"cl","label":"CL (USD)"},{"value":"cm","label":"CM (USD)"},{"value":"cn","label":"CN (USD)"},{"value":"co","label":"CO (USD)"},{"value":"cr","label":"CR (USD)"},{"value":"cv","label":"CV (USD)"},{"value":"cw","label":"CW (USD)"},{"value":"cx","label":"CX (USD)"},{"value":"cy","label":"CY (EUR)"},{"value":"cz","label":"CZ (EUR)"},{"value":"de","label":"DE (EUR)"},{"value":"dj","label":"DJ (USD)"},{"value":"dk","label":"DK (EUR)"},{"value":"dm","label":"DM (USD)"},{"value":"do","label":"DO (USD)"},{"value":"dz","label":"DZ (USD)"},{"value":"ec","label":"EC (USD)"},{"value":"ee","label":"EE (EUR)"},{"value":"eg","label":"EG (USD)"},{"value":"eh","label":"EH (USD)"},{"value":"er","label":"ER (USD)"},{"value":"es","label":"ES (EUR)"},{"value":"et","label":"ET (USD)"},{"value":"fi","label":"FI (EUR)"},{"value":"fj","label":"FJ (USD)"},{"value":"fk","label":"FK (USD)"},{"value":"fm","label":"FM (USD)"},{"value":"fo","label":"FO (USD)"},{"value":"fr","label":"FR (EUR)"},{"value":"ga","label":"GA (USD)"},{"value":"gb","label":"GB (GBP)"},{"value":"gd","label":"GD (USD)"},{"value":"ge","label":"GE (USD)"},{"value":"gf","label":"GF (USD)"},{"value":"gh","label":"GH (USD)"},{"value":"gi","label":"GI (USD)"},{"value":"gl","label":"GL (USD)"},{"value":"gm","label":"GM (USD)"},{"value":"gn","label":"GN (USD)"},{"value":"gp","label":"GP (USD)"},{"value":"gq","label":"GQ (USD)"},{"value":"gr","label":"GR (EUR)"},{"value":"gs","label":"GS (USD)"},{"value":"gt","label":"GT (USD)"},{"value":"gu","label":"GU (USD)"},{"value":"gw","label":"GW (USD)"},{"value":"gy","label":"GY (USD)"},{"value":"hk","label":"HK (HKD)"},{"value":"hm","label":"HM (USD)"},{"value":"hn","label":"HN (USD)"},{"value":"hr","label":"HR (USD)"},{"value":"ht","label":"HT (USD)"},{"value":"hu","label":"HU (EUR)"},{"value":"id","label":"ID (USD)"},{"value":"ie","label":"IE (EUR)"},{"value":"il","label":"IL (USD)"},{"value":"in","label":"IN (USD)"},{"value":"io","label":"IO (USD)"},{"value":"iq","label":"IQ (USD)"},{"value":"is","label":"IS (USD)"},{"value":"it","label":"IT (EUR)"},{"value":"jm","label":"JM (USD)"},{"value":"jo","label":"JO (USD)"},{"value":"jp","label":"JP (JPY)"},{"value":"ke","label":"KE (USD)"},{"value":"kg","label":"KG (USD)"},{"value":"kh","label":"KH (USD)"},{"value":"ki","label":"KI (USD)"},{"value":"km","label":"KM (USD)"},{"value":"kn","label":"KN (USD)"},{"value":"kr","label":"KR (USD)"},{"value":"kw","label":"KW (USD)"},{"value":"ky","label":"KY (USD)"},{"value":"kz","label":"KZ (USD)"},{"value":"la","label":"LA (USD)"},{"value":"lb","label":"LB (USD)"},{"value":"lc","label":"LC (USD)"},{"value":"li","label":"LI (USD)"},{"value":"lk","label":"LK (USD)"},{"value":"lr","label":"LR (USD)"},{"value":"ls","label":"LS (USD)"},{"value":"lt","label":"LT (EUR)"},{"value":"lu","label":"LU (EUR)"},{"value":"lv","label":"LV (EUR)"},{"value":"ly","label":"LY (USD)"},{"value":"ma","label":"MA (USD)"},{"value":"mc","label":"MC (USD)"},{"value":"md","label":"MD (USD)"},{"value":"me","label":"ME (USD)"},{"value":"mg","label":"MG (USD)"},{"value":"mh","label":"MH (USD)"},{"value":"mk","label":"MK (USD)"},{"value":"ml","label":"ML (USD)"},{"value":"mm","label":"MM (USD)"},{"value":"mn","label":"MN (USD)"},{"value":"mo","label":"MO (USD)"},{"value":"mp","label":"MP (USD)"},{"value":"mq","label":"MQ (USD)"},{"value":"mr","label":"MR (USD)"},{"value":"ms","label":"MS (USD)"},{"value":"mt","label":"MT (EUR)"},{"value":"mu","label":"MU (USD)"},{"value":"mv","label":"MV (USD)"},{"value":"mw","label":"MW (USD)"},{"value":"mx","label":"MX (USD)"},{"value":"my","label":"MY (USD)"},{"value":"mz","label":"MZ (USD)"},{"value":"na","label":"NA (USD)"},{"value":"nc","label":"NC (USD)"},{"value":"ne","label":"NE (USD)"},{"value":"nf","label":"NF (USD)"},{"value":"ng","label":"NG (USD)"},{"value":"ni","label":"NI (USD)"},{"value":"nl","label":"NL (EUR)"},{"value":"no","label":"NO (EUR)"},{"value":"np","label":"NP (USD)"},{"value":"nr","label":"NR (USD)"},{"value":"nu","label":"NU (USD)"},{"value":"nz","label":"NZ (USD)"},{"value":"om","label":"OM (USD)"},{"value":"pa","label":"PA (USD)"},{"value":"pe","label":"PE (USD)"},{"value":"pf","label":"PF (USD)"},{"value":"pg","label":"PG (USD)"},{"value":"ph","label":"PH (USD)"},{"value":"pk","label":"PK (USD)"},{"value":"pl","label":"PL (EUR)"},{"value":"pm","label":"PM (USD)"},{"value":"pn","label":"PN (USD)"},{"value":"pr","label":"PR (USD)"},{"value":"ps","label":"PS (USD)"},{"value":"pt","label":"PT (EUR)"},{"value":"pw","label":"PW (USD)"},{"value":"py","label":"PY (USD)"},{"value":"qa","label":"QA (USD)"},{"value":"re","label":"RE (USD)"},{"value":"ro","label":"RO (USD)"},{"value":"rs","label":"RS (USD)"},{"value":"ru","label":"RU (USD)"},{"value":"rw","label":"RW (USD)"},{"value":"sa","label":"SA (USD)"},{"value":"sb","label":"SB (USD)"},{"value":"sc","label":"SC (USD)"},{"value":"se","label":"SE (EUR)"},{"value":"sg","label":"SG (USD)"},{"value":"sh","label":"SH (USD)"},{"value":"si","label":"SI (EUR)"},{"value":"sj","label":"SJ (USD)"},{"value":"sk","label":"SK (EUR)"},{"value":"sl","label":"SL (USD)"},{"value":"sm","label":"SM (USD)"},{"value":"sn","label":"SN (USD)"},{"value":"so","label":"SO (USD)"},{"value":"sr","label":"SR (USD)"},{"value":"st","label":"ST (USD)"},{"value":"sv","label":"SV (USD)"},{"value":"sx","label":"SX (USD)"},{"value":"sz","label":"SZ (USD)"},{"value":"tc","label":"TC (USD)"},{"value":"td","label":"TD (USD)"},{"value":"tf","label":"TF (USD)"},{"value":"tg","label":"TG (USD)"},{"value":"th","label":"TH (USD)"},{"value":"tj","label":"TJ (USD)"},{"value":"tk","label":"TK (USD)"},{"value":"tm","label":"TM (USD)"},{"value":"tn","label":"TN (USD)"},{"value":"to","label":"TO (USD)"},{"value":"tr","label":"TR (USD)"},{"value":"tt","label":"TT (USD)"},{"value":"tv","label":"TV (USD)"},{"value":"tw","label":"TW (USD)"},{"value":"tz","label":"TZ (USD)"},{"value":"ua","label":"UA (USD)"},{"value":"ug","label":"UG (USD)"},{"value":"um","label":"UM (USD)"},{"value":"us","label":"US (USD)"},{"value":"uy","label":"UY (USD)"},{"value":"uz","label":"UZ (USD)"},{"value":"va","label":"VA (USD)"},{"value":"vc","label":"VC (USD)"},{"value":"ve","label":"VE (USD)"},{"value":"vg","label":"VG (USD)"},{"value":"vi","label":"VI (USD)"},{"value":"vn","label":"VN (USD)"},{"value":"vu","label":"VU (USD)"},{"value":"wf","label":"WF (USD)"},{"value":"ws","label":"WS (USD)"},{"value":"ye","label":"YE (USD)"},{"value":"yt","label":"YT (USD)"},{"value":"za","label":"ZA (USD)"},{"value":"zm","label":"ZM (USD)"},{"value":"zw","label":"ZW (USD)"}],"default":"us","example":"gb"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions, composition and made-in, and of the keyword index (search 'manteau' with language=fr). Independent of country. Default en.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"},{"value":"ja","label":"Japanese"},{"value":"zh","label":"Chinese"},{"value":"ko","label":"Korean"}],"default":"en","example":"fr"},{"name":"product_id","type":"string","required":false,"description":"SSENSE product id (the number at the end of a product URL; search rows return it).","on_invalid":"reject","example":"18731811","aliases":["id"]},{"name":"url","type":"string","required":false,"description":"An ssense.com product URL instead of product_id. Its /<language>-<country>/ locale sets country and language unless they are given.","on_invalid":"reject","example":"https://www.ssense.com/en-us/men/product/heliot-emil/black-vertebrae-jacket/18731811","aliases":["product_url"]}],"returns":"product{product_id, sku, url, brand, brand_id, brand_slug, name, gender, description, details[], supplier_color, composition, made_in, category_id, breadcrumb[{category_id,name,slug,level}], price, was_price, discount_percent, on_sale, price_source, final_sale, currency, site_currency_code, duties{type,label}, in_stock, stock_quantity, sizes[{size_id,size,size_label,size_system,sku,gtin,available,stock_quantity,low_stock,measurements[]}], size_count, sizes_available, model{size_worn,measurements[]}, listed_at, images[], image}, country, language","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"gb","product_id":"18731811"}},{"name":"product/prices","description":"Current SSENSE prices for up to 50 product ids in one call for a shipping country: price, struck price, discount %, final-sale flag and currency per id; unknown ids are listed apart.","required_params":["product_ids"],"optional_params":["country"],"params":[{"name":"product_ids","type":"string","required":true,"description":"Up to 50 SSENSE product ids, comma-separated (or a list).","on_invalid":"reject","example":"18731811,18530841","aliases":["ids"]},{"name":"country","type":"enum","required":false,"description":"Shipping country (ISO-2; 'uk' is accepted for gb). Prices, the currency and the duties/taxes line follow it. 235 countries. Default us.","on_invalid":"reject","allowed_values":[{"value":"ad","label":"AD (USD)"},{"value":"ae","label":"AE (USD)"},{"value":"af","label":"AF (USD)"},{"value":"ag","label":"AG (USD)"},{"value":"ai","label":"AI (USD)"},{"value":"al","label":"AL (USD)"},{"value":"am","label":"AM (USD)"},{"value":"ao","label":"AO (USD)"},{"value":"aq","label":"AQ (USD)"},{"value":"ar","label":"AR (USD)"},{"value":"as","label":"AS (USD)"},{"value":"at","label":"AT (EUR)"},{"value":"au","label":"AU (AUD)"},{"value":"aw","label":"AW (USD)"},{"value":"az","label":"AZ (USD)"},{"value":"ba","label":"BA (USD)"},{"value":"bb","label":"BB (USD)"},{"value":"bd","label":"BD (USD)"},{"value":"be","label":"BE (EUR)"},{"value":"bf","label":"BF (USD)"},{"value":"bg","label":"BG (USD)"},{"value":"bh","label":"BH (USD)"},{"value":"bi","label":"BI (USD)"},{"value":"bj","label":"BJ (USD)"},{"value":"bm","label":"BM (USD)"},{"value":"bn","label":"BN (USD)"},{"value":"bo","label":"BO (USD)"},{"value":"br","label":"BR (USD)"},{"value":"bs","label":"BS (USD)"},{"value":"bt","label":"BT (USD)"},{"value":"bv","label":"BV (USD)"},{"value":"bw","label":"BW (USD)"},{"value":"by","label":"BY (USD)"},{"value":"bz","label":"BZ (USD)"},{"value":"ca","label":"CA (CAD)"},{"value":"cc","label":"CC (USD)"},{"value":"cd","label":"CD (USD)"},{"value":"cf","label":"CF (USD)"},{"value":"cg","label":"CG (USD)"},{"value":"ch","label":"CH (EUR)"},{"value":"ci","label":"CI (USD)"},{"value":"ck","label":"CK (USD)"},{"value":"cl","label":"CL (USD)"},{"value":"cm","label":"CM (USD)"},{"value":"cn","label":"CN (USD)"},{"value":"co","label":"CO (USD)"},{"value":"cr","label":"CR (USD)"},{"value":"cv","label":"CV (USD)"},{"value":"cw","label":"CW (USD)"},{"value":"cx","label":"CX (USD)"},{"value":"cy","label":"CY (EUR)"},{"value":"cz","label":"CZ (EUR)"},{"value":"de","label":"DE (EUR)"},{"value":"dj","label":"DJ (USD)"},{"value":"dk","label":"DK (EUR)"},{"value":"dm","label":"DM (USD)"},{"value":"do","label":"DO (USD)"},{"value":"dz","label":"DZ (USD)"},{"value":"ec","label":"EC (USD)"},{"value":"ee","label":"EE (EUR)"},{"value":"eg","label":"EG (USD)"},{"value":"eh","label":"EH (USD)"},{"value":"er","label":"ER (USD)"},{"value":"es","label":"ES (EUR)"},{"value":"et","label":"ET (USD)"},{"value":"fi","label":"FI (EUR)"},{"value":"fj","label":"FJ (USD)"},{"value":"fk","label":"FK (USD)"},{"value":"fm","label":"FM (USD)"},{"value":"fo","label":"FO (USD)"},{"value":"fr","label":"FR (EUR)"},{"value":"ga","label":"GA (USD)"},{"value":"gb","label":"GB (GBP)"},{"value":"gd","label":"GD (USD)"},{"value":"ge","label":"GE (USD)"},{"value":"gf","label":"GF (USD)"},{"value":"gh","label":"GH (USD)"},{"value":"gi","label":"GI (USD)"},{"value":"gl","label":"GL (USD)"},{"value":"gm","label":"GM (USD)"},{"value":"gn","label":"GN (USD)"},{"value":"gp","label":"GP (USD)"},{"value":"gq","label":"GQ (USD)"},{"value":"gr","label":"GR (EUR)"},{"value":"gs","label":"GS (USD)"},{"value":"gt","label":"GT (USD)"},{"value":"gu","label":"GU (USD)"},{"value":"gw","label":"GW (USD)"},{"value":"gy","label":"GY (USD)"},{"value":"hk","label":"HK (HKD)"},{"value":"hm","label":"HM (USD)"},{"value":"hn","label":"HN (USD)"},{"value":"hr","label":"HR (USD)"},{"value":"ht","label":"HT (USD)"},{"value":"hu","label":"HU (EUR)"},{"value":"id","label":"ID (USD)"},{"value":"ie","label":"IE (EUR)"},{"value":"il","label":"IL (USD)"},{"value":"in","label":"IN (USD)"},{"value":"io","label":"IO (USD)"},{"value":"iq","label":"IQ (USD)"},{"value":"is","label":"IS (USD)"},{"value":"it","label":"IT (EUR)"},{"value":"jm","label":"JM (USD)"},{"value":"jo","label":"JO (USD)"},{"value":"jp","label":"JP (JPY)"},{"value":"ke","label":"KE (USD)"},{"value":"kg","label":"KG (USD)"},{"value":"kh","label":"KH (USD)"},{"value":"ki","label":"KI (USD)"},{"value":"km","label":"KM (USD)"},{"value":"kn","label":"KN (USD)"},{"value":"kr","label":"KR (USD)"},{"value":"kw","label":"KW (USD)"},{"value":"ky","label":"KY (USD)"},{"value":"kz","label":"KZ (USD)"},{"value":"la","label":"LA (USD)"},{"value":"lb","label":"LB (USD)"},{"value":"lc","label":"LC (USD)"},{"value":"li","label":"LI (USD)"},{"value":"lk","label":"LK (USD)"},{"value":"lr","label":"LR (USD)"},{"value":"ls","label":"LS (USD)"},{"value":"lt","label":"LT (EUR)"},{"value":"lu","label":"LU (EUR)"},{"value":"lv","label":"LV (EUR)"},{"value":"ly","label":"LY (USD)"},{"value":"ma","label":"MA (USD)"},{"value":"mc","label":"MC (USD)"},{"value":"md","label":"MD (USD)"},{"value":"me","label":"ME (USD)"},{"value":"mg","label":"MG (USD)"},{"value":"mh","label":"MH (USD)"},{"value":"mk","label":"MK (USD)"},{"value":"ml","label":"ML (USD)"},{"value":"mm","label":"MM (USD)"},{"value":"mn","label":"MN (USD)"},{"value":"mo","label":"MO (USD)"},{"value":"mp","label":"MP (USD)"},{"value":"mq","label":"MQ (USD)"},{"value":"mr","label":"MR (USD)"},{"value":"ms","label":"MS (USD)"},{"value":"mt","label":"MT (EUR)"},{"value":"mu","label":"MU (USD)"},{"value":"mv","label":"MV (USD)"},{"value":"mw","label":"MW (USD)"},{"value":"mx","label":"MX (USD)"},{"value":"my","label":"MY (USD)"},{"value":"mz","label":"MZ (USD)"},{"value":"na","label":"NA (USD)"},{"value":"nc","label":"NC (USD)"},{"value":"ne","label":"NE (USD)"},{"value":"nf","label":"NF (USD)"},{"value":"ng","label":"NG (USD)"},{"value":"ni","label":"NI (USD)"},{"value":"nl","label":"NL (EUR)"},{"value":"no","label":"NO (EUR)"},{"value":"np","label":"NP (USD)"},{"value":"nr","label":"NR (USD)"},{"value":"nu","label":"NU (USD)"},{"value":"nz","label":"NZ (USD)"},{"value":"om","label":"OM (USD)"},{"value":"pa","label":"PA (USD)"},{"value":"pe","label":"PE (USD)"},{"value":"pf","label":"PF (USD)"},{"value":"pg","label":"PG (USD)"},{"value":"ph","label":"PH (USD)"},{"value":"pk","label":"PK (USD)"},{"value":"pl","label":"PL (EUR)"},{"value":"pm","label":"PM (USD)"},{"value":"pn","label":"PN (USD)"},{"value":"pr","label":"PR (USD)"},{"value":"ps","label":"PS (USD)"},{"value":"pt","label":"PT (EUR)"},{"value":"pw","label":"PW (USD)"},{"value":"py","label":"PY (USD)"},{"value":"qa","label":"QA (USD)"},{"value":"re","label":"RE (USD)"},{"value":"ro","label":"RO (USD)"},{"value":"rs","label":"RS (USD)"},{"value":"ru","label":"RU (USD)"},{"value":"rw","label":"RW (USD)"},{"value":"sa","label":"SA (USD)"},{"value":"sb","label":"SB (USD)"},{"value":"sc","label":"SC (USD)"},{"value":"se","label":"SE (EUR)"},{"value":"sg","label":"SG (USD)"},{"value":"sh","label":"SH (USD)"},{"value":"si","label":"SI (EUR)"},{"value":"sj","label":"SJ (USD)"},{"value":"sk","label":"SK (EUR)"},{"value":"sl","label":"SL (USD)"},{"value":"sm","label":"SM (USD)"},{"value":"sn","label":"SN (USD)"},{"value":"so","label":"SO (USD)"},{"value":"sr","label":"SR (USD)"},{"value":"st","label":"ST (USD)"},{"value":"sv","label":"SV (USD)"},{"value":"sx","label":"SX (USD)"},{"value":"sz","label":"SZ (USD)"},{"value":"tc","label":"TC (USD)"},{"value":"td","label":"TD (USD)"},{"value":"tf","label":"TF (USD)"},{"value":"tg","label":"TG (USD)"},{"value":"th","label":"TH (USD)"},{"value":"tj","label":"TJ (USD)"},{"value":"tk","label":"TK (USD)"},{"value":"tm","label":"TM (USD)"},{"value":"tn","label":"TN (USD)"},{"value":"to","label":"TO (USD)"},{"value":"tr","label":"TR (USD)"},{"value":"tt","label":"TT (USD)"},{"value":"tv","label":"TV (USD)"},{"value":"tw","label":"TW (USD)"},{"value":"tz","label":"TZ (USD)"},{"value":"ua","label":"UA (USD)"},{"value":"ug","label":"UG (USD)"},{"value":"um","label":"UM (USD)"},{"value":"us","label":"US (USD)"},{"value":"uy","label":"UY (USD)"},{"value":"uz","label":"UZ (USD)"},{"value":"va","label":"VA (USD)"},{"value":"vc","label":"VC (USD)"},{"value":"ve","label":"VE (USD)"},{"value":"vg","label":"VG (USD)"},{"value":"vi","label":"VI (USD)"},{"value":"vn","label":"VN (USD)"},{"value":"vu","label":"VU (USD)"},{"value":"wf","label":"WF (USD)"},{"value":"ws","label":"WS (USD)"},{"value":"ye","label":"YE (USD)"},{"value":"yt","label":"YT (USD)"},{"value":"za","label":"ZA (USD)"},{"value":"zm","label":"ZM (USD)"},{"value":"zw","label":"ZW (USD)"}],"default":"us","example":"gb"}],"returns":"prices[{product_id, price, was_price, discount_percent, on_sale, price_source, final_sale, currency, site_currency_code}], count, not_found[], country","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"us","product_ids":"18731811"}},{"name":"suggest","description":"SSENSE designer autocomplete for a partial name in one department: each matching designer with its id, slug and URL, and the categories it sells in with their ids and URLs.","required_params":["query"],"optional_params":["country","language","gender","on_sale"],"params":[{"name":"query","type":"string","required":true,"description":"At least 2 characters of a designer name.","on_invalid":"reject","example":"monc","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Shipping country (ISO-2; 'uk' is accepted for gb). Prices, the currency and the duties/taxes line follow it. 235 countries. Default us.","on_invalid":"reject","allowed_values":[{"value":"ad","label":"AD (USD)"},{"value":"ae","label":"AE (USD)"},{"value":"af","label":"AF (USD)"},{"value":"ag","label":"AG (USD)"},{"value":"ai","label":"AI (USD)"},{"value":"al","label":"AL (USD)"},{"value":"am","label":"AM (USD)"},{"value":"ao","label":"AO (USD)"},{"value":"aq","label":"AQ (USD)"},{"value":"ar","label":"AR (USD)"},{"value":"as","label":"AS (USD)"},{"value":"at","label":"AT (EUR)"},{"value":"au","label":"AU (AUD)"},{"value":"aw","label":"AW (USD)"},{"value":"az","label":"AZ (USD)"},{"value":"ba","label":"BA (USD)"},{"value":"bb","label":"BB (USD)"},{"value":"bd","label":"BD (USD)"},{"value":"be","label":"BE (EUR)"},{"value":"bf","label":"BF (USD)"},{"value":"bg","label":"BG (USD)"},{"value":"bh","label":"BH (USD)"},{"value":"bi","label":"BI (USD)"},{"value":"bj","label":"BJ (USD)"},{"value":"bm","label":"BM (USD)"},{"value":"bn","label":"BN (USD)"},{"value":"bo","label":"BO (USD)"},{"value":"br","label":"BR (USD)"},{"value":"bs","label":"BS (USD)"},{"value":"bt","label":"BT (USD)"},{"value":"bv","label":"BV (USD)"},{"value":"bw","label":"BW (USD)"},{"value":"by","label":"BY (USD)"},{"value":"bz","label":"BZ (USD)"},{"value":"ca","label":"CA (CAD)"},{"value":"cc","label":"CC (USD)"},{"value":"cd","label":"CD (USD)"},{"value":"cf","label":"CF (USD)"},{"value":"cg","label":"CG (USD)"},{"value":"ch","label":"CH (EUR)"},{"value":"ci","label":"CI (USD)"},{"value":"ck","label":"CK (USD)"},{"value":"cl","label":"CL (USD)"},{"value":"cm","label":"CM (USD)"},{"value":"cn","label":"CN (USD)"},{"value":"co","label":"CO (USD)"},{"value":"cr","label":"CR (USD)"},{"value":"cv","label":"CV (USD)"},{"value":"cw","label":"CW (USD)"},{"value":"cx","label":"CX (USD)"},{"value":"cy","label":"CY (EUR)"},{"value":"cz","label":"CZ (EUR)"},{"value":"de","label":"DE (EUR)"},{"value":"dj","label":"DJ (USD)"},{"value":"dk","label":"DK (EUR)"},{"value":"dm","label":"DM (USD)"},{"value":"do","label":"DO (USD)"},{"value":"dz","label":"DZ (USD)"},{"value":"ec","label":"EC (USD)"},{"value":"ee","label":"EE (EUR)"},{"value":"eg","label":"EG (USD)"},{"value":"eh","label":"EH (USD)"},{"value":"er","label":"ER (USD)"},{"value":"es","label":"ES (EUR)"},{"value":"et","label":"ET (USD)"},{"value":"fi","label":"FI (EUR)"},{"value":"fj","label":"FJ (USD)"},{"value":"fk","label":"FK (USD)"},{"value":"fm","label":"FM (USD)"},{"value":"fo","label":"FO (USD)"},{"value":"fr","label":"FR (EUR)"},{"value":"ga","label":"GA (USD)"},{"value":"gb","label":"GB (GBP)"},{"value":"gd","label":"GD (USD)"},{"value":"ge","label":"GE (USD)"},{"value":"gf","label":"GF (USD)"},{"value":"gh","label":"GH (USD)"},{"value":"gi","label":"GI (USD)"},{"value":"gl","label":"GL (USD)"},{"value":"gm","label":"GM (USD)"},{"value":"gn","label":"GN (USD)"},{"value":"gp","label":"GP (USD)"},{"value":"gq","label":"GQ (USD)"},{"value":"gr","label":"GR (EUR)"},{"value":"gs","label":"GS (USD)"},{"value":"gt","label":"GT (USD)"},{"value":"gu","label":"GU (USD)"},{"value":"gw","label":"GW (USD)"},{"value":"gy","label":"GY (USD)"},{"value":"hk","label":"HK (HKD)"},{"value":"hm","label":"HM (USD)"},{"value":"hn","label":"HN (USD)"},{"value":"hr","label":"HR (USD)"},{"value":"ht","label":"HT (USD)"},{"value":"hu","label":"HU (EUR)"},{"value":"id","label":"ID (USD)"},{"value":"ie","label":"IE (EUR)"},{"value":"il","label":"IL (USD)"},{"value":"in","label":"IN (USD)"},{"value":"io","label":"IO (USD)"},{"value":"iq","label":"IQ (USD)"},{"value":"is","label":"IS (USD)"},{"value":"it","label":"IT (EUR)"},{"value":"jm","label":"JM (USD)"},{"value":"jo","label":"JO (USD)"},{"value":"jp","label":"JP (JPY)"},{"value":"ke","label":"KE (USD)"},{"value":"kg","label":"KG (USD)"},{"value":"kh","label":"KH (USD)"},{"value":"ki","label":"KI (USD)"},{"value":"km","label":"KM (USD)"},{"value":"kn","label":"KN (USD)"},{"value":"kr","label":"KR (USD)"},{"value":"kw","label":"KW (USD)"},{"value":"ky","label":"KY (USD)"},{"value":"kz","label":"KZ (USD)"},{"value":"la","label":"LA (USD)"},{"value":"lb","label":"LB (USD)"},{"value":"lc","label":"LC (USD)"},{"value":"li","label":"LI (USD)"},{"value":"lk","label":"LK (USD)"},{"value":"lr","label":"LR (USD)"},{"value":"ls","label":"LS (USD)"},{"value":"lt","label":"LT (EUR)"},{"value":"lu","label":"LU (EUR)"},{"value":"lv","label":"LV (EUR)"},{"value":"ly","label":"LY (USD)"},{"value":"ma","label":"MA (USD)"},{"value":"mc","label":"MC (USD)"},{"value":"md","label":"MD (USD)"},{"value":"me","label":"ME (USD)"},{"value":"mg","label":"MG (USD)"},{"value":"mh","label":"MH (USD)"},{"value":"mk","label":"MK (USD)"},{"value":"ml","label":"ML (USD)"},{"value":"mm","label":"MM (USD)"},{"value":"mn","label":"MN (USD)"},{"value":"mo","label":"MO (USD)"},{"value":"mp","label":"MP (USD)"},{"value":"mq","label":"MQ (USD)"},{"value":"mr","label":"MR (USD)"},{"value":"ms","label":"MS (USD)"},{"value":"mt","label":"MT (EUR)"},{"value":"mu","label":"MU (USD)"},{"value":"mv","label":"MV (USD)"},{"value":"mw","label":"MW (USD)"},{"value":"mx","label":"MX (USD)"},{"value":"my","label":"MY (USD)"},{"value":"mz","label":"MZ (USD)"},{"value":"na","label":"NA (USD)"},{"value":"nc","label":"NC (USD)"},{"value":"ne","label":"NE (USD)"},{"value":"nf","label":"NF (USD)"},{"value":"ng","label":"NG (USD)"},{"value":"ni","label":"NI (USD)"},{"value":"nl","label":"NL (EUR)"},{"value":"no","label":"NO (EUR)"},{"value":"np","label":"NP (USD)"},{"value":"nr","label":"NR (USD)"},{"value":"nu","label":"NU (USD)"},{"value":"nz","label":"NZ (USD)"},{"value":"om","label":"OM (USD)"},{"value":"pa","label":"PA (USD)"},{"value":"pe","label":"PE (USD)"},{"value":"pf","label":"PF (USD)"},{"value":"pg","label":"PG (USD)"},{"value":"ph","label":"PH (USD)"},{"value":"pk","label":"PK (USD)"},{"value":"pl","label":"PL (EUR)"},{"value":"pm","label":"PM (USD)"},{"value":"pn","label":"PN (USD)"},{"value":"pr","label":"PR (USD)"},{"value":"ps","label":"PS (USD)"},{"value":"pt","label":"PT (EUR)"},{"value":"pw","label":"PW (USD)"},{"value":"py","label":"PY (USD)"},{"value":"qa","label":"QA (USD)"},{"value":"re","label":"RE (USD)"},{"value":"ro","label":"RO (USD)"},{"value":"rs","label":"RS (USD)"},{"value":"ru","label":"RU (USD)"},{"value":"rw","label":"RW (USD)"},{"value":"sa","label":"SA (USD)"},{"value":"sb","label":"SB (USD)"},{"value":"sc","label":"SC (USD)"},{"value":"se","label":"SE (EUR)"},{"value":"sg","label":"SG (USD)"},{"value":"sh","label":"SH (USD)"},{"value":"si","label":"SI (EUR)"},{"value":"sj","label":"SJ (USD)"},{"value":"sk","label":"SK (EUR)"},{"value":"sl","label":"SL (USD)"},{"value":"sm","label":"SM (USD)"},{"value":"sn","label":"SN (USD)"},{"value":"so","label":"SO (USD)"},{"value":"sr","label":"SR (USD)"},{"value":"st","label":"ST (USD)"},{"value":"sv","label":"SV (USD)"},{"value":"sx","label":"SX (USD)"},{"value":"sz","label":"SZ (USD)"},{"value":"tc","label":"TC (USD)"},{"value":"td","label":"TD (USD)"},{"value":"tf","label":"TF (USD)"},{"value":"tg","label":"TG (USD)"},{"value":"th","label":"TH (USD)"},{"value":"tj","label":"TJ (USD)"},{"value":"tk","label":"TK (USD)"},{"value":"tm","label":"TM (USD)"},{"value":"tn","label":"TN (USD)"},{"value":"to","label":"TO (USD)"},{"value":"tr","label":"TR (USD)"},{"value":"tt","label":"TT (USD)"},{"value":"tv","label":"TV (USD)"},{"value":"tw","label":"TW (USD)"},{"value":"tz","label":"TZ (USD)"},{"value":"ua","label":"UA (USD)"},{"value":"ug","label":"UG (USD)"},{"value":"um","label":"UM (USD)"},{"value":"us","label":"US (USD)"},{"value":"uy","label":"UY (USD)"},{"value":"uz","label":"UZ (USD)"},{"value":"va","label":"VA (USD)"},{"value":"vc","label":"VC (USD)"},{"value":"ve","label":"VE (USD)"},{"value":"vg","label":"VG (USD)"},{"value":"vi","label":"VI (USD)"},{"value":"vn","label":"VN (USD)"},{"value":"vu","label":"VU (USD)"},{"value":"wf","label":"WF (USD)"},{"value":"ws","label":"WS (USD)"},{"value":"ye","label":"YE (USD)"},{"value":"yt","label":"YT (USD)"},{"value":"za","label":"ZA (USD)"},{"value":"zm","label":"ZM (USD)"},{"value":"zw","label":"ZW (USD)"}],"default":"us","example":"gb"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions, composition and made-in, and of the keyword index (search 'manteau' with language=fr). Independent of country. Default en.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"},{"value":"ja","label":"Japanese"},{"value":"zh","label":"Chinese"},{"value":"ko","label":"Korean"}],"default":"en","example":"fr"},{"name":"gender","type":"enum","required":false,"description":"SSENSE department. The site searches one department at a time. Default men.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Menswear"},{"value":"women","label":"Womenswear"},{"value":"everything-else","label":"Everything Else (home, pets, kids, lifestyle)"}],"default":"men","example":"women"},{"name":"on_sale","type":"boolean","required":false,"description":"Only the sale listing.","on_invalid":"reject","default":false}],"returns":"suggestions[{designer_id, name, slug, url, categories[{category_id,name,slug,url}]}], count, query, gender, country, language","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"us","query":"monc"}},{"name":"designers","description":"The SSENSE designer directory: every designer per department with its id, name, slug and URL.","required_params":[],"optional_params":["country","language","gender"],"params":[{"name":"country","type":"enum","required":false,"description":"Shipping country (ISO-2; 'uk' is accepted for gb). Prices, the currency and the duties/taxes line follow it. 235 countries. Default us.","on_invalid":"reject","allowed_values":[{"value":"ad","label":"AD (USD)"},{"value":"ae","label":"AE (USD)"},{"value":"af","label":"AF (USD)"},{"value":"ag","label":"AG (USD)"},{"value":"ai","label":"AI (USD)"},{"value":"al","label":"AL (USD)"},{"value":"am","label":"AM (USD)"},{"value":"ao","label":"AO (USD)"},{"value":"aq","label":"AQ (USD)"},{"value":"ar","label":"AR (USD)"},{"value":"as","label":"AS (USD)"},{"value":"at","label":"AT (EUR)"},{"value":"au","label":"AU (AUD)"},{"value":"aw","label":"AW (USD)"},{"value":"az","label":"AZ (USD)"},{"value":"ba","label":"BA (USD)"},{"value":"bb","label":"BB (USD)"},{"value":"bd","label":"BD (USD)"},{"value":"be","label":"BE (EUR)"},{"value":"bf","label":"BF (USD)"},{"value":"bg","label":"BG (USD)"},{"value":"bh","label":"BH (USD)"},{"value":"bi","label":"BI (USD)"},{"value":"bj","label":"BJ (USD)"},{"value":"bm","label":"BM (USD)"},{"value":"bn","label":"BN (USD)"},{"value":"bo","label":"BO (USD)"},{"value":"br","label":"BR (USD)"},{"value":"bs","label":"BS (USD)"},{"value":"bt","label":"BT (USD)"},{"value":"bv","label":"BV (USD)"},{"value":"bw","label":"BW (USD)"},{"value":"by","label":"BY (USD)"},{"value":"bz","label":"BZ (USD)"},{"value":"ca","label":"CA (CAD)"},{"value":"cc","label":"CC (USD)"},{"value":"cd","label":"CD (USD)"},{"value":"cf","label":"CF (USD)"},{"value":"cg","label":"CG (USD)"},{"value":"ch","label":"CH (EUR)"},{"value":"ci","label":"CI (USD)"},{"value":"ck","label":"CK (USD)"},{"value":"cl","label":"CL (USD)"},{"value":"cm","label":"CM (USD)"},{"value":"cn","label":"CN (USD)"},{"value":"co","label":"CO (USD)"},{"value":"cr","label":"CR (USD)"},{"value":"cv","label":"CV (USD)"},{"value":"cw","label":"CW (USD)"},{"value":"cx","label":"CX (USD)"},{"value":"cy","label":"CY (EUR)"},{"value":"cz","label":"CZ (EUR)"},{"value":"de","label":"DE (EUR)"},{"value":"dj","label":"DJ (USD)"},{"value":"dk","label":"DK (EUR)"},{"value":"dm","label":"DM (USD)"},{"value":"do","label":"DO (USD)"},{"value":"dz","label":"DZ (USD)"},{"value":"ec","label":"EC (USD)"},{"value":"ee","label":"EE (EUR)"},{"value":"eg","label":"EG (USD)"},{"value":"eh","label":"EH (USD)"},{"value":"er","label":"ER (USD)"},{"value":"es","label":"ES (EUR)"},{"value":"et","label":"ET (USD)"},{"value":"fi","label":"FI (EUR)"},{"value":"fj","label":"FJ (USD)"},{"value":"fk","label":"FK (USD)"},{"value":"fm","label":"FM (USD)"},{"value":"fo","label":"FO (USD)"},{"value":"fr","label":"FR (EUR)"},{"value":"ga","label":"GA (USD)"},{"value":"gb","label":"GB (GBP)"},{"value":"gd","label":"GD (USD)"},{"value":"ge","label":"GE (USD)"},{"value":"gf","label":"GF (USD)"},{"value":"gh","label":"GH (USD)"},{"value":"gi","label":"GI (USD)"},{"value":"gl","label":"GL (USD)"},{"value":"gm","label":"GM (USD)"},{"value":"gn","label":"GN (USD)"},{"value":"gp","label":"GP (USD)"},{"value":"gq","label":"GQ (USD)"},{"value":"gr","label":"GR (EUR)"},{"value":"gs","label":"GS (USD)"},{"value":"gt","label":"GT (USD)"},{"value":"gu","label":"GU (USD)"},{"value":"gw","label":"GW (USD)"},{"value":"gy","label":"GY (USD)"},{"value":"hk","label":"HK (HKD)"},{"value":"hm","label":"HM (USD)"},{"value":"hn","label":"HN (USD)"},{"value":"hr","label":"HR (USD)"},{"value":"ht","label":"HT (USD)"},{"value":"hu","label":"HU (EUR)"},{"value":"id","label":"ID (USD)"},{"value":"ie","label":"IE (EUR)"},{"value":"il","label":"IL (USD)"},{"value":"in","label":"IN (USD)"},{"value":"io","label":"IO (USD)"},{"value":"iq","label":"IQ (USD)"},{"value":"is","label":"IS (USD)"},{"value":"it","label":"IT (EUR)"},{"value":"jm","label":"JM (USD)"},{"value":"jo","label":"JO (USD)"},{"value":"jp","label":"JP (JPY)"},{"value":"ke","label":"KE (USD)"},{"value":"kg","label":"KG (USD)"},{"value":"kh","label":"KH (USD)"},{"value":"ki","label":"KI (USD)"},{"value":"km","label":"KM (USD)"},{"value":"kn","label":"KN (USD)"},{"value":"kr","label":"KR (USD)"},{"value":"kw","label":"KW (USD)"},{"value":"ky","label":"KY (USD)"},{"value":"kz","label":"KZ (USD)"},{"value":"la","label":"LA (USD)"},{"value":"lb","label":"LB (USD)"},{"value":"lc","label":"LC (USD)"},{"value":"li","label":"LI (USD)"},{"value":"lk","label":"LK (USD)"},{"value":"lr","label":"LR (USD)"},{"value":"ls","label":"LS (USD)"},{"value":"lt","label":"LT (EUR)"},{"value":"lu","label":"LU (EUR)"},{"value":"lv","label":"LV (EUR)"},{"value":"ly","label":"LY (USD)"},{"value":"ma","label":"MA (USD)"},{"value":"mc","label":"MC (USD)"},{"value":"md","label":"MD (USD)"},{"value":"me","label":"ME (USD)"},{"value":"mg","label":"MG (USD)"},{"value":"mh","label":"MH (USD)"},{"value":"mk","label":"MK (USD)"},{"value":"ml","label":"ML (USD)"},{"value":"mm","label":"MM (USD)"},{"value":"mn","label":"MN (USD)"},{"value":"mo","label":"MO (USD)"},{"value":"mp","label":"MP (USD)"},{"value":"mq","label":"MQ (USD)"},{"value":"mr","label":"MR (USD)"},{"value":"ms","label":"MS (USD)"},{"value":"mt","label":"MT (EUR)"},{"value":"mu","label":"MU (USD)"},{"value":"mv","label":"MV (USD)"},{"value":"mw","label":"MW (USD)"},{"value":"mx","label":"MX (USD)"},{"value":"my","label":"MY (USD)"},{"value":"mz","label":"MZ (USD)"},{"value":"na","label":"NA (USD)"},{"value":"nc","label":"NC (USD)"},{"value":"ne","label":"NE (USD)"},{"value":"nf","label":"NF (USD)"},{"value":"ng","label":"NG (USD)"},{"value":"ni","label":"NI (USD)"},{"value":"nl","label":"NL (EUR)"},{"value":"no","label":"NO (EUR)"},{"value":"np","label":"NP (USD)"},{"value":"nr","label":"NR (USD)"},{"value":"nu","label":"NU (USD)"},{"value":"nz","label":"NZ (USD)"},{"value":"om","label":"OM (USD)"},{"value":"pa","label":"PA (USD)"},{"value":"pe","label":"PE (USD)"},{"value":"pf","label":"PF (USD)"},{"value":"pg","label":"PG (USD)"},{"value":"ph","label":"PH (USD)"},{"value":"pk","label":"PK (USD)"},{"value":"pl","label":"PL (EUR)"},{"value":"pm","label":"PM (USD)"},{"value":"pn","label":"PN (USD)"},{"value":"pr","label":"PR (USD)"},{"value":"ps","label":"PS (USD)"},{"value":"pt","label":"PT (EUR)"},{"value":"pw","label":"PW (USD)"},{"value":"py","label":"PY (USD)"},{"value":"qa","label":"QA (USD)"},{"value":"re","label":"RE (USD)"},{"value":"ro","label":"RO (USD)"},{"value":"rs","label":"RS (USD)"},{"value":"ru","label":"RU (USD)"},{"value":"rw","label":"RW (USD)"},{"value":"sa","label":"SA (USD)"},{"value":"sb","label":"SB (USD)"},{"value":"sc","label":"SC (USD)"},{"value":"se","label":"SE (EUR)"},{"value":"sg","label":"SG (USD)"},{"value":"sh","label":"SH (USD)"},{"value":"si","label":"SI (EUR)"},{"value":"sj","label":"SJ (USD)"},{"value":"sk","label":"SK (EUR)"},{"value":"sl","label":"SL (USD)"},{"value":"sm","label":"SM (USD)"},{"value":"sn","label":"SN (USD)"},{"value":"so","label":"SO (USD)"},{"value":"sr","label":"SR (USD)"},{"value":"st","label":"ST (USD)"},{"value":"sv","label":"SV (USD)"},{"value":"sx","label":"SX (USD)"},{"value":"sz","label":"SZ (USD)"},{"value":"tc","label":"TC (USD)"},{"value":"td","label":"TD (USD)"},{"value":"tf","label":"TF (USD)"},{"value":"tg","label":"TG (USD)"},{"value":"th","label":"TH (USD)"},{"value":"tj","label":"TJ (USD)"},{"value":"tk","label":"TK (USD)"},{"value":"tm","label":"TM (USD)"},{"value":"tn","label":"TN (USD)"},{"value":"to","label":"TO (USD)"},{"value":"tr","label":"TR (USD)"},{"value":"tt","label":"TT (USD)"},{"value":"tv","label":"TV (USD)"},{"value":"tw","label":"TW (USD)"},{"value":"tz","label":"TZ (USD)"},{"value":"ua","label":"UA (USD)"},{"value":"ug","label":"UG (USD)"},{"value":"um","label":"UM (USD)"},{"value":"us","label":"US (USD)"},{"value":"uy","label":"UY (USD)"},{"value":"uz","label":"UZ (USD)"},{"value":"va","label":"VA (USD)"},{"value":"vc","label":"VC (USD)"},{"value":"ve","label":"VE (USD)"},{"value":"vg","label":"VG (USD)"},{"value":"vi","label":"VI (USD)"},{"value":"vn","label":"VN (USD)"},{"value":"vu","label":"VU (USD)"},{"value":"wf","label":"WF (USD)"},{"value":"ws","label":"WS (USD)"},{"value":"ye","label":"YE (USD)"},{"value":"yt","label":"YT (USD)"},{"value":"za","label":"ZA (USD)"},{"value":"zm","label":"ZM (USD)"},{"value":"zw","label":"ZW (USD)"}],"default":"us","example":"gb"},{"name":"language","type":"enum","required":false,"description":"Language of names, descriptions, composition and made-in, and of the keyword index (search 'manteau' with language=fr). Independent of country. Default en.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"},{"value":"ja","label":"Japanese"},{"value":"zh","label":"Chinese"},{"value":"ko","label":"Korean"}],"default":"en","example":"fr"},{"name":"gender","type":"enum","required":false,"description":"Only this department's designer list. Default: all three.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Menswear"},{"value":"women","label":"Womenswear"},{"value":"everything-else","label":"Everything Else"}],"example":"women"}],"returns":"designers[{designer_id, name, slug, gender, url}], count, counts_by_gender, country, language","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"stackoverflow","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Stack Overflow API — Q&A data scraper: questions, answers, tags, users, badges, search","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/stackoverflow/v1","spec_available":true,"actions":[{"name":"questions","description":"Paginated questions by sort/tag; returns score, tags, body, owner/link attribution.","required_params":[],"optional_params":["site","sort","tag","tags","page","pagesize","filter"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"tag","type":"string","required":false,"description":"Optional tag filter (one tag, or several joined by ';' for AND).","on_invalid":"reject","example":"python","aliases":["tags","tagged"]},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (questions: id, title, body, score, tags, owner→author, link), site, attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"sort":"votes"}},{"name":"question","description":"Single question by id plus paginated answers.","required_params":["id"],"optional_params":["site","page","pagesize","filter"],"params":[{"name":"id","type":"string","required":true,"description":"Question id (or semicolon/comma-joined ids for batch routes).","on_invalid":"reject","example":"11227809","aliases":["ids"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"votes"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"question{} (the question) + answers[] (sorted, default votes), site, attribution; meta has question_*/answers_* pagination.","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"answers","description":"Answer details by id/ids, or recent answers when no id is supplied.","required_params":[],"optional_params":["id","ids","site","sort","page","pagesize","filter"],"params":[{"name":"id","type":"string","required":false,"description":"Optional answer id(s) joined by ';'/','; omit for recent answers.","on_invalid":"reject","example":"11227902","aliases":["ids"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (answers: id, body, score, is_accepted, owner→author, link), site, attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"user","description":"User profile by id/ids.","required_params":["id"],"optional_params":["site"],"params":[{"name":"id","type":"string","required":true,"description":"Stack Exchange user id (or several joined by ';' or ',').","on_invalid":"reject","example":"22656","aliases":["ids"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"}],"returns":"items[] (user profiles: id, display_name, reputation, badges, link), site, attribution.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":22656}},{"name":"user_questions","description":"Paginated questions for a user.","required_params":["id"],"optional_params":["site","page","pagesize","sort","filter"],"params":[{"name":"id","type":"string","required":true,"description":"Stack Exchange user id (or several joined by ';' or ',').","on_invalid":"reject","example":"22656","aliases":["ids"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (this user's questions), site, attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"user_answers","description":"Paginated answers for a user.","required_params":["id"],"optional_params":["site","page","pagesize","sort","filter"],"params":[{"name":"id","type":"string","required":true,"description":"Stack Exchange user id (or several joined by ';' or ',').","on_invalid":"reject","example":"22656","aliases":["ids"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (this user's answers), site, attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"user_tags","description":"Paginated tag activity for a user.","required_params":["id"],"optional_params":["site","page","pagesize","sort"],"params":[{"name":"id","type":"string","required":true,"description":"Stack Exchange user id (or several joined by ';' or ',').","on_invalid":"reject","example":"22656","aliases":["ids"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"popular"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100}],"returns":"items[] (tags this user is active in, with counts), site, attribution; meta has has_more/page/pagesize.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"user_badges","description":"Paginated badges for a user.","required_params":["id"],"optional_params":["site","page","pagesize","sort"],"params":[{"name":"id","type":"string","required":true,"description":"Stack Exchange user id (or several joined by ';' or ',').","on_invalid":"reject","example":"22656","aliases":["ids"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"rank"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100}],"returns":"items[] (badges earned by this user), site, attribution; meta has has_more/page/pagesize.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"search","description":"Advanced full-text/tag search, paginated.","required_params":["q"],"optional_params":["site","tags","tagged","sort","page","pagesize","filter"],"params":[{"name":"q","type":"string","required":true,"description":"Free-text search query (matched against title and body).","on_invalid":"reject","example":"async await","aliases":["query"]},{"name":"tag","type":"string","required":false,"description":"Optional tag filter (one tag, or several joined by ';' for AND).","on_invalid":"reject","example":"python","aliases":["tags","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"relevance"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (matching questions: title, body, score, tags, owner→author, link), site, attribution; meta has pagination.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"async await"}},{"name":"tags","description":"Paginated Stack Exchange tags.","required_params":[],"optional_params":["site","sort","page","pagesize"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"popular"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100}],"returns":"items[] (tags: name, count, is_moderator_only, has_synonyms), site, attribution; meta has has_more/page/pagesize.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"tag_questions","description":"Paginated questions for a tag.","required_params":["tag"],"optional_params":["site","sort","page","pagesize","filter"],"params":[{"name":"tag","type":"string","required":true,"description":"Exact tag name (e.g. 'python', 'c++').","on_invalid":"reject","example":"python","aliases":["tags","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (questions carrying this tag), site, attribution; meta has has_more/page/pagesize.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"tag":"python"}},{"name":"tag_info","description":"Tag info by tag name.","required_params":["tag"],"optional_params":["site"],"params":[{"name":"tag","type":"string","required":true,"description":"Exact tag name (e.g. 'python', 'c++').","on_invalid":"reject","example":"python","aliases":["tags","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"}],"returns":"items[] (single tag info: name, count, synonyms, is_moderator_only), site, attribution.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"tag":"python"}},{"name":"comments","description":"Paginated comments for post id/ids.","required_params":["id"],"optional_params":["site","page","pagesize","sort","filter"],"params":[{"name":"id","type":"string","required":true,"description":"Post/answer/comment id (or several joined by ';' or ',').","on_invalid":"reject","example":"11227809","aliases":["ids"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (comments on the post(s): body, score, owner→author, link), site, attribution; meta has has_more/page/pagesize.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"answer_comments","description":"Comments left on one or more answers, by answer id.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target answer id; join several with ';' or ','.","on_invalid":"reject","example":"11227902","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"answer_questions","description":"The questions that the given answers belong to, by answer id.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target answer id; join several with ';' or ','.","on_invalid":"reject","example":"11227902","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"badges","description":"All badges on the site, ranked bronze/silver/gold.","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"rank"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"badge","description":"Badge details by badge id.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target badge id (1 = Teacher); join several with ';' or ','.","on_invalid":"reject","example":"1","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"rank"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"badge_name","description":"Named badges (the ones with a fixed name, e.g. 'Nice Answer').","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"rank"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"badge_recipients","description":"Recently awarded badges across the site, with the users who earned them.","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"rank"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"badge_recipients_by_ids","description":"Recent recipients of specific badges, by badge id.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target badge id (1 = Teacher); join several with ';' or ','.","on_invalid":"reject","example":"1","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"rank"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"badge_tags","description":"Tag-based badges (badges earned for activity within a tag).","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"rank"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"collectives","description":"All Stack Overflow Collectives (curated communities like 'Google Cloud').","required_params":[],"optional_params":["site","page","pagesize","order"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"collective","description":"Details for a Collective by its slug.","required_params":["slugs"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"slugs","type":"string","required":true,"description":"Stack Overflow Collective slug (e.g. 'google-cloud'); join several with ';'.","on_invalid":"reject","example":"google-cloud","aliases":["slug"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"collective_questions","description":"Questions associated with a Collective.","required_params":["slugs"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"slugs","type":"string","required":true,"description":"Stack Overflow Collective slug (e.g. 'google-cloud'); join several with ';'.","on_invalid":"reject","example":"google-cloud","aliases":["slug"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"collective_answers","description":"Answers associated with a Collective.","required_params":["slugs"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"slugs","type":"string","required":true,"description":"Stack Overflow Collective slug (e.g. 'google-cloud'); join several with ';'.","on_invalid":"reject","example":"google-cloud","aliases":["slug"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"collective_tags","description":"Tags that belong to a Collective.","required_params":["slugs"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"slugs","type":"string","required":true,"description":"Stack Overflow Collective slug (e.g. 'google-cloud'); join several with ';'.","on_invalid":"reject","example":"google-cloud","aliases":["slug"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"popular"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"collective_users","description":"Members of a Collective, by reputation.","required_params":["slugs"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"slugs","type":"string","required":true,"description":"Stack Overflow Collective slug (e.g. 'google-cloud'); join several with ';'.","on_invalid":"reject","example":"google-cloud","aliases":["slug"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"reputation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"comments_all","description":"Recent comments across the whole site.","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"comment","description":"Comment details by comment id.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target comment id; join several with ';' or ','.","on_invalid":"reject","example":"136733980","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"info","description":"Site statistics: total questions, answers, users, badges, API revision.","required_params":[],"optional_params":["site"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"posts","description":"Recent posts (questions and answers together) across the site.","required_params":[],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"post","description":"Post details by id, whether it is a question or an answer.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target post id (a question or an answer); join several with ';' or ','.","on_invalid":"reject","example":"11227809","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"post_comments","description":"Comments on a post (question or answer), by post id.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target post id (a question or an answer); join several with ';' or ','.","on_invalid":"reject","example":"11227809","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"post_revisions","description":"Edit history (revisions) of a post, by post id.","required_params":["ids"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"ids","type":"string","required":true,"description":"Target post id (a question or an answer); join several with ';' or ','.","on_invalid":"reject","example":"11227809","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"post_suggested_edits","description":"Suggested edits submitted for a post, by post id.","required_params":["ids"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"ids","type":"string","required":true,"description":"Target post id (a question or an answer); join several with ';' or ','.","on_invalid":"reject","example":"11227809","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"privileges","description":"The site privilege ladder (what each reputation level unlocks).","required_params":[],"optional_params":["site","page","pagesize","order"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"question_answers","description":"All answers to one or more questions, by question id.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target question id; join several with ';' or ','.","on_invalid":"reject","example":"11227809","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"votes"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"question_comments","description":"Comments on a question, by question id.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target question id; join several with ';' or ','.","on_invalid":"reject","example":"11227809","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"question_linked","description":"Questions that link to the given question(s).","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target question id; join several with ';' or ','.","on_invalid":"reject","example":"11227809","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"question_related","description":"Questions Stack Overflow considers related to the given question(s).","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target question id; join several with ';' or ','.","on_invalid":"reject","example":"11227809","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"question_timeline","description":"Full event timeline of a question (edits, answers, comments, votes, close/reopen).","required_params":["ids"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"ids","type":"string","required":true,"description":"Target question id; join several with ';' or ','.","on_invalid":"reject","example":"11227809","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"questions_featured","description":"Featured (bountied) questions on the site.","required_params":[],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"questions_no_answers","description":"Questions with zero answers (no answers at all).","required_params":[],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"questions_unanswered","description":"Questions the community considers unanswered (no accepted/upvoted answer).","required_params":[],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"revisions","description":"Revision details by revision guid.","required_params":["ids"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"ids","type":"string","required":true,"description":"Target revision GUID; join several with ';' or ','.","on_invalid":"reject","example":"5D4D2E7F-95BE-4A9A-AEF5-E911A07BD06E","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search_simple","description":"Title-only question search — find questions whose title contains given text.","required_params":["intitle"],"optional_params":["tag","site","page","pagesize","order","sort","filter"],"params":[{"name":"intitle","type":"string","required":true,"description":"Text that must appear in the question title.","on_invalid":"reject","example":"python decorator"},{"name":"tag","type":"string","required":false,"description":"Optional tag filter (one tag, or several joined by ';' for AND).","on_invalid":"reject","example":"python","aliases":["tags","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"similar","description":"Find questions similar to a title (duplicate detection).","required_params":["title"],"optional_params":["tag","site","page","pagesize","order","sort","filter"],"params":[{"name":"title","type":"string","required":true,"description":"Title text to find similar/duplicate questions for.","on_invalid":"reject","example":"how to merge dictionaries"},{"name":"tag","type":"string","required":false,"description":"Optional tag filter (one tag, or several joined by ';' for AND).","on_invalid":"reject","example":"python","aliases":["tags","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"relevance"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"search_excerpts","description":"Full-text search returning highlighted match excerpts for questions and answers.","required_params":["q"],"optional_params":["tag","site","page","pagesize","order","sort"],"params":[{"name":"q","type":"string","required":true,"description":"Free-text search query (matched against title and body).","on_invalid":"reject","example":"async await","aliases":["query"]},{"name":"tag","type":"string","required":false,"description":"Optional tag filter (one tag, or several joined by ';' for AND).","on_invalid":"reject","example":"python","aliases":["tags","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"relevance"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"async await"}},{"name":"suggested_edits","description":"Recent suggested edits across the site.","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggested_edit","description":"Suggested-edit details by id.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target suggested-edit id; join several with ';' or ','.","on_invalid":"reject","example":"100","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"tags_moderator_only","description":"Tags only moderators can apply.","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"popular"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"tags_required","description":"Tags that must be present on every question (where the site requires them).","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"popular"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"tag_synonyms","description":"All tag synonyms on the site (e.g. 'js' → 'javascript').","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"tag_faq","description":"The frequently-asked (FAQ) questions for a tag.","required_params":["tags"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"tags","type":"string","required":true,"description":"Tag name(s) for this route (e.g. 'c#', 'python'); join several with ';'.","on_invalid":"reject","example":"c#","aliases":["tag","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"tag_related","description":"Tags that commonly appear together with the given tag.","required_params":["tags"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"tags","type":"string","required":true,"description":"Tag name(s) for this route (e.g. 'c#', 'python'); join several with ';'.","on_invalid":"reject","example":"c#","aliases":["tag","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"popular"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"tag_synonyms_by_tags","description":"Synonyms that map to a specific tag.","required_params":["tags"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"tags","type":"string","required":true,"description":"Tag name(s) for this route (e.g. 'c#', 'python'); join several with ';'.","on_invalid":"reject","example":"c#","aliases":["tag","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"tag_top_answerers","description":"Top answerers in a tag (the experts), all-time or last month.","required_params":["tag"],"optional_params":["site","page","pagesize","order","period"],"params":[{"name":"tag","type":"string","required":true,"description":"Exact tag name (e.g. 'python', 'c++').","on_invalid":"reject","example":"python","aliases":["tags","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"period","type":"enum","required":false,"description":"Time window for top-answerers/top-askers routes (all_time or month).","on_invalid":"ignore","allowed_values":[{"value":"all_time","label":"All time (default)"},{"value":"month","label":"Last month"}],"default":"all_time","example":"all_time"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"tag":"python"}},{"name":"tag_top_askers","description":"Top askers in a tag, all-time or last month.","required_params":["tag"],"optional_params":["site","page","pagesize","order","period"],"params":[{"name":"tag","type":"string","required":true,"description":"Exact tag name (e.g. 'python', 'c++').","on_invalid":"reject","example":"python","aliases":["tags","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"period","type":"enum","required":false,"description":"Time window for top-answerers/top-askers routes (all_time or month).","on_invalid":"ignore","allowed_values":[{"value":"all_time","label":"All time (default)"},{"value":"month","label":"Last month"}],"default":"all_time","example":"all_time"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"tag":"python"}},{"name":"tag_wikis","description":"The wiki/excerpt body that describes a tag.","required_params":["tags"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"tags","type":"string","required":true,"description":"Tag name(s) for this route (e.g. 'c#', 'python'); join several with ';'.","on_invalid":"reject","example":"c#","aliases":["tag","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"users","description":"Site users, by reputation (the leaderboard).","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"reputation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"user_comments","description":"Comments written by a user.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_comments_to_user","description":"Comments a user directed at one specific other user.","required_params":["ids","toid"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"toid","type":"string","required":true,"description":"Recipient user id (the 'to' user for directed comments) — must differ from the commenting user id.","on_invalid":"reject","example":"17034"},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_favorites","description":"Questions a user bookmarked (favorited).","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_mentioned","description":"Comments that @-mention a user.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_network_activity","description":"A user's activity across the entire Stack Exchange network (all sites).","required_params":["id"],"optional_params":["page","pagesize","order"],"params":[{"name":"id","type":"string","required":true,"description":"Single target id for this route (user/error id as applicable).","on_invalid":"reject","example":"22656"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"user_posts","description":"All posts (questions and answers) authored by a user.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_privileges","description":"The privileges a user has unlocked at their reputation level.","required_params":["id"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"id","type":"string","required":true,"description":"Single target id for this route (user/error id as applicable).","on_invalid":"reject","example":"22656"},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"user_questions_featured","description":"A user's questions that currently carry a bounty (featured).","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_questions_no_answers","description":"A user's questions that have no answers.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_questions_unaccepted","description":"A user's questions that have answers but none accepted.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_questions_unanswered","description":"A user's questions the community considers unanswered.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort","filter"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"activity"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_reputation","description":"A user's reputation changes (the rep events feed).","required_params":["ids"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_reputation_history","description":"Public reputation history of a user (each gain/loss event).","required_params":["ids"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_suggested_edits","description":"Suggested edits a user has submitted.","required_params":["ids"],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"creation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_top_answers_in_tags","description":"A user's highest-scoring answers within specific tags.","required_params":["id","tags"],"optional_params":["site","page","pagesize","order","filter"],"params":[{"name":"id","type":"string","required":true,"description":"Single target id for this route (user/error id as applicable).","on_invalid":"reject","example":"22656"},{"name":"tags","type":"string","required":true,"description":"Tag name(s) for this route (e.g. 'c#', 'python'); join several with ';'.","on_invalid":"reject","example":"c#","aliases":["tag","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_top_questions_in_tags","description":"A user's highest-scoring questions within specific tags.","required_params":["id","tags"],"optional_params":["site","page","pagesize","order","filter"],"params":[{"name":"id","type":"string","required":true,"description":"Single target id for this route (user/error id as applicable).","on_invalid":"reject","example":"22656"},{"name":"tags","type":"string","required":true,"description":"Tag name(s) for this route (e.g. 'c#', 'python'); join several with ';'.","on_invalid":"reject","example":"c#","aliases":["tag","tagged"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"filter","type":"string","required":false,"description":"Stack Exchange filter id controlling which fields are returned (e.g. 'withbody' to include rendered post bodies). Default withbody.","on_invalid":"ignore","example":"withbody","aliases":["filter_id"]}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_timeline","description":"A user's activity timeline (posts, comments, badges, rep events).","required_params":["ids"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_top_answer_tags","description":"The tags a user is strongest in by answer score.","required_params":["id"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"id","type":"string","required":true,"description":"Single target id for this route (user/error id as applicable).","on_invalid":"reject","example":"22656"},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"user_top_question_tags","description":"The tags a user is strongest in by question score.","required_params":["id"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"id","type":"string","required":true,"description":"Single target id for this route (user/error id as applicable).","on_invalid":"reject","example":"22656"},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"user_top_tags","description":"A user's top tags overall (combined question + answer activity).","required_params":["id"],"optional_params":["site","page","pagesize","order"],"params":[{"name":"id","type":"string","required":true,"description":"Single target id for this route (user/error id as applicable).","on_invalid":"reject","example":"22656"},{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"moderators","description":"All moderators on the site.","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"reputation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"elected_moderators","description":"Moderators who were elected (excludes appointed/employee moderators).","required_params":[],"optional_params":["site","page","pagesize","order","sort"],"params":[{"name":"site","type":"string","required":false,"description":"Stack Exchange site slug (e.g. stackoverflow, serverfault, superuser, askubuntu, math). Defaults to stackoverflow.","on_invalid":"ignore","default":"stackoverflow","example":"stackoverflow"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"reputation"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"errors","description":"The catalog of Stack Exchange API error codes and their meanings.","required_params":[],"optional_params":["page","pagesize","order"],"params":[{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"error","description":"Simulate one Stack Exchange API error by its id (returns the error as if it occurred).","required_params":["id"],"optional_params":["page","pagesize","order"],"params":[{"name":"id","type":"enum","required":true,"description":"Stack Exchange ERROR CODE to simulate (NOT a user/post id) — one of the ids listed by the `errors` action, e.g. 404. The simulated error comes back as a normal ok:true payload so you can test your error handling.","on_invalid":"reject","allowed_values":[{"value":"400","label":"bad_parameter"},{"value":"401","label":"access_token_required"},{"value":"402","label":"invalid_access_token"},{"value":"403","label":"access_denied"},{"value":"404","label":"no_method"},{"value":"405","label":"key_required"},{"value":"406","label":"access_token_compromised"},{"value":"407","label":"write_failed"},{"value":"409","label":"duplicate_request"},{"value":"500","label":"internal_error"},{"value":"502","label":"throttle_violation"},{"value":"503","label":"temporarily_unavailable"}],"example":"404"},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"id":11227809}},{"name":"sites","description":"Every site in the Stack Exchange network (Stack Overflow, Server Fault, Super User, etc.).","required_params":[],"optional_params":["page","pagesize","order","sort"],"params":[{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"},{"name":"sort","type":"enum","required":false,"description":"Sort key. Valid keys depend on the endpoint (e.g. votes/activity/creation for questions, reputation for users, rank for badges); common keys shown, others pass through to Stack Exchange.","on_invalid":"ignore","allowed_values":[{"value":"activity","label":"Last activity"},{"value":"creation","label":"Creation date"},{"value":"votes","label":"Votes/score"},{"value":"relevance","label":"Relevance (search)"},{"value":"popular","label":"Popularity (tags)"},{"value":"rank","label":"Rank (badges)"},{"value":"reputation","label":"Reputation (users)"},{"value":"name","label":"Name (sites)"},{"value":"hot","label":"Hot"},{"value":"week","label":"This week"},{"value":"month","label":"This month"}],"example":"name"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"associated_users","description":"A user's accounts across all Stack Exchange sites (network accounts).","required_params":["ids"],"optional_params":["page","pagesize","order"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"merge_history","description":"Account-merge history for a user id.","required_params":["ids"],"optional_params":["page","pagesize","order"],"params":[{"name":"ids","type":"string","required":true,"description":"Target user id (22656 = Jon Skeet); join several with ';' or ','.","on_invalid":"reject","example":"22656","aliases":["id"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"pagesize","type":"integer","required":false,"description":"Results per page (1-100, default 100). Larger values are clamped to 100.","on_invalid":"ignore","default":100,"example":30,"minimum":1,"maximum":100},{"name":"order","type":"enum","required":false,"description":"Sort direction for the chosen sort key.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"default":"desc","example":"desc"}],"returns":"items[] (each normalized with a stable id+type, and owner→author where present), plus site and CC BY-SA attribution; meta has has_more/page/pagesize/quota_remaining.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"status-intel","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Service Status & Incident API — live up/down status, incidents and per-component health for any vendor: auto-resolves and parses any status page (Statuspage, Instatus) plus AWS, GCP, Slack, Stripe and Azure","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/status-intel/v1","spec_available":true,"actions":[{"name":"status","description":"Current OVERALL status for a vendor → normalized indicator (operational/degraded/partial_outage/major_outage/maintenance) + is_operational boolean + description.","required_params":["vendor"],"optional_params":[],"params":[{"name":"vendor","type":"string","required":true,"description":"Which status page to read. EITHER a curated registry key (github, openai, aws, azure… — call action=list_vendors) OR ANY status-page host/URL for generic auto-parsing (e.g. 'status.acme.com', 'https://status.acme.io') — the engine auto-detects Atlassian Statuspage or Instatus and normalizes it the same way. Case-insensitive.","on_invalid":"ignore","allowed_values":[{"value":"airtable","label":"Airtable (statuspage)"},{"value":"algolia","label":"Algolia (statuspage)"},{"value":"amplitude","label":"Amplitude (statuspage)"},{"value":"anthropic","label":"Anthropic (statuspage)"},{"value":"asana","label":"Asana (statuspage)"},{"value":"atlassian","label":"Atlassian (statuspage)"},{"value":"aws","label":"Amazon Web Services (special)"},{"value":"azure","label":"Microsoft Azure (special)"},{"value":"bitbucket","label":"Bitbucket (statuspage)"},{"value":"box","label":"Box (statuspage)"},{"value":"braze","label":"Braze (statuspage)"},{"value":"brevo","label":"Brevo (statuspage)"},{"value":"bunny","label":"Bunny.net (statuspage)"},{"value":"calendly","label":"Calendly (statuspage)"},{"value":"circleci","label":"CircleCI (statuspage)"},{"value":"clerk","label":"Clerk (statuspage)"},{"value":"cloudflare","label":"Cloudflare (statuspage)"},{"value":"cloudinary","label":"Cloudinary (statuspage)"},{"value":"cockroachdb","label":"CockroachDB Cloud (statuspage)"},{"value":"cohere","label":"Cohere (statuspage)"},{"value":"confluent","label":"Confluent Cloud (statuspage)"},{"value":"contentful","label":"Contentful (statuspage)"},{"value":"databricks","label":"Databricks (statuspage)"},{"value":"datadog","label":"Datadog (statuspage)"},{"value":"dialpad","label":"Dialpad (statuspage)"},{"value":"digitalocean","label":"DigitalOcean (statuspage)"},{"value":"discord","label":"Discord (statuspage)"},{"value":"docusign","label":"Docusign (statuspage)"},{"value":"doppler","label":"Doppler (statuspage)"},{"value":"dropbox","label":"Dropbox (statuspage)"},{"value":"duo","label":"Cisco Duo (statuspage)"},{"value":"elastic","label":"Elastic Cloud (statuspage)"},{"value":"elevenlabs","label":"ElevenLabs (statuspage)"},{"value":"figma","label":"Figma (statuspage)"},{"value":"fivetran","label":"Fivetran (statuspage)"},{"value":"fly","label":"Fly.io (statuspage)"},{"value":"gcp","label":"Google Cloud (special)"},{"value":"github","label":"GitHub (statuspage)"},{"value":"godaddy","label":"GoDaddy (statuspage)"},{"value":"grafana","label":"Grafana Cloud (statuspage)"},{"value":"groq","label":"Groq (statuspage)"},{"value":"harness","label":"Harness (Split) (statuspage)"},{"value":"hashicorp","label":"HashiCorp Cloud (statuspage)"},{"value":"hubspot","label":"HubSpot (statuspage)"},{"value":"intercom","label":"Intercom (statuspage)"},{"value":"kraken","label":"Kraken (statuspage)"},{"value":"launchdarkly","label":"LaunchDarkly (statuspage)"},{"value":"linode","label":"Akamai Linode (statuspage)"},{"value":"loom","label":"Loom (statuspage)"},{"value":"mailgun","label":"Mailgun (statuspage)"},{"value":"miro","label":"Miro (statuspage)"},{"value":"mixpanel","label":"Mixpanel (statuspage)"},{"value":"monday","label":"monday.com (statuspage)"},{"value":"mongodb","label":"MongoDB Atlas (statuspage)"},{"value":"netlify","label":"Netlify (statuspage)"},{"value":"newrelic","label":"New Relic (statuspage)"},{"value":"ngrok","label":"ngrok (statuspage)"},{"value":"npm","label":"npm (statuspage)"},{"value":"openai","label":"OpenAI (statuspage)"},{"value":"pinecone","label":"Pinecone (statuspage)"},{"value":"planetscale","label":"PlanetScale (statuspage)"},{"value":"postman","label":"Postman (statuspage)"},{"value":"pusher","label":"Pusher (statuspage)"},{"value":"reddit","label":"Reddit (statuspage)"},{"value":"render","label":"Render (statuspage)"},{"value":"replicate","label":"Replicate (statuspage)"},{"value":"retool","label":"Retool (statuspage)"},{"value":"sanity","label":"Sanity (statuspage)"},{"value":"segment","label":"Twilio Segment (statuspage)"},{"value":"sendgrid","label":"Twilio SendGrid (statuspage)"},{"value":"sentry","label":"Sentry (statuspage)"},{"value":"shopify","label":"Shopify (statuspage)"},{"value":"slack","label":"Slack (special)"},{"value":"snowflake","label":"Snowflake (statuspage)"},{"value":"squarespace","label":"Squarespace (statuspage)"},{"value":"squareup","label":"Square (statuspage)"},{"value":"stabilityai","label":"Stability AI (statuspage)"},{"value":"stripe","label":"Stripe (special)"},{"value":"supabase","label":"Supabase (statuspage)"},{"value":"trello","label":"Trello (statuspage)"},{"value":"twilio","label":"Twilio (statuspage)"},{"value":"typeform","label":"Typeform (statuspage)"},{"value":"upstash","label":"Upstash (statuspage)"},{"value":"vercel","label":"Vercel (statuspage)"},{"value":"vimeo","label":"Vimeo (statuspage)"},{"value":"webflow","label":"Webflow (statuspage)"},{"value":"wise","label":"Wise (statuspage)"},{"value":"workos","label":"WorkOS (statuspage)"},{"value":"zapier","label":"Zapier (statuspage)"},{"value":"zoom","label":"Zoom (statuspage)"},{"value":"zoominfo","label":"ZoomInfo (statuspage)"}],"example":"github","aliases":["service","company","name","url","host"]}],"returns":"vendor, name, indicator, is_operational, description, raw_indicator, active_incident_count, updated_at, source_url","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"vendor":"github"}},{"name":"incidents","description":"Recent or active incidents for a vendor (title, impact, status, timeline of updates, affected components). active_only=true → just the ongoing ones.","required_params":["vendor"],"optional_params":["active_only","limit"],"params":[{"name":"vendor","type":"string","required":true,"description":"Which status page to read. EITHER a curated registry key (github, openai, aws, azure… — call action=list_vendors) OR ANY status-page host/URL for generic auto-parsing (e.g. 'status.acme.com', 'https://status.acme.io') — the engine auto-detects Atlassian Statuspage or Instatus and normalizes it the same way. Case-insensitive.","on_invalid":"ignore","allowed_values":[{"value":"airtable","label":"Airtable (statuspage)"},{"value":"algolia","label":"Algolia (statuspage)"},{"value":"amplitude","label":"Amplitude (statuspage)"},{"value":"anthropic","label":"Anthropic (statuspage)"},{"value":"asana","label":"Asana (statuspage)"},{"value":"atlassian","label":"Atlassian (statuspage)"},{"value":"aws","label":"Amazon Web Services (special)"},{"value":"azure","label":"Microsoft Azure (special)"},{"value":"bitbucket","label":"Bitbucket (statuspage)"},{"value":"box","label":"Box (statuspage)"},{"value":"braze","label":"Braze (statuspage)"},{"value":"brevo","label":"Brevo (statuspage)"},{"value":"bunny","label":"Bunny.net (statuspage)"},{"value":"calendly","label":"Calendly (statuspage)"},{"value":"circleci","label":"CircleCI (statuspage)"},{"value":"clerk","label":"Clerk (statuspage)"},{"value":"cloudflare","label":"Cloudflare (statuspage)"},{"value":"cloudinary","label":"Cloudinary (statuspage)"},{"value":"cockroachdb","label":"CockroachDB Cloud (statuspage)"},{"value":"cohere","label":"Cohere (statuspage)"},{"value":"confluent","label":"Confluent Cloud (statuspage)"},{"value":"contentful","label":"Contentful (statuspage)"},{"value":"databricks","label":"Databricks (statuspage)"},{"value":"datadog","label":"Datadog (statuspage)"},{"value":"dialpad","label":"Dialpad (statuspage)"},{"value":"digitalocean","label":"DigitalOcean (statuspage)"},{"value":"discord","label":"Discord (statuspage)"},{"value":"docusign","label":"Docusign (statuspage)"},{"value":"doppler","label":"Doppler (statuspage)"},{"value":"dropbox","label":"Dropbox (statuspage)"},{"value":"duo","label":"Cisco Duo (statuspage)"},{"value":"elastic","label":"Elastic Cloud (statuspage)"},{"value":"elevenlabs","label":"ElevenLabs (statuspage)"},{"value":"figma","label":"Figma (statuspage)"},{"value":"fivetran","label":"Fivetran (statuspage)"},{"value":"fly","label":"Fly.io (statuspage)"},{"value":"gcp","label":"Google Cloud (special)"},{"value":"github","label":"GitHub (statuspage)"},{"value":"godaddy","label":"GoDaddy (statuspage)"},{"value":"grafana","label":"Grafana Cloud (statuspage)"},{"value":"groq","label":"Groq (statuspage)"},{"value":"harness","label":"Harness (Split) (statuspage)"},{"value":"hashicorp","label":"HashiCorp Cloud (statuspage)"},{"value":"hubspot","label":"HubSpot (statuspage)"},{"value":"intercom","label":"Intercom (statuspage)"},{"value":"kraken","label":"Kraken (statuspage)"},{"value":"launchdarkly","label":"LaunchDarkly (statuspage)"},{"value":"linode","label":"Akamai Linode (statuspage)"},{"value":"loom","label":"Loom (statuspage)"},{"value":"mailgun","label":"Mailgun (statuspage)"},{"value":"miro","label":"Miro (statuspage)"},{"value":"mixpanel","label":"Mixpanel (statuspage)"},{"value":"monday","label":"monday.com (statuspage)"},{"value":"mongodb","label":"MongoDB Atlas (statuspage)"},{"value":"netlify","label":"Netlify (statuspage)"},{"value":"newrelic","label":"New Relic (statuspage)"},{"value":"ngrok","label":"ngrok (statuspage)"},{"value":"npm","label":"npm (statuspage)"},{"value":"openai","label":"OpenAI (statuspage)"},{"value":"pinecone","label":"Pinecone (statuspage)"},{"value":"planetscale","label":"PlanetScale (statuspage)"},{"value":"postman","label":"Postman (statuspage)"},{"value":"pusher","label":"Pusher (statuspage)"},{"value":"reddit","label":"Reddit (statuspage)"},{"value":"render","label":"Render (statuspage)"},{"value":"replicate","label":"Replicate (statuspage)"},{"value":"retool","label":"Retool (statuspage)"},{"value":"sanity","label":"Sanity (statuspage)"},{"value":"segment","label":"Twilio Segment (statuspage)"},{"value":"sendgrid","label":"Twilio SendGrid (statuspage)"},{"value":"sentry","label":"Sentry (statuspage)"},{"value":"shopify","label":"Shopify (statuspage)"},{"value":"slack","label":"Slack (special)"},{"value":"snowflake","label":"Snowflake (statuspage)"},{"value":"squarespace","label":"Squarespace (statuspage)"},{"value":"squareup","label":"Square (statuspage)"},{"value":"stabilityai","label":"Stability AI (statuspage)"},{"value":"stripe","label":"Stripe (special)"},{"value":"supabase","label":"Supabase (statuspage)"},{"value":"trello","label":"Trello (statuspage)"},{"value":"twilio","label":"Twilio (statuspage)"},{"value":"typeform","label":"Typeform (statuspage)"},{"value":"upstash","label":"Upstash (statuspage)"},{"value":"vercel","label":"Vercel (statuspage)"},{"value":"vimeo","label":"Vimeo (statuspage)"},{"value":"webflow","label":"Webflow (statuspage)"},{"value":"wise","label":"Wise (statuspage)"},{"value":"workos","label":"WorkOS (statuspage)"},{"value":"zapier","label":"Zapier (statuspage)"},{"value":"zoom","label":"Zoom (statuspage)"},{"value":"zoominfo","label":"ZoomInfo (statuspage)"}],"example":"github","aliases":["service","company","name","url","host"]},{"name":"active_only","type":"boolean","required":false,"description":"If true, return ONLY currently-unresolved/active incidents (the 'is there an outage right now?' view). Default false = recent history.","on_invalid":"ignore","default":false,"example":true},{"name":"limit","type":"integer","required":false,"description":"Max incidents to return (most recent first). Default 25, cap 100.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"vendor, incidents[] (id, name, impact, status, started_at, resolved_at, affected_components[], latest_update, updates[]), active_count, count","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"vendor":"github"}},{"name":"components","description":"Per-component (sub-service) health for a vendor — which specific products are degraded.","required_params":["vendor"],"optional_params":["limit"],"params":[{"name":"vendor","type":"string","required":true,"description":"Which status page to read. EITHER a curated registry key (github, openai, aws, azure… — call action=list_vendors) OR ANY status-page host/URL for generic auto-parsing (e.g. 'status.acme.com', 'https://status.acme.io') — the engine auto-detects Atlassian Statuspage or Instatus and normalizes it the same way. Case-insensitive.","on_invalid":"ignore","allowed_values":[{"value":"airtable","label":"Airtable (statuspage)"},{"value":"algolia","label":"Algolia (statuspage)"},{"value":"amplitude","label":"Amplitude (statuspage)"},{"value":"anthropic","label":"Anthropic (statuspage)"},{"value":"asana","label":"Asana (statuspage)"},{"value":"atlassian","label":"Atlassian (statuspage)"},{"value":"aws","label":"Amazon Web Services (special)"},{"value":"azure","label":"Microsoft Azure (special)"},{"value":"bitbucket","label":"Bitbucket (statuspage)"},{"value":"box","label":"Box (statuspage)"},{"value":"braze","label":"Braze (statuspage)"},{"value":"brevo","label":"Brevo (statuspage)"},{"value":"bunny","label":"Bunny.net (statuspage)"},{"value":"calendly","label":"Calendly (statuspage)"},{"value":"circleci","label":"CircleCI (statuspage)"},{"value":"clerk","label":"Clerk (statuspage)"},{"value":"cloudflare","label":"Cloudflare (statuspage)"},{"value":"cloudinary","label":"Cloudinary (statuspage)"},{"value":"cockroachdb","label":"CockroachDB Cloud (statuspage)"},{"value":"cohere","label":"Cohere (statuspage)"},{"value":"confluent","label":"Confluent Cloud (statuspage)"},{"value":"contentful","label":"Contentful (statuspage)"},{"value":"databricks","label":"Databricks (statuspage)"},{"value":"datadog","label":"Datadog (statuspage)"},{"value":"dialpad","label":"Dialpad (statuspage)"},{"value":"digitalocean","label":"DigitalOcean (statuspage)"},{"value":"discord","label":"Discord (statuspage)"},{"value":"docusign","label":"Docusign (statuspage)"},{"value":"doppler","label":"Doppler (statuspage)"},{"value":"dropbox","label":"Dropbox (statuspage)"},{"value":"duo","label":"Cisco Duo (statuspage)"},{"value":"elastic","label":"Elastic Cloud (statuspage)"},{"value":"elevenlabs","label":"ElevenLabs (statuspage)"},{"value":"figma","label":"Figma (statuspage)"},{"value":"fivetran","label":"Fivetran (statuspage)"},{"value":"fly","label":"Fly.io (statuspage)"},{"value":"gcp","label":"Google Cloud (special)"},{"value":"github","label":"GitHub (statuspage)"},{"value":"godaddy","label":"GoDaddy (statuspage)"},{"value":"grafana","label":"Grafana Cloud (statuspage)"},{"value":"groq","label":"Groq (statuspage)"},{"value":"harness","label":"Harness (Split) (statuspage)"},{"value":"hashicorp","label":"HashiCorp Cloud (statuspage)"},{"value":"hubspot","label":"HubSpot (statuspage)"},{"value":"intercom","label":"Intercom (statuspage)"},{"value":"kraken","label":"Kraken (statuspage)"},{"value":"launchdarkly","label":"LaunchDarkly (statuspage)"},{"value":"linode","label":"Akamai Linode (statuspage)"},{"value":"loom","label":"Loom (statuspage)"},{"value":"mailgun","label":"Mailgun (statuspage)"},{"value":"miro","label":"Miro (statuspage)"},{"value":"mixpanel","label":"Mixpanel (statuspage)"},{"value":"monday","label":"monday.com (statuspage)"},{"value":"mongodb","label":"MongoDB Atlas (statuspage)"},{"value":"netlify","label":"Netlify (statuspage)"},{"value":"newrelic","label":"New Relic (statuspage)"},{"value":"ngrok","label":"ngrok (statuspage)"},{"value":"npm","label":"npm (statuspage)"},{"value":"openai","label":"OpenAI (statuspage)"},{"value":"pinecone","label":"Pinecone (statuspage)"},{"value":"planetscale","label":"PlanetScale (statuspage)"},{"value":"postman","label":"Postman (statuspage)"},{"value":"pusher","label":"Pusher (statuspage)"},{"value":"reddit","label":"Reddit (statuspage)"},{"value":"render","label":"Render (statuspage)"},{"value":"replicate","label":"Replicate (statuspage)"},{"value":"retool","label":"Retool (statuspage)"},{"value":"sanity","label":"Sanity (statuspage)"},{"value":"segment","label":"Twilio Segment (statuspage)"},{"value":"sendgrid","label":"Twilio SendGrid (statuspage)"},{"value":"sentry","label":"Sentry (statuspage)"},{"value":"shopify","label":"Shopify (statuspage)"},{"value":"slack","label":"Slack (special)"},{"value":"snowflake","label":"Snowflake (statuspage)"},{"value":"squarespace","label":"Squarespace (statuspage)"},{"value":"squareup","label":"Square (statuspage)"},{"value":"stabilityai","label":"Stability AI (statuspage)"},{"value":"stripe","label":"Stripe (special)"},{"value":"supabase","label":"Supabase (statuspage)"},{"value":"trello","label":"Trello (statuspage)"},{"value":"twilio","label":"Twilio (statuspage)"},{"value":"typeform","label":"Typeform (statuspage)"},{"value":"upstash","label":"Upstash (statuspage)"},{"value":"vercel","label":"Vercel (statuspage)"},{"value":"vimeo","label":"Vimeo (statuspage)"},{"value":"webflow","label":"Webflow (statuspage)"},{"value":"wise","label":"Wise (statuspage)"},{"value":"workos","label":"WorkOS (statuspage)"},{"value":"zapier","label":"Zapier (statuspage)"},{"value":"zoom","label":"Zoom (statuspage)"},{"value":"zoominfo","label":"ZoomInfo (statuspage)"}],"example":"github","aliases":["service","company","name","url","host"]},{"name":"limit","type":"integer","required":false,"description":"Max components to return (per-component pages can be large). Default 200.","on_invalid":"ignore","default":200,"example":100,"minimum":1,"maximum":1000}],"returns":"vendor, indicator, components[] (name, status, is_operational, group, description), operational_count, degraded_count, total_components, count","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"vendor":"cloudflare"}},{"name":"summary","description":"Full one-call snapshot for a vendor: overall status + components + active incidents + scheduled maintenances (the whole status page in one normalized object).","required_params":["vendor"],"optional_params":[],"params":[{"name":"vendor","type":"string","required":true,"description":"Which status page to read. EITHER a curated registry key (github, openai, aws, azure… — call action=list_vendors) OR ANY status-page host/URL for generic auto-parsing (e.g. 'status.acme.com', 'https://status.acme.io') — the engine auto-detects Atlassian Statuspage or Instatus and normalizes it the same way. Case-insensitive.","on_invalid":"ignore","allowed_values":[{"value":"airtable","label":"Airtable (statuspage)"},{"value":"algolia","label":"Algolia (statuspage)"},{"value":"amplitude","label":"Amplitude (statuspage)"},{"value":"anthropic","label":"Anthropic (statuspage)"},{"value":"asana","label":"Asana (statuspage)"},{"value":"atlassian","label":"Atlassian (statuspage)"},{"value":"aws","label":"Amazon Web Services (special)"},{"value":"azure","label":"Microsoft Azure (special)"},{"value":"bitbucket","label":"Bitbucket (statuspage)"},{"value":"box","label":"Box (statuspage)"},{"value":"braze","label":"Braze (statuspage)"},{"value":"brevo","label":"Brevo (statuspage)"},{"value":"bunny","label":"Bunny.net (statuspage)"},{"value":"calendly","label":"Calendly (statuspage)"},{"value":"circleci","label":"CircleCI (statuspage)"},{"value":"clerk","label":"Clerk (statuspage)"},{"value":"cloudflare","label":"Cloudflare (statuspage)"},{"value":"cloudinary","label":"Cloudinary (statuspage)"},{"value":"cockroachdb","label":"CockroachDB Cloud (statuspage)"},{"value":"cohere","label":"Cohere (statuspage)"},{"value":"confluent","label":"Confluent Cloud (statuspage)"},{"value":"contentful","label":"Contentful (statuspage)"},{"value":"databricks","label":"Databricks (statuspage)"},{"value":"datadog","label":"Datadog (statuspage)"},{"value":"dialpad","label":"Dialpad (statuspage)"},{"value":"digitalocean","label":"DigitalOcean (statuspage)"},{"value":"discord","label":"Discord (statuspage)"},{"value":"docusign","label":"Docusign (statuspage)"},{"value":"doppler","label":"Doppler (statuspage)"},{"value":"dropbox","label":"Dropbox (statuspage)"},{"value":"duo","label":"Cisco Duo (statuspage)"},{"value":"elastic","label":"Elastic Cloud (statuspage)"},{"value":"elevenlabs","label":"ElevenLabs (statuspage)"},{"value":"figma","label":"Figma (statuspage)"},{"value":"fivetran","label":"Fivetran (statuspage)"},{"value":"fly","label":"Fly.io (statuspage)"},{"value":"gcp","label":"Google Cloud (special)"},{"value":"github","label":"GitHub (statuspage)"},{"value":"godaddy","label":"GoDaddy (statuspage)"},{"value":"grafana","label":"Grafana Cloud (statuspage)"},{"value":"groq","label":"Groq (statuspage)"},{"value":"harness","label":"Harness (Split) (statuspage)"},{"value":"hashicorp","label":"HashiCorp Cloud (statuspage)"},{"value":"hubspot","label":"HubSpot (statuspage)"},{"value":"intercom","label":"Intercom (statuspage)"},{"value":"kraken","label":"Kraken (statuspage)"},{"value":"launchdarkly","label":"LaunchDarkly (statuspage)"},{"value":"linode","label":"Akamai Linode (statuspage)"},{"value":"loom","label":"Loom (statuspage)"},{"value":"mailgun","label":"Mailgun (statuspage)"},{"value":"miro","label":"Miro (statuspage)"},{"value":"mixpanel","label":"Mixpanel (statuspage)"},{"value":"monday","label":"monday.com (statuspage)"},{"value":"mongodb","label":"MongoDB Atlas (statuspage)"},{"value":"netlify","label":"Netlify (statuspage)"},{"value":"newrelic","label":"New Relic (statuspage)"},{"value":"ngrok","label":"ngrok (statuspage)"},{"value":"npm","label":"npm (statuspage)"},{"value":"openai","label":"OpenAI (statuspage)"},{"value":"pinecone","label":"Pinecone (statuspage)"},{"value":"planetscale","label":"PlanetScale (statuspage)"},{"value":"postman","label":"Postman (statuspage)"},{"value":"pusher","label":"Pusher (statuspage)"},{"value":"reddit","label":"Reddit (statuspage)"},{"value":"render","label":"Render (statuspage)"},{"value":"replicate","label":"Replicate (statuspage)"},{"value":"retool","label":"Retool (statuspage)"},{"value":"sanity","label":"Sanity (statuspage)"},{"value":"segment","label":"Twilio Segment (statuspage)"},{"value":"sendgrid","label":"Twilio SendGrid (statuspage)"},{"value":"sentry","label":"Sentry (statuspage)"},{"value":"shopify","label":"Shopify (statuspage)"},{"value":"slack","label":"Slack (special)"},{"value":"snowflake","label":"Snowflake (statuspage)"},{"value":"squarespace","label":"Squarespace (statuspage)"},{"value":"squareup","label":"Square (statuspage)"},{"value":"stabilityai","label":"Stability AI (statuspage)"},{"value":"stripe","label":"Stripe (special)"},{"value":"supabase","label":"Supabase (statuspage)"},{"value":"trello","label":"Trello (statuspage)"},{"value":"twilio","label":"Twilio (statuspage)"},{"value":"typeform","label":"Typeform (statuspage)"},{"value":"upstash","label":"Upstash (statuspage)"},{"value":"vercel","label":"Vercel (statuspage)"},{"value":"vimeo","label":"Vimeo (statuspage)"},{"value":"webflow","label":"Webflow (statuspage)"},{"value":"wise","label":"Wise (statuspage)"},{"value":"workos","label":"WorkOS (statuspage)"},{"value":"zapier","label":"Zapier (statuspage)"},{"value":"zoom","label":"Zoom (statuspage)"},{"value":"zoominfo","label":"ZoomInfo (statuspage)"}],"example":"github","aliases":["service","company","name","url","host"]}],"returns":"vendor, status{indicator,is_operational,description}, components[], active_incidents[], scheduled_maintenances[], counts{}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"vendor":"datadog"}},{"name":"check_multi","description":"THE dashboard call: give your stack as a list (keys / brands / domains / status hosts) → each is auto-resolved to its real status page and its LIVE status is returned, read from the SOURCE. 'Are any of my dependencies down right now?' Per-item errors never fail the whole call.","required_params":["vendors"],"optional_params":[],"params":[{"name":"vendors","type":"array","required":true,"description":"Your stack as a list (≤25) — a JSON array OR a comma/space/semicolon string. Each item may be a curated key (github), a bare brand (notion), a plain domain (acme.com), OR an explicit status host (status.x.com). Each is auto-resolved to its real status page and its LIVE status is read from the SOURCE. An unresolvable item is reported per-item (indicator='unknown'), never failing the whole call.","on_invalid":"ignore","example":["github","openai","notion","acme.com","status.internal.io"],"aliases":["services","companies"]}],"returns":"results[] (vendor, name, resolved_host, resolved_via, indicator, is_operational, active_incident_count, error?), all_operational, degraded_vendors[], checked, operational_count","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"vendors":"github,openai,cloudflare"}},{"name":"batch","description":"Alias of check_multi — overall status for a batch of vendors in one call (up to 25).","required_params":["vendors"],"optional_params":[],"params":[{"name":"vendors","type":"array","required":true,"description":"Your stack as a list (≤25) — a JSON array OR a comma/space/semicolon string. Each item may be a curated key (github), a bare brand (notion), a plain domain (acme.com), OR an explicit status host (status.x.com). Each is auto-resolved to its real status page and its LIVE status is read from the SOURCE. An unresolvable item is reported per-item (indicator='unknown'), never failing the whole call.","on_invalid":"ignore","example":["github","openai","notion","acme.com","status.internal.io"],"aliases":["services","companies"]}],"returns":"results[] (same shape as check_multi), all_operational, degraded_vendors[], checked","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"vendors":"github,openai,cloudflare"}},{"name":"list_vendors","description":"The supported vendor set (key → name, kind, category, status host). Optionally filtered by category. Also lists explicitly-unsupported vendors (e.g. Azure) with the reason.","required_params":[],"optional_params":["category"],"params":[{"name":"category","type":"string","required":false,"description":"Optional filter for list_vendors — return only vendors in this category (e.g. ai, cloud, dev-tools, observability, fintech, email).","on_invalid":"ignore","example":"ai"}],"returns":"vendors[] (key, name, kind, category, status_host, homepage), count, categories[], unsupported{vendor: reason}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"steam-games","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Steam API scraper — game details, DLC, packages/bundles, regional prices, user reviews, live + peak player counts, store search & store-front discovery (new releases / deals / top sellers), most-played chart, news, tags, similar games, artwork and public player profiles from store.steampowered.com","version":"1.3.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/steam-games/v1","spec_available":true,"actions":[{"name":"app_detail","description":"full game metadata from store appdetails (+structured languages; include_tags adds community tags/franchise/links)","required_params":["appid"],"optional_params":["cc","country","lang","language","include_raw","include_tags"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]},{"name":"include_tags","type":"boolean","required":false,"description":"Also fetch community tags + franchise + external links (one extra store-page request).","on_invalid":"ignore","default":false,"example":false},{"name":"include_raw","type":"boolean","required":false,"description":"Attach the raw Steam appdetails payload under _raw.","on_invalid":"ignore","default":false,"example":false}],"returns":"app{appid, name, type, required_age, genres, categories, developers, publishers, release_date, price_overview, platforms, controller_support, screenshots, movies, pc/mac/linux_requirements, supported_languages_structured, metacritic, recommendations_total, achievements_total, dlc[], dlc_count, packages[], package_groups[], content_descriptors, ratings, support_info, +tags/franchise/external_links when include_tags}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"appid":730,"cc":"us"}},{"name":"price","description":"regional price + discount (appdetails price_overview)","required_params":["appid"],"optional_params":["cc","country","lang","language"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]}],"returns":"appid, cc, is_free, currency, final, initial, discount_percent, price_overview{}, package_groups","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"appid":1245620,"cc":"us"}},{"name":"reviews","description":"user reviews + query_summary; review_type/day_range/trend (day|week|month|year)/sort=funny; redact_pii drops author identity","required_params":["appid"],"optional_params":["language","lang","num_per_page","limit","filter","review_type","day_range","trend","sort","purchase_type","cursor","redact_pii","redactPii","redact_author"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"language","type":"string","required":false,"description":"Review language (Steam name, or 'all'). Default all.","on_invalid":"ignore","default":"all","example":"all","aliases":["lang"]},{"name":"num_per_page","type":"integer","required":false,"description":"How many reviews to return (1-100). Clamped to range.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"filter","type":"enum","required":false,"description":"Ordering. recent/updated/all are Steam-native; toprated/top/helpful/best are remapped to 'all'.","on_invalid":"ignore","allowed_values":[{"value":"recent","label":"Most recent"},{"value":"updated","label":"Recently updated"},{"value":"all","label":"Most helpful (all-time)"},{"value":"toprated","label":"Top rated (alias -> all)"},{"value":"helpful","label":"Helpful (alias -> all)"}],"default":"recent","example":"recent"},{"name":"review_type","type":"enum","required":false,"description":"Recommendation polarity filter.","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All reviews"},{"value":"positive","label":"Positive only"},{"value":"negative","label":"Negative only"}],"default":"all","example":"all"},{"name":"day_range","type":"integer","required":false,"description":"Trending window in days (used with filter=all). Set directly, or via the `trend` shortcut.","on_invalid":"ignore","example":30},{"name":"trend","type":"enum","required":false,"description":"Shortcut that sets day_range + filter=all for a trending window.","on_invalid":"ignore","allowed_values":[{"value":"day","label":"Last 1 day"},{"value":"week","label":"Last 7 days"},{"value":"month","label":"Last 30 days"},{"value":"year","label":"Last 365 days"}],"example":"week"},{"name":"sort","type":"enum","required":false,"description":"Optional client-side re-sort. Only funny/funniest reorder; otherwise Steam's native order is kept.","on_invalid":"ignore","allowed_values":[{"value":"funny","label":"Sort by funniest (client-side)"},{"value":"funniest","label":"Alias of funny"}],"example":"funny"},{"name":"purchase_type","type":"enum","required":false,"description":"Restrict to reviewers by purchase source.","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All"},{"value":"steam","label":"Steam purchasers"},{"value":"non_steam_purchase","label":"Non-Steam purchasers"}],"default":"all","example":"all"},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor — pass the previous response's `cursor` for the next page.","on_invalid":"ignore","default":"*","example":"*"},{"name":"redact_pii","type":"boolean","required":false,"description":"Drop author identity (steamid/profile/name/avatar/playtime) from each review.","on_invalid":"ignore","default":false,"example":false,"aliases":["redactPii","redact_author"]}],"returns":"appid, reviews[]{review, votes_up, votes_funny, author{...}}, summary{total_reviews, total_positive}, cursor, count, query{}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"appid":730,"num_per_page":5}},{"name":"player_stats","description":"steamspy owners + optional current player count","required_params":["appid"],"optional_params":["include_current_players"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"include_current_players","type":"boolean","required":false,"description":"Also fetch the live concurrent player count.","on_invalid":"ignore","default":true,"example":true}],"returns":"appid, owners, average_forever, average_2weeks, median_forever, positive, negative, userscore, current_players","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"appid":730}},{"name":"search","description":"store search → appid+price (+metascore on keyword); faceting: tags/type/category1/supportedlang/maxprice/specials. term OR a facet required.","required_params":[],"optional_params":["term","query","q","count","limit","start","cc","country","lang","language","tags","type","category1","supportedlang","maxprice","specials","force_infinite"],"params":[{"name":"term","type":"string","required":false,"description":"Keyword to search. Provide a term OR at least one facet (tags/type/category1/…).","on_invalid":"reject","example":"portal","aliases":["query","q"]},{"name":"count","type":"integer","required":false,"description":"How many items to return (1-100). Clamped to range.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"start","type":"integer","required":false,"description":"Result offset for paging (skip N).","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]},{"name":"tags","type":"array","required":false,"description":"Filter by Steam tag id(s) (e.g. 19=Action) — discover ids via the tags action. Comma-list or array.","on_invalid":"ignore","example":[19]},{"name":"type","type":"enum","required":false,"description":"Content type → Steam category1 facet. Common values shown; plurals (games/demos/…) also accepted.","on_invalid":"ignore","allowed_values":[{"value":"game","label":"Games"},{"value":"dlc","label":"DLC"},{"value":"software","label":"Software"},{"value":"demo","label":"Demos"},{"value":"soundtrack","label":"Soundtracks"},{"value":"mod","label":"Mods"},{"value":"hardware","label":"Hardware"},{"value":"video","label":"Videos"},{"value":"bundle","label":"Bundles"}],"example":"game"},{"name":"category1","type":"integer","required":false,"description":"Advanced: raw Steam category1 facet id (998=Games, 21=DLC). Overrides `type`.","on_invalid":"ignore","example":998},{"name":"supportedlang","type":"string","required":false,"description":"Filter to titles supporting this Steam language facet.","on_invalid":"ignore","example":"english"},{"name":"maxprice","type":"string","required":false,"description":"Steam maxprice facet (region price cap; Steam's own bucketing).","on_invalid":"ignore","example":"20"},{"name":"specials","type":"integer","required":false,"description":"Set 1 to restrict to titles currently on sale (Steam specials facet).","on_invalid":"ignore","example":1},{"name":"force_infinite","type":"boolean","required":false,"description":"Force the faceted results_html path even for a short keyword query.","on_invalid":"ignore","default":false,"example":false}],"returns":"items[]{appid, name, type, price{final, discount_percent, is_free}, platforms, review_summary, metascore}, count, total_results, facets","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"term":"portal","count":10}},{"name":"top_sellers","description":"Steam top sellers chart slice (appid+price per item); same facets as search","required_params":[],"optional_params":["count","limit","start","cc","country","lang","language","tags","type","category1","supportedlang","maxprice"],"params":[{"name":"count","type":"integer","required":false,"description":"How many items to return (1-100). Clamped to range.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"start","type":"integer","required":false,"description":"Result offset for paging (skip N).","on_invalid":"ignore","default":0,"example":0,"minimum":0},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]},{"name":"tags","type":"array","required":false,"description":"Filter by Steam tag id(s) (e.g. 19=Action) — discover ids via the tags action. Comma-list or array.","on_invalid":"ignore","example":[19]},{"name":"type","type":"enum","required":false,"description":"Content type → Steam category1 facet. Common values shown; plurals (games/demos/…) also accepted.","on_invalid":"ignore","allowed_values":[{"value":"game","label":"Games"},{"value":"dlc","label":"DLC"},{"value":"software","label":"Software"},{"value":"demo","label":"Demos"},{"value":"soundtrack","label":"Soundtracks"},{"value":"mod","label":"Mods"},{"value":"hardware","label":"Hardware"},{"value":"video","label":"Videos"},{"value":"bundle","label":"Bundles"}],"example":"game"},{"name":"category1","type":"integer","required":false,"description":"Advanced: raw Steam category1 facet id (998=Games, 21=DLC). Overrides `type`.","on_invalid":"ignore","example":998},{"name":"supportedlang","type":"string","required":false,"description":"Filter to titles supporting this Steam language facet.","on_invalid":"ignore","example":"english"},{"name":"maxprice","type":"string","required":false,"description":"Steam maxprice facet (region price cap; Steam's own bucketing).","on_invalid":"ignore","example":"20"}],"returns":"items[]{appid, name, type, price{...}, platforms, review_summary}, count, total_results, facets","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"count":5}},{"name":"news","description":"official game news (ISteamNews/GetNewsForApp)","required_params":["appid"],"optional_params":["count","limit","maxlength"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"count","type":"integer","required":false,"description":"How many items to return (1-100). Clamped to range.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"maxlength","type":"integer","required":false,"description":"Truncate each news body to this many characters (0 = no cap from this param).","on_invalid":"ignore","default":300,"example":300,"minimum":0}],"returns":"appid, news[]{title, url, contents, date, source}, count, news_count, source","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"appid":730,"count":3}},{"name":"tags","description":"community tags (InitAppTagModal) + franchise + external links (store page)","required_params":["appid"],"optional_params":["cc","country","lang","language"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]}],"returns":"appid, tags[]{tagid, name, count}, tag_count, franchise{slug, name}, external_links[]{url, label}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"appid":730}},{"name":"similar_games","description":"recommended similar games (appids) via /recommended/morelike","required_params":["appid"],"optional_params":["count","limit"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"count","type":"integer","required":false,"description":"How many items to return (1-50). Clamped to range.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50,"aliases":["limit"]}],"returns":"appid, similar[]{appid}, count, total_found","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"appid":1245620,"count":6}},{"name":"artworks","description":"official art-asset URLs (header/capsule/library/hero/logo/background)","required_params":["appid"],"optional_params":["cc","country","lang","language"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]}],"returns":"appid, name, artworks{header, library_600x900, hero_capsule, logo, background, ...}, count, cdn_base","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"appid":730}},{"name":"guides","description":"Community guides for a game (Steam Workshop guides) — top-rated, trending or most-recent. Each guide: title, author, star rating, preview image and URL.","required_params":["appid"],"optional_params":["sort","page","limit"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"sort","type":"enum","required":false,"description":"How to order the guides.","on_invalid":"ignore","allowed_values":[{"value":"trend","label":"Trending guides"},{"value":"toprated","label":"Top-rated guides"},{"value":"mostrecent","label":"Most recently published"}],"default":"trend","example":"toprated"},{"name":"page","type":"integer","required":false,"description":"Result page.","on_invalid":"ignore","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Max guides to return (1–50).","on_invalid":"ignore","default":30,"minimum":1,"maximum":50}],"returns":"appid, sort, page, count, guides[]{id, url, title, author, short_desc, rating_stars, preview_image}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"appid":570,"sort":"trend","limit":10}},{"name":"dlc","description":"List a game's DLC with names + regional prices. The base game's DLC appids are resolved to titles/prices (bounded by `resolve` to keep latency sane).","required_params":["appid"],"optional_params":["cc","country","lang","language","resolve","count","limit"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]},{"name":"resolve","type":"integer","required":false,"description":"How many rows to enrich with names (extra per-id lookups; 0-60). Steam serves one app per detail call, so this bounds latency; un-enriched rows still return their appid.","on_invalid":"ignore","default":25,"example":25,"minimum":0,"maximum":60}],"returns":"appid, name, dlc[]{appid, name, is_free, price{currency, final, initial, discount_percent}, release_date, resolved}, count, total_dlc, resolved_count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"appid":1245620,"resolve":5}},{"name":"package","description":"Steam package / bundle (a.k.a. 'sub') details — the apps it contains, the bundled price, platforms and release date. Use the package ids from app_detail.package_groups.","required_params":["packageid"],"optional_params":["package_id","subid","id","cc","country","lang","language"],"params":[{"name":"packageid","type":"integer","required":true,"description":"Steam package/sub id (from app_detail.package_groups[].subs[].packageid).","on_invalid":"reject","example":440408,"aliases":["package_id","subid","id"]},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]}],"returns":"packageid, name, apps[]{id, name}, app_count, price{currency, final, initial, discount_percent}, platforms, controller, release_date","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"packageid":440408}},{"name":"featured","description":"Store-front discovery lists: specials (current deals), new_releases, coming_soon and top_sellers — each with appid + price. Pick one with `category`, or get all four.","required_params":[],"optional_params":["category","type","count","limit","cc","country","lang","language"],"params":[{"name":"category","type":"enum","required":false,"description":"Which store-front list(s) to return.","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All four buckets"},{"value":"specials","label":"On-sale deals"},{"value":"new_releases","label":"New releases"},{"value":"coming_soon","label":"Coming soon / pre-purchase"},{"value":"top_sellers","label":"Top sellers"}],"default":"all","example":"specials"},{"name":"count","type":"integer","required":false,"description":"How many items to return (1-100). Clamped to range.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]}],"returns":"cc, category, buckets[], categories{specials[], new_releases[], coming_soon[], top_sellers[]}{appid, name, discounted, discount_percent, final_price, original_price, currency, header_image, platforms}, count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"specials","count":5}},{"name":"most_played","description":"Official Steam most-played chart — live concurrent player count + 24h peak per game (the only keyless source of all-time/period peak). Optionally enrich rows with names.","required_params":[],"optional_params":["count","limit","resolve","cc","country","lang","language"],"params":[{"name":"count","type":"integer","required":false,"description":"How many items to return (1-100). Clamped to range.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100,"aliases":["limit"]},{"name":"resolve","type":"integer","required":false,"description":"How many rows to enrich with names (extra per-id lookups; 0-50). Steam serves one app per detail call, so this bounds latency; un-enriched rows still return their appid.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":50},{"name":"cc","type":"string","required":false,"description":"Store region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.","on_invalid":"ignore","default":"us","example":"us","aliases":["country"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]}],"returns":"last_update, games[]{rank, appid, name, concurrent_players, peak_players_today}, count","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"count":5}},{"name":"review_histogram","description":"Recommendations up/down over the game's lifetime (Steam's own review histogram) — the data behind the store review-trend graph.","required_params":["appid"],"optional_params":["lang","language"],"params":[{"name":"appid","type":"integer","required":true,"description":"Steam application id (the number in a store URL, e.g. 730 = CS2).","on_invalid":"reject","example":730,"aliases":["app_id","appids"]},{"name":"lang","type":"string","required":false,"description":"Steam language name (e.g. english, french, schinese) for localized store text.","on_invalid":"ignore","default":"english","example":"english","aliases":["language"]}],"returns":"appid, start_date, end_date, rollup_type, rollups[]{date, recommendations_up, recommendations_down}, recent_weeks[], recommendations_up_total, recommendations_down_total, count","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"appid":730}},{"name":"player_profile","description":"Public Steam profile summary by 64-bit steamid OR vanity name (keyless). Returns persona, avatar, online state, ban flags and the privacy state. Note: owned-games / friends are NOT available on Steam's keyless surface — this is the profile summary.","required_params":[],"optional_params":["steamid","steamid64","steam_id","vanity","vanity_url","profile"],"params":[{"name":"steamid","type":"string","required":false,"description":"64-bit SteamID. Provide this OR `vanity`.","on_invalid":"ignore","example":"76561197960287930","aliases":["steamid64","steam_id"]},{"name":"vanity","type":"string","required":false,"description":"Custom URL name from steamcommunity.com/id/<name>. Resolved to a steamid. Provide this OR `steamid`.","on_invalid":"ignore","example":"gabelogannewell","aliases":["vanity_url","profile"]}],"returns":"steamid64, persona_name, online_state, privacy_state, is_public, avatar, real_name, location, member_since, vac_banned, trade_ban_state, is_limited_account","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"vanity":"gabelogannewell"}},{"name":"resolve","description":"Turn a human name into ids so callers never hand-find a URL: a game name → matching appids (chains to app_detail), or a vanity name (kind=profile) → steamid64.","required_params":["term"],"optional_params":["query","q","name","kind","count","limit"],"params":[{"name":"term","type":"string","required":true,"description":"Game title (kind=app) or vanity name (kind=profile) to resolve.","on_invalid":"reject","example":"elden ring","aliases":["query","q","name"]},{"name":"kind","type":"enum","required":false,"description":"What to resolve.","on_invalid":"ignore","allowed_values":[{"value":"app","label":"Resolve a game name → appids"},{"value":"profile","label":"Resolve a vanity name → steamid64"}],"default":"app","example":"app"},{"name":"count","type":"integer","required":false,"description":"How many items to return (1-50). Clamped to range.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50,"aliases":["limit"]}],"returns":"kind, term, matches[]{appid, name, icon, logo} (kind=app) | steamid64, persona_name (kind=profile), count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"term":"elden ring"}}]},{"name":"stockx","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"StockX API — live resale market data for sneakers, streetwear, and electronics (lowest ask, highest bid, last sale, sales volume, price premium, volatility, per-size variant pricing) from stockx.com","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/stockx/v1","spec_available":true,"actions":[{"name":"product_detail","description":"full product by `url` OR `url_key`/`id`/`uuid`: title/brand/model/sku/category/colorway/retail_price/release_date/image + market{lowest_ask,highest_bid,number_of_asks/bids,last_sale,sales_last_72h,last_sale_change_pct/value,avg_price_72h/90d/annual,sales_count_*,price_premium=(last_sale-retail)/retail, volatility=CV-of-recent-sales, ask_service_levels{standard/express_*: count,lowest_ask,processing_fee,delivery}} + per-size variants[]{size,lowest_ask,highest_bid,last_sale}. The market-data moat. `currency` (USD/EUR/GBP/…) + `market` (US/GB/DE/…) optional.","required_params":[],"optional_params":["url","url_key","id","uuid","currency","market"],"params":[{"name":"url_key","type":"string","required":false,"description":"Product slug from the StockX product URL (stockx.com/<url_key>) — copy it from search results. Internal id/uuid also accepted. Provide url_key OR url.","on_invalid":"reject","example":"air-jordan-4-retro-bred-reimagined","aliases":["urlKey","slug","id","uuid","product_id"]},{"name":"url","type":"string","required":false,"description":"Full StockX product URL — alternative to url_key.","on_invalid":"reject","example":"https://stockx.com/air-jordan-4-retro-bred-reimagined","aliases":["product_url"]},{"name":"currency","type":"enum","required":false,"description":"Currency for all prices.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"US Dollar"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"JPY","label":"Japanese Yen"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"KRW","label":"South Korean Won"},{"value":"MXN","label":"Mexican Peso"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SGD","label":"Singapore Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"DKK","label":"Danish Krone"},{"value":"NOK","label":"Norwegian Krone"},{"value":"PLN","label":"Polish Złoty"},{"value":"CNY","label":"Chinese Yuan"},{"value":"TWD","label":"New Taiwan Dollar"},{"value":"THB","label":"Thai Baht"}],"default":"USD"},{"name":"market","type":"enum","required":false,"description":"Marketplace region (affects asks/bids and service levels).","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"IT","label":"Italy"},{"value":"ES","label":"Spain"},{"value":"NL","label":"Netherlands"},{"value":"JP","label":"Japan"},{"value":"AU","label":"Australia"},{"value":"CA","label":"Canada"},{"value":"KR","label":"South Korea"},{"value":"HK","label":"Hong Kong"},{"value":"SG","label":"Singapore"},{"value":"CH","label":"Switzerland"},{"value":"MX","label":"Mexico"},{"value":"NZ","label":"New Zealand"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"PL","label":"Poland"},{"value":"CN","label":"China"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"}],"default":"US","aliases":["country"]}],"returns":"product{title, brand, model, sku, category, colorway, retail_price, release_date, image, market{lowest_ask, highest_bid, last_sale, sales_last_72h, avg_price_72h/90d/annual, price_premium, volatility, ask_service_levels}, variants[]{size, lowest_ask, highest_bid, last_sale}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"url_key":"air-jordan-4-retro-bred-reimagined"}},{"name":"price","description":"cheap price + stock refresh by `url` OR `url_key`/`id`/`uuid`: product{id,url_key,url,title,sku,lowest_ask,highest_bid,number_of_asks,number_of_bids,last_sale,sales_last_72h,in_stock} + per-size variants[]{size,lowest_ask,highest_bid,last_sale,number_of_asks,in_stock}. One light GraphQL GET (about half the bytes of product_detail): no description, traits, statistics, service levels or sales feed. in_stock = StockX has at least one live ask (number_of_asks > 0). `currency`/`market` optional.","required_params":[],"optional_params":["url","url_key","id","uuid","currency","market"],"params":[{"name":"url_key","type":"string","required":false,"description":"Product slug from the StockX product URL (stockx.com/<url_key>) — copy it from search results. Internal id/uuid also accepted. Provide url_key OR url.","on_invalid":"reject","example":"air-jordan-4-retro-bred-reimagined","aliases":["urlKey","slug","id","uuid","product_id"]},{"name":"url","type":"string","required":false,"description":"Full StockX product URL — alternative to url_key.","on_invalid":"reject","example":"https://stockx.com/air-jordan-4-retro-bred-reimagined","aliases":["product_url"]},{"name":"currency","type":"enum","required":false,"description":"Currency for all prices.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"US Dollar"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"JPY","label":"Japanese Yen"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"KRW","label":"South Korean Won"},{"value":"MXN","label":"Mexican Peso"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SGD","label":"Singapore Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"DKK","label":"Danish Krone"},{"value":"NOK","label":"Norwegian Krone"},{"value":"PLN","label":"Polish Złoty"},{"value":"CNY","label":"Chinese Yuan"},{"value":"TWD","label":"New Taiwan Dollar"},{"value":"THB","label":"Thai Baht"}],"default":"USD"},{"name":"market","type":"enum","required":false,"description":"Marketplace region (affects asks/bids and service levels).","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"IT","label":"Italy"},{"value":"ES","label":"Spain"},{"value":"NL","label":"Netherlands"},{"value":"JP","label":"Japan"},{"value":"AU","label":"Australia"},{"value":"CA","label":"Canada"},{"value":"KR","label":"South Korea"},{"value":"HK","label":"Hong Kong"},{"value":"SG","label":"Singapore"},{"value":"CH","label":"Switzerland"},{"value":"MX","label":"Mexico"},{"value":"NZ","label":"New Zealand"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"PL","label":"Poland"},{"value":"CN","label":"China"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"}],"default":"US","aliases":["country"]}],"returns":"product{id, url_key, title, sku, lowest_ask, highest_bid, number_of_asks, number_of_bids, last_sale, sales_last_72h, in_stock, variants[]{size, lowest_ask, highest_bid, last_sale, number_of_asks, in_stock}}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"url_key":"air-jordan-4-retro-bred-reimagined"}},{"name":"search","description":"product search → results[]{id,url_key,url,title,brand,sku,category,image,lowest_ask,highest_bid,last_sale,number_of_asks,number_of_bids,in_stock} + page_info{page,limit,total}. in_stock = StockX has at least one live ask (number_of_asks > 0). Resolves url_keys for product_detail. Optional facet filters: `brand` (e.g. Jordan), `gender` (men/women/…), `category` (sneakers/apparel/…) + `sort` (most-active/featured/release_date/lowest_ask). Return up to 1000 products in one call with `max_results` (40/page, paged for you) — that is StockX's own ceiling, its grid stops at page 26. `page` picks where the window starts. `currency`/`market` optional.","required_params":["query"],"optional_params":["max_results","page","currency","market","brand","gender","category","sort"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for (product keywords).","on_invalid":"reject","example":"jordan 1","aliases":["q"]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return. MAXIMUM 1000 — the published ceiling, so there is nothing to probe for. StockX serves 40 per page, so asking for more fetches further pages automatically (up to 25 of them). Omit it and you get exactly one page, which is what this action has always done. The ceiling is StockX's own: its grid stops at page 26 (1040 products) and it caps the reported `total` at 1000 however many matches a query really has. Above 1000 the value is clamped, not rejected. Treat it as an upper bound: a narrow query returns everything it has, and a broad one can still come up short because StockX repeats some products across grid pages and duplicates are dropped (measured 2026-08-07: browse sneakers returned a full 1000, the keyword 'nike' returned 709). Whenever fewer rows come back than you asked for, `meta.incomplete` is true.","on_invalid":"ignore","default":40,"example":200,"minimum":1,"maximum":1000,"aliases":["limit","max"]},{"name":"page","type":"integer","required":false,"description":"Page to start from (1-based, 40 results per page). MAXIMUM 26 — StockX's grid ends there. Measured 2026-08-07 on three separate queries: pages 1-26 are all distinct, page 27 and beyond return page 1's products while reporting `page: 1`. A higher value is clamped to 26 rather than looping silently.","on_invalid":"ignore","default":1,"minimum":1,"maximum":26},{"name":"brand","type":"string","required":false,"description":"Filter results to a brand (StockX facet value, e.g. Jordan, Nike, adidas, New Balance, Supreme).","on_invalid":"reject","example":"Jordan","aliases":["brand_filter"]},{"name":"gender","type":"enum","required":false,"description":"Filter results by gender facet.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Men"},{"value":"women","label":"Women"},{"value":"youth","label":"Youth"},{"value":"infant","label":"Infant"}]},{"name":"category","type":"enum","required":false,"description":"StockX vertical to browse (grid of that whole category).","on_invalid":"reject","allowed_values":[{"value":"sneakers","label":"Sneakers"},{"value":"apparel","label":"Apparel/Streetwear"},{"value":"electronics","label":"Electronics"},{"value":"collectibles","label":"Collectibles (incl. trading cards, figures)"},{"value":"accessories","label":"Accessories (watches, bags, etc.)"}],"aliases":["vertical","browse_category"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering for browse/trending grids.","on_invalid":"reject","allowed_values":[{"value":"most-active","label":"Most active (movers / highest trade volume)"},{"value":"featured","label":"Featured (StockX default ranking)"},{"value":"release_date","label":"Newest release date first"},{"value":"lowest_ask","label":"Lowest ask price first"}]},{"name":"currency","type":"enum","required":false,"description":"Currency for all prices.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"US Dollar"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"JPY","label":"Japanese Yen"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"KRW","label":"South Korean Won"},{"value":"MXN","label":"Mexican Peso"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SGD","label":"Singapore Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"DKK","label":"Danish Krone"},{"value":"NOK","label":"Norwegian Krone"},{"value":"PLN","label":"Polish Złoty"},{"value":"CNY","label":"Chinese Yuan"},{"value":"TWD","label":"New Taiwan Dollar"},{"value":"THB","label":"Thai Baht"}],"default":"USD"},{"name":"market","type":"enum","required":false,"description":"Marketplace region (affects asks/bids and service levels).","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"IT","label":"Italy"},{"value":"ES","label":"Spain"},{"value":"NL","label":"Netherlands"},{"value":"JP","label":"Japan"},{"value":"AU","label":"Australia"},{"value":"CA","label":"Canada"},{"value":"KR","label":"South Korea"},{"value":"HK","label":"Hong Kong"},{"value":"SG","label":"Singapore"},{"value":"CH","label":"Switzerland"},{"value":"MX","label":"Mexico"},{"value":"NZ","label":"New Zealand"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"PL","label":"Poland"},{"value":"CN","label":"China"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"}],"default":"US","aliases":["country"]}],"returns":"results[]{id, url_key, url, title, brand, sku, category, image, lowest_ask, highest_bid, last_sale, number_of_asks, in_stock} + page_info{page, limit, total} (meta.pagination for paging; meta.requested_max + meta.last_page when max_results paged)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":40,"min":1},"example_params":{"query":"jordan 1"}},{"name":"recent_sales","description":"recent transaction feed by `url`/`url_key`/`id` → sales[]{amount,created_at} (most recent first) + product ref. Best-effort market-history. `currency`/`market` optional.","required_params":[],"optional_params":["url","url_key","id","uuid","currency","market"],"params":[{"name":"url_key","type":"string","required":false,"description":"Product slug from the StockX product URL (stockx.com/<url_key>) — copy it from search results. Internal id/uuid also accepted. Provide url_key OR url.","on_invalid":"reject","example":"air-jordan-4-retro-bred-reimagined","aliases":["urlKey","slug","id","uuid","product_id"]},{"name":"url","type":"string","required":false,"description":"Full StockX product URL — alternative to url_key.","on_invalid":"reject","example":"https://stockx.com/air-jordan-4-retro-bred-reimagined","aliases":["product_url"]},{"name":"currency","type":"enum","required":false,"description":"Currency for all prices.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"US Dollar"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"JPY","label":"Japanese Yen"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"KRW","label":"South Korean Won"},{"value":"MXN","label":"Mexican Peso"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SGD","label":"Singapore Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"DKK","label":"Danish Krone"},{"value":"NOK","label":"Norwegian Krone"},{"value":"PLN","label":"Polish Złoty"},{"value":"CNY","label":"Chinese Yuan"},{"value":"TWD","label":"New Taiwan Dollar"},{"value":"THB","label":"Thai Baht"}],"default":"USD"},{"name":"market","type":"enum","required":false,"description":"Marketplace region (affects asks/bids and service levels).","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"IT","label":"Italy"},{"value":"ES","label":"Spain"},{"value":"NL","label":"Netherlands"},{"value":"JP","label":"Japan"},{"value":"AU","label":"Australia"},{"value":"CA","label":"Canada"},{"value":"KR","label":"South Korea"},{"value":"HK","label":"Hong Kong"},{"value":"SG","label":"Singapore"},{"value":"CH","label":"Switzerland"},{"value":"MX","label":"Mexico"},{"value":"NZ","label":"New Zealand"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"PL","label":"Poland"},{"value":"CN","label":"China"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"}],"default":"US","aliases":["country"]}],"returns":"sales[]{amount, created_at} (most recent first) + product reference","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"url_key":"air-jordan-4-retro-bred-reimagined"}},{"name":"suggest","description":"autocomplete query suggestions for `query` (QuerySuggestion text; falls back to search-derived titles if the suggest op drifts).","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Partial search text to complete.","on_invalid":"reject","example":"jordan","aliases":["q"]}],"returns":"suggestions[] (plain strings)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"jordan"}},{"name":"price_history","description":"historical price time-series for a product, aggregated from the deep sales feed → series[]{date,count,avg,min,max,last} (oldest→newest) + summary{points,sales_sampled,min,max,avg,first_date,last_date,window_complete}. `window` (30d/90d/180d/365d/all) bounds lookback; `bucket` (day/week/month) sets granularity; optional `size` for per-size history. The #1 resale-trader ask. `currency` optional.","required_params":[],"optional_params":["url","url_key","id","uuid","window","bucket","size","currency"],"params":[{"name":"url_key","type":"string","required":false,"description":"Product slug from the StockX product URL (stockx.com/<url_key>) — copy it from search results. Internal id/uuid also accepted. Provide url_key OR url.","on_invalid":"reject","example":"air-jordan-4-retro-bred-reimagined","aliases":["urlKey","slug","id","uuid","product_id"]},{"name":"url","type":"string","required":false,"description":"Full StockX product URL — alternative to url_key.","on_invalid":"reject","example":"https://stockx.com/air-jordan-4-retro-bred-reimagined","aliases":["product_url"]},{"name":"window","type":"enum","required":false,"description":"How far back the price series reaches.","on_invalid":"reject","allowed_values":[{"value":"30d","label":"Last 30 days"},{"value":"90d","label":"Last 90 days"},{"value":"180d","label":"Last 180 days"},{"value":"365d","label":"Last 365 days"},{"value":"all","label":"All available (cost-capped by page budget)"}],"default":"90d"},{"name":"bucket","type":"enum","required":false,"description":"Time-bucket granularity for each series point.","on_invalid":"reject","allowed_values":[{"value":"day","label":"Daily"},{"value":"week","label":"ISO weekly"},{"value":"month","label":"Monthly"}],"default":"day"},{"name":"size","type":"string","required":false,"description":"Optional shoe/apparel size for per-size price history (must match a product variant size, e.g. 10, 10.5, M).","on_invalid":"reject","example":"10","aliases":["variant_size"]},{"name":"currency","type":"enum","required":false,"description":"Currency for all prices.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"US Dollar"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"JPY","label":"Japanese Yen"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"KRW","label":"South Korean Won"},{"value":"MXN","label":"Mexican Peso"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SGD","label":"Singapore Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"DKK","label":"Danish Krone"},{"value":"NOK","label":"Norwegian Krone"},{"value":"PLN","label":"Polish Złoty"},{"value":"CNY","label":"Chinese Yuan"},{"value":"TWD","label":"New Taiwan Dollar"},{"value":"THB","label":"Thai Baht"}],"default":"USD"}],"returns":"series[]{date, count, avg, min, max, last} + summary{points, sales_sampled, window, bucket, min, max, avg, first_date, last_date, window_complete} + product","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":3},"example_params":{"url_key":"air-jordan-4-retro-bred-reimagined","window":"90d","bucket":"day"}},{"name":"sales_history","description":"deep paginated transaction log → sales[]{amount,created_at,cursor} (newest first) + page_info{cursor,has_more,total,limit,returned} + product. Far deeper than recent_sales (StockX exposes the full ledger, e.g. 60k+ sales). Cursor-paginate with `cursor`; optional `size` filters to one variant. `limit` ≤ 50 (StockX page cap). `currency` optional.","required_params":[],"optional_params":["url","url_key","id","uuid","cursor","limit","size","currency"],"params":[{"name":"url_key","type":"string","required":false,"description":"Product slug from the StockX product URL (stockx.com/<url_key>) — copy it from search results. Internal id/uuid also accepted. Provide url_key OR url.","on_invalid":"reject","example":"air-jordan-4-retro-bred-reimagined","aliases":["urlKey","slug","id","uuid","product_id"]},{"name":"url","type":"string","required":false,"description":"Full StockX product URL — alternative to url_key.","on_invalid":"reject","example":"https://stockx.com/air-jordan-4-retro-bred-reimagined","aliases":["product_url"]},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous page_info.cursor (omit for the first/newest page).","on_invalid":"reject","aliases":["after"]},{"name":"limit","type":"integer","required":false,"description":"Rows per page (StockX caps at 50).","on_invalid":"ignore","default":50,"minimum":1,"maximum":50},{"name":"size","type":"string","required":false,"description":"Optional size for one variant's transaction log.","on_invalid":"reject","example":"10","aliases":["variant_size"]},{"name":"currency","type":"enum","required":false,"description":"Currency for all prices.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"US Dollar"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"JPY","label":"Japanese Yen"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"KRW","label":"South Korean Won"},{"value":"MXN","label":"Mexican Peso"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SGD","label":"Singapore Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"DKK","label":"Danish Krone"},{"value":"NOK","label":"Norwegian Krone"},{"value":"PLN","label":"Polish Złoty"},{"value":"CNY","label":"Chinese Yuan"},{"value":"TWD","label":"New Taiwan Dollar"},{"value":"THB","label":"Thai Baht"}],"default":"USD"}],"returns":"sales[]{amount, created_at, cursor} + page_info{cursor, has_more, total, limit, returned} + product (+ variant when `size` given)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"url_key":"air-jordan-4-retro-bred-reimagined","limit":50}},{"name":"browse","description":"category/vertical grids + sort + facet filters → results[]{id,url_key,url,title,brand,sku,category,image,lowest_ask,highest_bid,last_sale} + page_info{page,limit,total}. Needs at least one of `category` (sneakers/apparel/electronics/collectibles/accessories), `query`, or a facet filter (`brand`/`gender`). `sort` (most-active/featured/release_date/lowest_ask) optional. Return up to 1000 products in one call with `max_results` (40/page, paged for you — StockX's own ceiling, its grid stops at page 26); `page` picks where the window starts. The catalog-discovery surface.","required_params":[],"optional_params":["category","query","brand","gender","sort","max_results","page","currency","market"],"params":[{"name":"category","type":"enum","required":false,"description":"StockX vertical to browse (grid of that whole category).","on_invalid":"reject","allowed_values":[{"value":"sneakers","label":"Sneakers"},{"value":"apparel","label":"Apparel/Streetwear"},{"value":"electronics","label":"Electronics"},{"value":"collectibles","label":"Collectibles (incl. trading cards, figures)"},{"value":"accessories","label":"Accessories (watches, bags, etc.)"}],"aliases":["vertical","browse_category"]},{"name":"query","type":"string","required":false,"description":"Optional keyword to combine with category/filters.","on_invalid":"reject","example":"jordan 4","aliases":["q"]},{"name":"brand","type":"string","required":false,"description":"Filter results to a brand (StockX facet value, e.g. Jordan, Nike, adidas, New Balance, Supreme).","on_invalid":"reject","example":"Jordan","aliases":["brand_filter"]},{"name":"gender","type":"enum","required":false,"description":"Filter results by gender facet.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Men"},{"value":"women","label":"Women"},{"value":"youth","label":"Youth"},{"value":"infant","label":"Infant"}]},{"name":"sort","type":"enum","required":false,"description":"Result ordering for browse/trending grids.","on_invalid":"reject","allowed_values":[{"value":"most-active","label":"Most active (movers / highest trade volume)"},{"value":"featured","label":"Featured (StockX default ranking)"},{"value":"release_date","label":"Newest release date first"},{"value":"lowest_ask","label":"Lowest ask price first"}]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return. MAXIMUM 1000 — the published ceiling, so there is nothing to probe for. StockX serves 40 per page, so asking for more fetches further pages automatically (up to 25 of them). Omit it and you get exactly one page, which is what this action has always done. The ceiling is StockX's own: its grid stops at page 26 (1040 products) and it caps the reported `total` at 1000 however many matches a query really has. Above 1000 the value is clamped, not rejected. Treat it as an upper bound: a narrow query returns everything it has, and a broad one can still come up short because StockX repeats some products across grid pages and duplicates are dropped (measured 2026-08-07: browse sneakers returned a full 1000, the keyword 'nike' returned 709). Whenever fewer rows come back than you asked for, `meta.incomplete` is true.","on_invalid":"ignore","default":40,"example":200,"minimum":1,"maximum":1000,"aliases":["limit","max"]},{"name":"page","type":"integer","required":false,"description":"Page to start from (1-based, 40 results per page). MAXIMUM 26 — StockX's grid ends there. Measured 2026-08-07 on three separate queries: pages 1-26 are all distinct, page 27 and beyond return page 1's products while reporting `page: 1`. A higher value is clamped to 26 rather than looping silently.","on_invalid":"ignore","default":1,"minimum":1,"maximum":26},{"name":"currency","type":"enum","required":false,"description":"Currency for all prices.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"US Dollar"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"JPY","label":"Japanese Yen"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"KRW","label":"South Korean Won"},{"value":"MXN","label":"Mexican Peso"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SGD","label":"Singapore Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"DKK","label":"Danish Krone"},{"value":"NOK","label":"Norwegian Krone"},{"value":"PLN","label":"Polish Złoty"},{"value":"CNY","label":"Chinese Yuan"},{"value":"TWD","label":"New Taiwan Dollar"},{"value":"THB","label":"Thai Baht"}],"default":"USD"},{"name":"market","type":"enum","required":false,"description":"Marketplace region (affects asks/bids and service levels).","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"IT","label":"Italy"},{"value":"ES","label":"Spain"},{"value":"NL","label":"Netherlands"},{"value":"JP","label":"Japan"},{"value":"AU","label":"Australia"},{"value":"CA","label":"Canada"},{"value":"KR","label":"South Korea"},{"value":"HK","label":"Hong Kong"},{"value":"SG","label":"Singapore"},{"value":"CH","label":"Switzerland"},{"value":"MX","label":"Mexico"},{"value":"NZ","label":"New Zealand"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"PL","label":"Poland"},{"value":"CN","label":"China"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"}],"default":"US","aliases":["country"]}],"returns":"results[]{id, url_key, url, title, brand, sku, category, image, lowest_ask, highest_bid, last_sale} + page_info{page, limit, total}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":40,"min":1},"example_params":{"category":"sneakers","sort":"most-active"}},{"name":"trending","description":"movers / most-active products (global or within a `category`) → results[] (same card shape as browse) + page_info. Defaults `sort`=most-active. Optional `category`, `brand`, `gender`. Return up to 1000 products in one call with `max_results` (40/page, paged for you — StockX's grid stops at page 26); `page` picks where the window starts. Surfaces what's trading right now.","required_params":[],"optional_params":["category","brand","gender","sort","max_results","page","currency","market"],"params":[{"name":"category","type":"enum","required":false,"description":"StockX vertical to browse (grid of that whole category).","on_invalid":"reject","allowed_values":[{"value":"sneakers","label":"Sneakers"},{"value":"apparel","label":"Apparel/Streetwear"},{"value":"electronics","label":"Electronics"},{"value":"collectibles","label":"Collectibles (incl. trading cards, figures)"},{"value":"accessories","label":"Accessories (watches, bags, etc.)"}],"aliases":["vertical","browse_category"]},{"name":"brand","type":"string","required":false,"description":"Filter results to a brand (StockX facet value, e.g. Jordan, Nike, adidas, New Balance, Supreme).","on_invalid":"reject","example":"Jordan","aliases":["brand_filter"]},{"name":"gender","type":"enum","required":false,"description":"Filter results by gender facet.","on_invalid":"reject","allowed_values":[{"value":"men","label":"Men"},{"value":"women","label":"Women"},{"value":"youth","label":"Youth"},{"value":"infant","label":"Infant"}]},{"name":"sort","type":"enum","required":false,"description":"Result ordering for browse/trending grids.","on_invalid":"reject","allowed_values":[{"value":"most-active","label":"Most active (movers / highest trade volume)"},{"value":"featured","label":"Featured (StockX default ranking)"},{"value":"release_date","label":"Newest release date first"},{"value":"lowest_ask","label":"Lowest ask price first"}]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return. MAXIMUM 1000 — the published ceiling, so there is nothing to probe for. StockX serves 40 per page, so asking for more fetches further pages automatically (up to 25 of them). Omit it and you get exactly one page, which is what this action has always done. The ceiling is StockX's own: its grid stops at page 26 (1040 products) and it caps the reported `total` at 1000 however many matches a query really has. Above 1000 the value is clamped, not rejected. Treat it as an upper bound: a narrow query returns everything it has, and a broad one can still come up short because StockX repeats some products across grid pages and duplicates are dropped (measured 2026-08-07: browse sneakers returned a full 1000, the keyword 'nike' returned 709). Whenever fewer rows come back than you asked for, `meta.incomplete` is true.","on_invalid":"ignore","default":40,"example":200,"minimum":1,"maximum":1000,"aliases":["limit","max"]},{"name":"page","type":"integer","required":false,"description":"Page to start from (1-based, 40 results per page). MAXIMUM 26 — StockX's grid ends there. Measured 2026-08-07 on three separate queries: pages 1-26 are all distinct, page 27 and beyond return page 1's products while reporting `page: 1`. A higher value is clamped to 26 rather than looping silently.","on_invalid":"ignore","default":1,"minimum":1,"maximum":26},{"name":"currency","type":"enum","required":false,"description":"Currency for all prices.","on_invalid":"reject","allowed_values":[{"value":"USD","label":"US Dollar"},{"value":"EUR","label":"Euro"},{"value":"GBP","label":"British Pound"},{"value":"JPY","label":"Japanese Yen"},{"value":"AUD","label":"Australian Dollar"},{"value":"CAD","label":"Canadian Dollar"},{"value":"CHF","label":"Swiss Franc"},{"value":"HKD","label":"Hong Kong Dollar"},{"value":"KRW","label":"South Korean Won"},{"value":"MXN","label":"Mexican Peso"},{"value":"NZD","label":"New Zealand Dollar"},{"value":"SGD","label":"Singapore Dollar"},{"value":"SEK","label":"Swedish Krona"},{"value":"DKK","label":"Danish Krone"},{"value":"NOK","label":"Norwegian Krone"},{"value":"PLN","label":"Polish Złoty"},{"value":"CNY","label":"Chinese Yuan"},{"value":"TWD","label":"New Taiwan Dollar"},{"value":"THB","label":"Thai Baht"}],"default":"USD"},{"name":"market","type":"enum","required":false,"description":"Marketplace region (affects asks/bids and service levels).","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States"},{"value":"GB","label":"United Kingdom"},{"value":"DE","label":"Germany"},{"value":"FR","label":"France"},{"value":"IT","label":"Italy"},{"value":"ES","label":"Spain"},{"value":"NL","label":"Netherlands"},{"value":"JP","label":"Japan"},{"value":"AU","label":"Australia"},{"value":"CA","label":"Canada"},{"value":"KR","label":"South Korea"},{"value":"HK","label":"Hong Kong"},{"value":"SG","label":"Singapore"},{"value":"CH","label":"Switzerland"},{"value":"MX","label":"Mexico"},{"value":"NZ","label":"New Zealand"},{"value":"SE","label":"Sweden"},{"value":"DK","label":"Denmark"},{"value":"NO","label":"Norway"},{"value":"PL","label":"Poland"},{"value":"CN","label":"China"},{"value":"TW","label":"Taiwan"},{"value":"TH","label":"Thailand"}],"default":"US","aliases":["country"]}],"returns":"results[]{id, url_key, url, title, brand, sku, category, image, lowest_ask, highest_bid, last_sale} + page_info{page, limit, total}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":40,"min":1},"example_params":{}}]},{"name":"streaming","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Streaming Availability API (JustWatch where-to-watch) — find which platform a movie or TV show is on by country: stream/rent/buy offers with price & quality, multi-country availability, trending, what's new and leaving, and provider catalogs","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/streaming/v1","spec_available":true,"actions":[{"name":"search","description":"search movies/shows with current offers","required_params":["query"],"optional_params":["country","language","page_size","cursor"],"params":[{"name":"query","type":"string","required":true,"description":"Title to search for.","on_invalid":"reject","example":"Inception"},{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"},{"name":"language","type":"string","required":false,"description":"ISO-639-1 language for titles/genre names (lower-cased).","on_invalid":"ignore","default":"en","example":"en"},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-40). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":40},{"name":"cursor","type":"string","required":false,"description":"Next-page token from the previous response's meta.next_cursor (for episodes it is a numeric offset).","on_invalid":"ignore","example":""}],"returns":"results[]{id, title, year, offers[]{provider, type, quality, price, url}, external_ids, scoring, cursor}; meta has total/has_more/next_cursor","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Inception","country":"US"}},{"name":"browse","description":"browse a provider/country catalog by genre/type/year, ranked (sort_by), with pagination","required_params":[],"optional_params":["country","language","object_types","packages","genres","sort_by","release_year","year_min","year_max","page_size","cursor"],"params":[{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"},{"name":"language","type":"string","required":false,"description":"ISO-639-1 language for titles/genre names (lower-cased).","on_invalid":"ignore","default":"en","example":"en"},{"name":"object_types","type":"array","required":false,"description":"Restrict to these title types (movie / show; 'tv' is accepted). Comma-list or array.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Movies"},{"value":"show","label":"TV shows (alias: tv)"},{"value":"tv","label":"TV shows"}],"example":["movie"],"aliases":["objectTypes","type"]},{"name":"packages","type":"array","required":false,"description":"Restrict to these providers by JustWatch technical name (e.g. nfx=Netflix, amp=Prime Video) — see the providers action.","on_invalid":"ignore","example":["nfx"],"aliases":["providers","provider"]},{"name":"genres","type":"array","required":false,"description":"Restrict to these genre short-names (e.g. act, drm) — see the genres action. Comma-list or array.","on_invalid":"ignore","example":["act"],"aliases":["genre"]},{"name":"sort_by","type":"enum","required":false,"description":"Ranking for the result list. Case-insensitive; common values shown.","on_invalid":"ignore","allowed_values":[{"value":"popular","label":"Most popular (default)"},{"value":"trending","label":"Trending now"},{"value":"imdb_score","label":"Highest IMDb score (alias: top_rated)"},{"value":"tmdb_popularity","label":"TMDB popularity"},{"value":"alphabetical","label":"A-Z"},{"value":"random","label":"Random"}],"default":"popular","example":"popular","aliases":["sortBy"]},{"name":"release_year","type":"object","required":false,"description":"Advanced: release-year range as {min, max} (overrides year_min/year_max).","on_invalid":"ignore","example":{"min":2010,"max":2020},"aliases":["releaseYear"]},{"name":"year_min","type":"integer","required":false,"description":"Earliest release year (inclusive).","on_invalid":"ignore","example":2010,"aliases":["from_year"]},{"name":"year_max","type":"integer","required":false,"description":"Latest release year (inclusive).","on_invalid":"ignore","example":2020,"aliases":["to_year"]},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-40). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":40},{"name":"cursor","type":"string","required":false,"description":"Next-page token from the previous response's meta.next_cursor (for episodes it is a numeric offset).","on_invalid":"ignore","example":""}],"returns":"results[] (same title shape as search), meta total/has_more/next_cursor","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"trending","description":"trending titles right now (with where-to-watch offers), filterable by provider/type/genre","required_params":[],"optional_params":["country","language","sort_by","object_types","packages","genres","page_size","cursor"],"params":[{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"},{"name":"language","type":"string","required":false,"description":"ISO-639-1 language for titles/genre names (lower-cased).","on_invalid":"ignore","default":"en","example":"en"},{"name":"sort_by","type":"enum","required":false,"description":"Ranking for the result list. Case-insensitive; common values shown.","on_invalid":"ignore","allowed_values":[{"value":"popular","label":"Most popular (default)"},{"value":"trending","label":"Trending now"},{"value":"imdb_score","label":"Highest IMDb score (alias: top_rated)"},{"value":"tmdb_popularity","label":"TMDB popularity"},{"value":"alphabetical","label":"A-Z"},{"value":"random","label":"Random"}],"default":"trending","example":"trending","aliases":["sortBy"]},{"name":"object_types","type":"array","required":false,"description":"Restrict to these title types (movie / show; 'tv' is accepted). Comma-list or array.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Movies"},{"value":"show","label":"TV shows (alias: tv)"},{"value":"tv","label":"TV shows"}],"example":["movie"],"aliases":["objectTypes","type"]},{"name":"packages","type":"array","required":false,"description":"Restrict to these providers by JustWatch technical name (e.g. nfx=Netflix, amp=Prime Video) — see the providers action.","on_invalid":"ignore","example":["nfx"],"aliases":["providers","provider"]},{"name":"genres","type":"array","required":false,"description":"Restrict to these genre short-names (e.g. act, drm) — see the genres action. Comma-list or array.","on_invalid":"ignore","example":["act"],"aliases":["genre"]},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-40). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":40},{"name":"cursor","type":"string","required":false,"description":"Next-page token from the previous response's meta.next_cursor (for episodes it is a numeric offset).","on_invalid":"ignore","example":""}],"returns":"results[]{id, title, year, offers[]{provider, type, quality, price, url}, scoring, cursor}; meta total/has_more/next_cursor","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US","page_size":3}},{"name":"title","description":"title metadata and offers by JustWatch node id","required_params":[],"optional_params":["id","query","url","country","language"],"params":[{"name":"id","type":"string","required":false,"description":"JustWatch node id (movie tm…, show ts…, season tse…). Get it from a search/browse result's `id`.","on_invalid":"reject","example":"ts4","aliases":["node_id"]},{"name":"query","type":"string","required":false,"description":"Resolve the title by name when you have no node id (first match is used).","on_invalid":"ignore","example":"Breaking Bad","aliases":["title"]},{"name":"url","type":"string","required":false,"description":"Resolve from a JustWatch URL when you have no id/query.","on_invalid":"ignore","example":"https://www.justwatch.com/us/movie/inception"},{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"},{"name":"language","type":"string","required":false,"description":"ISO-639-1 language for titles/genre names (lower-cased).","on_invalid":"ignore","default":"en","example":"en"}],"returns":"one title record{id, title, year, runtime, genres, external_ids, scoring, offers[]{provider, type, quality, price, url}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"ts4","country":"US"}},{"name":"availability","description":"where-to-watch offers for one title across multiple countries (the core comparison call)","required_params":[],"optional_params":["id","query","url","countries","country","language","monetization_types","presentation_types"],"params":[{"name":"id","type":"string","required":false,"description":"JustWatch node id (movie tm…, show ts…, season tse…). Get it from a search/browse result's `id`.","on_invalid":"reject","example":"ts4","aliases":["node_id"]},{"name":"query","type":"string","required":false,"description":"Resolve the title by name when you have no node id (first match is used).","on_invalid":"ignore","example":"Inception","aliases":["title"]},{"name":"url","type":"string","required":false,"description":"Resolve from a JustWatch URL when you have no id.","on_invalid":"ignore","example":"https://www.justwatch.com/us/movie/inception"},{"name":"countries","type":"array","required":false,"description":"Markets to check (comma-list or array of ISO-2 codes). Defaults to the single `country`.","on_invalid":"ignore","example":["US","GB","DE"]},{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"},{"name":"language","type":"string","required":false,"description":"ISO-639-1 language for titles/genre names (lower-cased).","on_invalid":"ignore","default":"en","example":"en"},{"name":"monetization_types","type":"array","required":false,"description":"Filter offers by how you pay. Common values shown; case-insensitive.","on_invalid":"ignore","allowed_values":[{"value":"flatrate","label":"Subscription"},{"value":"rent","label":"Rent"},{"value":"buy","label":"Buy"},{"value":"ads","label":"Free with ads"},{"value":"free","label":"Free"},{"value":"cinema","label":"Cinema"}],"example":["flatrate"],"aliases":["monetization_type"]},{"name":"presentation_types","type":"array","required":false,"description":"Filter offers by video quality. Common values shown; case-insensitive.","on_invalid":"ignore","allowed_values":[{"value":"sd","label":"SD"},{"value":"hd","label":"HD"},{"value":"4k","label":"4K (UHD)"}],"example":["hd"],"aliases":["presentation_type"]}],"returns":"id, countries{<CC>: offers[]{provider, type, quality, price, url}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"new","description":"what's new / coming soon / leaving soon on a provider — by country/provider/type","required_params":[],"optional_params":["country","language","packages","object_types","date","price_drops","page_type","monetization_types","presentation_types","page_size","cursor"],"params":[{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"},{"name":"language","type":"string","required":false,"description":"ISO-639-1 language for titles/genre names (lower-cased).","on_invalid":"ignore","default":"en","example":"en"},{"name":"packages","type":"array","required":false,"description":"Restrict to these providers by JustWatch technical name (e.g. nfx=Netflix, amp=Prime Video) — see the providers action.","on_invalid":"ignore","example":["nfx"],"aliases":["providers","provider"]},{"name":"object_types","type":"array","required":false,"description":"Restrict to these title types (movie / show; 'tv' is accepted). Comma-list or array.","on_invalid":"ignore","allowed_values":[{"value":"movie","label":"Movies"},{"value":"show","label":"TV shows (alias: tv)"},{"value":"tv","label":"TV shows"}],"example":["movie"],"aliases":["objectTypes","type"]},{"name":"date","type":"string","required":false,"description":"The change day as YYYY-MM-DD (defaults to today).","on_invalid":"ignore","example":"2026-06-01"},{"name":"price_drops","type":"boolean","required":false,"description":"Return price-drop changes instead of newly-added titles.","on_invalid":"ignore","default":false,"example":false},{"name":"page_type","type":"enum","required":false,"description":"Which change feed. Case-insensitive; 'leaving' returns titles about to expire (with availableTo dates).","on_invalid":"ignore","allowed_values":[{"value":"new","label":"Newly available (alias: added)"},{"value":"upcoming","label":"Coming soon (alias: coming_soon)"},{"value":"leaving","label":"Leaving soon (aliases: leaving_soon, expiring)"}],"default":"new","example":"new"},{"name":"monetization_types","type":"array","required":false,"description":"Filter offers by how you pay. Common values shown; case-insensitive.","on_invalid":"ignore","allowed_values":[{"value":"flatrate","label":"Subscription"},{"value":"rent","label":"Rent"},{"value":"buy","label":"Buy"},{"value":"ads","label":"Free with ads"},{"value":"free","label":"Free"},{"value":"cinema","label":"Cinema"}],"example":["flatrate"],"aliases":["monetization_type"]},{"name":"presentation_types","type":"array","required":false,"description":"Filter offers by video quality. Common values shown; case-insensitive.","on_invalid":"ignore","allowed_values":[{"value":"sd","label":"SD"},{"value":"hd","label":"HD"},{"value":"4k","label":"4K (UHD)"}],"example":["hd"],"aliases":["presentation_type"]},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-40). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":40},{"name":"cursor","type":"string","required":false,"description":"Next-page token from the previous response's meta.next_cursor (for episodes it is a numeric offset).","on_invalid":"ignore","example":""}],"returns":"results[]{title, ids, new_offer{provider, date_created, available_to}, show, cursor}, meta total/has_more/next_cursor","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US","packages":["nfx"],"page_type":"leaving","page_size":3}},{"name":"countries","description":"supported country codes","required_params":[],"optional_params":[],"params":[],"returns":"countries[]{code} (static ISO-2 JustWatch market list), source","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"genres","description":"JustWatch genre reference for a country/language","required_params":[],"optional_params":["country","language"],"params":[{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"},{"name":"language","type":"string","required":false,"description":"ISO-639-1 language for titles/genre names (lower-cased).","on_invalid":"ignore","default":"en","example":"en"}],"returns":"genres[]{short_name, translation}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"providers","description":"streaming providers available in a country","required_params":[],"optional_params":["country"],"params":[{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"}],"returns":"providers[]{provider, provider_id, technical_name, monetization_types, icon}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"country":"US"}},{"name":"country","description":"one country plus live supported provider/service details","required_params":["country"],"optional_params":[],"params":[{"name":"country","type":"string","required":true,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","example":"US"}],"returns":"country{code, providers[]{provider, technical_name, monetization_types}}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"country":"US"}},{"name":"seasons","description":"show seasons with offers","required_params":["id"],"optional_params":["country","language"],"params":[{"name":"id","type":"string","required":true,"description":"JustWatch node id (movie tm…, show ts…, season tse…). Get it from a search/browse result's `id`.","on_invalid":"reject","example":"ts4","aliases":["node_id"]},{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"},{"name":"language","type":"string","required":false,"description":"ISO-639-1 language for titles/genre names (lower-cased).","on_invalid":"ignore","default":"en","example":"en"}],"returns":"seasons[]{id, season_number, title, offers[], total_episode_count}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"ts4"}},{"name":"episodes","description":"season episodes with offers; show id + season_number resolves first","required_params":[],"optional_params":["id","season_id","season_number","country","language","page_size","cursor"],"params":[{"name":"id","type":"string","required":false,"description":"JustWatch node id (movie tm…, show ts…, season tse…). Get it from a search/browse result's `id`.","on_invalid":"reject","example":"ts4","aliases":["node_id"]},{"name":"season_id","type":"string","required":false,"description":"Season node id (tse…) — fetches that season's episodes directly.","on_invalid":"ignore","example":"tse123"},{"name":"season_number","type":"integer","required":false,"description":"With a show `id`, resolves this season number to its episodes.","on_invalid":"ignore","example":1},{"name":"country","type":"string","required":false,"description":"Market — ISO-3166-1 alpha-2 (upper-cased; ~135 supported, see the countries action). Controls which offers/providers are returned.","on_invalid":"ignore","default":"US","example":"US"},{"name":"language","type":"string","required":false,"description":"ISO-639-1 language for titles/genre names (lower-cased).","on_invalid":"ignore","default":"en","example":"en"},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-40). Larger values are clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":40},{"name":"cursor","type":"string","required":false,"description":"Next-page token from the previous response's meta.next_cursor (for episodes it is a numeric offset).","on_invalid":"ignore","example":""}],"returns":"episodes[]{id, season_number, episode_number, title, offers[]}, meta total/has_more/next_cursor","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{}}]},{"name":"subito","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Subito.it API scraper - Italy's largest classifieds site: marketplace search with condition, shipping and TuttoSubito, private/business/pro seller filters, cars and motorcycles, real estate for sale and rent, and the full ad record. No account, no browser; private sellers' personal data withheld.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/subito/v1","spec_available":true,"actions":[{"name":"search","description":"Search Subito.it, Italy's largest classifieds site, by keyword and/or category: price (free items, unpublished and placeholder prices labelled), region, province, town and zone, private, business or pro seller with shop, condition, shipping and TuttoSubito cost, urgent and 'In vetrina' flags, publication/renewal and expiry dates, images, description and every published attribute. Filter by category, ad type, condition, shipping, price, location, seller type or seller; sort by newest, relevance or price.","required_params":[],"optional_params":["query","titles_only","category","ad_type","condition","shippable","price_min","price_max","region","province","town","seller_type","seller_id","urgent_only","sort","page","limit","include_sponsored","include_fuzzy_matches","include_pii","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into Subito's search box.","on_invalid":"reject","example":"bici"},{"name":"titles_only","type":"boolean","required":false,"description":"Match the keyword in ad titles only.","on_invalid":"reject"},{"name":"category","type":"string","required":false,"description":"Subito category id or name (41 = Biciclette, 12 = Telefonia, 14 = Arredamento e Casalinghi); the categories action lists them.","on_invalid":"reject","example":"41"},{"name":"ad_type","type":"enum","required":false,"description":"sale (default), wanted, gift, rent or holiday_rent.","on_invalid":"reject","allowed_values":[{"value":"sale","label":"sale"},{"value":"wanted","label":"wanted"},{"value":"gift","label":"gift"},{"value":"rent","label":"rent"},{"value":"holiday_rent","label":"holiday_rent"}],"default":"sale"},{"name":"condition","type":"array","required":false,"description":"One or more of new, like_new, very_good, good, damaged.","on_invalid":"reject","allowed_values":[{"value":"new","label":"new"},{"value":"like_new","label":"like_new"},{"value":"very_good","label":"very_good"},{"value":"good","label":"good"},{"value":"damaged","label":"damaged"}]},{"name":"shippable","type":"boolean","required":false,"description":"Only ads with shipping available.","on_invalid":"reject"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"region","type":"string","required":false,"description":"Italian region, by name or Subito id (4 = Lombardia). See the locations action.","on_invalid":"reject","example":"Lombardia"},{"name":"province","type":"string","required":false,"description":"Province by its two-letter code (MI, RM, NA) or name.","on_invalid":"reject","example":"MI"},{"name":"town","type":"string","required":false,"description":"Town (comune) by its 6-digit id from the locations action, e.g. 015146 = Milano.","on_invalid":"reject","example":"015146"},{"name":"seller_type","type":"array","required":false,"description":"One or more of private, business, pro.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private"},{"value":"business","label":"Business with a VAT number"},{"value":"pro","label":"Verified pro shop"}]},{"name":"seller_id","type":"string","required":false,"description":"seller.seller_id from a result row: that seller's ads.","on_invalid":"reject"},{"name":"urgent_only","type":"boolean","required":false,"description":"Only ads marked urgent.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"newest (Subito's default: last published or renewed first), relevance, price_asc, price_desc. Price sorts leave out ads without a price unless price_min is given.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"relevance","label":"relevance"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (Subito serves the first 10,000 results).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":10000},{"name":"limit","type":"integer","required":false,"description":"Rows per page, up to 100.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return Subito's paid gallery carousel ('In vetrina') for the same filters, apart, under sponsored[]. One extra request.","on_invalid":"reject","default":false},{"name":"include_fuzzy_matches","type":"boolean","required":false,"description":"By default the keyword is matched as words (singular and plural alike), so 'lego' does not also return cars with 'lega' alloy wheels, and any row that still contains none of your words is dropped and counted. true uses Subito's own looser matching and keeps every row, flagged matches_query_words.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' display names and the street address/exact coordinates some ads carry.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, urn, title, url, category_id, category, macro_category_id, ad_type, ad_type_label, price, currency, is_free, price_not_published, price_looks_placeholder, published_or_renewed_at, expires_at, location{region_id, region, province_id, province, province_code, town_id, town, zone_id, zone, latitude, longitude, coordinates_precision, address, address_withheld}, seller{type, seller_id, name, name_withheld, is_company, shop_id, shop_name, vat_number}, condition, condition_label, shipping{shippable, tuttosubito, method, cost, currency, package_size, carriers[]}, is_urgent, in_vetrina, is_sold, image_count, images[], has_360_images, description, attributes[]{key, label, value, values[], value_id}, is_possible_repost, repost_of, matches_query_words, vehicle{} | property{}}, count, total, page, limit, has_more, sort_applied, filters_applied, unpriced_excluded, keyword_match, fuzzy_matches_dropped, hidden_seller_rows_dropped, possible_reposts, sponsored_total, sponsored[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"bici"}},{"name":"cars/search","description":"Search Subito Motori - cars, motorcycles and vans: price, make, model and version, year, registration, mileage, fuel, gearbox, body type, doors, seats, colour, power in kW and hp, engine size, emission class, used/Km0/new, dealer or private seller, town and province. Filter by vehicle type, make, model, year, mileage, fuel, gearbox, body type, condition, engine size, motorcycle type, price, seller type and location; sort by newest, relevance or price.","required_params":[],"optional_params":["vehicle_type","query","make","model","year_min","year_max","mileage_min","mileage_max","fuel","gearbox","body_type","vehicle_condition","cubic_capacity_min","cubic_capacity_max","motorcycle_type","price_min","price_max","region","province","town","seller_type","seller_id","urgent_only","sort","page","limit","include_sponsored","include_fuzzy_matches","include_pii","max_rotations"],"params":[{"name":"vehicle_type","type":"enum","required":false,"description":"car (default), motorcycle or van.","on_invalid":"reject","allowed_values":[{"value":"car","label":"car"},{"value":"motorcycle","label":"motorcycle"},{"value":"van","label":"van"}],"default":"car"},{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into Subito's search box.","on_invalid":"reject","example":"bici"},{"name":"make","type":"string","required":false,"description":"Make as Subito lists it, e.g. FIAT, ALFA ROMEO, Yamaha (cars and motorcycles).","on_invalid":"reject","example":"ALFA ROMEO"},{"name":"model","type":"string","required":false,"description":"Model name as Subito lists it, with make (e.g. 147, Panda, MT-07).","on_invalid":"reject","example":"Giulietta"},{"name":"year_min","type":"integer","required":false,"description":"Earliest registration year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest registration year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"mileage_min","type":"number","required":false,"description":"Lowest mileage, km (snapped to Subito's 5,000-km steps).","on_invalid":"reject","minimum":0},{"name":"mileage_max","type":"number","required":false,"description":"Highest mileage, km (snapped to Subito's 5,000-km steps).","on_invalid":"reject","minimum":0},{"name":"fuel","type":"array","required":false,"description":"petrol, diesel, lpg, methane, electric, hybrid, mild/full/plug-in hybrid petrol or diesel, other.","on_invalid":"reject","allowed_values":[{"value":"petrol","label":"petrol"},{"value":"diesel","label":"diesel"},{"value":"lpg","label":"lpg"},{"value":"electric","label":"electric"},{"value":"other","label":"other"},{"value":"hybrid","label":"hybrid"},{"value":"methane","label":"methane"},{"value":"mild_hybrid_petrol","label":"mild_hybrid_petrol"},{"value":"mild_hybrid_diesel","label":"mild_hybrid_diesel"},{"value":"full_hybrid_petrol","label":"full_hybrid_petrol"},{"value":"full_hybrid_diesel","label":"full_hybrid_diesel"},{"value":"plug_in_hybrid_petrol","label":"plug_in_hybrid_petrol"},{"value":"plug_in_hybrid_diesel","label":"plug_in_hybrid_diesel"}]},{"name":"gearbox","type":"array","required":false,"description":"manual, automatic, sequential, other.","on_invalid":"reject","allowed_values":[{"value":"manual","label":"manual"},{"value":"automatic","label":"automatic"},{"value":"sequential","label":"sequential"},{"value":"other","label":"other"}]},{"name":"body_type","type":"array","required":false,"description":"Cars: small_car, city_car, sedan, estate, mpv, suv, convertible, coupe, other.","on_invalid":"reject","allowed_values":[{"value":"small_car","label":"small_car"},{"value":"sedan","label":"sedan"},{"value":"estate","label":"estate"},{"value":"mpv","label":"mpv"},{"value":"suv","label":"suv"},{"value":"convertible","label":"convertible"},{"value":"coupe","label":"coupe"},{"value":"city_car","label":"city_car"},{"value":"other","label":"other"}]},{"name":"vehicle_condition","type":"array","required":false,"description":"used, km0, new.","on_invalid":"reject","allowed_values":[{"value":"used","label":"used"},{"value":"km0","label":"km0"},{"value":"new","label":"new"}]},{"name":"cubic_capacity_min","type":"number","required":false,"description":"Motorcycles: smallest engine, cc (snapped to Subito's steps 50/125/150/250/600/750/…).","on_invalid":"reject","minimum":0},{"name":"cubic_capacity_max","type":"number","required":false,"description":"Motorcycles: largest engine, cc (snapped to Subito's steps).","on_invalid":"reject","minimum":0},{"name":"motorcycle_type","type":"array","required":false,"description":"Motorcycles: sport, cross_enduro, custom_cafe_racer, scooter, touring, quad, vintage, other.","on_invalid":"reject","allowed_values":[{"value":"sport","label":"sport"},{"value":"cross_enduro","label":"cross_enduro"},{"value":"custom_cafe_racer","label":"custom_cafe_racer"},{"value":"scooter","label":"scooter"},{"value":"touring","label":"touring"},{"value":"quad","label":"quad"},{"value":"vintage","label":"vintage"},{"value":"other","label":"other"}]},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"region","type":"string","required":false,"description":"Italian region, by name or Subito id (4 = Lombardia). See the locations action.","on_invalid":"reject","example":"Lombardia"},{"name":"province","type":"string","required":false,"description":"Province by its two-letter code (MI, RM, NA) or name.","on_invalid":"reject","example":"MI"},{"name":"town","type":"string","required":false,"description":"Town (comune) by its 6-digit id from the locations action, e.g. 015146 = Milano.","on_invalid":"reject","example":"015146"},{"name":"seller_type","type":"array","required":false,"description":"One or more of private, business, pro.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private"},{"value":"business","label":"Business with a VAT number"},{"value":"pro","label":"Verified pro shop"}]},{"name":"seller_id","type":"string","required":false,"description":"seller.seller_id from a result row: that seller's ads.","on_invalid":"reject"},{"name":"urgent_only","type":"boolean","required":false,"description":"Only ads marked urgent.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"newest (Subito's default: last published or renewed first), relevance, price_asc, price_desc. Price sorts leave out ads without a price unless price_min is given.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"relevance","label":"relevance"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (Subito serves the first 10,000 results).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":10000},{"name":"limit","type":"integer","required":false,"description":"Rows per page, up to 100.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return Subito's paid gallery carousel ('In vetrina') for the same filters, apart, under sponsored[]. One extra request.","on_invalid":"reject","default":false},{"name":"include_fuzzy_matches","type":"boolean","required":false,"description":"By default the keyword is matched as words (singular and plural alike), so 'lego' does not also return cars with 'lega' alloy wheels, and any row that still contains none of your words is dropped and counted. true uses Subito's own looser matching and keeps every row, flagged matches_query_words.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' display names and the street address/exact coordinates some ads carry.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, urn, title, url, category_id, category, macro_category_id, ad_type, ad_type_label, price, currency, is_free, price_not_published, price_looks_placeholder, published_or_renewed_at, expires_at, location{region_id, region, province_id, province, province_code, town_id, town, zone_id, zone, latitude, longitude, coordinates_precision, address, address_withheld}, seller{type, seller_id, name, name_withheld, is_company, shop_id, shop_name, vat_number}, condition, condition_label, shipping{shippable, tuttosubito, method, cost, currency, package_size, carriers[]}, is_urgent, in_vetrina, is_sold, image_count, images[], has_360_images, description, attributes[]{key, label, value, values[], value_id}, is_possible_repost, repost_of, matches_query_words, vehicle{make, make_id, model, model_id, model_variant, version, year, registration, mileage_km, mileage_range, fuel, gearbox, body_type, doors, seats, colour, power_kw, power_hp, cubic_capacity_cc, emission_class, vehicle_condition, new_drivers_ok, vat_deductible, reference}}, count, total, page, limit, has_more, sort_applied, filters_applied, unpriced_excluded, keyword_match, fuzzy_matches_dropped, hidden_seller_rows_dropped, possible_reposts, sponsored_total, sponsored[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"make":"ALFA ROMEO"}},{"name":"real_estate/search","description":"Search Subito Immobili - property for sale, for rent and holiday rentals, rooms, garages, land and offices: price or rent, surface in m², rooms, bathrooms, floor, building condition, energy class, heating, furnished, elevator, balcony, garden, parking, agency or private owner, town and zone. Filter by transaction, property type, price, surface, rooms, bathrooms, building condition, furnished, elevator, balcony, garden, seller type and location; sort by newest, relevance or price.","required_params":["transaction"],"optional_params":["property_type","query","surface_min","surface_max","rooms_min","rooms_max","bathrooms_min","bathrooms_max","building_condition","furnished","elevator","balcony","garden","price_min","price_max","region","province","town","seller_type","seller_id","urgent_only","sort","page","limit","include_sponsored","include_fuzzy_matches","include_pii","max_rotations"],"params":[{"name":"transaction","type":"enum","required":true,"description":"sale, rent, holiday_rent or wanted.","on_invalid":"reject","allowed_values":[{"value":"sale","label":"sale"},{"value":"rent","label":"rent"},{"value":"holiday_rent","label":"holiday_rent"},{"value":"wanted","label":"wanted"}],"example":"rent"},{"name":"property_type","type":"enum","required":false,"description":"apartment, house, land, garage, loft_other, holiday_home, office_commercial or room. Omit for all real estate.","on_invalid":"reject","allowed_values":[{"value":"apartment","label":"apartment"},{"value":"house","label":"house"},{"value":"land","label":"land"},{"value":"garage","label":"garage"},{"value":"loft_other","label":"loft_other"},{"value":"holiday_home","label":"holiday_home"},{"value":"office_commercial","label":"office_commercial"},{"value":"room","label":"room"}]},{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into Subito's search box.","on_invalid":"reject","example":"bici"},{"name":"surface_min","type":"number","required":false,"description":"Smallest surface, m².","on_invalid":"reject","minimum":0},{"name":"surface_max","type":"number","required":false,"description":"Largest surface, m².","on_invalid":"reject","minimum":0},{"name":"rooms_min","type":"integer","required":false,"description":"Fewest rooms (locali).","on_invalid":"reject","minimum":1,"maximum":10},{"name":"rooms_max","type":"integer","required":false,"description":"Most rooms (locali).","on_invalid":"reject","minimum":1,"maximum":10},{"name":"bathrooms_min","type":"integer","required":false,"description":"Fewest bathrooms.","on_invalid":"reject","minimum":1,"maximum":5},{"name":"bathrooms_max","type":"integer","required":false,"description":"Most bathrooms.","on_invalid":"reject","minimum":1,"maximum":5},{"name":"building_condition","type":"array","required":false,"description":"new_build, excellent, good, to_renovate.","on_invalid":"reject","allowed_values":[{"value":"new_build","label":"new_build"},{"value":"excellent","label":"excellent"},{"value":"good","label":"good"},{"value":"to_renovate","label":"to_renovate"}]},{"name":"furnished","type":"boolean","required":false,"description":"Rentals: furnished only.","on_invalid":"reject"},{"name":"elevator","type":"boolean","required":false,"description":"With an elevator.","on_invalid":"reject"},{"name":"balcony","type":"boolean","required":false,"description":"With a balcony.","on_invalid":"reject"},{"name":"garden","type":"boolean","required":false,"description":"With a garden (houses, holiday homes).","on_invalid":"reject"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rentals).","on_invalid":"reject","minimum":0},{"name":"region","type":"string","required":false,"description":"Italian region, by name or Subito id (4 = Lombardia). See the locations action.","on_invalid":"reject","example":"Lombardia"},{"name":"province","type":"string","required":false,"description":"Province by its two-letter code (MI, RM, NA) or name.","on_invalid":"reject","example":"MI"},{"name":"town","type":"string","required":false,"description":"Town (comune) by its 6-digit id from the locations action, e.g. 015146 = Milano.","on_invalid":"reject","example":"015146"},{"name":"seller_type","type":"array","required":false,"description":"One or more of private, business, pro.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private"},{"value":"business","label":"Business with a VAT number"},{"value":"pro","label":"Verified pro shop"}]},{"name":"seller_id","type":"string","required":false,"description":"seller.seller_id from a result row: that seller's ads.","on_invalid":"reject"},{"name":"urgent_only","type":"boolean","required":false,"description":"Only ads marked urgent.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"newest (Subito's default: last published or renewed first), relevance, price_asc, price_desc. Price sorts leave out ads without a price unless price_min is given.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"relevance","label":"relevance"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}],"default":"newest"},{"name":"page","type":"integer","required":false,"description":"Result page (Subito serves the first 10,000 results).","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":10000},{"name":"limit","type":"integer","required":false,"description":"Rows per page, up to 100.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return Subito's paid gallery carousel ('In vetrina') for the same filters, apart, under sponsored[]. One extra request.","on_invalid":"reject","default":false},{"name":"include_fuzzy_matches","type":"boolean","required":false,"description":"By default the keyword is matched as words (singular and plural alike), so 'lego' does not also return cars with 'lega' alloy wheels, and any row that still contains none of your words is dropped and counted. true uses Subito's own looser matching and keeps every row, flagged matches_query_words.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' display names and the street address/exact coordinates some ads carry.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, urn, title, url, category_id, category, macro_category_id, ad_type, ad_type_label, price, currency, is_free, price_not_published, price_looks_placeholder, published_or_renewed_at, expires_at, location{region_id, region, province_id, province, province_code, town_id, town, zone_id, zone, latitude, longitude, coordinates_precision, address, address_withheld}, seller{type, seller_id, name, name_withheld, is_company, shop_id, shop_name, vat_number}, condition, condition_label, shipping{shippable, tuttosubito, method, cost, currency, package_size, carriers[]}, is_urgent, in_vetrina, is_sold, image_count, images[], has_360_images, description, attributes[]{key, label, value, values[], value_id}, is_possible_repost, repost_of, matches_query_words, property{surface_m2, rooms, bathrooms, floor, building_condition, energy_class, heating, parking, furnished, elevator, balcony, garden, air_conditioning, available_now, short_term_rental, no_agencies, …}}, count, total, page, limit, has_more, sort_applied, filters_applied, unpriced_excluded, keyword_match, fuzzy_matches_dropped, hidden_seller_rows_dropped, possible_reposts, sponsored_total, sponsored[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"transaction":"rent","region":"4"}},{"name":"listing","description":"The full Subito ad by id, URL or urn, in any category: title, price (free, unpublished and placeholder labelled), description, all images, condition, shipping and TuttoSubito cost, every published attribute with its Italian label, publication/renewal and expiry dates, location, vehicle or property details and the seller. include_page_details adds the favourites count, the seller's rating, reply time, badges and years on Subito, the pro shop profile and TuttoSubito delivery prices and times.","required_params":["ad_id"],"optional_params":["include_page_details","include_pii","max_rotations"],"params":[{"name":"ad_id","type":"string","required":true,"description":"The Subito ad id (the digits before .htm in an ad URL), the full URL or the urn.","on_invalid":"reject","example":"660274994"},{"name":"include_page_details","type":"boolean","required":false,"description":"Also read the ad page: favourites, seller rating/reply time/badges, shop profile and TuttoSubito delivery options. One extra, larger request.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' display names and the street address/exact coordinates some ads carry.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{ad_id, urn, title, url, category_id, category, macro_category_id, ad_type, ad_type_label, price, currency, is_free, price_not_published, price_looks_placeholder, published_or_renewed_at, expires_at, location{region_id, region, province_id, province, province_code, town_id, town, zone_id, zone, latitude, longitude, coordinates_precision, address, address_withheld}, seller{type, seller_id, name, name_withheld, is_company, shop_id, shop_name, vat_number}, condition, condition_label, shipping{shippable, tuttosubito, method, cost, currency, package_size, carriers[]}, is_urgent, in_vetrina, is_sold, image_count, images[], has_360_images, description, attributes[]{key, label, value, values[], value_id}, is_possible_repost, repost_of, matches_query_words, vehicle{} | property{}, page_details{favorites_count, availability, seller_profile{display_name, on_subito_since, published_ads_total, badges[], rating_score, rating_scale, rating_count, reply_time, last_active_at}, shop{shop_id, name, logo}, tuttosubito_shipping{to_door{cost, cost_before_discount}, to_door_days{min, max}, to_pickup_point{…}, couriers[]}}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"Subito's category tree (macro categories and their categories, with ids and the ad types each accepts) - the ids the search actions take.","required_params":[],"optional_params":["max_rotations"],"params":[{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"categories[]{category_id, name, slug, macro_category_id, ad_types[]}, count","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"locations","description":"Find Subito's location ids: search a town or province by name, or list Italy's regions, or the provinces of one region - the values region, province and town take.","required_params":[],"optional_params":["query","region","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Town or province name, at least 2 letters.","on_invalid":"reject","example":"milano"},{"name":"region","type":"string","required":false,"description":"A region name or id: list its provinces.","on_invalid":"reject"},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"locations[]{region_id, region, province_id, province, province_code, town_id, town, has_zones}, count","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"Subito's own search suggestions for what a user is typing, each with the category Subito predicts and its probability.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The text typed so far.","on_invalid":"reject","example":"iphone 1"},{"name":"max_rotations","type":"integer","required":false,"description":"Upstream attempts on fresh exits before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"suggestions[]{query, category_id, category, probability}, count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"bici"}}]},{"name":"swappa","category":{"id":"other","title":"Other"},"title":"Swappa API — search used and refurbished phones, tablets, laptops, watches, cameras, drones and consoles on swappa.com, and pull a full listing with price, condition, battery health, storage/carrier/colour variant, GTIN, model number, device weight and dimensions, the complete photo gallery, seller rating and ship-from location — no API key or account required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/swappa/v1","spec_available":true,"actions":[{"name":"search","description":"Search Swappa for live listings. Give a free-text `query` ('iphone 15 pro', 'macbook pro 14', 'playstation 5') or an exact `model` slug, and get back that model's listings for sale right now — each with Swappa's own listing code, price, condition grade, battery health, storage / memory / colour / carrier / model number, photo count, seller name, seller star-rating and ship-from city. Narrow with condition, carrier, colour, storage, memory, processor, model_number, edition, and the warranty / card-payment / individual-seller / Phonecheck / international-shipping switches; sort by price or newest. Paginated 50 per page. Every filter value a model actually supports is returned in `filters_available`, so you never have to guess.","required_params":[],"optional_params":["query","model","max_results","page","sort","condition","carrier","color","storage","memory","processor","model_number","edition","with_warranty","accepts_stripe","exclude_businesses","phone_check_certified","international"],"params":[{"name":"query","type":"string","required":false,"description":"What to look for on Swappa — brand, model, or model + variant ('iphone 15 pro', 'macbook pro 14', 'playstation 5', 'canon eos r5'). Swappa searches its CATALOG, so the query is resolved to the best-matching product model and that model's live listings are returned; every other candidate model comes back in `models[]` so you can re-run against an exact `model` slug. Provide `query` OR `model`.","on_invalid":"reject","example":"iphone 15 pro","aliases":["q","keyword","text","search"]},{"name":"model","type":"string","required":false,"description":"A Swappa product-model slug, exactly as it appears in a swappa.com/listings/<slug> URL (e.g. apple-iphone-15, samsung-galaxy-s24-ultra, macbook-pro-2023-14, playstation-5). Skips keyword resolution — one fewer request and a stable, repeatable target. Provide `model` OR `query`.","on_invalid":"reject","example":"apple-iphone-15","aliases":["model_slug","slug","product","product_slug"]},{"name":"max_results","type":"integer","required":false,"description":"How many listings to return (1-200). Swappa paginates 50 per page; asking for more than 50 fetches the next pages automatically.","on_invalid":"ignore","default":50,"minimum":1,"maximum":200,"aliases":["limit","max"]},{"name":"page","type":"integer","required":false,"description":"Which result page to start from (1-based, 50 listings per page). Page until meta.pagination.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Swappa's default (omit this) is its own relevance/featured ranking.","on_invalid":"reject","allowed_values":[{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"listing_created_newest","label":"Newest listings first"},{"value":"listing_created_oldest","label":"Oldest listings first"}],"example":"price_low","aliases":["order","sort_by"]},{"name":"condition","type":"enum","required":false,"description":"Only listings in this condition grade. Swappa grades devices New / Mint / Good / Fair; simpler product lines (AirPods, drones) only offer New / Used. Which grades a given model supports is returned in `filters_available.condition`.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"mint","label":"Mint"},{"value":"good","label":"Good"},{"value":"fair","label":"Fair"},{"value":"used","label":"Used (accessory-style products)"}],"example":"mint"},{"name":"carrier","type":"string","required":false,"description":"Connectivity / carrier lock — unlocked, att, t-mobile, verizon, mint for phones, watches and cellular tablets, and wi-fi vs a carrier for Wi-Fi-only tablets and Surface-style laptops. The exact values a model supports come back in `filters_available.carrier`.","on_invalid":"ignore","example":"unlocked"},{"name":"color","type":"string","required":false,"description":"Device colour (lowercase, hyphenated — e.g. black, space-gray, midnight). Per-model values are in `filters_available.color`.","on_invalid":"ignore","example":"black"},{"name":"storage","type":"string","required":false,"description":"Storage capacity, written the way Swappa writes it: 128gb, 256gb, 512gb, 1tb. Per-model values are in `filters_available.storage`.","on_invalid":"ignore","example":"256gb"},{"name":"memory","type":"string","required":false,"description":"RAM / unified memory, for laptops, tablets and phones that list it (16gb, 32gb…). Per-model values are in `filters_available.memory`.","on_invalid":"ignore","example":"16gb","aliases":["ram"]},{"name":"processor","type":"string","required":false,"description":"Processor variant, for computers (e.g. apple-m2-pro-12-core). Per-model values are in `filters_available.processor`.","on_invalid":"ignore","example":"apple-m2-pro-12-core","aliases":["cpu","chip"]},{"name":"model_number","type":"string","required":false,"description":"Swappa's 'Model' facet — normally the manufacturer/regulatory model number (A2846 for an iPhone 15, G1MNW for a Pixel 8 Pro, A2727 - Cellular for an Apple Watch SE), but on product lines that are sized rather than modelled it is that variant label instead (an Oura Ring lists Size 8 / Size 10). Pass the human value — or the opaque token from `filters_available.modeln` — either works.","on_invalid":"ignore","example":"A2846","aliases":["modeln","model_no"]},{"name":"edition","type":"string","required":false,"description":"Product-line edition, where Swappa defines one (Aluminum vs Stainless for Apple Watch, USB-C vs Lightning for AirPods, Standard Edition for a console). Human label or the token from `filters_available.edition`.","on_invalid":"ignore","example":"Aluminum"},{"name":"with_warranty","type":"boolean","required":false,"description":"Only listings the seller sells with a warranty.","on_invalid":"ignore","default":false},{"name":"accepts_stripe","type":"boolean","required":false,"description":"Only listings whose seller takes credit-card (Stripe) payment.","on_invalid":"ignore","default":false,"aliases":["accepts_card"]},{"name":"exclude_businesses","type":"boolean","required":false,"description":"Exclude business/store sellers, leaving individual sellers only.","on_invalid":"ignore","default":false,"aliases":["individuals_only"]},{"name":"phone_check_certified","type":"boolean","required":false,"description":"Only listings the seller has certified with a Phonecheck diagnostic report (offered on phones and tablets).","on_invalid":"ignore","default":false,"aliases":["phonecheck"]},{"name":"international","type":"boolean","required":false,"description":"Only listings whose seller ships internationally.","on_invalid":"ignore","default":false,"aliases":["international_shipping"]}],"returns":"product{slug, name, brand, image, description, url, guide_url, rating{average, review_count}, price_range{low, high, currency}, offer_count, availability, in_stock} + listings[]{listing_id, url, title, headline, price, currency, price_valid_until, availability, in_stock, condition, battery_health_pct, storage, memory, color, carrier, model_number, processor, edition, gtin, quantity, image, image_count, featured, phonecheck_certified, business_seller, international_shipping, payment_methods[], attributes[]{label, value}, seller{name, type, profile_id, profile_url, rating, ratings_count, location, badges[]}, product_slug, brand} + filters_available{condition[], carrier[], color[], storage[], memory[], processor[], modeln[], edition[], sort[], flags[]} (each {value, label}) + models[]{slug, name, image, min_price, preset_filters, url} — the other catalog matches, returned only when you searched by free-text `query`. meta.pagination{page, per_page, total_results, returned, has_more, next_page}. Notes: `gtin` is only present when the seller/catalog supplied one; `battery_health_pct` is null when a seller left it unreported or the product has no battery grade; `memory`, `processor`, `carrier`, `model_number` and `image_count` exist only for the categories Swappa publishes them for, and are null otherwise.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"model":"apple-iphone-15","max_results":25}},{"name":"price","description":"Re-check ONE listing's price, availability and condition, cheaply. Give it the Swappa listing code you already hold and it returns what the seller is asking right now, whether the listing is still buyable, and the condition grade — and nothing else: no photos, description, specs, seller block or reviews. Built for refreshing a catalogue you already have rather than discovering listings. It reads the small slide-over card Swappa's own grid fetches on hover instead of the whole listing page, so it costs a fraction of `product_detail` — measured live on nine listings across nine product lines: 6.8-11.5 KB against 122.3-171.0 KB for a full `product_detail` (10.7x-19.7x), or 73.5-82.6 KB with its reviews switched off (6.4x-10.9x). Remember what a Swappa listing IS: one specific used device from one seller, not a catalogue entry — when it sells, Swappa takes it down, and this action then returns NOT_FOUND. That is the answer, not a failure: it means the unit you were tracking is gone.","required_params":[],"optional_params":["listing_id","url"],"params":[{"name":"listing_id","type":"string","required":false,"description":"REQUIRED. Swappa's own listing code — the value in a swappa.com/listing/view/<code> URL and the `listing_id` on every `search` row. An opaque uppercase alphanumeric string (e.g. LAGY58046); never numeric. It identifies ONE physical used device from ONE seller: two identical phones in the same condition are two codes at two prices. Provide `listing_id` OR `url`.","on_invalid":"ignore","example":"LAGY58046","aliases":["id","code","listing_code","product_id"]},{"name":"url","type":"string","required":false,"description":"Full swappa.com listing URL — an alternative to `listing_id`.","on_invalid":"ignore","example":"https://swappa.com/listing/view/LAGY58046","aliases":["listing_url","product_url"]}],"returns":"listing_id, url, current_price, regular_price, currency, on_sale, in_stock, condition, condition_schema. Honest caveats, all measured: (1) `regular_price` and `on_sale` are ALWAYS null, and that is a fact about Swappa rather than a gap here — a listing carries ONE seller-set asking price with no struck-through or previous price anywhere on the card, the listing page or its structured data, so filling them in would be inventing a discount; use the price history on a model's own Swappa page if you need a reference price. (2) `in_stock` is true while Swappa still offers Buy Now on the listing and null — never false — otherwise, because silence is not an out-of-stock claim; a listing that has actually sold is removed by Swappa and returns NOT_FOUND. (3) `condition` is Swappa's own grade (New / Mint / Good / Fair, or Used on simpler product lines) and `condition_schema` is the schema.org enum it marks up beside it. On a used-goods marketplace the grade is what decides whether a price is comparable at all, which is why it is here and the specs are not. COMPARE ON `condition`, not on `condition_schema`: Swappa publishes TWO schema.org condition statements for a listing and they can disagree with each other — on 1 of 9 listings measured, its page microdata said UsedCondition while its JSON-LD offer said RefurbishedCondition for the same listing in the same second. `price` reports the microdata value (that is what the card carries) and `product_detail` reports the JSON-LD one, so those two fields can differ between the actions. The human grade was identical on both surfaces for all 9. (4) A listing code Swappa does not have returns NOT_FOUND, never a substituted listing — verified, and the code in the answer is compared against the code you asked for as well.","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":2},"example_params":{"listing_id":"LAGY58046"}},{"name":"product_detail","description":"Get one Swappa listing in full, by its listing code or its swappa.com URL — the asking price and currency, quantity available, condition grade with Swappa's own condition criteria, the seller's damage description, battery health, storage / memory / colour / carrier / model number / processor, GTIN and GTIN-13, the COMPLETE photo gallery at full resolution, carrier compatibility, shipping (free-shipping flag, rate, ship-from city, handling time, international), payment methods, returns policy, listing created / updated / expiry dates, and the seller (display name, individual-vs-business, profile, star rating, number of ratings, location). Also returns the product the listing belongs to: brand, catalog slug, star rating and review count, top buyer reviews, and — for models with a Swappa product guide — the device spec tables including width, height, depth and weight in grams and ounces, for shipping-cost calculation.","required_params":[],"optional_params":["listing_id","url","include_reviews","max_reviews"],"params":[{"name":"listing_id","type":"string","required":false,"description":"Swappa's own listing code — the value shown on the listing page and in the /listing/view/<code> URL, and the `listing_id` returned by search. An opaque uppercase string (e.g. LAGY58046); never numeric. Provide `listing_id` OR `url`.","on_invalid":"reject","example":"LAGY58046","aliases":["id","code","listing_code","product_id"]},{"name":"url","type":"string","required":false,"description":"Full swappa.com listing URL — an alternative to `listing_id`.","on_invalid":"ignore","example":"https://swappa.com/listing/view/LAGY58046","aliases":["listing_url","product_url"]},{"name":"include_reviews","type":"boolean","required":false,"description":"Include the product's top buyer reviews inline (`product.top_reviews`). These are reviews of the MODEL written by Swappa buyers — Swappa publishes no per-listing reviews. Costs one extra page fetch; set false for the fastest possible response.","on_invalid":"ignore","default":true,"aliases":["with_reviews"]},{"name":"max_reviews","type":"integer","required":false,"description":"How many of the product's most recent reviews to include (1-20).","on_invalid":"ignore","default":6,"minimum":1,"maximum":20,"aliases":["review_limit"]}],"returns":"listing{listing_id, url, title, headline, description, damage_description, price, currency, price_valid_until, quantity, availability, in_stock, condition, condition_schema, condition_criteria[], battery_health_pct, storage, memory, color, carrier, model_number, processor, attributes[]{label, value}, facet_values, phonecheck_certified, badges[], approved, featured, images[], image_count, carrier_compatibility{network, compatible_carriers[]}, shipping{free, rate, currency, ships_from, handling, international}, payment_methods[], returns_policy[], date_created, date_updated, date_expires (all three ISO YYYY-MM-DD), seller{name, type, profile_id, profile_url, rating, ratings_count, location, badges[]}} + product{slug, name, brand, gtin, gtin13, image, url, guide_url, catalog_url, rating{average, review_count}, specs[]{group, name, value, values[]}, size_and_weight{width_mm, height_mm, depth_mm, weight_g, weight_oz}, top_reviews[]{rating, text, author, date}}. Honest caveats: `gtin`/`gtin13` appear only when Swappa's catalog carries a barcode for that exact variant (common on phones and consoles, usually absent on accessories, drones and cameras); `specs` and `size_and_weight` exist only for models that have a Swappa product guide (phones, tablets, laptops, watches — not cameras, drones, consoles, audio); `top_reviews` exists only where Swappa publishes a reviews page for the model — for catalog-only products it publishes the aggregate `rating` but no review text, and `meta.fetched.reviews` then says `not_published` rather than pretending the fetch failed; `battery_health_pct` is null unless the seller reported it; `carrier`, `model_number`, `memory` and `processor` are per-category. Category-specific descriptors that have no cross-category meaning — an Apple Watch case material, an AirPods connector, a console edition, a 5G band, an iPad glass option — are returned verbatim and in page order in `attributes[]` with a null label (search labels those with Swappa's own facet name, because the filter vocabulary is published on the search page and not on a listing page). Nothing the listing page shows is dropped.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"listing_id":"LAGY58046"}}]},{"name":"takealot","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"takealot API scraper — South Africa's largest online marketplace (takealot.com): search and category browse, the full product record with both buy-box offers and every other seller, customer reviews, running deals and search suggestions, in rand. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/takealot/v1","spec_available":true,"actions":[{"name":"search","description":"Search takealot.com by keyword: product id (PLID), title, brand, image, the price (or the price range for variant products), takealot's list price kept apart, rating with review count and star distribution, stock status with the Cape Town / Johannesburg / Durban warehouses and the delivery estimate. Filter by brand, price, rating, in-stock, warehouse and condition; sort by relevance, price, rating or newest; page with a cursor.","required_params":["query"],"optional_params":["country","cursor","sort","brand","price_min","price_max","min_rating","in_stock","warehouse","condition","include_facets","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for on takealot.","on_invalid":"reject","example":"air fryer","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"takealot sells in South Africa only; prices are in rand (ZAR).","on_invalid":"reject","allowed_values":[{"value":"za","label":"South Africa (ZAR)"}],"default":"za","example":"za"},{"name":"cursor","type":"string","required":false,"description":"Next page. Pass the `next_cursor` of the previous response; omit for page 1. takealot pages by cursor only (36 products per page).","on_invalid":"reject","example":"WzExLjM0MTMyNCw5NjMxNDQxNV0"},{"name":"sort","type":"enum","required":false,"description":"Order of results. Only takealot's own orderings are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"takealot's default ranking"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"rating","label":"Top rated first"},{"value":"newest","label":"Newest arrivals first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Brand name exactly as takealot lists it (every row returns `brand`; `facets` lists the brands on a query).","on_invalid":"reject","example":"Apple"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in rand.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in rand.","on_invalid":"reject","minimum":0},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars (1-4, takealot's own buckets).","on_invalid":"reject","minimum":1,"maximum":4},{"name":"in_stock","type":"boolean","required":false,"description":"true: only products takealot shows as in stock (not 'ships in N days').","on_invalid":"reject","default":false},{"name":"warehouse","type":"enum","required":false,"description":"Only products in stock at this takealot warehouse (takealot's own filter).","on_invalid":"reject","allowed_values":[{"value":"cpt","label":"In stock in Cape Town"},{"value":"jhb","label":"In stock in Johannesburg"},{"value":"dbn","label":"In stock in Durban"}]},{"name":"condition","type":"enum","required":false,"description":"Product condition as takealot classifies it.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"refurbished","label":"Refurbished / certified pre-owned"}]},{"name":"include_facets","type":"boolean","required":false,"description":"true: also return takealot's filter panel (brands, price bands, warehouses, conditions, attributes with counts) and related searches.","on_invalid":"ignore","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"takealot sometimes answers a keyword with no real match with a few unrelated products. Default: those are dropped (results empty, fallback_results_dropped counts them). true: returned apart in fallback_results.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{plid, product_id, tsin, offer_sku, title, subtitle, brand, authors[], url, image, image_count, price (lowest price on the row), price_max (only when the row is a variant price range), price_is_range, currency (ZAR), list_price (takealot's 'List price' — only when above the price; a reference, not a was-price), list_price_discount_percent, saving_text, saving_badge, promotion_id, rating, review_count, rating_scale (5), rating_distribution{5..1}, in_stock, availability (in_stock|ships_in_days|out_of_stock|preorder|other), stock_status, is_leadtime, is_imported, warehouses[] (CPT/JHB/DBN), delivery_estimate, delivery_type, is_preorder, variant_selection_required, has_more_colours, free_delivery_with_takealotmore}, count, total_results (capped by takealot at 5000), total_is_approximate, total_results_capped, next_cursor, has_more, sort_applied, filters_applied, facets[]{name, filter_name, entries[]{label, value, count}} (include_facets), related_searches[] (include_facets), keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[], currency, country, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"air fryer"}},{"name":"category/products","description":"Browse one takealot department or category (slug path or category URL) with the same product rows, filters, sorts and cursor paging as `search`.","required_params":["category"],"optional_params":["country","cursor","sort","brand","price_min","price_max","min_rating","in_stock","warehouse","condition","include_facets","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"takealot category path or URL, e.g. 'cellular-gps' (a department), 'cellular-gps/cellphones-26249' or https://www.takealot.com/home-kitchen/air-fryers-25752. Product breadcrumbs return these slugs.","on_invalid":"reject","example":"cellular-gps/cellphones-26249","aliases":["category_url","url"]},{"name":"country","type":"enum","required":false,"description":"takealot sells in South Africa only; prices are in rand (ZAR).","on_invalid":"reject","allowed_values":[{"value":"za","label":"South Africa (ZAR)"}],"default":"za","example":"za"},{"name":"cursor","type":"string","required":false,"description":"Next page. Pass the `next_cursor` of the previous response; omit for page 1. takealot pages by cursor only (36 products per page).","on_invalid":"reject","example":"WzExLjM0MTMyNCw5NjMxNDQxNV0"},{"name":"sort","type":"enum","required":false,"description":"Order of results. Only takealot's own orderings are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"takealot's default ranking"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"rating","label":"Top rated first"},{"value":"newest","label":"Newest arrivals first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Brand name exactly as takealot lists it (every row returns `brand`; `facets` lists the brands on a query).","on_invalid":"reject","example":"Apple"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in rand.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in rand.","on_invalid":"reject","minimum":0},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars (1-4, takealot's own buckets).","on_invalid":"reject","minimum":1,"maximum":4},{"name":"in_stock","type":"boolean","required":false,"description":"true: only products takealot shows as in stock (not 'ships in N days').","on_invalid":"reject","default":false},{"name":"warehouse","type":"enum","required":false,"description":"Only products in stock at this takealot warehouse (takealot's own filter).","on_invalid":"reject","allowed_values":[{"value":"cpt","label":"In stock in Cape Town"},{"value":"jhb","label":"In stock in Johannesburg"},{"value":"dbn","label":"In stock in Durban"}]},{"name":"condition","type":"enum","required":false,"description":"Product condition as takealot classifies it.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"refurbished","label":"Refurbished / certified pre-owned"}]},{"name":"include_facets","type":"boolean","required":false,"description":"true: also return takealot's filter panel (brands, price bands, warehouses, conditions, attributes with counts) and related searches.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{plid, product_id, tsin, offer_sku, title, subtitle, brand, authors[], url, image, image_count, price (lowest price on the row), price_max (only when the row is a variant price range), price_is_range, currency (ZAR), list_price (takealot's 'List price' — only when above the price; a reference, not a was-price), list_price_discount_percent, saving_text, saving_badge, promotion_id, rating, review_count, rating_scale (5), rating_distribution{5..1}, in_stock, availability (in_stock|ships_in_days|out_of_stock|preorder|other), stock_status, is_leadtime, is_imported, warehouses[] (CPT/JHB/DBN), delivery_estimate, delivery_type, is_preorder, variant_selection_required, has_more_colours, free_delivery_with_takealotmore}, count, total_results (capped by takealot at 5000), total_is_approximate, total_results_capped, next_cursor, has_more, sort_applied, filters_applied, facets[]{name, filter_name, entries[]{label, value, count}} (include_facets), related_searches[] (include_facets), keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[], currency, country, department_slug, category_slug","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/detail","description":"The full takealot product record by PLID or URL: title, subtitle, brand, description, highlights, gallery, barcode (when published and valid), model, warranty, the preselected buy-box price with takealot's list price kept apart, the cheapest and dearest offer, reward points, availability with warehouses and delivery estimate, the seller (takealot or a marketplace seller with its rating), both buy-box offers and every other offer, rating with star distribution, breadcrumbs and category paths, the specification table, colour and size variants (pick one with `colour` / `size`) and running promotions.","required_params":["product_id"],"optional_params":["country","colour","size","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"takealot product id: 'PLID93227833', '93227833' or a product URL.","on_invalid":"reject","example":"PLID93227833","aliases":["plid","id","url"]},{"name":"country","type":"enum","required":false,"description":"takealot sells in South Africa only; prices are in rand (ZAR).","on_invalid":"reject","allowed_values":[{"value":"za","label":"South Africa (ZAR)"}],"default":"za","example":"za"},{"name":"colour","type":"string","required":false,"description":"Pick a colour variant (exactly as in `variants[].options[].value`).","on_invalid":"reject","example":"Black","aliases":["color","colour_variant"]},{"name":"size","type":"string","required":false,"description":"Pick a size variant (exactly as in `variants[].options[].value`).","on_invalid":"reject","example":"UK 9"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{plid, product_id, tsin, offer_sku, title, subtitle, brand, authors[], url, description, highlights[], images[], gtin (null unless published with a valid check digit), mpn, model, warranty, price (the preselected buy-box offer; for a product that needs a variant choice, takealot's 'from' price with price_is_from true), price_is_from, currency, list_price (takealot's reference 'List price', only when above price), list_price_discount_percent, price_min, price_max (cheapest / dearest offer on the page), reward_prices[]{program (eBucks|Discovery Miles), points} (the same price in points, not a discount), availability (in_stock|ships_in_days|out_of_stock|preorder|select_variant), in_stock, stock_status, warehouses[], delivery_estimate, is_preorder, variant_selection_required, sold_by_takealot, seller{seller_id, seller_type (takealot|marketplace), seller_name, seller_rating, seller_rating_count, seller_rating_scale, seller_vat_registered}, buybox_is_cheapest, offer_count, offers[] (as in product/offers), rating, review_count, rating_scale, rating_distribution{5..1}, breadcrumbs[]{id, name, slug, type}, category_paths[][], category, specifications[]{name, value}, variants[]{type (colour|size), title, options[]{value, available, selected, image}}, promotions[]{promotion_id, name, group_id}, country}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"PLID93227833"}},{"name":"product/offers","description":"Every offer on one takealot product, cheapest first: both buy-box offers (the preselected 'Fastest Delivery' one and the 'Best Price' one) plus every other seller, each with price, condition, seller id, type (takealot or marketplace), name and rating where takealot publishes them, stock status, warehouses and delivery estimate.","required_params":["product_id"],"optional_params":["country","colour","size","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"takealot product id: 'PLID93227833', '93227833' or a product URL.","on_invalid":"reject","example":"PLID93227833","aliases":["plid","id","url"]},{"name":"country","type":"enum","required":false,"description":"takealot sells in South Africa only; prices are in rand (ZAR).","on_invalid":"reject","allowed_values":[{"value":"za","label":"South Africa (ZAR)"}],"default":"za","example":"za"},{"name":"colour","type":"string","required":false,"description":"Pick a colour variant (exactly as in `variants[].options[].value`).","on_invalid":"reject","example":"Black","aliases":["color","colour_variant"]},{"name":"size","type":"string","required":false,"description":"Pick a size variant (exactly as in `variants[].options[].value`).","on_invalid":"reject","example":"UK 9"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{plid, product_id, title, brand, url, currency, price (preselected buy-box offer), price_min, price_max, buybox_is_cheapest, offer_count, availability, variant_selection_required} + offers[]{position, offer_sku, source (buybox|other_offers), buybox_preference (fastest|lowest_priced), buybox_label, preselected, condition, price, currency, list_price, list_price_discount_percent, seller_id, seller_type, seller_name (null where takealot does not publish it), seller_rating, seller_rating_count, seller_rating_scale, seller_vat_registered, in_stock, availability, stock_status, is_leadtime, is_imported, warehouses[], delivery_estimate, delivery_type, add_to_cart_available, free_shipping, reward_prices[]} + count","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"PLID93227833"}},{"name":"product/reviews","description":"Customer reviews of one takealot product, 10 per page: star rating, title, text, date, the reviewer's display name, helpful votes, how long after purchase it was written and the variant bought. Sort by most helpful or newest; filter by star rating.","required_params":["product_id"],"optional_params":["country","page","sort","rating","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"takealot product id: 'PLID93227833', '93227833' or a product URL.","on_invalid":"reject","example":"PLID93227833","aliases":["plid","id","url"]},{"name":"country","type":"enum","required":false,"description":"takealot sells in South Africa only; prices are in rand (ZAR).","on_invalid":"reject","allowed_values":[{"value":"za","label":"South Africa (ZAR)"}],"default":"za","example":"za"},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based (10 reviews per page).","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"most_helpful","label":"Most helpful first (takealot's default)"},{"value":"newest","label":"Most recent first"}],"default":"most_helpful"},{"name":"rating","type":"integer","required":false,"description":"Only reviews with exactly this many stars.","on_invalid":"reject","minimum":1,"maximum":5},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"reviews[]{review_id, rating, title, body, date (YYYY-MM-DD), author, helpful_votes, time_after_purchase, variant[], tsin}, count, total_reviews, total_pages, page, has_more, sort_applied, product_id, plid","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"PLID93227833"}},{"name":"deals","description":"Every promotion running on takealot right now: promotion id, name, start and end, and a link. Use `deals/products` with a promotion id for the discounted products.","required_params":[],"optional_params":["country","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"takealot sells in South Africa only; prices are in rand (ZAR).","on_invalid":"reject","allowed_values":[{"value":"za","label":"South Africa (ZAR)"}],"default":"za","example":"za"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"deals[]{promotion_id, name, short_name, group_id, active, starts_at, ends_at, qualifying_quantity, url}, count, country","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"deals/products","description":"The products in one takealot promotion, with the same rows, filters, sorts and cursor paging as `search`.","required_params":["promotion_id"],"optional_params":["country","cursor","sort","brand","price_min","price_max","min_rating","in_stock","warehouse","condition","include_facets","max_rotations"],"params":[{"name":"promotion_id","type":"string","required":true,"description":"A takealot promotion id — `deals` returns every running one.","on_invalid":"reject","example":"124732","aliases":["deal_id","id"]},{"name":"country","type":"enum","required":false,"description":"takealot sells in South Africa only; prices are in rand (ZAR).","on_invalid":"reject","allowed_values":[{"value":"za","label":"South Africa (ZAR)"}],"default":"za","example":"za"},{"name":"cursor","type":"string","required":false,"description":"Next page. Pass the `next_cursor` of the previous response; omit for page 1. takealot pages by cursor only (36 products per page).","on_invalid":"reject","example":"WzExLjM0MTMyNCw5NjMxNDQxNV0"},{"name":"sort","type":"enum","required":false,"description":"Order of results. Only takealot's own orderings are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"takealot's default ranking"},{"value":"price_asc","label":"Lowest price first"},{"value":"price_desc","label":"Highest price first"},{"value":"rating","label":"Top rated first"},{"value":"newest","label":"Newest arrivals first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Brand name exactly as takealot lists it (every row returns `brand`; `facets` lists the brands on a query).","on_invalid":"reject","example":"Apple"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in rand.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in rand.","on_invalid":"reject","minimum":0},{"name":"min_rating","type":"integer","required":false,"description":"Only products rated at least this many stars (1-4, takealot's own buckets).","on_invalid":"reject","minimum":1,"maximum":4},{"name":"in_stock","type":"boolean","required":false,"description":"true: only products takealot shows as in stock (not 'ships in N days').","on_invalid":"reject","default":false},{"name":"warehouse","type":"enum","required":false,"description":"Only products in stock at this takealot warehouse (takealot's own filter).","on_invalid":"reject","allowed_values":[{"value":"cpt","label":"In stock in Cape Town"},{"value":"jhb","label":"In stock in Johannesburg"},{"value":"dbn","label":"In stock in Durban"}]},{"name":"condition","type":"enum","required":false,"description":"Product condition as takealot classifies it.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"refurbished","label":"Refurbished / certified pre-owned"}]},{"name":"include_facets","type":"boolean","required":false,"description":"true: also return takealot's filter panel (brands, price bands, warehouses, conditions, attributes with counts) and related searches.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{plid, product_id, tsin, offer_sku, title, subtitle, brand, authors[], url, image, image_count, price (lowest price on the row), price_max (only when the row is a variant price range), price_is_range, currency (ZAR), list_price (takealot's 'List price' — only when above the price; a reference, not a was-price), list_price_discount_percent, saving_text, saving_badge, promotion_id, rating, review_count, rating_scale (5), rating_distribution{5..1}, in_stock, availability (in_stock|ships_in_days|out_of_stock|preorder|other), stock_status, is_leadtime, is_imported, warehouses[] (CPT/JHB/DBN), delivery_estimate, delivery_type, is_preorder, variant_selection_required, has_more_colours, free_delivery_with_takealotmore}, count, total_results (capped by takealot at 5000), total_is_approximate, total_results_capped, next_cursor, has_more, sort_applied, filters_applied, facets[]{name, filter_name, entries[]{label, value, count}} (include_facets), related_searches[] (include_facets), keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[], currency, country, promotion_id","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search/suggest","description":"takealot's search-box suggestions for what a shopper has typed so far.","required_params":["query"],"optional_params":["country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the shopper has typed so far.","on_invalid":"reject","example":"iph","aliases":["q","prefix"]},{"name":"country","type":"enum","required":false,"description":"takealot sells in South Africa only; prices are in rand (ZAR).","on_invalid":"reject","allowed_values":[{"value":"za","label":"South Africa (ZAR)"}],"default":"za","example":"za"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"suggestions[]{term, departments[], categories[]}, count, query, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"air fryer"}}]},{"name":"target","category":{"id":"other","title":"Other"},"title":"Target API — search or browse the target.com (US) catalogue and pull one product in full: the UPC barcode, shipping weight and package dimensions, the complete image gallery, the whole colour/size variant matrix with each variant's own price, stock and native Target id, the specification table, brand, availability, star rating with its full distribution, and customer reviews inline — one call, no API key, account or cookie required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/target/v1","spec_available":true,"actions":[{"name":"search","description":"Find products on target.com (US). Give a free-text `query` ('coffee maker', 'lego star wars', 'nike running shoes') to run Target's own site search, or a `category` path ('/c/cpus/-/N-01vhh', '/b/apple/-/N-5y3ej') to browse a Target category or brand page. Every product comes back with BOTH of Target's ids — the parent product id and the specific colour/size id — plus the name, brand, category, image, current price, the crossed-out list price when it is on sale, the star rating and rating count, and the product URL. Narrow with `sort`, `min_price` and `max_price`; page with `page` and `max_results`.","required_params":[],"optional_params":["query","category","page","max_results","sort","min_price","max_price"],"params":[{"name":"query","type":"string","required":false,"description":"What to search target.com for — a product type, a brand, or a brand plus a product ('laptop', 'coffee maker', 'lego star wars', 'nike running shoes'). This runs target.com's own site search and returns its own result order. Provide `query` OR `category`. Target serves 24 products per page and this API pages through them for you up to `max_results`; `meta.pagination` reports the deepest offset Target's own pagination links publish for that query, which is how many results it will let anyone page through (1 176 for 'laptop', 912 for 'lego', 432 for 'dog food' at the time of writing). IMPORTANT, so you can plan around it: target.com NEVER returns an empty search page — a keyword it cannot match comes back as 24 unrelated recommendations with a '200 results' label. This API measures that for you and reports it in `meta.keyword_match_rate` (real keywords score 0.62-1.00, nonsense scores 0.00), and warns in `meta.notes` when the rows are recommendations rather than matches.","on_invalid":"reject","example":"coffee maker","aliases":["q","keyword","search","search_term","text"]},{"name":"category","type":"string","required":false,"description":"A target.com category or brand page to browse instead of searching, given as the path of a target.com URL — `/c/cpus/-/N-01vhh`, `/c/marvel-collectibles/-/N-007on`, `/b/apple/-/N-5y3ej`. A full https://www.target.com/c/... URL is accepted too. Both forms come straight from Target's own sitemaps (6 215 category pages, 37 368 brand pages), which are the authoritative list: https://www.target.com/sitemap_taxonomy-categories-index.xml.gz and .../sitemap_taxonomy-brand-index.xml.gz. Note that some Target `/c/` URLs are landing/hub pages rather than product grids — those return zero products with `meta.notes` saying so and `related_categories` listing the real grids underneath them, rather than a misleading empty result.","on_invalid":"reject","example":"/c/cpus/-/N-01vhh","aliases":["category_path","path","browse","c"]},{"name":"page","type":"integer","required":false,"description":"Which page to start from (1-based). Target's page size is 24 and is not adjustable, so page 2 is results 25-48. Page until `meta.pagination.has_more` is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200},{"name":"max_results","type":"integer","required":false,"description":"How many products to return (1-192). Target serves 24 per upstream page, so asking for more than 24 fetches more pages — each one is a further ~190 KB request against Target, so ask for what you will use.","on_invalid":"ignore","default":24,"example":48,"minimum":1,"maximum":192,"aliases":["limit","max","count"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering, using Target's own sort tokens. Every value here is measured to change the order (`PriceLow` on 'laptop' returns $5.00-$13.49 first, `PriceHigh` returns $5 842-$3 999 first). `relevance` is Target's default, so passing it explicitly returns the same sequence as omitting `sort`. The list is closed on purpose: Target SILENTLY IGNORES a sort token it does not recognise and returns the default order, so an invalid value is rejected here rather than quietly given back to you as if it had sorted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Target's own default relevance order — the same sequence as omitting `sort`"},{"value":"bestselling","label":"Best sellers first"},{"value":"PriceLow","label":"Cheapest first"},{"value":"PriceHigh","label":"Most expensive first"},{"value":"RatingHigh","label":"Highest customer rating first"},{"value":"newest","label":"Newest first"}],"example":"PriceLow","aliases":["order","sort_by"]},{"name":"min_price","type":"number","required":false,"description":"Keep only products priced at or above this, in US dollars, using Target's own price filter. Verified to bite: `min_price=100&max_price=300` on 'laptop' returns only products between those bounds.","on_invalid":"ignore","example":100,"minimum":0,"aliases":["price_min","minprice"]},{"name":"max_price","type":"number","required":false,"description":"Keep only products priced at or below this, in US dollars, using Target's own price filter. Combine with `min_price` for a band.","on_invalid":"ignore","example":300,"minimum":0,"aliases":["price_max","maxprice"]}],"returns":"products[]{variant_tcin, product_tcin, url, position, name, brand, brand_url, category, image, price, list_price, currency, on_sale, in_stock (always null here), availability (always null here), rating, rating_count, review_count (always null here), offer_type} + related_categories[]{name, path} (the real product grids under a Target landing page, when you browsed one). TWO IDS, ON PURPOSE — `product_tcin` is the parent product page and is what you normally pass to `product_detail`; `variant_tcin` is the specific colour/size Target listed for that row. On some categories they are always different (measured: 24/24 rows on 't-shirt') and on others always the same (0/24 on 'lego'), so this API never collapses them into one 'id' — that would silently re-key your database on half the catalogue. Both are accepted by `product_detail`. meta.pagination{page, page_size, returned, offset, deepest_offset, total_results, total_results_at_most, has_more, next_page} — `total_results` is Target's OWN printed count and is null when Target does not print one (measured: it printed one on 7 of 15 sampled queries), so instead of inventing a total this API also reports the deepest offset Target's own pagination links go to and the upper bound that implies. meta.filters{applied, notes} says exactly what was sent. meta.route is 'crawler_ua' and meta.field_sources says which surface served which field. 🔴 TARGET'S SEARCH NEVER RETURNS EMPTY, so this API measures the match for you. Ask target.com for a keyword it cannot match and it answers HTTP 200 with 24 unrelated products and its own '200 results' label (and a second nonsense keyword returns 24 completely different ones), which counting rows would score as a successful search. `meta.keyword_match_rate` is the fraction of returned rows that actually contain a word from your query — 0.62-1.00 for real keywords and 0.00 for nonsense, measured over 15 queries — and below 0.15 `meta.notes` tells you in plain language that these are Target's recommendations rather than matches. 🔴 NO STOCK SIGNAL ON THE SEARCH GRID. `in_stock`, `availability` and `review_count` are ALWAYS null here, on every row and every query (measured 0 of 192 rows over 8 different searches), because Target's search listing does not publish a stock state or a written-review count at all — the values are not on that page in any form. This API returns them as null instead of guessing. A stock tracker therefore cannot be built on `search`: use it to find the products, then call `product_detail`, which returns `in_stock` and `availability` for the product AND for every colour/size variant, plus `review_count`. `meta.fields_not_published` repeats this on every response. `rating` and `rating_count` DO fill on the grid — it is only the count of written reviews that is missing. HONEST LIMITS: a search row carries no barcode, no weight, no dimensions, no specifications, no variant matrix and no reviews — `product_detail` is where all of those live, and it is one call per product. Target publishes no result count and no facet vocabulary on this surface, so this API offers only the filters it can prove bite: `sort`, `min_price` and `max_price`.","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"coffee maker","max_results":24}},{"name":"product_detail","description":"Get one Target product in full, by Target's own id or by its target.com URL. One call returns the UPC barcode, the shipping weight and package dimensions with Target's own units, the complete image gallery, the entire colour/size variant matrix with each variant's own price, list price, stock status, barcode, weight, dimensions, image and native Target id, the specification table parsed into name/value pairs, the brand, the category breadcrumb path, the current price and availability, the star rating with its full 1-5 distribution and Target's secondary ratings, the customer review photos, and the customer reviews inline.","required_params":[],"optional_params":["tcin","url","reviews","include_price"],"params":[{"name":"tcin","type":"string","required":false,"description":"Target's own product id (a 'TCIN'), exactly as `search` returns it — e.g. '87328557'. BOTH ids a search row gives you work: pass `product_tcin` (the parent product) or `variant_tcin` (one specific colour/size) and you get the same product back, because target.com resolves a variant id to its parent page. The response echoes what you asked for in `product.requested_tcin` and always reports the canonical parent in `product.tcin`. Provide `tcin`, or a product `url`.","on_invalid":"reject","example":"87328557","aliases":["product_id","id","product_tcin","variant_tcin","sku"]},{"name":"url","type":"string","required":false,"description":"A full target.com product URL — an alternative to `tcin`. The slug is decorative: only the `A-<id>` part is read, so `/p/-/A-87328557` works too.","on_invalid":"ignore","example":"https://www.target.com/p/women-s-short-sleeve-t-shirt-wild-fable/-/A-87328557","aliases":["product_url"]},{"name":"reviews","type":"integer","required":false,"description":"How many written customer reviews to inline with the product (0-12). This costs NO extra request — the reviews are already in the two pages this call fetches, so 0 saves you nothing but response size. The star rating, the rating count, the full 1-5 star distribution, the recommended percentage, Target's secondary ratings (comfort / quality / sizing / style, where the category has them) and the customer review photos always come back regardless of this value. Target itself only puts a limited number of review bodies on a product page, so `reviews.available_on_page` tells you how many there really were — asking for more than that is not an error, you simply get what exists.","on_invalid":"ignore","default":8,"example":8,"minimum":0,"maximum":12,"aliases":["review_limit","max_reviews"]},{"name":"include_price","type":"boolean","required":false,"description":"Whether to fetch the price, the availability and the per-variant price/stock matrix (default true). These live on a different target.com surface from the barcode, weight, dimensions, specs, images and reviews, so getting them costs ONE extra upstream request of roughly 0.7-1.0 MB. Set false when you only need the catalogue facts — it roughly halves the bytes and the latency of this call, and everything else is unchanged. `meta.route` and `meta.field_sources` always state which surfaces actually answered.","on_invalid":"ignore","default":true,"example":true,"aliases":["with_price","price"]}],"returns":"product{tcin, requested_tcin, is_variant_parent, name, brand, brand_url, url, gtin13, barcode, dpci, package{weight, weight_unit, depth, height, width, dimension_unit}, price, list_price, price_range{min, max, priced_variants, of_variants, derived_from}, currency, on_sale, in_stock, availability, condition, delivery_method, description, description_html, specifications[]{name, value}, bullets[], highlights[], highlights_title, category, category_path[]{name, url, category_id}, product_type, item_type, department, import_designation, seller, return_policy, return_policy_url, images[]{url, role, alt, image_name, model_metadata}, image, image_count, varies_by[], variant_count, variants[]{tcin, name, axes{Color, Size, …}, price, list_price, currency, on_sale, in_stock, availability, condition, barcode, dpci, package{weight, weight_unit, depth, height, width, dimension_unit}, image, url, price_source, catalog_source}, variant_hierarchy[]{axis, value, tcin, swatch_image, image, children[]}, rating, rating_count, review_count, question_count, recommended_percentage, rating_distribution{1..5}, secondary_ratings[]{id, label, value, range, type, selector_text}, review_photos[], reviews{returned, available_on_page, items[]{review_id, rating, title, text, author, author_id, submitted_at, source}}}. FIELD NOTES, so nothing here is a surprise: this product is assembled from TWO target.com surfaces and `meta.field_sources` names which one gave which field. The barcode, weight, dimensions, specifications, images, breadcrumbs, rating distribution and review photos come from Target's product document; the price, the list price, the availability, the GTIN-13 and every per-variant price and stock flag come from Target's crawler render. On a product with colour/size variants the PARENT carries no barcode and no package dimensions — they are on each variant, which is why `variants[]` carries them and the top-level `barcode` can be null on a variation product while all 93 variants have one — and the same is true of `price`: target.com prices a variation product's VARIANTS, not the family, so the top-level `price` is null there and `price_range` gives the measured min/max across the variant rows (clearly marked as derived; no variant is ever given the family's price). `in_stock` is a BOOLEAN because Target publishes no stock quantity anywhere; null means Target said nothing, never zero. Each variant row says where its own data came from: `price_source` and `catalog_source`. `meta.coverage` counts how many of THIS product's variants carry a price, a stock flag, a barcode and a weight, so you can see the completeness of the rows you were given instead of trusting an average. DEGRADED MODE: if the price surface is unavailable the call still SUCCEEDS with everything the product document gives (barcode, weight, dimensions, brand, specs, images, rating, reviews, and the variant list without prices); `meta.degraded` is true and `meta.notes` says exactly which fields are missing and why. It never fails the whole call because the price leg failed. HONEST LIMITS — WHAT TARGET DOES NOT PUBLISH: no stock quantity and no per-store inventory (availability is InStock/OutOfStock only); no seller name for Target's own first-party items; and a minority of items carry no barcode and no package dimensions at all — that is category-dependent and real, so `meta.coverage` reports it per product rather than this text pretending it is always present.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":{"tcin":"87328557","reviews":5}},{"name":"price","description":"Live price and stock for ONE Target product — the cheap way to refresh products you already hold, without paying for the whole product page. Pass the `tcin` search gave you (either `product_tcin` or `variant_tcin`) or a target.com product `url`. A specific colour/size id returns THAT variant's own price and stock; a parent id of a colour/size family returns every variant's price and stock in `variants[]` (Target prices the variants, not the family, so the top-level `price` is null there and `price_range` gives the min/max over the variants).","required_params":[],"optional_params":["tcin","url"],"params":[{"name":"tcin","type":"string","required":false,"description":"Target's own product id (a 'TCIN'), exactly as `search` returns it — e.g. '87328557'. BOTH ids a search row gives you work: pass `product_tcin` (the parent product) or `variant_tcin` (one specific colour/size) and you get the same product back, because target.com resolves a variant id to its parent page. The response echoes what you asked for in `product.requested_tcin` and always reports the canonical parent in `product.tcin`. Provide `tcin`, or a product `url`.","on_invalid":"reject","example":"87328557","aliases":["product_id","id","product_tcin","variant_tcin","sku"]},{"name":"url","type":"string","required":false,"description":"A full target.com product URL — an alternative to `tcin`. The slug is decorative: only the `A-<id>` part is read, so `/p/-/A-87328557` works too.","on_invalid":"ignore","example":"https://www.target.com/p/women-s-short-sleeve-t-shirt-wild-fable/-/A-87328557","aliases":["product_url"]}],"returns":"tcin, requested_tcin, name, url, price, list_price, currency, on_sale, in_stock, availability, condition, delivery_method, shipping_charge, price_range{min, max, priced_variants, of_variants, derived_from}, variant_count, variants[]{tcin, name, axes{Color, Size, …}, price, list_price, currency, on_sale, in_stock, availability}. `in_stock` is a BOOLEAN (Target publishes InStock/OutOfStock only, no quantity); null means Target said nothing, never zero. `shipping_charge` is always null: Target does not publish a shipping price on this surface. Reads only the part of the product page that carries the offer, so it is one upstream request of roughly 60-100 KB instead of the two ~0.3-1.1 MB pages `product_detail` reads.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"tcin":"85963493"}}]},{"name":"tcgplayer","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"TCGplayer API scraper — the US trading-card marketplace (tcgplayer.com): Magic: The Gathering, Pokémon, Yu-Gi-Oh!, One Piece, Lorcana, Flesh and Blood and 60+ product lines. Search, TCGplayer market price per printing and per condition, every live listing with seller rating and shipping, latest sales and price history, in US dollars. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/tcgplayer/v1","spec_available":true,"actions":[{"name":"search","description":"Search TCGplayer products by name and/or browse a game or set: product id, name, set, set code, collector number, rarity, TCGplayer market price, lowest listing price (with and without shipping), listed median price and image. Filter by game, set, rarity, product type and market-price range; sort by best match, best selling, name or market price; page through results.","required_params":[],"optional_params":["query","game","set","rarity","product_type","min_market_price","max_market_price","sort","page","per_page","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Card or product name as typed in TCGplayer's search box. Optional when game or set is given (browse a whole product line or set).","on_invalid":"reject","example":"charizard","aliases":["q","keyword"]},{"name":"game","type":"enum","required":false,"description":"TCGplayer product line (url_name from the games action). The display name, the numeric id and the aliases mtg, ygo, ptcg, onepiece, lorcana, fab and swu are accepted too.","on_invalid":"reject","allowed_values":[{"value":"magic","label":"Magic: The Gathering"},{"value":"yugioh","label":"YuGiOh"},{"value":"pokemon","label":"Pokemon"},{"value":"d-and-d-miniatures","label":"D & D Miniatures"},{"value":"heroclix","label":"Heroclix"},{"value":"wow","label":"WoW"},{"value":"cardfight-vanguard","label":"Cardfight Vanguard"},{"value":"force-of-will","label":"Force of Will"},{"value":"dice-masters","label":"Dice Masters"},{"value":"future-card-buddyfight","label":"Future Card BuddyFight"},{"value":"weiss-schwarz","label":"Weiss Schwarz"},{"value":"dragon-ball-z-tcg","label":"Dragon Ball Z TCG"},{"value":"final-fantasy-tcg","label":"Final Fantasy TCG"},{"value":"universus","label":"UniVersus"},{"value":"star-wars-destiny","label":"Star Wars: Destiny"},{"value":"dragon-ball-super-ccg","label":"Dragon Ball Super: Masters"},{"value":"dragoborne","label":"Dragoborne"},{"value":"funko","label":"Funko"},{"value":"metax-tcg","label":"MetaX TCG"},{"value":"card-sleeves","label":"Card Sleeves"},{"value":"deck-boxes","label":"Deck Boxes"},{"value":"card-storage-tins","label":"Card Storage Tins"},{"value":"life-counters","label":"Life Counters"},{"value":"playmats","label":"Playmats"},{"value":"zombie-world-order-tcg","label":"Zombie World Order TCG"},{"value":"the-caster-chronicles","label":"The Caster Chronicles"},{"value":"my-little-pony-ccg","label":"My Little Pony CCG"},{"value":"books","label":"Books"},{"value":"exodus-tcg","label":"Exodus TCG"},{"value":"lightseekers-tcg","label":"Lightseekers TCG"},{"value":"protective-pages","label":"Protective Pages"},{"value":"storage-albums","label":"Storage Albums"},{"value":"collectible-storage","label":"Collectible Storage"},{"value":"supply-bundles","label":"Supply Bundles"},{"value":"munchkin-ccg","label":"Munchkin CCG"},{"value":"warhammer-age-of-sigmar-champions-tcg","label":"Warhammer Age of Sigmar Champions TCG"},{"value":"bulk-lots","label":"Bulk Lots"},{"value":"transformers-tcg","label":"Transformers TCG"},{"value":"bakugan-tcg","label":"Bakugan TCG"},{"value":"keyforge","label":"KeyForge"},{"value":"chrono-clash-system","label":"Chrono Clash System"},{"value":"argent-saga-tcg","label":"Argent Saga TCG"},{"value":"flesh-and-blood-tcg","label":"Flesh and Blood TCG"},{"value":"digimon-card-game","label":"Digimon Card Game"},{"value":"alternate-souls","label":"Alternate Souls"},{"value":"gate-ruler","label":"Gate Ruler"},{"value":"metazoo","label":"MetaZoo"},{"value":"wixoss","label":"WIXOSS"},{"value":"one-piece-card-game","label":"One Piece Card Game"},{"value":"lorcana-tcg","label":"Disney Lorcana"},{"value":"battle-spirits-saga","label":"Battle Spirits Saga"},{"value":"shadowverse-evolve","label":"Shadowverse: Evolve"},{"value":"grand-archive","label":"Grand Archive TCG"},{"value":"akora","label":"Akora TCG"},{"value":"kryptik-tcg","label":"Kryptik TCG"},{"value":"sorcery-contested-realm","label":"Sorcery: Contested Realm"},{"value":"alpha-clash","label":"Alpha Clash"},{"value":"star-wars-unlimited","label":"Star Wars: Unlimited"},{"value":"dragon-ball-super-fusion-world","label":"Dragon Ball Super: Fusion World"},{"value":"union-arena","label":"Union Arena"},{"value":"tcgplayer-supplies","label":"TCGplayer Supplies"},{"value":"elestrals","label":"Elestrals"},{"value":"pokemon-japan","label":"Pokemon Japan"},{"value":"gundam-card-game","label":"Gundam Card Game"},{"value":"hololive-official-card-game","label":"hololive OFFICIAL CARD GAME"},{"value":"godzilla-card-game","label":"Godzilla Card Game"},{"value":"riftbound-league-of-legends-trading-card-game","label":"Riftbound: League of Legends Trading Card Game"},{"value":"cookierun-braverse-tcg","label":"CookieRun: Braverse TCG"},{"value":"palworld-official-card-game","label":"Palworld OFFICIAL CARD GAME"},{"value":"cyberpunk-tcg","label":"Cyberpunk TCG"}],"example":"pokemon","aliases":["product_line"]},{"name":"set","type":"string","required":false,"description":"Set url_name from the sets action or from search facets (e.g. base-set, sv-scarlet-and-violet-151).","on_invalid":"reject","example":"base-set","aliases":["set_url_name"]},{"name":"rarity","type":"string","required":false,"description":"Rarity exactly as TCGplayer names it (e.g. Holo Rare, Mythic, Secret Rare).","on_invalid":"reject","example":"Holo Rare"},{"name":"product_type","type":"string","required":false,"description":"TCGplayer product type, e.g. Cards or Sealed Products (see facets.product_types of a search).","on_invalid":"reject","example":"Cards"},{"name":"min_market_price","type":"number","required":false,"description":"Only products whose market price is at least this many US dollars.","on_invalid":"reject","example":10,"minimum":0},{"name":"max_market_price","type":"number","required":false,"description":"Only products whose market price is at most this many US dollars.","on_invalid":"reject","example":500,"minimum":0},{"name":"sort","type":"enum","required":false,"description":"TCGplayer's own orderings: best match, best selling, name A-Z, market price.","on_invalid":"reject","allowed_values":[{"value":"best_match","label":"best_match"},{"value":"best_selling","label":"best_selling"},{"value":"name_asc","label":"name_asc"},{"value":"market_price_asc","label":"market_price_asc"},{"value":"market_price_desc","label":"market_price_desc"}],"default":"best_match","example":"best_match"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). TCGplayer serves results up to position 9 999.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":9999},{"name":"per_page","type":"integer","required":false,"description":"Rows per page, up to 50 (TCGplayer's own limit).","on_invalid":"reject","default":24,"example":24,"minimum":1,"maximum":50},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{product_id, name, url, image, game, game_url_name, game_id, set, set_id, set_code, number, rarity, foil_only, release_date, currency, market_price, lowest_price, lowest_price_with_shipping, listed_median_price, search_index_listings_count}, count, total, page, per_page, has_more, corrected_query, facets{games[], sets[], product_types[]}{name, url_name, count}, query, filters_applied, sort","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"charizard","game":"pokemon"}},{"name":"product/detail","description":"One TCGplayer product by id or URL: name, set, number, rarity, images, card text and attributes, TCGplayer market price, lowest listing price with and without shipping, listed median, listing and seller counts; market price per printing (Normal / Foil) and per SKU (condition × printing × language); the 10 cheapest listings including shipping; the 5 latest sales.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"TCGplayer's numeric product id (from any search row) or a tcgplayer.com/product/<id> URL.","on_invalid":"reject","example":"42382","aliases":["id","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, name, url, images[], game, game_url_name, game_id, set, set_id, set_code, number, rarity, product_type, product_type_id, sealed, foil_only, normal_only, release_date, description, flavor_text, note, attributes{label: text}, currency, market_price, lowest_price, lowest_price_with_shipping, listed_median_price, record_listings_count, listings_count, sellers_count, quantity_available, as_low_as}, market_price_by_printing[]{printing, market_price, listed_median_price}, skus[]{sku_id, condition, printing, language, market_price, market_price_low, market_price_high, market_price_sample_size, market_price_calculated_at}, cheapest_listings[] (same shape as product/listings), latest_sales[] (same shape as product/sales)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"42382"}},{"name":"product/listings","description":"Every live listing on one product, 50 per page: price, shipping, price with shipping, quantity, condition, printing, language, listing type (with the seller's photos, title and description when present), TCGplayer Direct flag and the seller's name, rating, sales, Gold Star and Certified Hobby Shop badges. Filter with TCGplayer's own filters: condition, printing, language, listing type, Direct only.","required_params":["product_id"],"optional_params":["condition","printing","language","listing_type","direct_only","sort","page","per_page","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"TCGplayer's numeric product id (from any search row) or a tcgplayer.com/product/<id> URL.","on_invalid":"reject","example":"42382","aliases":["id","url"]},{"name":"condition","type":"string","required":false,"description":"One or more of near_mint, lightly_played, moderately_played, heavily_played, damaged, unopened (comma-separated or a list).","on_invalid":"reject","example":"near_mint"},{"name":"printing","type":"string","required":false,"description":"Printing exactly as TCGplayer names it for this product (Normal, Foil, Holofoil, 1st Edition Holofoil…; see available_filters).","on_invalid":"reject","example":"Foil"},{"name":"language","type":"string","required":false,"description":"Card language as TCGplayer names it (English, Japanese…; see available_filters).","on_invalid":"reject","example":"English"},{"name":"listing_type","type":"enum","required":false,"description":"Standard listings, listings with the seller's own photos, or both.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All listings"},{"value":"standard","label":"Listings without photos"},{"value":"with_photos","label":"Listings with the seller's own photos"}],"default":"all","example":"with_photos"},{"name":"direct_only","type":"boolean","required":false,"description":"Only TCGplayer Direct listings (fulfilled by TCGplayer).","on_invalid":"reject","default":false},{"name":"sort","type":"enum","required":false,"description":"TCGplayer's own Price + Shipping order (its default; see sort_price: shipping counts as free for sellers and Direct listings that ship free over an order threshold), or by item price.","on_invalid":"reject","allowed_values":[{"value":"price_with_shipping_asc","label":"price_with_shipping_asc"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}],"default":"price_with_shipping_asc","example":"price_with_shipping_asc"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). TCGplayer serves results up to position 9 999.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":9999},{"name":"per_page","type":"integer","required":false,"description":"Listings per page, up to 50.","on_invalid":"reject","default":50,"example":50,"minimum":1,"maximum":50},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, name, url, game, set, number, rarity, market_price, lowest_price, lowest_price_with_shipping, record_listings_count, currency}, listings[]{listing_id, sku_id, price, shipping_price, price_with_shipping, sort_price, shipping_included, free_shipping_over_threshold, currency, quantity, condition, printing, language, language_code, listing_type (standard|with_photos), title, description, photos[], listed_at, direct_listing, seller{name, key, id, rating_pct, sales_count, sales_count_is_lower_bound, gold_star, certified_hobby_shop, direct_seller, programs[], location{city, state, country}}}, count, total, page, per_page, has_more, sellers_count, quantity_available, filters_applied, available_filters{conditions[], printings[], languages[], listing_types[]}{name, count}, sort","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"42382"}},{"name":"product/sales","description":"The latest sales of one product as TCGplayer shows them without an account (the 5 most recent): date, price, shipping, quantity, condition, printing, language and listing type. Filter by condition and listing type.","required_params":["product_id"],"optional_params":["condition","listing_type","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"TCGplayer's numeric product id (from any search row) or a tcgplayer.com/product/<id> URL.","on_invalid":"reject","example":"42382","aliases":["id","url"]},{"name":"condition","type":"string","required":false,"description":"One or more of near_mint, lightly_played, moderately_played, heavily_played, damaged, unopened (comma-separated or a list).","on_invalid":"reject","example":"near_mint"},{"name":"listing_type","type":"enum","required":false,"description":"Standard listings, listings with the seller's own photos, or both.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All listings"},{"value":"standard","label":"Listings without photos"},{"value":"with_photos","label":"Listings with the seller's own photos"}],"default":"all","example":"with_photos"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, name, url, game, set, market_price, currency}, sales[]{sold_at, price, shipping_price, price_with_shipping, currency, quantity, condition, printing, language, listing_type, title}, count, filters_applied","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"42382"}},{"name":"product/price_history","description":"TCGplayer's price history for one product, per SKU (condition × printing × language): market price, quantity sold, number of sales and the low/high sale price (with and without shipping) per bucket, for the last month, quarter, six months or year.","required_params":["product_id"],"optional_params":["range","condition","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"TCGplayer's numeric product id (from any search row) or a tcgplayer.com/product/<id> URL.","on_invalid":"reject","example":"42382","aliases":["id","url"]},{"name":"range","type":"enum","required":false,"description":"History window; TCGplayer picks the bucket size.","on_invalid":"reject","allowed_values":[{"value":"month","label":"Last 30 days, daily"},{"value":"quarter","label":"Last 3 months, 3-day buckets"},{"value":"semi_annual","label":"Last 6 months, weekly"},{"value":"annual","label":"Last 12 months, weekly"}],"default":"quarter","example":"quarter"},{"name":"condition","type":"string","required":false,"description":"One or more of near_mint, lightly_played, moderately_played, heavily_played, damaged, unopened (comma-separated or a list).","on_invalid":"reject","example":"near_mint"},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"product{product_id, name, url, game, set, market_price, currency}, series[]{sku_id, condition, printing, language, currency, average_daily_quantity_sold, average_daily_transactions, total_quantity_sold, total_transactions, points[]{date, market_price, quantity_sold, transactions, low_sale_price, low_sale_price_with_shipping, high_sale_price, high_sale_price_with_shipping}}, count, range","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"42382"}},{"name":"sets","description":"Every set TCGplayer lists for a game, newest first: set id, name, url_name (the search `set` filter), set code, release date, supplemental and active flags.","required_params":["game"],"optional_params":["active_only","max_rotations"],"params":[{"name":"game","type":"enum","required":true,"description":"TCGplayer product line (url_name from the games action).","on_invalid":"reject","allowed_values":[{"value":"magic","label":"Magic: The Gathering"},{"value":"yugioh","label":"YuGiOh"},{"value":"pokemon","label":"Pokemon"},{"value":"d-and-d-miniatures","label":"D & D Miniatures"},{"value":"heroclix","label":"Heroclix"},{"value":"wow","label":"WoW"},{"value":"cardfight-vanguard","label":"Cardfight Vanguard"},{"value":"force-of-will","label":"Force of Will"},{"value":"dice-masters","label":"Dice Masters"},{"value":"future-card-buddyfight","label":"Future Card BuddyFight"},{"value":"weiss-schwarz","label":"Weiss Schwarz"},{"value":"dragon-ball-z-tcg","label":"Dragon Ball Z TCG"},{"value":"final-fantasy-tcg","label":"Final Fantasy TCG"},{"value":"universus","label":"UniVersus"},{"value":"star-wars-destiny","label":"Star Wars: Destiny"},{"value":"dragon-ball-super-ccg","label":"Dragon Ball Super: Masters"},{"value":"dragoborne","label":"Dragoborne"},{"value":"funko","label":"Funko"},{"value":"metax-tcg","label":"MetaX TCG"},{"value":"card-sleeves","label":"Card Sleeves"},{"value":"deck-boxes","label":"Deck Boxes"},{"value":"card-storage-tins","label":"Card Storage Tins"},{"value":"life-counters","label":"Life Counters"},{"value":"playmats","label":"Playmats"},{"value":"zombie-world-order-tcg","label":"Zombie World Order TCG"},{"value":"the-caster-chronicles","label":"The Caster Chronicles"},{"value":"my-little-pony-ccg","label":"My Little Pony CCG"},{"value":"books","label":"Books"},{"value":"exodus-tcg","label":"Exodus TCG"},{"value":"lightseekers-tcg","label":"Lightseekers TCG"},{"value":"protective-pages","label":"Protective Pages"},{"value":"storage-albums","label":"Storage Albums"},{"value":"collectible-storage","label":"Collectible Storage"},{"value":"supply-bundles","label":"Supply Bundles"},{"value":"munchkin-ccg","label":"Munchkin CCG"},{"value":"warhammer-age-of-sigmar-champions-tcg","label":"Warhammer Age of Sigmar Champions TCG"},{"value":"bulk-lots","label":"Bulk Lots"},{"value":"transformers-tcg","label":"Transformers TCG"},{"value":"bakugan-tcg","label":"Bakugan TCG"},{"value":"keyforge","label":"KeyForge"},{"value":"chrono-clash-system","label":"Chrono Clash System"},{"value":"argent-saga-tcg","label":"Argent Saga TCG"},{"value":"flesh-and-blood-tcg","label":"Flesh and Blood TCG"},{"value":"digimon-card-game","label":"Digimon Card Game"},{"value":"alternate-souls","label":"Alternate Souls"},{"value":"gate-ruler","label":"Gate Ruler"},{"value":"metazoo","label":"MetaZoo"},{"value":"wixoss","label":"WIXOSS"},{"value":"one-piece-card-game","label":"One Piece Card Game"},{"value":"lorcana-tcg","label":"Disney Lorcana"},{"value":"battle-spirits-saga","label":"Battle Spirits Saga"},{"value":"shadowverse-evolve","label":"Shadowverse: Evolve"},{"value":"grand-archive","label":"Grand Archive TCG"},{"value":"akora","label":"Akora TCG"},{"value":"kryptik-tcg","label":"Kryptik TCG"},{"value":"sorcery-contested-realm","label":"Sorcery: Contested Realm"},{"value":"alpha-clash","label":"Alpha Clash"},{"value":"star-wars-unlimited","label":"Star Wars: Unlimited"},{"value":"dragon-ball-super-fusion-world","label":"Dragon Ball Super: Fusion World"},{"value":"union-arena","label":"Union Arena"},{"value":"tcgplayer-supplies","label":"TCGplayer Supplies"},{"value":"elestrals","label":"Elestrals"},{"value":"pokemon-japan","label":"Pokemon Japan"},{"value":"gundam-card-game","label":"Gundam Card Game"},{"value":"hololive-official-card-game","label":"hololive OFFICIAL CARD GAME"},{"value":"godzilla-card-game","label":"Godzilla Card Game"},{"value":"riftbound-league-of-legends-trading-card-game","label":"Riftbound: League of Legends Trading Card Game"},{"value":"cookierun-braverse-tcg","label":"CookieRun: Braverse TCG"},{"value":"palworld-official-card-game","label":"Palworld OFFICIAL CARD GAME"},{"value":"cyberpunk-tcg","label":"Cyberpunk TCG"}],"example":"pokemon","aliases":["product_line"]},{"name":"active_only","type":"boolean","required":false,"description":"Only sets TCGplayer marks active.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"sets[]{set_id, name, url_name, code, release_date, supplemental, active}, count, game","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"game":"pokemon"}},{"name":"games","description":"Every TCGplayer product line (games and supplies) with its id, name, url_name and whether TCGplayer Direct sells it.","required_params":[],"optional_params":["max_rotations"],"params":[{"name":"max_rotations","type":"integer","required":false,"description":"How many fresh exits to try before giving up.","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"games[]{game_id, name, url_name, direct_eligible}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"teknosa","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Teknosa API scraper — search teknosa.com (Turkish electronics + marketplace) and read full product records: TRY price with struck price and TeknoClub member price kept apart, buy-box seller and every other seller's offer, rating histogram, specifications, EAN barcode, images and reviews. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/teknosa/v1","spec_available":true,"actions":[{"name":"search","description":"Search teknosa.com by keyword or browse a category, one row per listing: product code, title, brand, image, public price in TRY with struck price and discount, the TeknoClub members-only price as its own field, seller (Teknosa or marketplace shop), rating and review count, EAN barcode, category path and whether the row is a sponsored ad. Filter by seller, brand and price range, sort the way the site does, page through results. The response lists the sellers, brands, price bands and sub-categories available.","required_params":[],"optional_params":["query","category","page","sort","seller","brand","min_price","max_price","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"What to look for on teknosa.com — a Turkish keyword ('kulaklık', 'robot süpürge'), a brand or a model. Optional when `category` is given.","on_invalid":"reject","example":"airfryer","aliases":["q","keyword","text"]},{"name":"category","type":"string","required":false,"description":"Browse a category instead of (or as well as) searching: a teknosa.com category URL or path (…/cep-telefonu-c-100001) or its numeric code (100001).","on_invalid":"reject","example":"cep-telefonu-c-100001","aliases":["category_url","category_id"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Teknosa pages hold about 20 products.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"sort","type":"enum","required":false,"description":"Result order — only the orderings teknosa.com itself offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Teknosa's recommended order"},{"value":"newest","label":"Newest products first"},{"value":"best_selling","label":"Best sellers of the last 30 days first"},{"value":"most_favorited","label":"Most added to favourites first"},{"value":"price_asc","label":"Price, lowest first"},{"value":"price_desc","label":"Price, highest first"}],"default":"relevance"},{"name":"seller","type":"string","required":false,"description":"Only listings from this seller: the `value` returned in `filters.sellers` ('teknosa' = sold by Teknosa itself).","on_invalid":"reject","example":"teknosa","aliases":["seller_value","shop"]},{"name":"brand","type":"string","required":false,"description":"Only this brand: the numeric `code` returned in `filters.brands` (2299 = JBL).","on_invalid":"reject","example":"2299","aliases":["brand_code"]},{"name":"min_price","type":"number","required":false,"description":"Lowest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"include_fallback_results","type":"boolean","required":false,"description":"teknosa.com fills a keyword with no real match with unrelated products. Default false: when no product on the page contains a query word, results is empty and fallback_results_dropped counts what was dropped. true: those products are returned apart, in fallback_results.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id, title, brand, url, image, sponsored (Teknosa ad row), price (TRY — the public price), currency, was_price (struck-through price, null when none), discount_percent, discount_amount, member_price (TeknoClub members-only price, null when none), member_price_label, installment{months, monthly_amount, same_as_cash_price}, seller{name, shop_id, is_teknosa}, rating (1-5, null when unrated), review_count, rating_scale, in_stock (true only on Teknosa's own in-stock flag, else null), stock_label, free_shipping, category, category_path[], barcode (GTIN-validated EAN), mpn, badges[]}, count, sponsored_count, page, total_results (Teknosa's own count; 0 when the page was fallback), total_pages, page_notice, sort, query, category, keyword_matches_on_page (products on the page containing a query word; null for a category browse), fallback_results_dropped, fallback_total (Teknosa's count for the dropped fallback, when dropped), fallback_results[] (only with include_fallback_results=true), filters{sellers[]{name, value, count}, brands[]{name, code, count}, price_bands[]{label, min, max, count}, categories[]{name, code, count}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"airfryer"}},{"name":"product/detail","description":"The full Teknosa product record by product code or URL: title, brand, public price in TRY with struck price and discount, TeknoClub member price, instalment offer, product campaigns, the buy-box seller with badges and every other seller's offer and price, dispatch time, availability, rating with per-star breakdown, all images, breadcrumb, specifications table, description and bullet points, EAN barcode and MPN.","required_params":["product_id"],"optional_params":["seller_id","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Teknosa product code as returned in `product_id` by `search` (100000060317), or a full teknosa.com product URL.","on_invalid":"reject","example":"100000060317","aliases":["id","code","url"]},{"name":"seller_id","type":"string","required":false,"description":"Render the product for one seller's offer: `seller_id_param` from `other_offers[]` ('teknosa' or a numeric shop id). Default = the buy-box seller Teknosa shows first.","on_invalid":"reject","example":"teknosa","aliases":["shop_id"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, product_codes[], title, brand, brand_url, url, price, currency, was_price, discount_percent, discount_amount, member_price, member_price_label, schema_org_price, campaigns_count, campaigns[] (basket-level offers — NOT applied to price), seller{name, shop_id, store_url, is_teknosa, badges[]}, offer_id, other_offers[]{seller{…}, price, was_price, currency, dispatch, url, seller_id_param}, dispatch{min_business_days, max_business_days, text}, availability, teknosa_stock_label, rating, review_count, rating_scale, rating_breakdown{'1'..'5'}, images[], breadcrumb[]{name, url}, category_path[], barcode, mpn, favorites_count, specifications[]{name, value, unit}, description, bullet_points[], variants (null — not published server-side)}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"100000060317"}},{"name":"product/reviews","description":"Customer reviews of one Teknosa product, 5 per page as on the site: star rating, title, text, date, which seller the reviewer bought from and whether they are a verified buyer, plus the product's rating and per-star breakdown. Sort newest, oldest, or by stars.","required_params":["product_id"],"optional_params":["page","sort","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Teknosa product code as returned in `product_id` by `search` (100000060317), or a full teknosa.com product URL.","on_invalid":"reject","example":"100000060317","aliases":["id","code","url"]},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based (5 reviews per page, as on teknosa.com).","on_invalid":"ignore","default":1,"minimum":1,"maximum":400},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"},{"value":"rating_desc","label":"Highest star rating first"},{"value":"rating_asc","label":"Lowest star rating first"},{"value":"site_default","label":"Teknosa's default order (not date order)"}],"default":"newest"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"reviews[]{rating, title, text, date (YYYY-MM-DD), purchased_from_seller, verified_buyer}, count, page, page_size (5), has_more, sort, product{product_id, title, rating, review_count, rating_breakdown}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"120412509"}},{"name":"search/suggest","description":"Teknosa's own search-box suggestions for a partial keyword: suggested terms, top products with sale price and list price, related brands, categories and marketplace sellers.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the shopper has typed so far (at least 2 characters).","on_invalid":"reject","example":"dreame","aliases":["q","term","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"suggestions[], products[]{product_id, title, brand, price, list_price, currency, category, seller_name, url, image}, brands[]{name, url}, categories[]{name, url}, sellers[]{name, url}, products_total, redirect_url","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"dreame"}}]},{"name":"temu","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Temu product data and keyword search","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/temu/v1","spec_available":true,"actions":[{"name":"product/detail","description":"Product detail with exact product and variant IDs, storefront prices, stock, images, seller, brand, category path, attributes and description. Product IDs are one global numbering, but each storefront carries its own catalogue: an ID that is not sold in the requested storefront returns NOT_FOUND (not charged, not retryable) with error.detail.reason not_sold_in_market when it is a product in another storefront, and goods_not_exist when it is not a product in any storefront. Use search with the same market to get IDs for that storefront. Shipping cost, delivery estimate and parcel weight are not published on the anonymous product page; weight is returned only when the listing carries a weight attribute. Promotional prices can differ from checkout.","required_params":[],"optional_params":["goods_id","url","market"],"params":[{"name":"goods_id","type":"string","required":false,"description":"Exact Temu product ID; supply this or a Temu product URL.","on_invalid":"reject","example":"607146892696891","aliases":["product_id"]},{"name":"url","type":"url","required":false,"description":"Temu product URL; supply this or goods_id.","on_invalid":"reject","example":"https://www.temu.com/goods.html?goods_id=607146892696891"},{"name":"market","type":"enum","required":false,"description":"Product storefront: US/USD, UK/GBP, Germany/EUR or Turkey/TRY. Product IDs are one global numbering, but each storefront has its own catalogue; search a market to get IDs sold there.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States"},{"value":"uk","label":"United Kingdom"},{"value":"de","label":"Germany"},{"value":"tr","label":"Turkey"}],"default":"us","example":"us"}],"returns":"product{goods_id,title,url,market,currency,price,max_price,price_display,price_range_display,price_note,skus[]{sku_id,goods_id,price,price_display,normal_price,normal_price_display,stock_quantity,on_sale,purchase_limit,image,specs[]},images[],videos[],seller{id,name},rating,review_count,sold_quantity,on_sale,brand,category_path[]{id,name},weight,properties[],description[]}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":4},"example_params":{}},{"name":"search","description":"First page of keyword results in the US, UK, German or Turkish storefront: up to 40 products with prices, rating, review count, brand and images. Cards do not carry stock; use product/detail. Pagination is not supported. The price is flat per call regardless of max_results.","required_params":["query"],"optional_params":["market","page","max_results"],"params":[{"name":"query","type":"string","required":true,"description":"","on_invalid":"reject","example":"portable usb rechargeable","aliases":["q","keyword"]},{"name":"market","type":"enum","required":false,"description":"Product storefront: US/USD, UK/GBP, Germany/EUR or Turkey/TRY. Product IDs are one global numbering, but each storefront has its own catalogue; search a market to get IDs sold there.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States"},{"value":"uk","label":"United Kingdom"},{"value":"de","label":"Germany"},{"value":"tr","label":"Turkey"}],"default":"us","example":"us"},{"name":"max_results","type":"integer","required":false,"description":"Return at most this many cards (1-40). The source returns one page of 40; the price does not change.","on_invalid":"reject","default":40,"example":12,"minimum":1,"maximum":40},{"name":"page","type":"integer","required":false,"description":"Only the first page is supported.","on_invalid":"reject","default":1,"minimum":1,"maximum":1}],"returns":"query,market,currency,results[]{goods_id,sku_id,title,url,image,price,price_display,normal_price,currency,sales_text,rating,review_count,review_count_display,brand},count,page,next_page,pagination_supported","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":4},"example_params":null}]},{"name":"tesco","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Tesco API scraper — Tesco Groceries in the UK, Ireland, Czechia, Slovakia and Hungary: search products, read the full product record with the shelf price and the Clubcard price kept apart, multi-buy and clearance offers, per-kg unit prices, Aldi Price Match, marketplace sellers, ingredients, allergens and nutrition; browse categories, special offers and reviews. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/tesco/v1","spec_available":true,"actions":[{"name":"search","description":"Search a Tesco storefront by keyword. Each product comes with the price without a Clubcard and, separately, the Clubcard price or Clubcard multi-buy when Tesco runs one, the per-kg or per-litre unit price, was-prices of price cuts, clearance, Aldi Price Match, rating, availability, department path and, for marketplace items, the seller and delivery charge. Sort by price; filter by brand, dietary facet, department, special offers or new products.","required_params":["query"],"optional_params":["country","page","page_size","sort","brands","dietary","super_department","department","offers_only","new_only","include_sponsored","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper would type it in that country's language ('milk', 'mléko', 'tej'). Brand names work too.","on_invalid":"reject","example":"milk","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Tesco storefront. Prices come back in that country's currency and the texts in its language. Product ids are per country: a UK id is not found in Ireland.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom — tesco.com (GBP)"},{"value":"ie","label":"Ireland — tesco.ie (EUR)"},{"value":"cz","label":"Czechia — nakup.itesco.cz (CZK)"},{"value":"sk","label":"Slovakia — potravinydomov.itesco.sk (EUR)"},{"value":"hu","label":"Hungary — bevasarlas.tesco.hu (HUF)"}],"default":"uk","example":"uk"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":400},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-100, default 24). Sponsored products Tesco adds on top are not counted.","on_invalid":"reject","default":24,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result order — the orderings Tesco offers. Tesco sorts by the price its shelf shows, which is the Clubcard price when a product has one: sort by `member_price` if set, else `price`, to reproduce the order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Tesco's own ranking (default)"},{"value":"price_asc","label":"Lowest shown price first (the Clubcard price where there is one)"},{"value":"price_desc","label":"Highest shown price first (the Clubcard price where there is one)"}],"default":"relevance"},{"name":"brands","type":"array","required":false,"description":"Only these brands, exactly as `filters_available.brands[].value` spells them. Several brands are OR-ed.","on_invalid":"reject","example":["Arla"],"aliases":["brand"]},{"name":"dietary","type":"array","required":false,"description":"Lifestyle and dietary facets ('Organic', 'Vegetarian', 'No gluten' …), exactly as `filters_available.dietary[].value` spells them.","on_invalid":"reject","example":["Organic"]},{"name":"super_department","type":"string","required":false,"description":"Only this top-level department (a `filters_available.super_departments[].value`).","on_invalid":"reject","example":"Fresh Food"},{"name":"department","type":"string","required":false,"description":"Only this department (a `filters_available.departments[].value`).","on_invalid":"reject","example":"Milk, Butter & Eggs"},{"name":"offers_only","type":"boolean","required":false,"description":"true: only products on a special offer (Clubcard price, multi-buy or price cut).","on_invalid":"ignore","default":false},{"name":"new_only","type":"boolean","required":false,"description":"true: only products Tesco marks as new.","on_invalid":"ignore","default":false},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops the paid placements Tesco adds to a page; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string), base_product_id, gtin, ean, title, brand, url, image, listing_type ('grocery' | 'marketplace' | 'clothing'), price (the price WITHOUT a Clubcard), currency, unit_price, unit_of_measure, sold_by ('piece' | 'weight'), price_basis ('per_item' | 'estimated_item' — loose produce: price is Tesco's estimate for one average item and unit_price is the real per-kg price | 'per_unit' — catch-weight products: price is per unit_of_measure), average_weight_kg, catch_weight_options[]{weight_kg, price, default}, member_price (Clubcard price when Tesco runs a Clubcard price, else null), member_unit_price, member_unit, member_offer (Clubcard multi-buy text, e.g. 'Any 2 for £4 Clubcard Price'), member_discount_percent, member_program ('Clubcard' | null), original_price (was-price of a non-member price cut), original_unit_price (per-unit was-price on loose produce), discount_percent, multi_buy_offer (non-member multi-buy text), clearance, promotions[]{id, type ('member_price' | 'member_multi_buy' | 'price_cut' | 'multi_buy' | 'clearance' | 'other'), member_only, description, unit_selling_info, before_discount, after_discount, start_date, end_date, qualities[]}, deposit_return_charge, availability ('in_stock' | 'unavailable' | …), in_stock, max_order_quantity, is_new, breadcrumb[], shelf_id, rating, review_count, rating_scale, marketplace, seller{id, name} (marketplace only), delivery{estimated_by, charge} (marketplace only), sponsored, price_match[] (competitors Tesco matches), aldi_price_match, low_everyday_price, low_price_promise}, count, total_results, page, page_size, page_count, sponsored_dropped, filters_available{super_departments[], departments[], brands[], dietary[] ({name, value, count, selected}), offers_count, new_count}, country, currency, query, matched_query, sort_applied","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"milk"}},{"name":"product/detail","description":"The full Tesco product record by `product_id` or URL: every image, both prices and every promotion, unit price, availability and order limit, GTIN/EAN, ingredients, allergens, the nutrition table, storage, origin, specifications, alcohol and energy information, manufacturer and return addresses, rating distribution, marketplace offers from every seller, and clothing size/colour variants.","required_params":["product_id"],"optional_params":["country","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Tesco product id (the number in a product URL, returned as `product_id` by every listing) or the storefront product URL itself. A URL also sets the country.","on_invalid":"reject","example":"254656543","aliases":["id","tpnc","url"]},{"name":"country","type":"enum","required":false,"description":"Which Tesco storefront. Prices come back in that country's currency and the texts in its language. Product ids are per country: a UK id is not found in Ireland.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom — tesco.com (GBP)"},{"value":"ie","label":"Ireland — tesco.ie (EUR)"},{"value":"cz","label":"Czechia — nakup.itesco.cz (CZK)"},{"value":"sk","label":"Slovakia — potravinydomov.itesco.sk (EUR)"},{"value":"hu","label":"Hungary — bevasarlas.tesco.hu (HUF)"}],"default":"uk","example":"uk"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id (string), base_product_id, gtin, ean, title, brand, url, image, listing_type ('grocery' | 'marketplace' | 'clothing'), price (the price WITHOUT a Clubcard), currency, unit_price, unit_of_measure, sold_by ('piece' | 'weight'), price_basis ('per_item' | 'estimated_item' — loose produce: price is Tesco's estimate for one average item and unit_price is the real per-kg price | 'per_unit' — catch-weight products: price is per unit_of_measure), average_weight_kg, catch_weight_options[]{weight_kg, price, default}, member_price (Clubcard price when Tesco runs a Clubcard price, else null), member_unit_price, member_unit, member_offer (Clubcard multi-buy text, e.g. 'Any 2 for £4 Clubcard Price'), member_discount_percent, member_program ('Clubcard' | null), original_price (was-price of a non-member price cut), original_unit_price (per-unit was-price on loose produce), discount_percent, multi_buy_offer (non-member multi-buy text), clearance, promotions[]{id, type ('member_price' | 'member_multi_buy' | 'price_cut' | 'multi_buy' | 'clearance' | 'other'), member_only, description, unit_selling_info, before_discount, after_discount, start_date, end_date, qualities[]}, deposit_return_charge, availability ('in_stock' | 'unavailable' | …), in_stock, max_order_quantity, is_new, breadcrumb[], shelf_id, rating, review_count, rating_scale, marketplace, seller{id, name} (marketplace only), delivery{estimated_by, charge} (marketplace only), sponsored, price_match[] (competitors Tesco matches), aldi_price_match, low_everyday_price, low_price_promise, images[], videos[], description, ingredients[], allergens[]{name, values[]}, nutrition{columns[], rows[]{name, values[]}}, guideline_daily_amounts, storage, net_contents, pack_size[], number_of_uses, preparation_and_usage, marketing[], origin[]{title, value}, specifications{name: value}, features[], box_contents, directions, dosage, warnings, safety_warning, additives, recycling_info, other_information, legal_labelling, drained_weight, age_limits, alcohol, energy_class, dimensions, food_icons[], shelf_life, restrictions[], manufacturer_address, distributor_address, importer_address, return_address, rating_distribution, offers[]{product_id, seller, sold_by_tesco, price, …, delivery, promotions[]}, offer_count, variants[]{product_id, gtin, ean, title, attributes{colour, size …}, url}, category_ids{super_department, department, aisle, shelf}}, country","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"254656543"}},{"name":"product/reviews","description":"Customer reviews of one Tesco product, newest first, paged: rating, title, text, date, verified-buyer and syndication flags, plus the overall rating and its distribution.","required_params":["product_id"],"optional_params":["country","page","page_size","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Tesco product id (the number in a product URL, returned as `product_id` by every listing) or the storefront product URL itself. A URL also sets the country.","on_invalid":"reject","example":"254656543","aliases":["id","tpnc","url"]},{"name":"country","type":"enum","required":false,"description":"Which Tesco storefront. Prices come back in that country's currency and the texts in its language. Product ids are per country: a UK id is not found in Ireland.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom — tesco.com (GBP)"},{"value":"ie","label":"Ireland — tesco.ie (EUR)"},{"value":"cz","label":"Czechia — nakup.itesco.cz (CZK)"},{"value":"sk","label":"Slovakia — potravinydomov.itesco.sk (EUR)"},{"value":"hu","label":"Hungary — bevasarlas.tesco.hu (HUF)"}],"default":"uk","example":"uk"},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1-50, default 10), newest first.","on_invalid":"reject","default":10,"minimum":1,"maximum":50},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product_id, title, reviews[]{review_id, rating, rating_scale, title, text, submitted_at, author, verified_buyer, syndicated, syndication_source, incentivised}, count, total_reviews, rating, rating_scale, rating_distribution{1..5}, page, page_size, country","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"254656543"}},{"name":"deals","description":"Tesco's special-offers listing: every product currently on a Clubcard price, multi-buy, price cut or clearance, with the same rows as search, optionally narrowed to one top-level department.","required_params":[],"optional_params":["country","page","page_size","super_department","include_sponsored","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Which Tesco storefront. Prices come back in that country's currency and the texts in its language. Product ids are per country: a UK id is not found in Ireland.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom — tesco.com (GBP)"},{"value":"ie","label":"Ireland — tesco.ie (EUR)"},{"value":"cz","label":"Czechia — nakup.itesco.cz (CZK)"},{"value":"sk","label":"Slovakia — potravinydomov.itesco.sk (EUR)"},{"value":"hu","label":"Hungary — bevasarlas.tesco.hu (HUF)"}],"default":"uk","example":"uk"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":400},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-100, default 24). Sponsored products Tesco adds on top are not counted.","on_invalid":"reject","default":24,"minimum":1,"maximum":100},{"name":"super_department","type":"string","required":false,"description":"Only this top-level department (a `filters_available.super_departments[].value`).","on_invalid":"reject","example":"Fresh Food"},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops the paid placements Tesco adds to a page; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string), base_product_id, gtin, ean, title, brand, url, image, listing_type ('grocery' | 'marketplace' | 'clothing'), price (the price WITHOUT a Clubcard), currency, unit_price, unit_of_measure, sold_by ('piece' | 'weight'), price_basis ('per_item' | 'estimated_item' — loose produce: price is Tesco's estimate for one average item and unit_price is the real per-kg price | 'per_unit' — catch-weight products: price is per unit_of_measure), average_weight_kg, catch_weight_options[]{weight_kg, price, default}, member_price (Clubcard price when Tesco runs a Clubcard price, else null), member_unit_price, member_unit, member_offer (Clubcard multi-buy text, e.g. 'Any 2 for £4 Clubcard Price'), member_discount_percent, member_program ('Clubcard' | null), original_price (was-price of a non-member price cut), original_unit_price (per-unit was-price on loose produce), discount_percent, multi_buy_offer (non-member multi-buy text), clearance, promotions[]{id, type ('member_price' | 'member_multi_buy' | 'price_cut' | 'multi_buy' | 'clearance' | 'other'), member_only, description, unit_selling_info, before_discount, after_discount, start_date, end_date, qualities[]}, deposit_return_charge, availability ('in_stock' | 'unavailable' | …), in_stock, max_order_quantity, is_new, breadcrumb[], shelf_id, rating, review_count, rating_scale, marketplace, seller{id, name} (marketplace only), delivery{estimated_by, charge} (marketplace only), sponsored, price_match[] (competitors Tesco matches), aldi_price_match, low_everyday_price, low_price_promise}, count, total_results, page, page_size, page_count, sponsored_dropped, filters_available{super_departments[], departments[], brands[], dietary[] ({name, value, count, selected}), offers_count, new_count}, country, currency","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"promotion","description":"Every product in one Tesco promotion (for example all the milks in an 'Any 2 for £4 Clubcard Price' offer), by the promotion id any product row carries.","required_params":["promotion_id"],"optional_params":["country","page","page_size","include_sponsored","max_rotations"],"params":[{"name":"promotion_id","type":"string","required":true,"description":"A promotion id from any product's `promotions[].id` (e.g. an 'Any 2 for £4 Clubcard Price' offer) — returns every product in that offer.","on_invalid":"reject","example":"100144020","aliases":["id"]},{"name":"country","type":"enum","required":false,"description":"Which Tesco storefront. Prices come back in that country's currency and the texts in its language. Product ids are per country: a UK id is not found in Ireland.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom — tesco.com (GBP)"},{"value":"ie","label":"Ireland — tesco.ie (EUR)"},{"value":"cz","label":"Czechia — nakup.itesco.cz (CZK)"},{"value":"sk","label":"Slovakia — potravinydomov.itesco.sk (EUR)"},{"value":"hu","label":"Hungary — bevasarlas.tesco.hu (HUF)"}],"default":"uk","example":"uk"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":400},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-100, default 24). Sponsored products Tesco adds on top are not counted.","on_invalid":"reject","default":24,"minimum":1,"maximum":100},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops the paid placements Tesco adds to a page; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"promotion_id, results[]{product_id (string), base_product_id, gtin, ean, title, brand, url, image, listing_type ('grocery' | 'marketplace' | 'clothing'), price (the price WITHOUT a Clubcard), currency, unit_price, unit_of_measure, sold_by ('piece' | 'weight'), price_basis ('per_item' | 'estimated_item' — loose produce: price is Tesco's estimate for one average item and unit_price is the real per-kg price | 'per_unit' — catch-weight products: price is per unit_of_measure), average_weight_kg, catch_weight_options[]{weight_kg, price, default}, member_price (Clubcard price when Tesco runs a Clubcard price, else null), member_unit_price, member_unit, member_offer (Clubcard multi-buy text, e.g. 'Any 2 for £4 Clubcard Price'), member_discount_percent, member_program ('Clubcard' | null), original_price (was-price of a non-member price cut), original_unit_price (per-unit was-price on loose produce), discount_percent, multi_buy_offer (non-member multi-buy text), clearance, promotions[]{id, type ('member_price' | 'member_multi_buy' | 'price_cut' | 'multi_buy' | 'clearance' | 'other'), member_only, description, unit_selling_info, before_discount, after_discount, start_date, end_date, qualities[]}, deposit_return_charge, availability ('in_stock' | 'unavailable' | …), in_stock, max_order_quantity, is_new, breadcrumb[], shelf_id, rating, review_count, rating_scale, marketplace, seller{id, name} (marketplace only), delivery{estimated_by, charge} (marketplace only), sponsored, price_match[] (competitors Tesco matches), aldi_price_match, low_everyday_price, low_price_promise}, count, total_results, page, page_size, page_count, sponsored_dropped, country, currency","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"category","description":"Every product in one Tesco category (department, aisle or shelf), paged, with the same rows, sorting and filters as search. Category ids come from `categories` or any product.","required_params":["category_id"],"optional_params":["country","page","page_size","sort","brands","dietary","offers_only","new_only","include_sponsored","max_rotations"],"params":[{"name":"category_id","type":"string","required":true,"description":"A Tesco category id ('b;…') from `categories`, from a product's `category_ids`, or a row's `shelf_id`.","on_invalid":"reject","example":"b;RnJlc2glMjBGb29k","aliases":["category","id"]},{"name":"country","type":"enum","required":false,"description":"Which Tesco storefront. Prices come back in that country's currency and the texts in its language. Product ids are per country: a UK id is not found in Ireland.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom — tesco.com (GBP)"},{"value":"ie","label":"Ireland — tesco.ie (EUR)"},{"value":"cz","label":"Czechia — nakup.itesco.cz (CZK)"},{"value":"sk","label":"Slovakia — potravinydomov.itesco.sk (EUR)"},{"value":"hu","label":"Hungary — bevasarlas.tesco.hu (HUF)"}],"default":"uk","example":"uk"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":400},{"name":"page_size","type":"integer","required":false,"description":"Products per page (1-100, default 24). Sponsored products Tesco adds on top are not counted.","on_invalid":"reject","default":24,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result order — the orderings Tesco offers. Tesco sorts by the price its shelf shows, which is the Clubcard price when a product has one: sort by `member_price` if set, else `price`, to reproduce the order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Tesco's own ranking (default)"},{"value":"price_asc","label":"Lowest shown price first (the Clubcard price where there is one)"},{"value":"price_desc","label":"Highest shown price first (the Clubcard price where there is one)"}],"default":"relevance"},{"name":"brands","type":"array","required":false,"description":"Only these brands, exactly as `filters_available.brands[].value` spells them. Several brands are OR-ed.","on_invalid":"reject","example":["Arla"],"aliases":["brand"]},{"name":"dietary","type":"array","required":false,"description":"Lifestyle and dietary facets ('Organic', 'Vegetarian', 'No gluten' …), exactly as `filters_available.dietary[].value` spells them.","on_invalid":"reject","example":["Organic"]},{"name":"offers_only","type":"boolean","required":false,"description":"true: only products on a special offer (Clubcard price, multi-buy or price cut).","on_invalid":"ignore","default":false},{"name":"new_only","type":"boolean","required":false,"description":"true: only products Tesco marks as new.","on_invalid":"ignore","default":false},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops the paid placements Tesco adds to a page; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (string), base_product_id, gtin, ean, title, brand, url, image, listing_type ('grocery' | 'marketplace' | 'clothing'), price (the price WITHOUT a Clubcard), currency, unit_price, unit_of_measure, sold_by ('piece' | 'weight'), price_basis ('per_item' | 'estimated_item' — loose produce: price is Tesco's estimate for one average item and unit_price is the real per-kg price | 'per_unit' — catch-weight products: price is per unit_of_measure), average_weight_kg, catch_weight_options[]{weight_kg, price, default}, member_price (Clubcard price when Tesco runs a Clubcard price, else null), member_unit_price, member_unit, member_offer (Clubcard multi-buy text, e.g. 'Any 2 for £4 Clubcard Price'), member_discount_percent, member_program ('Clubcard' | null), original_price (was-price of a non-member price cut), original_unit_price (per-unit was-price on loose produce), discount_percent, multi_buy_offer (non-member multi-buy text), clearance, promotions[]{id, type ('member_price' | 'member_multi_buy' | 'price_cut' | 'multi_buy' | 'clearance' | 'other'), member_only, description, unit_selling_info, before_discount, after_discount, start_date, end_date, qualities[]}, deposit_return_charge, availability ('in_stock' | 'unavailable' | …), in_stock, max_order_quantity, is_new, breadcrumb[], shelf_id, rating, review_count, rating_scale, marketplace, seller{id, name} (marketplace only), delivery{estimated_by, charge} (marketplace only), sponsored, price_match[] (competitors Tesco matches), aldi_price_match, low_everyday_price, low_price_promise}, count, total_results, page, page_size, page_count, sponsored_dropped, filters_available{super_departments[], departments[], brands[], dietary[] ({name, value, count, selected}), offers_count, new_count}, country, currency, category_id, sort_applied","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"A Tesco storefront's category tree: every top-level department with its departments, and the id that `category` reads.","required_params":[],"optional_params":["country","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Which Tesco storefront. Prices come back in that country's currency and the texts in its language. Product ids are per country: a UK id is not found in Ireland.","on_invalid":"reject","allowed_values":[{"value":"uk","label":"United Kingdom — tesco.com (GBP)"},{"value":"ie","label":"Ireland — tesco.ie (EUR)"},{"value":"cz","label":"Czechia — nakup.itesco.cz (CZK)"},{"value":"sk","label":"Slovakia — potravinydomov.itesco.sk (EUR)"},{"value":"hu","label":"Hungary — bevasarlas.tesco.hu (HUF)"}],"default":"uk","example":"uk"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"categories[]{id, name, level, children[]{id, name, level}}, count, country","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"threads","category":{"id":"social","title":"Social Media"},"title":"Threads API scraper — public Threads (Meta) profiles, posts, replies, reposts, post detail, conversations and search (no login, public content only)","version":"0.3.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/threads/v1","spec_available":true,"actions":[{"name":"profile","description":"Public Threads profile by username — name, bio, bio links, follower count, verification, profile picture and user id.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"Threads handle without the @ (the name in threads.com/@<username>).","on_invalid":"reject","example":"zuck"}],"returns":"profile{} — username, full_name, biography, bio_links[], follower_count, profile_pic_url, user_id, is_verified, is_private, category, external_url","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"zuck"}},{"name":"posts","description":"Public posts from a Threads profile (most-recent first). Returns full text, media, engagement counts, location and music per post. Set `limit` for how many to return.","required_params":["username"],"optional_params":["limit"],"params":[{"name":"username","type":"string","required":true,"description":"Threads handle without the @ (the name in threads.com/@<username>).","on_invalid":"reject","example":"zuck"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-100). Larger values are clamped to 100.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"posts[] (id, code, url, text, media_type, image_url/video_url, carousel_media[], like/reply/repost/quote counts, taken_at, location, music, usertags[])","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"natgeo","limit":10}},{"name":"replies","description":"Public replies from a Threads profile (the Replies tab). Set `limit` for how many to return.","required_params":["username"],"optional_params":["limit"],"params":[{"name":"username","type":"string","required":true,"description":"Threads handle without the @ (the name in threads.com/@<username>).","on_invalid":"reject","example":"zuck"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-100). Larger values are clamped to 100.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"replies[] — the profile's reply posts (same shape as posts)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"zuck","limit":10}},{"name":"reposts","description":"Posts a Threads user has reposted — the Reposts tab on their profile. Returns the original reposted posts (authored by other accounts).","required_params":["username"],"optional_params":["limit"],"params":[{"name":"username","type":"string","required":true,"description":"Threads handle without the @ (the name in threads.com/@<username>).","on_invalid":"reject","example":"zuck"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-100). Larger values are clamped to 100.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"reposts[] — the reposted posts (id, code, text, original username, counts, media)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"natgeo","limit":10}},{"name":"post","description":"Maximally-complete public post detail. Provide url, or username + code, or post_id. Returns text, media (image/video/carousel), all engagement counts, location, music, tagged users, link preview, language and paid-partnership flag.","required_params":[],"optional_params":["url","username","code","post_id"],"params":[{"name":"url","type":"string","required":false,"description":"Full Threads post URL (alternative to username + code).","on_invalid":"ignore","example":"https://www.threads.com/@zuck/post/C8H9mn_xyz1"},{"name":"username","type":"string","required":false,"description":"Threads handle without the @ (the name in threads.com/@<username>).","on_invalid":"reject","example":"zuck"},{"name":"code","type":"string","required":false,"description":"Post shortcode — the code in threads.com/@<username>/post/<code>. Combine with username, or pass the full post `url` instead.","on_invalid":"ignore","example":"C8H9mn_xyz1"},{"name":"post_id","type":"string","required":false,"description":"Numeric Threads post id (from a post's `id`). Alternative to url / username+code.","on_invalid":"ignore","example":"3141592653589793238"}],"returns":"post{} — id, code, url, text, username, media_type, image_url/video_url, carousel_media[], like/reply/repost/quote/reshare/impression counts, taken_at, location, music, usertags[], link_preview, detected_language, is_paid_partnership","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"natgeo","code":"DZ2pt10Eanh"}},{"name":"post_replies","description":"The reply conversation for a public post (thread_items). Provide post_id, or url, or username + code.","required_params":[],"optional_params":["post_id","url","username","code","limit"],"params":[{"name":"post_id","type":"string","required":false,"description":"Numeric Threads post id (from a post's `id`). Alternative to url / username+code.","on_invalid":"ignore","example":"3141592653589793238"},{"name":"url","type":"string","required":false,"description":"Full Threads post URL (alternative to username + code).","on_invalid":"ignore","example":"https://www.threads.com/@zuck/post/C8H9mn_xyz1"},{"name":"username","type":"string","required":false,"description":"Threads handle without the @ (the name in threads.com/@<username>).","on_invalid":"reject","example":"zuck"},{"name":"code","type":"string","required":false,"description":"Post shortcode — the code in threads.com/@<username>/post/<code>. Combine with username, or pass the full post `url` instead.","on_invalid":"ignore","example":"C8H9mn_xyz1"},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-100). Larger values are clamped to 100.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"replies[] — reply posts to the target post (id, code, text, username, counts, media)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"natgeo","code":"DZ2pt10Eanh","limit":10}},{"name":"search","description":"Search public Threads posts by keyword. Returns matching public posts with author, text and permalink.","required_params":["q"],"optional_params":["query","limit"],"params":[{"name":"q","type":"string","required":true,"description":"Search keyword (also accepted as 'query').","on_invalid":"reject","example":"reef","aliases":["query"]},{"name":"limit","type":"integer","required":false,"description":"Max items to return (1-50). Larger values are clamped to 50.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":50}],"returns":"results[] — matching public posts (id, code, username, text, url)","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"q":"reef","limit":10}},{"name":"user_search","description":"Look up the public Threads account whose handle matches a query (exact / near-exact). NOTE: full fuzzy people search is login-gated by Threads; logged-out resolves the matching handle, like instagram's users_search.","required_params":["q"],"optional_params":["query"],"params":[{"name":"q","type":"string","required":true,"description":"Search keyword (also accepted as 'query').","on_invalid":"reject","example":"reef","aliases":["query"]}],"returns":"users[] — matching public account(s) (username, full_name, follower_count, user_id, is_verified, profile_pic_url, bio)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"natgeo"}},{"name":"followers","description":"Account-gated: the followers list requires a logged-in Threads session and is not available for public (logged-out) use.","required_params":[],"optional_params":["username"],"params":[{"name":"username","type":"string","required":false,"description":"Threads handle without the @ (the name in threads.com/@<username>).","on_invalid":"reject","example":"zuck"}],"returns":"Requires a logged-in Threads session — not available for public (logged-out) use.","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"following","description":"Account-gated: the following list requires a logged-in Threads session and is not available for public (logged-out) use.","required_params":[],"optional_params":["username"],"params":[{"name":"username","type":"string","required":false,"description":"Threads handle without the @ (the name in threads.com/@<username>).","on_invalid":"reject","example":"zuck"}],"returns":"Requires a logged-in Threads session — not available for public (logged-out) use.","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"likes","description":"Account-gated: the list of accounts that liked a post (who-liked) is not exposed to logged-out clients by Threads — it requires a logged-in session.","required_params":[],"optional_params":["url","username","code","post_id"],"params":[{"name":"url","type":"string","required":false,"description":"Full Threads post URL (alternative to username + code).","on_invalid":"ignore","example":"https://www.threads.com/@zuck/post/C8H9mn_xyz1"},{"name":"username","type":"string","required":false,"description":"Threads handle without the @ (the name in threads.com/@<username>).","on_invalid":"reject","example":"zuck"},{"name":"code","type":"string","required":false,"description":"Post shortcode — the code in threads.com/@<username>/post/<code>. Combine with username, or pass the full post `url` instead.","on_invalid":"ignore","example":"C8H9mn_xyz1"},{"name":"post_id","type":"string","required":false,"description":"Numeric Threads post id (from a post's `id`). Alternative to url / username+code.","on_invalid":"ignore","example":"3141592653589793238"}],"returns":"Requires a logged-in Threads session — the who-liked list is not public. The aggregate like_count IS available on `post` / `posts`.","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"threat-intel","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Threat Intelligence API — URL, domain and IP reputation from open threat feeds: URLHaus malware URLs, OpenPhish phishing feed, ThreatFox IOCs, Feodo botnet C2, SSLBL SSL blacklist, Spamhaus DROP hijacked netblocks and urlscan.io scan history (all keyless open sources, no API key required)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/threat-intel/v1","spec_available":true,"actions":[{"name":"url_check","description":"Is a URL malicious? Checks the URLHaus malware-URL feed + OpenPhish phishing feed (exact + variants) + its host across ThreatFox/URLHaus-hosts/Feodo/SSLBL + risk flags → verdict.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"The full URL to check (http/https). Matched against the URLHaus malware-URL feed AND the OpenPhish phishing feed (exact + http/https + trailing-slash variants), plus its host against every host/IOC feed.","on_invalid":"reject","example":"http://203.99.178.233:57690/i","aliases":["u","link"]}],"returns":"target, type, malicious (bool), verdict (clean|suspicious|malicious), score (0-100), sources[] (per-feed hit detail), threat_types[], malware[], flags[], checked_sources[]","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://github.com/"}},{"name":"domain_reputation","description":"Domain reputation: URLHaus host listing + active malware URLs + OpenPhish phishing + ThreatFox domain IOCs + urlscan scan-history count + risk flags → consolidated verdict.","required_params":["domain"],"optional_params":[],"params":[{"name":"domain","type":"string","required":true,"description":"Domain/host to check (a bare host like example.com; a full URL or leading www. is accepted and normalized). Checked against URLHaus hosts, ThreatFox domain IOCs, and urlscan scan history.","on_invalid":"reject","example":"paypal.com","aliases":["host","hostname"]}],"returns":"target, type, malicious, verdict, score, sources[], malware_urls[], threat_types[], malware[], urlscan_scans, flags[], checked_sources[]","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"ip_reputation","description":"IP abuse signals: Feodo botnet-C2 + SSLBL botnet-C2 + ThreatFox IP IOCs + URLHaus IP-hosted malware + Spamhaus DROP hijacked-netblock → verdict + score (all keyless).","required_params":["ip"],"optional_params":[],"params":[{"name":"ip","type":"string","required":true,"description":"IPv4/IPv6 address to check against Feodo botnet-C2, SSLBL botnet-C2, ThreatFox IP IOCs, URLHaus IP-hosted malware, and Spamhaus DROP hijacked netblocks (all keyless open feeds).","on_invalid":"reject","example":"162.243.103.246","aliases":["ip_address","addr"]}],"returns":"target, type, malicious, verdict, score, sources[], malware[], threat_types[], c2_ports[], checked_sources[]","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"ip":"8.8.8.8"}},{"name":"scan_lookup","description":"urlscan.io public scan history + per-scan verdict for a domain/IP (server, IP, country, TLS age, page title, malicious-flag). Open source — no key.","required_params":["domain"],"optional_params":["search_field","limit"],"params":[{"name":"domain","type":"string","required":true,"description":"Domain (or a URL — its host is used) to pull urlscan.io public scan history + per-scan verdict for. Use search_field to switch the query axis.","on_invalid":"reject","example":"github.com","aliases":["host","hostname","url"]},{"name":"search_field","type":"enum","required":false,"description":"Which urlscan axis to query. 'domain' (default) is broadest; 'page' is the landing domain only; 'ip' searches by contacted IP.","on_invalid":"ignore","allowed_values":[{"value":"domain","label":"Match the scanned page's contacted domain"},{"value":"page","label":"Match only the primary page domain (page.domain)"},{"value":"ip","label":"Match a contacted IP (treats the input as an IP)"}],"default":"domain","example":"domain"},{"name":"limit","type":"integer","required":false,"description":"Max scan-history records to return (1-100, default 20). Clamped to 100.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100}],"returns":"target, query, total, scans[] (uuid, url, domain, ip, server, country, mime_type, title, tls_age_days, time, malicious, result_link), has_more, next_offset","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"domain":"github.com"}},{"name":"batch","description":"Check up to 20 mixed indicators (URL/domain/IP, auto-routed) in one call.","required_params":["targets"],"optional_params":[],"params":[{"name":"targets","type":"array","required":true,"description":"List of indicators to check in one call (max 20); each may be a URL, domain, or IP — the type is auto-detected and routed to the right feeds.","on_invalid":"reject","example":["http://203.99.178.233:57690/i","paypal.com","162.243.103.246"],"aliases":["items","indicators"]}],"returns":"results[] (one reputation block per input, with ok/error + verdict), count, malicious_count, ok_count","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"targets":["https://github.com/","github.com","8.8.8.8"]}}]},{"name":"tiki","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Tiki API — Vietnam's home-grown marketplace as JSON: product search in Vietnamese, full product records with the price actually charged in VND, the strikethrough price and the real discount, rating, units sold, live availability, every image and the spec table, the seller behind the offer and the rival offers, colour/size variants with their own prices, customer reviews with the 1-5 star histogram, and a category browse whose filters carry Tiki's own counts — from tiki.vn, no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/tiki/v1","spec_available":true,"actions":[{"name":"search","description":"Search Tiki the way a Vietnamese shopper does and get the product grid: the price actually charged in dong, Tiki's strikethrough price, the real discount, rating and rating count, units sold, the seller, and both ids you need to read the product (`product_id` and `seller_product_id`). Narrow with a price band, a minimum rating, a category, a brand or a seller — every one of them measured to bite. 🔴 Tiki matches the literal words in a product title and does NOT translate: `điện thoại` returns 10 000+ results and `phone` returns 92; `tã bỉm` returns 7 635 and `diaper` returns 2. Search in Vietnamese, with the diacritics, and this API passes them through untouched.","required_params":["query"],"optional_params":["page","sort","price_min","price_max","min_rating","category_id","brand_id","seller_id"],"params":[{"name":"query","type":"string","required":true,"description":"What a shopper would type on tiki.vn — in Vietnamese. Diacritics are passed through unchanged and matter: `giày` returns 4 608 results and the accent-stripped `giay` returns 8 802 DIFFERENT ones, sharing 1 row in 40. Both work; they are not the same query.","on_invalid":"reject","example":"nồi chiên không dầu","aliases":["q","keyword","term","search"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Tiki serves 40 products a page and clamps every larger `limit` back to 40, so this is the only way to go deeper. It stops at page 50: page 51 answers HTTP 200 with zero rows, which is a ceiling of 2000 products per query however many `total_results` reports.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Result order. Tiki's own default is `default` (its popularity ranking). 🔴 A price sort selects a global price band per page — measured on `sách`: page 1 spans 9 500-14 000 ₫, page 2 14 000-25 000 ₫, page 10 40 000-41 000 ₫ — but the source hands the 40 rows back newest-listing-first inside that band, so this API re-orders the page by price and sets `page_reordered`. Tiki silently IGNORES an order it does not know, so anything outside this list is rejected here rather than quietly dropped.","on_invalid":"reject","allowed_values":[{"value":"default","label":"Tiki's own popularity ranking (default)"},{"value":"top_seller","label":"Best selling first"},{"value":"newest","label":"Newest listings first"},{"value":"price_asc","label":"Price, cheapest first"},{"value":"price_desc","label":"Price, dearest first"}],"example":"price_asc"},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in Vietnamese dong (whole dong — Tiki publishes no minor unit). Sent to the source as one band with `price_max`.","on_invalid":"ignore","example":1000000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in dong. Measured on the query `iphone`: 3 399 matches unfiltered, 124 under 50 000 ₫, 77 between 1 000 000 and 15 000 000 ₫.","on_invalid":"ignore","example":15000000,"minimum":1},{"name":"min_rating","type":"integer","required":false,"description":"Only products whose average customer rating is at least this many stars, 1-5. This also drops unrated products. Measured on `iphone`: 3 399 unfiltered, 993 at 1+, 929 at 3+, 842 at 4+, 705 at 5. Tiki clamps 6 to 5 and ignores a non-number, so both are rejected here instead.","on_invalid":"reject","example":4,"minimum":1,"maximum":5,"aliases":["rating"]},{"name":"category_id","type":"string","required":false,"description":"Narrow to one category. Accepts the numeric id (1789 = Phones & Tablets) or a tiki.vn category URL (`/dien-thoai-may-tinh-bang/c1789`). Ids come from `categories`, from a product's `category_path`, or from the `category` facet. Measured: `iphone` 3 399 matches, 3 inside category 1789.","on_invalid":"ignore","example":"1789","aliases":["category","cid"]},{"name":"brand_id","type":"string","required":false,"description":"Narrow to one brand id. Ids come from the `brand` facet on `category` or from any product's `brand_id`. Measured: `iphone` 3 399 unfiltered, 3 for brand 17827 (Apple).","on_invalid":"ignore","example":"17827","aliases":["brand"]},{"name":"seller_id","type":"string","required":false,"description":"Narrow to one merchant. Seller ids come from any product row's `seller_id` or from the `seller` facet. Measured: `iphone` 3 399 unfiltered, 4 from seller 1 (Tiki Trading).","on_invalid":"ignore","example":"1","aliases":["seller"]}],"returns":"products[]{product_id, seller_product_id, url, name, price_vnd, original_price_vnd, discount_vnd, discount_percent, discount_percent_computed, currency, rating, review_count, quantity_sold, brand_id, brand_name, seller_id, seller_name, sku, master_sku, image, category_id, category_path[], category_name, origin, is_authentic, is_official_store, is_top_brand, in_stock, free_shipping_campaign, fastest_delivery_time}, count, total_results, total_results_text, total_results_capped, page, per_page, last_page, price_band_vnd, page_reordered, non_product_tiles_dropped, query, query_note","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"category","description":"Walk one Tiki category page by page, with the same filters as `search` and the same product rows — and, with `include_facets`, the filter block Tiki itself shows: every brand, seller, price band, rating and category-specific attribute WITH the number of products behind it. That facet block is where the `brand_id` and `seller_id` values come from. Category ids come from `categories` or from any product's `category_path`. A category id Tiki does not publish returns NOT_FOUND rather than an empty success.","required_params":["category_id"],"optional_params":["page","query","include_facets","sort","price_min","price_max","min_rating","category_id","brand_id","seller_id"],"params":[{"name":"category_id","type":"string","required":true,"description":"Numeric Tiki category id (1789 = Phones & Tablets, 8322 = Tiki Books) or a tiki.vn category URL such as `https://tiki.vn/dien-thoai-may-tinh-bang/c1789`.","on_invalid":"reject","example":"1789","aliases":["category","cid","url"]},{"name":"query","type":"string","required":false,"description":"Optional keyword to apply INSIDE the category. Measured: category 1789 holds 107 products, 3 of them match `iphone`.","on_invalid":"ignore","example":"samsung","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Tiki serves 40 products a page and clamps every larger `limit` back to 40, so this is the only way to go deeper. It stops at page 50: page 51 answers HTTP 200 with zero rows, which is a ceiling of 2000 products per query however many `total_results` reports.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50},{"name":"include_facets","type":"boolean","required":false,"description":"Also return `facets`: every filter Tiki offers for this category with the number of products behind each value — brands, sellers (with their ids), price bands, ratings, colours, and the category-specific ones such as ROM or camera resolution on phones. 🔴 Tiki publishes facets only for a CATEGORY: the keyword search route returns no `filters` key at all, and the facet route refuses a bare keyword, so this parameter has no effect on `search`. Turning it on costs one extra upstream request.","on_invalid":"ignore","default":false},{"name":"sort","type":"enum","required":false,"description":"Result order. Tiki's own default is `default` (its popularity ranking). 🔴 A price sort selects a global price band per page — measured on `sách`: page 1 spans 9 500-14 000 ₫, page 2 14 000-25 000 ₫, page 10 40 000-41 000 ₫ — but the source hands the 40 rows back newest-listing-first inside that band, so this API re-orders the page by price and sets `page_reordered`. Tiki silently IGNORES an order it does not know, so anything outside this list is rejected here rather than quietly dropped.","on_invalid":"reject","allowed_values":[{"value":"default","label":"Tiki's own popularity ranking (default)"},{"value":"top_seller","label":"Best selling first"},{"value":"newest","label":"Newest listings first"},{"value":"price_asc","label":"Price, cheapest first"},{"value":"price_desc","label":"Price, dearest first"}],"example":"price_asc"},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in Vietnamese dong (whole dong — Tiki publishes no minor unit). Sent to the source as one band with `price_max`.","on_invalid":"ignore","example":1000000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in dong. Measured on the query `iphone`: 3 399 matches unfiltered, 124 under 50 000 ₫, 77 between 1 000 000 and 15 000 000 ₫.","on_invalid":"ignore","example":15000000,"minimum":1},{"name":"min_rating","type":"integer","required":false,"description":"Only products whose average customer rating is at least this many stars, 1-5. This also drops unrated products. Measured on `iphone`: 3 399 unfiltered, 993 at 1+, 929 at 3+, 842 at 4+, 705 at 5. Tiki clamps 6 to 5 and ignores a non-number, so both are rejected here instead.","on_invalid":"reject","example":4,"minimum":1,"maximum":5,"aliases":["rating"]},{"name":"category_id","type":"string","required":false,"description":"Narrow to one category. Accepts the numeric id (1789 = Phones & Tablets) or a tiki.vn category URL (`/dien-thoai-may-tinh-bang/c1789`). Ids come from `categories`, from a product's `category_path`, or from the `category` facet. Measured: `iphone` 3 399 matches, 3 inside category 1789.","on_invalid":"ignore","example":"1789","aliases":["category","cid"]},{"name":"brand_id","type":"string","required":false,"description":"Narrow to one brand id. Ids come from the `brand` facet on `category` or from any product's `brand_id`. Measured: `iphone` 3 399 unfiltered, 3 for brand 17827 (Apple).","on_invalid":"ignore","example":"17827","aliases":["brand"]},{"name":"seller_id","type":"string","required":false,"description":"Narrow to one merchant. Seller ids come from any product row's `seller_id` or from the `seller` facet. Measured: `iphone` 3 399 unfiltered, 4 from seller 1 (Tiki Trading).","on_invalid":"ignore","example":"1","aliases":["seller"]}],"returns":"products[] (same shape as search), count, total_results, total_results_text, total_results_capped, page, per_page, last_page, price_band_vnd, page_reordered, non_product_tiles_dropped, category_id, facets[]{name, label, multi_select, values[]{value, label, count, url_key}}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"brand","description":"One brand's whole Tiki shelf, paged and filterable exactly like a category, plus the brand's own record (name, logo, page URL, description). Measured: brand 18802 (Samsung) has 224 products on Tiki, brand 17827 (Apple) has 18. A brand id Tiki does not publish returns NOT_FOUND — its own brand route answers 404 'Brand not found', which this action uses as the oracle rather than guessing from an empty grid.","required_params":["brand_id"],"optional_params":["page","query","sort","price_min","price_max","min_rating","category_id","seller_id"],"params":[{"name":"brand_id","type":"string","required":true,"description":"Numeric Tiki brand id. Take it from any product row's `brand_id`, or from the `brand` facet on `category`. 🔴 Books carry no brand at all on Tiki — the field is absent, not empty — so this action does not cover the book catalogue.","on_invalid":"reject","example":"18802","aliases":["brand","id"]},{"name":"query","type":"string","required":false,"description":"Optional keyword applied inside the brand's shelf.","on_invalid":"ignore","example":"galaxy","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Tiki serves 40 products a page and clamps every larger `limit` back to 40, so this is the only way to go deeper. It stops at page 50: page 51 answers HTTP 200 with zero rows, which is a ceiling of 2000 products per query however many `total_results` reports.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Result order. Tiki's own default is `default` (its popularity ranking). 🔴 A price sort selects a global price band per page — measured on `sách`: page 1 spans 9 500-14 000 ₫, page 2 14 000-25 000 ₫, page 10 40 000-41 000 ₫ — but the source hands the 40 rows back newest-listing-first inside that band, so this API re-orders the page by price and sets `page_reordered`. Tiki silently IGNORES an order it does not know, so anything outside this list is rejected here rather than quietly dropped.","on_invalid":"reject","allowed_values":[{"value":"default","label":"Tiki's own popularity ranking (default)"},{"value":"top_seller","label":"Best selling first"},{"value":"newest","label":"Newest listings first"},{"value":"price_asc","label":"Price, cheapest first"},{"value":"price_desc","label":"Price, dearest first"}],"example":"price_asc"},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in Vietnamese dong (whole dong — Tiki publishes no minor unit). Sent to the source as one band with `price_max`.","on_invalid":"ignore","example":1000000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in dong. Measured on the query `iphone`: 3 399 matches unfiltered, 124 under 50 000 ₫, 77 between 1 000 000 and 15 000 000 ₫.","on_invalid":"ignore","example":15000000,"minimum":1},{"name":"min_rating","type":"integer","required":false,"description":"Only products whose average customer rating is at least this many stars, 1-5. This also drops unrated products. Measured on `iphone`: 3 399 unfiltered, 993 at 1+, 929 at 3+, 842 at 4+, 705 at 5. Tiki clamps 6 to 5 and ignores a non-number, so both are rejected here instead.","on_invalid":"reject","example":4,"minimum":1,"maximum":5,"aliases":["rating"]},{"name":"category_id","type":"string","required":false,"description":"Narrow to one category. Accepts the numeric id (1789 = Phones & Tablets) or a tiki.vn category URL (`/dien-thoai-may-tinh-bang/c1789`). Ids come from `categories`, from a product's `category_path`, or from the `category` facet. Measured: `iphone` 3 399 matches, 3 inside category 1789.","on_invalid":"ignore","example":"1789","aliases":["category","cid"]},{"name":"seller_id","type":"string","required":false,"description":"Narrow to one merchant. Seller ids come from any product row's `seller_id` or from the `seller` facet. Measured: `iphone` 3 399 unfiltered, 4 from seller 1 (Tiki Trading).","on_invalid":"ignore","example":"1","aliases":["seller"]}],"returns":"products[] (same shape as search), count, total_results, total_results_text, page, per_page, last_page, price_band_vnd, page_reordered, brand{brand_id, name, url, logo, description}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"seller","description":"One merchant's whole Tiki shelf plus the merchant's own profile: its rating out of 5, how many reviews that rating is built on, follower count, how many days it has been on Tiki, whether it is an official store and at what store level. Measured: seller 1 (Tiki Trading) 4.68 from 5 604 463 reviews, 515 120 followers, 3 368 days on the platform; seller 29952 (Hồng Hạnh Mobile) 4.73 from 2 878 reviews. Costs two upstream requests: the shelf, then the profile.","required_params":["seller_id"],"optional_params":["page","query","sort","price_min","price_max","min_rating","category_id","brand_id"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Numeric Tiki seller id, from any product row's `seller_id` or from the `seller` facet on `category`.","on_invalid":"reject","example":"1","aliases":["seller","id"]},{"name":"query","type":"string","required":false,"description":"Optional keyword applied inside the merchant's shelf.","on_invalid":"ignore","example":"iphone","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Tiki serves 40 products a page and clamps every larger `limit` back to 40, so this is the only way to go deeper. It stops at page 50: page 51 answers HTTP 200 with zero rows, which is a ceiling of 2000 products per query however many `total_results` reports.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Result order. Tiki's own default is `default` (its popularity ranking). 🔴 A price sort selects a global price band per page — measured on `sách`: page 1 spans 9 500-14 000 ₫, page 2 14 000-25 000 ₫, page 10 40 000-41 000 ₫ — but the source hands the 40 rows back newest-listing-first inside that band, so this API re-orders the page by price and sets `page_reordered`. Tiki silently IGNORES an order it does not know, so anything outside this list is rejected here rather than quietly dropped.","on_invalid":"reject","allowed_values":[{"value":"default","label":"Tiki's own popularity ranking (default)"},{"value":"top_seller","label":"Best selling first"},{"value":"newest","label":"Newest listings first"},{"value":"price_asc","label":"Price, cheapest first"},{"value":"price_desc","label":"Price, dearest first"}],"example":"price_asc"},{"name":"price_min","type":"integer","required":false,"description":"Lowest price in Vietnamese dong (whole dong — Tiki publishes no minor unit). Sent to the source as one band with `price_max`.","on_invalid":"ignore","example":1000000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest price in dong. Measured on the query `iphone`: 3 399 matches unfiltered, 124 under 50 000 ₫, 77 between 1 000 000 and 15 000 000 ₫.","on_invalid":"ignore","example":15000000,"minimum":1},{"name":"min_rating","type":"integer","required":false,"description":"Only products whose average customer rating is at least this many stars, 1-5. This also drops unrated products. Measured on `iphone`: 3 399 unfiltered, 993 at 1+, 929 at 3+, 842 at 4+, 705 at 5. Tiki clamps 6 to 5 and ignores a non-number, so both are rejected here instead.","on_invalid":"reject","example":4,"minimum":1,"maximum":5,"aliases":["rating"]},{"name":"category_id","type":"string","required":false,"description":"Narrow to one category. Accepts the numeric id (1789 = Phones & Tablets) or a tiki.vn category URL (`/dien-thoai-may-tinh-bang/c1789`). Ids come from `categories`, from a product's `category_path`, or from the `category` facet. Measured: `iphone` 3 399 matches, 3 inside category 1789.","on_invalid":"ignore","example":"1789","aliases":["category","cid"]},{"name":"brand_id","type":"string","required":false,"description":"Narrow to one brand id. Ids come from the `brand` facet on `category` or from any product's `brand_id`. Measured: `iphone` 3 399 unfiltered, 3 for brand 17827 (Apple).","on_invalid":"ignore","example":"17827","aliases":["brand"]}],"returns":"products[] (same shape as search), count, total_results, total_results_text, page, per_page, last_page, price_band_vnd, page_reordered, seller{seller_id, name, url, logo, store_id, rating, review_count, follower_count, days_since_joined, is_official_store, store_level}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"product","description":"The full Tiki product record: the price actually charged in dong, Tiki's strikethrough price and the real discount, rating and how many people rated it, units sold all-time, live availability, every gallery image, the description as clean text, the spec table row by row, warranty and return terms, how many colour/size variants exist, the SELLER behind the offer (id, name, store URL, logo) and every RIVAL offer on the same product with its own price. 🔴 Pass `seller_product_id` whenever you have one: without it Tiki serves whichever offer its buybox picks, which on a multi-seller product is a different merchant at a different price — measured 104 250 ₫ vs 73 000 ₫ on the same book, HTTP 200 both times. When no spid is given the record says `offer_is_buybox: true`. Availability comes from Tiki's own status string, never from `stock_item.qty`, which is a hardcoded 1000 on every product measured and is returned here under its real meaning, `max_order_qty`.","required_params":["product_id"],"optional_params":["seller_product_id"],"params":[{"name":"product_id","type":"string","required":true,"description":"The product to read. Accepts the numeric id (278628812) or a full tiki.vn product URL — and if the URL carries `?spid=`, that offer is used automatically. Every listing row here carries both `url` and `seller_product_id`.","on_invalid":"reject","example":"278628812","aliases":["id","url","product"]},{"name":"seller_product_id","type":"string","required":false,"description":"Which SELLER's offer to read for this product. 🔴 Pass it whenever you have it. A Tiki product id can carry several sellers' offers, and without a spid Tiki returns whichever one its buybox picks — measured on 30 products, 2 came back with a different seller AND a different price, the worst 104 250 ₫ vs 73 000 ₫ on the same book, with HTTP 200 and no signal. Every product row and every URL from this API carries the right value; when it is omitted the record returns `offer_is_buybox: true`.","on_invalid":"ignore","example":"278630772","aliases":["spid"]}],"returns":"product{product_id, seller_product_id, url, name, price_vnd, original_price_vnd, discount_vnd, discount_percent, discount_percent_computed, currency, rating, review_count, quantity_sold, all_time_quantity_sold, favourite_count, listed_days_ago, in_stock, inventory_status, inventory_type, max_order_qty, min_order_qty, preorder_date, sku, seller_sku, brand_id, brand_name, brand_slug, seller{seller_id, name, url, logo, store_id, seller_product_id, sku, price_vnd}, other_sellers[], other_seller_count, offer_is_buybox, images[], image, description, short_description, specifications[]{group, code, name, value}, variant_count, variant_options[], warranty[], return_policy[], origin, is_authentic, category_id, category_name, breadcrumbs[], product_type, authors[] (books only)}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/variants","description":"Every colour, size or pack of one product with ITS OWN price, strikethrough price, discount, SKU, availability and images. A Tiki t-shirt is one product id and a dozen colour/size combinations, each separately priced and separately in or out of stock, and each carrying the `seller_product_id` that `product` needs to read it. Products Tiki sells in a single form return an empty `variants` and `count: 0` — that is the source publishing none, not an error (measured: 6 of 12 products have variants). Tiki publishes no per-variant stock NUMBER, only an availability status, so that is what this returns.","required_params":["product_id"],"optional_params":["seller_product_id"],"params":[{"name":"product_id","type":"string","required":true,"description":"The product to read. Accepts the numeric id (278628812) or a full tiki.vn product URL — and if the URL carries `?spid=`, that offer is used automatically. Every listing row here carries both `url` and `seller_product_id`.","on_invalid":"reject","example":"278628812","aliases":["id","url","product"]},{"name":"seller_product_id","type":"string","required":false,"description":"Which SELLER's offer to read for this product. 🔴 Pass it whenever you have it. A Tiki product id can carry several sellers' offers, and without a spid Tiki returns whichever one its buybox picks — measured on 30 products, 2 came back with a different seller AND a different price, the worst 104 250 ₫ vs 73 000 ₫ on the same book, with HTTP 200 and no signal. Every product row and every URL from this API carries the right value; when it is omitted the record returns `offer_is_buybox: true`.","on_invalid":"ignore","example":"278630772","aliases":["spid"]}],"returns":"variants[]{variant_id, seller_product_id, name, options[]{name, value}, price_vnd, original_price_vnd, discount_percent, discount_percent_computed, currency, sku, in_stock, inventory_status, image, images[], is_selected}, count, in_stock_count, options[]{code, name}, product_id, product_type","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product/reviews","description":"The customer reviews Tiki publishes for a product: star rating, title, the full text, the reviewer's display name, whether they are a verified buyer, the date, how many shoppers found it helpful, the delivery rating and the photos they posted — plus the real 1-5 star histogram behind the average. Unlike many marketplaces this one pages deep: measured 7 046 reviews over 353 pages on one book. Filter by star with `stars` and the counts move for real (7 046 unfiltered → 6 048 at 5 stars, 726 at 4, 135 at 3, 63 at 2, 74 at 1). 🔴 Tiki publishes three different review counts that are not the same quantity: the product record says 6 153, this stream says 7 046, and its own histogram sums to 7 029. All three are returned under separate names rather than reconciled.","required_params":["product_id"],"optional_params":["seller_product_id","page","stars","sort"],"params":[{"name":"product_id","type":"string","required":true,"description":"The product to read. Accepts the numeric id (278628812) or a full tiki.vn product URL — and if the URL carries `?spid=`, that offer is used automatically. Every listing row here carries both `url` and `seller_product_id`.","on_invalid":"reject","example":"278628812","aliases":["id","url","product"]},{"name":"seller_product_id","type":"string","required":false,"description":"Which SELLER's offer to read for this product. 🔴 Pass it whenever you have it. A Tiki product id can carry several sellers' offers, and without a spid Tiki returns whichever one its buybox picks — measured on 30 products, 2 came back with a different seller AND a different price, the worst 104 250 ₫ vs 73 000 ₫ on the same book, with HTTP 200 and no signal. Every product row and every URL from this API carries the right value; when it is omitted the record returns `offer_is_buybox: true`.","on_invalid":"ignore","example":"278630772","aliases":["spid"]},{"name":"page","type":"integer","required":false,"description":"1-based page number. Tiki serves 40 products a page and clamps every larger `limit` back to 40, so this is the only way to go deeper. It stops at page 50: page 51 answers HTTP 200 with zero rows, which is a ceiling of 2000 products per query however many `total_results` reports.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50},{"name":"stars","type":"integer","required":false,"description":"Only reviews with exactly this many stars, 1-5. Measured on one book: 7 046 reviews unfiltered, 74 at 1 star, 63 at 2, 135 at 3, 726 at 4, 6 048 at 5. 🔴 Upstream this rides the SAME slot as `sort`, so setting `stars` overrides `sort`; the response reports which was applied in `sort_applied`. Every other star filter Tiki appears to accept (`rating=`, `filter=`, `type=has_image`) is silently ignored and is therefore not offered here.","on_invalid":"reject","example":1,"minimum":1,"maximum":5},{"name":"sort","type":"enum","required":false,"description":"Review order. `helpful` is Tiki's own default.","on_invalid":"reject","allowed_values":[{"value":"helpful","label":"Most helpful first (default)"},{"value":"newest","label":"Newest first"}],"example":"newest"}],"returns":"reviews[]{review_id, rating, title, text, author, verified_purchase, created_at, helpful_count, comment_count, delivery_rating, seller_product_id, images[], attributes[]}, count, reviews_available, reviews_count_reported, rating, rating_histogram[]{stars, count, percent}, histogram_total, page, per_page, last_page, product_id, sort_applied","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"suggest","description":"Tiki's own autocomplete for a partial query: the search terms it would offer and the official stores it maps the term to, with their ids. The cheapest way to find the Vietnamese wording Tiki actually indexes before spending a search on a guess — and the only place a store name turns into a store id. Sponsored entries are returned flagged, not silently mixed in.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"A partial or full query in Vietnamese, e.g. `nồi chi` for `nồi chiên không dầu`.","on_invalid":"reject","example":"nồi chi","aliases":["q","keyword","term"]}],"returns":"suggestions[]{text, type, url, store_id, seller_id, subtitle, sponsored}, count, sponsored_count, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":null},{"name":"categories","description":"Tiki's category tree, one level at a time, each category with its id, name, URL, depth, whether it is a leaf and HOW MANY PRODUCTS it holds. Call it with no parameters for the top-level departments; pass `parent_id` to walk down. These are the ids `category` and the `category_id` filter take. Measured: category 1789 has 5 children, and their published product counts are 75, 17, 12, 3 and 1.","required_params":[],"optional_params":["parent_id","query"],"params":[{"name":"parent_id","type":"string","required":false,"description":"The category whose children to list, as an id or a tiki.vn category URL. Omit for the top-level departments — Tiki refuses `parent_id=0` with HTTP 400, so the root comes from its own menu instead.","on_invalid":"ignore","example":"1789","aliases":["category_id","category","parent"]},{"name":"query","type":"string","required":false,"description":"Only categories whose name contains this text, case-insensitive and diacritics as typed.","on_invalid":"ignore","example":"điện thoại","aliases":["q","name"]}],"returns":"categories[]{category_id, parent_id, name, url, url_key, level, is_leaf, product_count, image}, count, parent_id","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"tiktok-creative-center","category":{"id":"social","title":"Social Media"},"title":"TikTok Creative Center API — TikTok ad-spy & creative intelligence: top-performing Top Ads by region/industry/objective, full ad detail (CTR, spend, likes, shares, comments, landing page, video renditions), keyword ad search, the live filter taxonomy (81 countries / 258 industries / objectives / languages) and official creative trend reports — the PiPiADS / Minea / AdSpy data as a raw JSON API","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/tiktok-creative-center/v1","spec_available":true,"actions":[{"name":"top_ads","description":"Top-performing TikTok ads for a market, filterable by region, period, industry, objective and ad language, ranked by recommendation / CTR / likes / spend. The core ad-spy feed — the same Top Ads intelligence PiPiADS / Minea / AdSpy sell as SaaS — with each ad's metrics and full video renditions.","required_params":[],"optional_params":["region","period","order_by","industry","objective","ad_language","limit","page"],"params":[{"name":"region","type":"string","required":false,"description":"Two-letter ISO country code to scope the ads to a market. Common: US, GB, DE, FR, ES, IT, JP, KR, BR, MX, ID, TH, VN, TR, SA, AE, IN, CA, AU. Default US. Call the `locations` action for the full 73-market list (each {code, name}); unsupported codes fall back to US.","on_invalid":"ignore","default":"US","example":"US","aliases":["country","country_code"]},{"name":"period","type":"enum","required":false,"description":"Trailing window the ad metrics are measured over, in days. Only 7, 30 or 180 are accepted by TikTok (any other value falls back to 30). Shorter = fresher/breakout ads, longer = established performers.","on_invalid":"ignore","allowed_values":[{"value":"7","label":"Last 7 days"},{"value":"30","label":"Last 30 days"},{"value":"180","label":"Last 180 days"}],"default":"30","example":"30"},{"name":"order_by","type":"enum","required":false,"description":"How the returned ads are ranked: 'for_you' = TikTok's recommended mix, or sort by 'ctr' (click-through rate), 'like' (most liked) or 'cost' (highest spend). Each call returns one ranked page of up to 20.","on_invalid":"ignore","allowed_values":[{"value":"for_you","label":"Recommended mix"},{"value":"ctr","label":"Highest click-through rate"},{"value":"like","label":"Most liked"},{"value":"cost","label":"Highest spend"}],"default":"for_you","example":"ctr","aliases":["sort_by","sort"]},{"name":"industry","type":"string","required":false,"description":"Numeric industry id to filter ads by — one of the 21 top-level verticals listed in allowed_values (e.g. 25000000000 = Games, 14000000000 = Beauty & Personal Care, 22000000000 = Apparel & Accessories). Sub-category ids are also accepted; browse the full 258-entry taxonomy (with parent_id hierarchy) via the `ad_filters` action.","on_invalid":"ignore","allowed_values":[{"value":"10000000000","label":"Education"},{"value":"11000000000","label":"Vehicle & Transportation"},{"value":"12000000000","label":"Baby, Kids & Maternity"},{"value":"13000000000","label":"Financial Services"},{"value":"14000000000","label":"Beauty & Personal Care"},{"value":"15000000000","label":"Tech & Electronics"},{"value":"16000000000","label":"Appliances"},{"value":"17000000000","label":"Travel"},{"value":"18000000000","label":"Household Products"},{"value":"19000000000","label":"Pets"},{"value":"20000000000","label":"Apps"},{"value":"21000000000","label":"Home Improvement"},{"value":"22000000000","label":"Apparel & Accessories"},{"value":"23000000000","label":"News & Entertainment"},{"value":"24000000000","label":"Business Services"},{"value":"25000000000","label":"Games"},{"value":"26000000000","label":"Life Services"},{"value":"27000000000","label":"Food & Beverage"},{"value":"28000000000","label":"Sports & Outdoor"},{"value":"29000000000","label":"Health"},{"value":"30000000000","label":"E-Commerce (Non-app)"}],"example":"25000000000"},{"name":"objective","type":"string","required":false,"description":"Campaign objective filter (id or name: Traffic, Conversions, App Installs, Video Views, Reach, Lead Generation, Product Sales).","on_invalid":"ignore","allowed_values":[{"value":"1","label":"Traffic"},{"value":"2","label":"App Installs"},{"value":"3","label":"Conversions"},{"value":"4","label":"Video Views"},{"value":"5","label":"Reach"},{"value":"8","label":"Lead Generation"},{"value":"15","label":"Product Sales"}],"example":"3"},{"name":"ad_language","type":"string","required":false,"description":"Ad-language filter, e.g. language_en / language_es / language_de (see ad_filters.ad_language for the 16 supported values).","on_invalid":"ignore","example":"language_en","aliases":["language"]},{"name":"limit","type":"integer","required":false,"description":"How many ads to return (1-20; TikTok hard-caps a page at 20). The response includes pagination.total_count = the full size of the ranked index for your filters.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":20},{"name":"page","type":"integer","required":false,"description":"Result page. NOTE: TikTok's Top-Ads endpoint serves a single ranked page per (region/period/filter/order_by) combination — page>1 returns empty. To see different ads, vary order_by (ctr/like/cost), period, industry or objective rather than the page number.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50}],"returns":"ads[]{id, ad_title, brand_name, ctr, like, cost, industry_key, objective_key, is_search, video{vid, duration, cover_url, width, height, video_urls{360p,480p,540p,720p,1080p}}} + pagination{page, size, total_count, has_more}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":3},"example_params":{"region":"US","period":"30"}},{"name":"ad_detail","description":"Full creative record for one ad: title, brand, CTR, spend, likes, comments, shares, landing page, matched keywords, campaign objectives, highlight text, creative source, voice-over flag and the full set of video renditions (360p-1080p).","required_params":["ad_id"],"optional_params":[],"params":[{"name":"ad_id","type":"string","required":true,"description":"Creative/material id (the `id` field of a top_ads result).","on_invalid":"reject","example":"7643811757731414036","aliases":["material_id","id"]}],"returns":"ad{id, ad_title, brand_name, ctr, like, comment, share, cost, country_code, landing_page, keyword_list[], objectives[], highlight_text, pattern_label, source, source_key, voice_over, video{vid, duration, cover_url, video_urls{360p..1080p}}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"search_ads","description":"Keyword search across TikTok's Top-Ads index (region/period scoped), returning the same ad shape as top_ads. NOTE: TikTok's keyword index is sparse — only terms that match indexed ad metadata return matches, and many generic queries come back empty (honest empty, ok=true). For broad discovery prefer `top_ads` with industry / objective filters.","required_params":["keyword"],"optional_params":["region","period","limit","page"],"params":[{"name":"keyword","type":"string","required":true,"description":"Search term to match against the Top-Ads index.","on_invalid":"reject","example":"skincare","aliases":["query","q"]},{"name":"region","type":"string","required":false,"description":"Two-letter ISO country code to scope the ads to a market. Common: US, GB, DE, FR, ES, IT, JP, KR, BR, MX, ID, TH, VN, TR, SA, AE, IN, CA, AU. Default US. Call the `locations` action for the full 73-market list (each {code, name}); unsupported codes fall back to US.","on_invalid":"ignore","default":"US","example":"US","aliases":["country","country_code"]},{"name":"period","type":"enum","required":false,"description":"Trailing window the ad metrics are measured over, in days. Only 7, 30 or 180 are accepted by TikTok (any other value falls back to 30). Shorter = fresher/breakout ads, longer = established performers.","on_invalid":"ignore","allowed_values":[{"value":"7","label":"Last 7 days"},{"value":"30","label":"Last 30 days"},{"value":"180","label":"Last 180 days"}],"default":"30","example":"30"},{"name":"limit","type":"integer","required":false,"description":"How many ads to return (1-20; TikTok hard-caps a page at 20). The response includes pagination.total_count = the full size of the ranked index for your filters.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":20},{"name":"page","type":"integer","required":false,"description":"Result page. NOTE: TikTok's Top-Ads endpoint serves a single ranked page per (region/period/filter/order_by) combination — page>1 returns empty. To see different ads, vary order_by (ctr/like/cost), period, industry or objective rather than the page number.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50}],"returns":"ads[]{id, ad_title, brand_name, ctr, like, cost, industry_key, objective_key, is_search, video{vid, duration, cover_url, width, height, video_urls{360p,480p,540p,720p,1080p}}} + pagination{page, size, total_count, has_more} + keyword, search_id","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"ad_filters","description":"The live filter taxonomy used by top_ads: full country (81), industry (258), objective (7), ad_language (16), pattern_label and period value lists.","required_params":[],"optional_params":[],"params":[],"returns":"filters{country[], industry[], objective[], ad_language[], pattern_label[], period[]} — each entry {id, value, label}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"query_suggestions","description":"Suggested Top-Ads search terms surfaced by TikTok's Creative Center search box. Honestly returns an empty list when TikTok is serving no suggestions for the locale.","required_params":[],"optional_params":["limit"],"params":[{"name":"limit","type":"integer","required":false,"description":"How many suggestions (1-50).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50}],"returns":"suggestions[] (trending query strings)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"trend_reports","description":"Creative-Center trend reports & creative-guidance articles (official TikTok marketing insight content).","required_params":[],"optional_params":["article_type","limit","page"],"params":[{"name":"article_type","type":"enum","required":false,"description":"Which Creative-Center article stream to return.","on_invalid":"ignore","allowed_values":[{"value":"trends","label":"Trend reports"},{"value":"guidance","label":"Creative guidance"},{"value":"1","label":"Creative guidance (raw id)"},{"value":"2","label":"Trend reports (raw id)"}],"default":"trends","example":"trends"},{"name":"limit","type":"integer","required":false,"description":"Articles (1-50).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"page","type":"integer","required":false,"description":"Result page. NOTE: TikTok's Top-Ads endpoint serves a single ranked page per (region/period/filter/order_by) combination — page>1 returns empty. To see different ads, vary order_by (ctr/like/cost), period, industry or objective rather than the page number.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50}],"returns":"articles[]{article_id, title, author, tag, cover_url, publish_time, url_title, description}","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{"article_type":"trends"}},{"name":"locations","description":"Supported markets for the `region` filter: ISO code + human country name (e.g. {code: 'DE', name: 'Germany'}), sorted by name.","required_params":[],"optional_params":[],"params":[],"returns":"countries[]{id, code, name} — code is the value to pass as `region`","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"tiktok-shop","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"TikTok Shop API — product detail with per-SKU price and stock, category browsing, seller profiles and catalogues, US keyword search, best-seller and deal feeds, and customer reviews across 10 markets (US, UK, Malaysia, Singapore, Thailand, Philippines, Vietnam, Indonesia, Japan, Mexico)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/tiktok-shop/v1","spec_available":true,"actions":[{"name":"product_detail","description":"Full TikTok Shop product record in ONE call, for any of the ten markets — title, structured description, every image, EVERY SKU with its own price and its exact remaining stock as an integer, shipping weight in grams and package size in centimetres, discount and list price, shipping fee and delivery window, category path, the seller's full profile, three customer reviews and the complete star histogram. Nothing here needs a second request","required_params":["product_id"],"optional_params":["market"],"params":[{"name":"product_id","type":"string","required":true,"description":"TikTok Shop product id — the 19-digit number at the end of a product URL (shop.tiktok.com/us/pdp/product/1729450858130215273). It is a stable string, returned verbatim by every action, and it never changes type or gets re-keyed between surfaces.","on_invalid":"ignore","example":"1729450858130215273","aliases":["id","productId"]},{"name":"market","type":"enum","required":false,"description":"Which TikTok Shop market to read. Ten are supported and all ten are live-verified with the correct local currency: us (USD), gb (GBP), my (MYR), sg (SGD), th (THB), ph (PHP), vn (VND), id (IDR), jp (JPY), mx (MXN). The market decides the storefront, the currency and the catalogue — the same product id can be absent from another market. Brazil is listed by TikTok but is not reachable and is not offered; every European market other than the UK is a seller-side region, not a shop.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"th","label":"Thailand (THB)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us","aliases":["region","country"]}],"returns":"product{product_id, title, url, market, currency, price, list_price, discount_percent, is_promotional, rating, review_count, sold_count, brand, images[], description, description_images[], categories[], specifications[], skus[], total_stock, sku_count, shipping{}, seller{}}, reviews[], review_summary{}. PRICE IS NOT A CONSTANT — read is_promotional first. On a product that is not on promotion the price was identical across 8 consecutive fetches; on a PROMOTED product TikTok re-throws both the sale price and the 'was' price on every request (the discount ratio stays fixed), and the payload contains no un-promoted base price at all. So list_price and discount_percent are present when and only when is_promotional is true, and both are marketing numbers, not a price history. SKUS: skus[] carries sku_id, sku_name, properties[] (colour/size/…), available_quantity as a real integer, in_stock, per-SKU price, image, and package_weight_g / package_length_cm / package_width_cm / package_height_cm. Those package_* fields are ALWAYS grams and centimetres. TikTok also publishes weight/dimension objects with a per-product unit flag that flips between metric and imperial — this API does not return them, because a parser that trusts them reports '1 gram' for a pair of headphones. Note the package weight is the SHIPPING weight; a product weight quoted in specifications[] is a different number and the two are not merged. RATING: null when the product has no reviews yet — TikTok emits a literal 0 there, which would read as 'scored zero out of five'. review_count is 0 in that case, not null, so you can tell 'unrated' from 'unknown'. REVIEWS: exactly 3 are embedded (the site itself embeds no more), plus review_summary with total_reviews, average_rating and the full 1-5 star rating_distribution — so the histogram covers all reviews even though the text sample is three. NOT-FOUND IS CONFIRMED, NOT GUESSED: TikTok returns the same body for 'no such product' and 'this exit was refused', so a single negative is never reported as NOT_FOUND — it is re-checked against a second, independent route or exit first, and an unconfirmed negative comes back as a retryable TARGET_BLOCKED instead.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"1729450858130215273","market":"us"}},{"name":"products_by_ids","description":"Look up as many as 15 US products in a SINGLE call — the cheapest way to refresh a list of ids you already hold, at roughly a sixth of the bandwidth per product of fetching each product page. It is also the only route on TikTok Shop with an unambiguous 'not found', which makes it the right way to check whether an id is still live before spending a full product fetch on it. US catalogue only","required_params":["product_ids"],"optional_params":[],"params":[{"name":"product_ids","type":"array","required":true,"description":"Up to 15 TikTok Shop product ids. Accepts a JSON array or a comma-separated string. More than 15 ids are split into several upstream calls automatically.","on_invalid":"ignore","example":["1729450858130215273","1729397197029216665"],"aliases":["ids","product_id"]}],"returns":"products[] (the standard listing row: product_id, title, url, slug, image, brand, seller_id, seller_name, rating, review_count, sold_count, sku_count, labels[], price, list_price, currency, discount_percent, is_promotional), not_found[], requested, returned. not_found[] is TRUSTWORTHY on this action and on no other: a bogus id makes this route answer with an empty product list in 56 bytes, which no other TikTok Shop route does. An id in not_found[] is genuinely absent from the US catalogue. WHAT THIS IS NOT: a product_detail substitute. It returns the listing card, so there are NO skus[], no per-SKU stock, no package weight or dimensions, no description and no reviews. Use it to price and validate a list; use product_detail when you need the record. US market only — the route answers code 10000 on all nine other market edges and 404 on the UK edge.","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"per_unit","credits":1,"per":15,"min":1},"example_params":{"product_ids":["1729450858130215273","1729397197029216665"]}},{"name":"category_tree","description":"TikTok Shop's own category taxonomy for any of the ten markets — 28 top-level departments from one call, then walk down to level 2 and level 3 by passing a category_id. Every node says whether it is a leaf, so the tree can be crawled to the bottom with no external id list and nothing hard-coded","required_params":[],"optional_params":["market","category_id","slug"],"params":[{"name":"market","type":"enum","required":false,"description":"Which TikTok Shop market to read. Ten are supported and all ten are live-verified with the correct local currency: us (USD), gb (GBP), my (MYR), sg (SGD), th (THB), ph (PHP), vn (VND), id (IDR), jp (JPY), mx (MXN). The market decides the storefront, the currency and the catalogue — the same product id can be absent from another market. Brazil is listed by TikTok but is not reachable and is not offered; every European market other than the UK is a seller-side region, not a shop.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"th","label":"Thailand (THB)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us","aliases":["region","country"]},{"name":"category_id","type":"string","required":false,"description":"Expand this category's children instead of the root. Omit for the 28 top-level departments. Ids come from this action, or from any product's categories[].","on_invalid":"ignore","example":"601152","aliases":["parent_category_id"]},{"name":"slug","type":"string","required":false,"description":"URL slug of the category, as returned in slug by this action. Optional — a placeholder is used when omitted, since TikTok routes on the numeric id.","on_invalid":"ignore","example":"womenswear-underwear","aliases":["category_slug"]}],"returns":"categories[] {category_id, name, name_en, slug, level, is_leaf, parent_category_id, image, url}, parent{}, breadcrumbs[], market, level. is_leaf true means the node has no children and is where products live — feed that category_id straight into category_products. The taxonomy is three levels deep (28 departments → ~7-10 children each → leaves) and it is the SAME id space the product action returns in categories[], so a product can be mapped onto the tree without a lookup table. name is TikTok's localised label for the market; name_en is the stable English slug-form, which is what you should key on.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"market":"us"}},{"name":"category_products","description":"Browse a whole category and page through it — around 100 products per category, on ALL TEN markets. This is the cheapest source of product ids there is, roughly 1 KB of traffic per product, and it is what replaces keyword search outside the US. Pages are position-independent, so a page that gets throttled is retried automatically without losing your place","required_params":["category_id"],"optional_params":["market","max_results","slug"],"params":[{"name":"category_id","type":"string","required":true,"description":"Numeric category id from the category_tree action or from a product's categories[]. Leaf categories give the most focused list, but any level works.","on_invalid":"ignore","example":"601262","aliases":["categoryId"]},{"name":"market","type":"enum","required":false,"description":"Which TikTok Shop market to read. Ten are supported and all ten are live-verified with the correct local currency: us (USD), gb (GBP), my (MYR), sg (SGD), th (THB), ph (PHP), vn (VND), id (IDR), jp (JPY), mx (MXN). The market decides the storefront, the currency and the catalogue — the same product id can be absent from another market. Brazil is listed by TikTok but is not reachable and is not offered; every European market other than the UK is a seller-side region, not a shop.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"th","label":"Thailand (THB)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us","aliases":["region","country"]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return, 1-200 (default 50). Values above the maximum are clamped, not rejected, and a value below one page still costs one upstream call. Fewer results really is cheaper here — the page size is passed through to TikTok, so asking for 5 transfers roughly a third of what 20 does.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":200,"aliases":["limit","max","count"]},{"name":"slug","type":"string","required":false,"description":"Category URL slug from category_tree. Optional; it only makes the referring page URL exact.","on_invalid":"ignore","example":"bras","aliases":["category_slug"]}],"returns":"results[] (standard listing rows), category_id, market, has_more, pages_fetched, requested_max. DEPTH IS THE SOURCE'S, NOT OURS. TikTok's own UI caps a category at 100 products and the measured ceiling is 82-115 depending on the category and the run — the walk ends on TikTok's own has_more:false, not on a limit of ours, so asking for 200 gets you everything that exists rather than an error. A few categories run out earlier because they genuinely hold fewer products; meta.stop_reason says which ending you got. Rows carry seller_id and seller_name, so a category page doubles as a free seller-discovery feed (20 distinct shops per page) that feeds seller_profile and seller_catalog. ALL TEN MARKETS. The US edge needs its session warmed before it will answer, which this API does for you; the other nine answer directly. Deduplication is exact — the same product never appears on two pages.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"category_id":"601262","market":"us","max_results":20}},{"name":"search","description":"Keyword search across the US TikTok Shop catalogue, paged for you up to 150 products, with price, rating, sold count and seller on every row. US ONLY — TikTok does not serve keyword search on any other market, at any URL (use category_products there, which goes deeper than search does)","required_params":["query"],"optional_params":["max_results"],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword, exactly as a shopper would type it.","on_invalid":"ignore","example":"yoga mat","aliases":["q","keyword","search_word"]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return, 1-150 (default 30). Values above the maximum are clamped, not rejected, and a value below one page still costs one upstream call. Fewer results really is cheaper here — the page size is passed through to TikTok, so asking for 5 transfers roughly a third of what 20 does.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":150,"aliases":["limit","max","count"]}],"returns":"results[] (standard listing rows), shops[] {seller_id, shop_name, shop_logo}, query, has_more, pages_fetched, requested_max. NO SORT AND NO FILTER PARAMETERS, DELIBERATELY. TikTok's search response advertises its own sort and filter descriptors, and every one of them was sent back exactly the way its own interface sends them: 'price low to high' returned an unsorted list, and 'max price $30' returned the identical thirty products with nine of them over $30. The server accepts the field, answers success and ignores it. Shipping a knob that does nothing is worse than not shipping it, so sort the results yourself. DEPTH: about 150 products per keyword is where TikTok stops (has_more goes false); some keywords stop earlier. QUALITY GUARD: TikTok intermittently answers a search with a frozen 10-item generic feed that carries a success code and looks like a result — the same ten products every time, unrelated to the query. This API detects that feed and retries on a fresh connection instead of returning it, so you never receive one. shops[] is the 'shops matching your search' rail and comes free with the page.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":1,"per":30,"min":1},"example_params":{"query":"yoga mat","max_results":30}},{"name":"recommended_shops","description":"Shops TikTok itself surfaces for a search term — a keyword-to-seller lookup that answers 'who sells this' rather than 'what is for sale'. Comes free alongside the US search page, so it costs one call and no extra bandwidth. US only","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Search keyword to find shops for.","on_invalid":"ignore","example":"coffee grinder","aliases":["q","keyword","search_word"]}],"returns":"shops[] {seller_id, shop_name, shop_logo, verified}, query, count. seller_id feeds straight into seller_profile and seller_catalog. DEPTH IS SMALL AND HONEST: TikTok attaches between 0 and about 5 shops to a search page, and for some keywords it attaches none — an empty shops[] with ok:true means TikTok surfaced no shop rail for that term, not that the call failed. This is a rail, not a shop directory; there is no pagination behind it. US only, for the same reason as search.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"yoga mat"}},{"name":"seller_profile","description":"A TikTok Shop seller's full public profile on any of the ten markets — shop name, rating, review count, follower count, lifetime units sold, catalogue size, video count and TikTok's own service sub-scores. On the nine non-US markets there is no seller endpoint at all, so this is reached through one of the seller's products; pass a product_id and you get the seller for free","required_params":[],"optional_params":["seller_id","product_id","market"],"params":[{"name":"seller_id","type":"string","required":false,"description":"TikTok Shop seller id. Every product record carries it under seller_id, so the usual flow is search/category → product → seller_id → this action.","on_invalid":"ignore","example":"7495552880616442217","aliases":["shop_id","store_id"]},{"name":"product_id","type":"string","required":false,"description":"TikTok Shop product id — the 19-digit number at the end of a product URL (shop.tiktok.com/us/pdp/product/1729450858130215273). It is a stable string, returned verbatim by every action, and it never changes type or gets re-keyed between surfaces.","on_invalid":"ignore","example":"1729450858130215273","aliases":["id","productId"]},{"name":"market","type":"enum","required":false,"description":"Which TikTok Shop market to read. Ten are supported and all ten are live-verified with the correct local currency: us (USD), gb (GBP), my (MYR), sg (SGD), th (THB), ph (PHP), vn (VND), id (IDR), jp (JPY), mx (MXN). The market decides the storefront, the currency and the catalogue — the same product id can be absent from another market. Brazil is listed by TikTok but is not reachable and is not offered; every European market other than the UK is a seller-side region, not a shop.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"th","label":"Thailand (THB)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us","aliases":["region","country"]}],"returns":"seller{seller_id, global_seller_id, shop_name, creator_name, description, region, shop_url, shop_logo, shop_rating, best_rating, worst_rating, review_count, sold_count, global_sold_count, followers_count, video_count, on_sell_product_count, sub_scores[]}, source, market. Pass seller_id (US only — the dedicated seller endpoint exists on the US edge and returns 404 on the other nine) OR product_id (all ten markets — the profile is embedded in every product page). Give product_id and this action costs nothing beyond the product fetch you were going to make anyway; source tells you which path was used. TWO SHAPES, BOTH REAL: most shops publish 26 fields, some publish a 20-field display mode that omits followers_count, video_count, creator_name and enable_follow. Missing values are returned as null and are never substituted — in particular a null shop_rating (seen on Mexican shops that still publish a review_count) is left null rather than filled in from best_rating. sub_scores[] is TikTok's own service scorecard (ships-on-time, replies-in-time…) as {type, score_percent}. shop_url is the store link TikTok publishes itself; be aware that page currently 404s on every market, so treat it as an identifier rather than a working link.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"seller_catalog","description":"Every product a seller has listed, paged to the end — verified complete against the shop's own advertised product count (12 of 12, 81 of 81, 28 of 28 on three separate markets). Nine markets: US, Malaysia, Singapore, Thailand, Philippines, Vietnam, Indonesia, Japan and Mexico. NOT the UK, where TikTok does not deploy the seller catalogue service at all","required_params":["seller_id"],"optional_params":["market","max_results"],"params":[{"name":"seller_id","type":"string","required":true,"description":"TikTok Shop seller id. Every product record carries it under seller_id, so the usual flow is search/category → product → seller_id → this action.","on_invalid":"ignore","example":"7495552880616442217","aliases":["shop_id","store_id"]},{"name":"market","type":"enum","required":false,"description":"Which TikTok Shop market to read. Ten are supported and all ten are live-verified with the correct local currency: us (USD), gb (GBP), my (MYR), sg (SGD), th (THB), ph (PHP), vn (VND), id (IDR), jp (JPY), mx (MXN). The market decides the storefront, the currency and the catalogue — the same product id can be absent from another market. Brazil is listed by TikTok but is not reachable and is not offered; every European market other than the UK is a seller-side region, not a shop.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"th","label":"Thailand (THB)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us","aliases":["region","country"]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return, 1-240 (default 60). Values above the maximum are clamped, not rejected, and a value below one page still costs one upstream call. Fewer results really is cheaper here — the page size is passed through to TikTok, so asking for 5 transfers roughly a third of what 20 does.","on_invalid":"ignore","default":60,"example":60,"minimum":1,"maximum":240,"aliases":["limit","max","count"]}],"returns":"results[] (standard listing rows, plus brand where the seller set one), seller_id, market, has_more, pages_fetched, requested_max. COMPLETENESS IS SELF-VERIFYING: cross-check the row count against the on_sell_product_count returned by seller_profile. Small and mid-size shops were walked to exactly that number and then has_more went false. Large shops (2,000+ listings) were still returning has_more:true at 240 products with no ceiling found, so for those, max_results is your limit rather than the source's. UK IS NOT SUPPORTED and asking for it returns a clear MARKET_UNAVAILABLE rather than an empty list — the whole service this route belongs to is missing from the UK edge. UK seller PROFILES do work; use seller_profile with a product_id. THROTTLING IS HANDLED, NOT HIDDEN: this route intermittently refuses a request and answers on retry seconds later, so pages are retried across alternate hosts automatically. On some markets a refusal and 'no such seller' are byte-identical, so a seller id that never answers comes back as a retryable error, not as an empty catalogue that would read like a real answer.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":20,"min":1},"example_params":null},{"name":"related_products","description":"The products TikTok itself recommends alongside a given product — its 'you may also like' rail, about 25 full product rows. Useful for competitor sets, substitutes and building a similar-items shelf. Works on all ten markets","required_params":["product_id"],"optional_params":["market","max_results"],"params":[{"name":"product_id","type":"string","required":true,"description":"TikTok Shop product id — the 19-digit number at the end of a product URL (shop.tiktok.com/us/pdp/product/1729450858130215273). It is a stable string, returned verbatim by every action, and it never changes type or gets re-keyed between surfaces.","on_invalid":"ignore","example":"1729450858130215273","aliases":["id","productId"]},{"name":"market","type":"enum","required":false,"description":"Which TikTok Shop market to read. Ten are supported and all ten are live-verified with the correct local currency: us (USD), gb (GBP), my (MYR), sg (SGD), th (THB), ph (PHP), vn (VND), id (IDR), jp (JPY), mx (MXN). The market decides the storefront, the currency and the catalogue — the same product id can be absent from another market. Brazil is listed by TikTok but is not reachable and is not offered; every European market other than the UK is a seller-side region, not a shop.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"th","label":"Thailand (THB)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us","aliases":["region","country"]},{"name":"max_results","type":"integer","required":false,"description":"How many related products to return, 1-60 (default 25). Values above the maximum are clamped, not rejected, and a value below one page still costs one upstream call. Fewer results really is cheaper here — the page size is passed through to TikTok, so asking for 5 transfers roughly a third of what 20 does.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":60,"aliases":["limit","max","count"]}],"returns":"results[] (standard listing rows), product_id, market, source, count. These are TikTok's own recommendations for the product page, captured from the page's own recommendation component and expanded through TikTok's mobile service — not a re-sorted search and not a category slice. source names which rail answered. TikTok publishes two rails on a product page: 'you may also like' (recommendations, the one that returns data) and 'more from this shop' (the seller's other listings). The second rail's service currently returns an empty list for every request shape tried, so it is not offered as a promise here — for a seller's other products use seller_catalog, which is complete. Depth is what the rail holds, around 25; there is no deep pagination behind it.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"1729450858130215273"}},{"name":"ranking_list","description":"TikTok Shop's own best-seller board for the US — the 20 products TikTok is promoting as trending right now, in their published rank order, with full price, rating and seller rows. This is the editorial ranking the storefront shows, not a re-sorted search, which is what makes it the winning-products feed","required_params":[],"optional_params":[],"params":[],"returns":"results[] (standard listing rows, in TikTok's own rank order — index 0 is rank 1), count, rank_field. DEPTH IS EXACTLY WHAT THE BOARD HOLDS: 19-20 products. There is no pagination behind it — the paging service does not serve this component type, which was tested rather than assumed — so 20 is the whole board, not a page of it. US only. Refresh it daily; the board turns over, and cache_ttl reflects that.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"premium_offers","description":"TikTok Shop's US 'premium offers' deal board, paged to the end — around 97 discounted products with the discount percentage and the pre-discount price on every row. A ready-made deals feed rather than a price filter over search","required_params":[],"optional_params":["max_results"],"params":[{"name":"max_results","type":"integer","required":false,"description":"How many deal products to return, 1-240 (default 80). Values above the maximum are clamped, not rejected, and a value below one page still costs one upstream call. Fewer results really is cheaper here — the page size is passed through to TikTok, so asking for 5 transfers roughly a third of what 20 does.","on_invalid":"ignore","default":80,"example":80,"minimum":1,"maximum":240,"aliases":["limit","max","count"]}],"returns":"results[] (standard listing rows; is_promotional is true and list_price and discount_percent are populated on essentially every row, which is the point of this board), has_more, pages_fetched, requested_max. The board holds about 97 products in total and ends on TikTok's own has_more going false, so asking for more than that returns everything there is. Pagination replays the deal component the live page itself ships — guessed request shapes make this route answer 'success' with an empty list, so this action always reads the real board first. US only.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":40,"min":2},"example_params":{}},{"name":"recommended_for_you","description":"TikTok Shop's US personalised discovery feed, paged and de-duplicated — 200-plus distinct products of what TikTok is currently pushing to shoppers. The widest trend-discovery surface this API has","required_params":[],"optional_params":["max_results"],"params":[{"name":"max_results","type":"integer","required":false,"description":"How many products to return, 1-240 (default 80). Values above the maximum are clamped, not rejected, and a value below one page still costs one upstream call. Fewer results really is cheaper here — the page size is passed through to TikTok, so asking for 5 transfers roughly a third of what 20 does.","on_invalid":"ignore","default":80,"example":80,"minimum":1,"maximum":240,"aliases":["limit","max","count"]}],"returns":"results[] (standard listing rows), has_more, pages_fetched, duplicates_dropped, requested_max. THE FEED REPEATS ITSELF AND THIS API DE-DUPLICATES IT. TikTok keeps answering has_more:true while the share of genuinely new products decays page by page (40, 40, 40, 39, 27, 16, 11 new items over seven pages in the recon run). Rows are de-duplicated by product_id, duplicates_dropped tells you how much repetition there was, and the walk stops early when a page brings nothing new — so max_results is a ceiling, not a promise, and meta.stop_reason says which ending you got. Because it is a recommendation feed it is NOT stable between calls; do not treat it as a catalogue. US only.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":1,"per":40,"min":2},"example_params":{}},{"name":"reviews","description":"Customer reviews for a product on any of the ten markets — three full review texts with rating, author, verified-purchase flag and photo, plus the COMPLETE 1-to-5 star histogram and total review count covering every review the product has. Served from a 7 KB endpoint instead of the product page, so a ratings refresh costs a fraction of a re-fetch","required_params":["product_id"],"optional_params":["market"],"params":[{"name":"product_id","type":"string","required":true,"description":"TikTok Shop product id — the 19-digit number at the end of a product URL (shop.tiktok.com/us/pdp/product/1729450858130215273). It is a stable string, returned verbatim by every action, and it never changes type or gets re-keyed between surfaces.","on_invalid":"ignore","example":"1729450858130215273","aliases":["id","productId"]},{"name":"market","type":"enum","required":false,"description":"Which TikTok Shop market to read. Ten are supported and all ten are live-verified with the correct local currency: us (USD), gb (GBP), my (MYR), sg (SGD), th (THB), ph (PHP), vn (VND), id (IDR), jp (JPY), mx (MXN). The market decides the storefront, the currency and the catalogue — the same product id can be absent from another market. Brazil is listed by TikTok but is not reachable and is not offered; every European market other than the UK is a seller-side region, not a shop.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"my","label":"Malaysia (MYR)"},{"value":"sg","label":"Singapore (SGD)"},{"value":"th","label":"Thailand (THB)"},{"value":"ph","label":"Philippines (PHP)"},{"value":"vn","label":"Vietnam (VND)"},{"value":"id","label":"Indonesia (IDR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"mx","label":"Mexico (MXN)"}],"default":"us","example":"us","aliases":["region","country"]}],"returns":"reviews[] {review_id, rating, text, author, author_avatar, sku_id, review_time_ms, verified_purchase, incentivized, image}, review_summary{total_reviews, average_rating, rating_distribution{1..5}}, product_id, market, source. READ THIS BEFORE BUYING: the review TEXT depth is THREE. That is all TikTok serves publicly — the paged review service exists and its full parameter model is known (page size, sort, star/media/verified filters), but it rejects every unauthenticated request, including a genuine Chrome call made from inside the live page, which is why this is described as a login gate rather than a limitation of this API. We do not run TikTok accounts, so we do not sell review depth we cannot deliver. Competitors who advertise hundreds of reviews per product are doing something we do not do. WHAT IS COMPLETE: review_summary. total_reviews and the five-bucket rating_distribution cover ALL reviews (they sum to total_reviews, verified on products with 6,000 and 40,000 reviews), so rating analytics are fully served even though the text sample is three. The cheap review endpoint is intermittent — it refuses more often than it answers on some markets — so this action falls back to reading the same three reviews and the same histogram out of the product page. source tells you which one answered, and the fallback costs more bandwidth but returns identical data.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"1729450858130215273"}}]},{"name":"tokopedia","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Tokopedia API scraper — Indonesia's #1 e-commerce marketplace: product search with price/condition/rating filters, full product detail (price, discount, stock, variants, specs, images, sold count, rating), store/shop profiles, a shop's product catalog, and paginated product reviews — id locale, IDR prices, no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/tokopedia/v1","spec_available":true,"actions":[{"name":"search","description":"Search Tokopedia products by keyword with optional price / condition / rating filters and sort. Returns up to 20 products per page (product_id, name, url, price in IDR, rating, sold count, category, shop) with page-based pagination.","required_params":["q"],"optional_params":["page","sort","price_min","price_max","condition","rating"],"params":[{"name":"q","type":"string","required":true,"description":"Search keyword — a product, brand or category in Indonesian or English ('laptop gaming', 'iphone 15', 'sepatu nike', 'kopi').","on_invalid":"reject","example":"laptop gaming","aliases":["query","keyword"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (20 results per page). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result ordering (Tokopedia 'ob' code).","on_invalid":"ignore","allowed_values":[{"value":"23","label":"Most relevant (default)"},{"value":"5","label":"Newest"},{"value":"3","label":"Price: low to high"},{"value":"4","label":"Price: high to low"},{"value":"8","label":"Best selling"},{"value":"9","label":"Best rating"}],"default":"23","example":"23"},{"name":"price_min","type":"integer","required":false,"description":"Minimum price filter in IDR (rupiah, e.g. 100000 = Rp100.000).","on_invalid":"ignore","example":100000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum price filter in IDR (rupiah).","on_invalid":"ignore","example":5000000,"minimum":0},{"name":"condition","type":"enum","required":false,"description":"Filter by item condition (new = baru, used = bekas).","on_invalid":"ignore","allowed_values":[{"value":"new","label":"New only"},{"value":"used","label":"Used only"}],"example":"new"},{"name":"rating","type":"enum","required":false,"description":"Minimum product star rating filter.","on_invalid":"ignore","allowed_values":[{"value":"4","label":"4 stars & up"},{"value":"5","label":"5 stars"}],"example":"4"}],"returns":"products[]{product_id, name, url, image_url, price, price_value, rating, category, sold, labels[], shop{shop_id, name, city, url, is_official}} + meta{total, page, has_more, next_page}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"laptop"}},{"name":"detail","description":"Full product detail by product url: price, slashed/original price, discount, active campaign, stock, min/max order, weight, rating, review/view/talk counts, sold count, full description, spec rows, category breadcrumb, image gallery, variants and the seller shop.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"Full Tokopedia product URL (tokopedia.com/<shop>/<product-slug>) — take it straight from a search result's `url`. A bare numeric product_id has no page of its own on Tokopedia and cannot be used here (it does work on `reviews`).","on_invalid":"reject","example":"https://www.tokopedia.com/ringke/casing-ringke-compatible-for-iphone-15-pro-silicone-magnet-magsafe-softcase-tipis-1729869063392494724"}],"returns":"product{product_id, name, url, condition, price, price_value, original_price, discount_pct, campaign, stock, min_order, max_order, weight, rating, review_count, sold, description, specs[], category_breadcrumb[], images[], variants[], shop{shop_id, name}}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.tokopedia.com/ringke/casing-ringke-compatible-for-iphone-15-pro-silicone-magnet-magsafe-softcase-tipis-1729869063392494724"}},{"name":"shop","description":"Store/shop profile by shop domain (the tokopedia.com/<shop> handle): name, description, open-since, follower count, active product count, total products sold, successful transactions, location, avatar and cover.","required_params":["shop"],"optional_params":[],"params":[{"name":"shop","type":"string","required":true,"description":"Shop/store domain — the handle in tokopedia.com/<shop> (or a full shop URL).","on_invalid":"reject","example":"unitechofficial","aliases":["shop_domain","store","domain"]}],"returns":"shop{shop_id, name, domain, url, description, open_since, is_open, location, city, total_favorite, active_product_count, product_sold, transaction_success, avatar, cover, status}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"shop":"unitechofficial"}},{"name":"shop_products","description":"Paginated product catalog of one shop by shop domain. Returns up to 20 products per page (same shape as search) plus the shop's total product count. Page through every product a store sells.","required_params":["shop"],"optional_params":["page","sort"],"params":[{"name":"shop","type":"string","required":true,"description":"Shop/store domain — the handle in tokopedia.com/<shop> (or a full shop URL).","on_invalid":"reject","example":"unitechofficial","aliases":["shop_domain","store","domain"]},{"name":"page","type":"integer","required":false,"description":"1-based page number (20 results per page). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result ordering (Tokopedia 'ob' code).","on_invalid":"ignore","allowed_values":[{"value":"23","label":"Most relevant (default)"},{"value":"5","label":"Newest"},{"value":"3","label":"Price: low to high"},{"value":"4","label":"Price: high to low"},{"value":"8","label":"Best selling"},{"value":"9","label":"Best rating"}],"default":"23","example":"23"}],"returns":"products[]{product_id, name, url, price, rating, sold, shop{}} + meta{total, page, has_more, next_page}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"shop":"unitechofficial"}},{"name":"reviews","description":"Paginated public product reviews by product_id (or url): star rating, review text, variant bought, relative date, reviewer handle, photos/videos, likes and the seller's reply. 20 reviews per page — page with `page`; meta.total / meta.has_more tell you how many.","required_params":[],"optional_params":["product_id","url","page","sort_reviews","filter_rating"],"params":[{"name":"product_id","type":"string","required":false,"description":"Tokopedia numeric product id (from a search result's product_id). Alternatively pass a full product `url`.","on_invalid":"reject","example":"8485032043","aliases":["id"]},{"name":"url","type":"string","required":false,"description":"Full Tokopedia product URL (tokopedia.com/<shop>/<product-slug>). Use this when you have the link rather than the numeric id.","on_invalid":"ignore","example":"https://www.tokopedia.com/ringke/casing-ringke-compatible-for-iphone-15-pro-silicone-magnet-magsafe-softcase-tipis-1729869063392494724"},{"name":"page","type":"integer","required":false,"description":"1-based page number (20 results per page). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"sort_reviews","type":"enum","required":false,"description":"Order reviews (helpfulness or date).","on_invalid":"ignore","allowed_values":[{"value":"informative_score desc","label":"Most helpful (default)"},{"value":"create_time desc","label":"Newest"},{"value":"create_time asc","label":"Oldest"}],"example":"informative_score desc"},{"name":"filter_rating","type":"enum","required":false,"description":"Show only reviews with this star rating.","on_invalid":"ignore","allowed_values":[{"value":"5","label":"5 stars"},{"value":"4","label":"4 stars"},{"value":"3","label":"3 stars"},{"value":"2","label":"2 stars"},{"value":"1","label":"1 star"}],"example":"5"}],"returns":"reviews[]{review_id, rating, text, variant, date, author, likes, images[], videos[], shop_reply} + meta{total, page, has_more, next_page}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"per_unit","credits":1,"per":20,"min":1},"example_params":{"product_id":"8485032043"}}]},{"name":"trademe","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Trade Me API scraper (New Zealand) - search Trade Me marketplace auctions and Buy Now listings, used cars and property for sale or rent, full listing records with current bid, Buy Now and reserve status, closing time, shipping options, seller feedback, categories and suggestions. Prices in NZD. No account, no browser.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/trademe/v1","spec_available":true,"actions":[{"name":"search","description":"Search Trade Me marketplace listings by keyword, category or seller: listing id, title, the current bid, start price, Buy Now price and what the headline price is, bid count, reserve met or not, closing time, condition, region and suburb, pick-up and free shipping, suggested shipping price, was-price and discount, and the paid upgrades each listing bought. Sponsored listings are separated. Filter by condition, Buy Now, shipping, clearance, region, price (with a category), $1 reserve; sort by best match, price, Buy Now price, most bids, latest, closing soon, title or discount.","required_params":[],"optional_params":["query","category","condition","buy_now_only","shipping","clearance","region","price_min","price_max","dollar_reserve_only","seller_id","sort","page","limit","include_sponsored","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword. Optional when a category or seller_id is given.","on_invalid":"reject","example":"mountain bike","aliases":["q","keyword","search_string"]},{"name":"category","type":"string","required":false,"description":"Trade Me category number (0005-0380- = Sports > Cycling). Every row returns category.number; `categories` walks the tree. Required for price_min/price_max.","on_invalid":"reject","example":"0005-0380-","aliases":["category_number"]},{"name":"condition","type":"enum","required":false,"description":"New or used items.","on_invalid":"reject","allowed_values":[{"value":"new","label":"Brand new"},{"value":"used","label":"Used"}]},{"name":"buy_now_only","type":"boolean","required":false,"description":"Only listings with a Buy Now price (includes auctions that also offer one).","on_invalid":"reject"},{"name":"shipping","type":"enum","required":false,"description":"Free shipping, or pick-up available.","on_invalid":"reject","allowed_values":[{"value":"free","label":"Free shipping"},{"value":"pickup","label":"Pick-up available"}]},{"name":"clearance","type":"enum","required":false,"description":"Clearance listings, or listings on sale with a was-price.","on_invalid":"reject","allowed_values":[{"value":"clearance","label":"Clearance listings"},{"value":"on_sale","label":"On sale (a was-price is shown)"}]},{"name":"region","type":"enum","required":false,"description":"Where the seller is located (Trade Me's region list).","on_invalid":"reject","allowed_values":[{"value":"northland","label":"Northland"},{"value":"auckland","label":"Auckland"},{"value":"waikato","label":"Waikato"},{"value":"bay_of_plenty","label":"Bay of Plenty"},{"value":"gisborne","label":"Gisborne"},{"value":"hawkes_bay","label":"Hawke's Bay"},{"value":"taranaki","label":"Taranaki"},{"value":"whanganui","label":"Whanganui"},{"value":"manawatu","label":"Manawatu"},{"value":"wairarapa","label":"Wairarapa"},{"value":"wellington","label":"Wellington"},{"value":"nelson_bays","label":"Nelson Bays"},{"value":"marlborough","label":"Marlborough"},{"value":"west_coast","label":"West Coast"},{"value":"canterbury","label":"Canterbury"},{"value":"timaru_oamaru","label":"Timaru - Oamaru"},{"value":"otago","label":"Otago"},{"value":"southland","label":"Southland"},{"value":"international","label":"International"}],"example":"auckland"},{"name":"price_min","type":"number","required":false,"description":"Lowest price, NZD.","on_invalid":"reject","example":100,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, NZD.","on_invalid":"reject","example":500,"minimum":0},{"name":"dollar_reserve_only","type":"boolean","required":false,"description":"Only $1 reserve auctions. Works with query, region, condition, shipping and sort; not with category.","on_invalid":"reject"},{"name":"seller_id","type":"integer","required":false,"description":"Only this member's listings (every listing record returns seller.member_id).","on_invalid":"reject","example":5062316,"aliases":["member_id"]},{"name":"sort","type":"enum","required":false,"description":"Order of results.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match (the site's default)"},{"value":"featured_first","label":"Paid featured listings first"},{"value":"price_asc","label":"Lowest price first (Trade Me orders by the Buy Now price where a listing has one)"},{"value":"price_desc","label":"Highest price first (Trade Me orders by the Buy Now price where a listing has one)"},{"value":"buy_now_asc","label":"Lowest Buy Now price first"},{"value":"buy_now_desc","label":"Highest Buy Now price first"},{"value":"most_bids","label":"Most bids first"},{"value":"newest","label":"Latest listings first"},{"value":"closing_soon","label":"Closing soonest first"},{"value":"title","label":"Title A-Z"},{"value":"largest_discount","label":"Largest discount first"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Listings per page, 1-100 (default 50). Sponsored rows are extra.","on_invalid":"reject","default":50,"minimum":1,"maximum":100,"aliases":["rows"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return the sponsored listings Trade Me injects into every page, flagged sponsored=true. They are left out by default and counted in sponsored_dropped.","on_invalid":"reject","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"If no listing on the page mentions any query word, the page is returned empty with fallback_results_dropped; true also returns those rows in fallback_results.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, subtitle, url, vertical (marketplace|motors|property), listing_type (auction|buy_now|classified), category{number, path}, price (number, NZD), price_type (current_bid|start_price|buy_now|asking|asking_or_near_offer|enquiries_over|rent_per_week|null), price_display (the site's own text), currency, start_price, current_bid, minimum_next_bid, buy_now_price, asking_price, rent_per_week, was_price, discount_percent, bid_count (auctions; null otherwise), reserve_state (no_reserve|met|not_met|not_applicable), reserve_met, is_clearance, condition (new|used, marketplace only), region, suburb, start_date, search_index_end_date (closing time as the search index publishes it - one hour later than the listing record after a NZ daylight-saving change; listing.end_date is the record's), image, images[], seller_id, is_super_seller, is_dealer, dealer_name, pickup (allowed|required|not_available), free_shipping, suggested_shipping{price, destination, delivery_days_min, delivery_days_max, rural}, has_afterpay, has_ping, has_variants, is_featured, is_super_featured, has_gallery, is_bold, is_highlighted (paid upgrades), sponsored, vehicle{…} (motors), property{…} (property)}, count (organic rows), total_results, page, limit, has_more, sponsored_count, sponsored_dropped, fallback_results_dropped, did_you_mean, category_facets[]{number, id, name, count}, filters{}, query","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"bike","limit":20}},{"name":"listing","description":"One Trade Me listing in full, live or closed: title, description, every photo, the start price, current bid, minimum next bid, Buy Now price or asking price, bid count and bid history amounts, reserve met or not, closing time, time left, status (active or closed) and how a closed auction ended, quantity left, condition, brand, SKU and attributes, shipping options with prices, pick-up, payment methods, questions and answers, the seller's feedback score and positive percentage, the store, car dealer or real-estate agency, and car or property facts.","required_params":["listing_id"],"optional_params":["max_rotations"],"params":[{"name":"listing_id","type":"string","required":true,"description":"Trade Me listing number (from a search row, or the number at the end of a listing URL). A full listing URL works.","on_invalid":"reject","example":"6133847700","aliases":["id","listing","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{listing_id, title, subtitle, url, vertical, listing_type, status (active|closed), closed_result (no_bids|reserve_not_met|highest_bid_met_reserve, closed auctions), time_left_seconds, start_date, end_date, as_at, category{number, name, path}, price, price_type, price_display, currency, start_price, current_bid, minimum_next_bid, buy_now_price, asking_price, rent_per_week, was_price, discount_percent, bid_count, reserve_state, reserve_met, is_clearance, condition, quantity_remaining, available_to_buy, sku, gtin, brand, manufacturer_code, description, images[], image, attributes{}, view_count, bidders_and_watchers, unanswered_question_count, region, suburb, location{latitude, longitude, accuracy} (business sellers and property only), pickup, shipping_options[]{type, type_code, price, method}, cheapest_shipping_price, payment_methods[], buyer_protection, seller{member_id, nickname, member_since, feedback_score, positive_count, negative_count, positive_percent, address_verified, authenticated, in_trade, suburb, region}, store{…}, dealership{…}, agency{…}, is_super_seller, is_featured, is_super_featured, has_gallery, is_bold, is_highlighted, bids[]{amount, date, is_buy_now}, bid_history_count, questions[]{question, asked_at, answer, answered_at, is_seller_comment}, question_count, vehicle{…}, property{…}, rating (null), review_count (null), rating_scale (null)}","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"cars/search","description":"Used and new cars on Trade Me Motors: make, model, year, odometer, fuel, transmission, body style, engine size, owners, import history, WoF and registration expiry, plate and VIN, asking price or auction bids, dealer or private seller. Filter by make, model, year, odometer, price, body style, fuel, transmission, condition, dealer/private, auction/classified and region.","required_params":[],"optional_params":["query","make","model","year_min","year_max","odometer_min","odometer_max","price_min","price_max","body_style","fuel_type","transmission","vehicle_condition","seller_type","listing_format","region","sort","page","limit","include_sponsored","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Optional keyword.","on_invalid":"reject","example":"hilux","aliases":["q","keyword","search_string"]},{"name":"make","type":"string","required":false,"description":"Car make (any capitalisation).","on_invalid":"reject","example":"Toyota"},{"name":"model","type":"string","required":false,"description":"Model of that make (needs make).","on_invalid":"reject","example":"Corolla"},{"name":"year_min","type":"integer","required":false,"description":"Oldest year.","on_invalid":"reject","example":2018,"minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Newest year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"odometer_min","type":"integer","required":false,"description":"Lowest km.","on_invalid":"reject","minimum":0},{"name":"odometer_max","type":"integer","required":false,"description":"Highest km.","on_invalid":"reject","example":100000,"minimum":0},{"name":"price_min","type":"number","required":false,"description":"Lowest price, NZD.","on_invalid":"reject","example":100,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, NZD.","on_invalid":"reject","example":500,"minimum":0},{"name":"body_style","type":"enum","required":false,"description":"Body style.","on_invalid":"reject","allowed_values":[{"value":"convertible","label":"Convertible"},{"value":"coupe","label":"Coupe"},{"value":"hatchback","label":"Hatchback"},{"value":"sedan","label":"Sedan"},{"value":"station_wagon","label":"StationWagon"},{"value":"suv","label":"Suv"},{"value":"ute","label":"Ute"},{"value":"van","label":"Van"}]},{"name":"fuel_type","type":"enum","required":false,"description":"Fuel.","on_invalid":"reject","allowed_values":[{"value":"petrol","label":"Petrol"},{"value":"diesel","label":"Diesel"},{"value":"hybrid","label":"Hybrid"},{"value":"plug_in_hybrid","label":"Plug-in hybrid"},{"value":"electric","label":"Electric"},{"value":"lpg","label":"LPG"},{"value":"alternative","label":"Alternative"}]},{"name":"transmission","type":"enum","required":false,"description":"Gearbox.","on_invalid":"reject","allowed_values":[{"value":"manual","label":"Manual"},{"value":"automatic","label":"Automatic"}]},{"name":"vehicle_condition","type":"enum","required":false,"description":"New, used, classic, ex-demo or certified pre-owned.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New"},{"value":"used","label":"Used"},{"value":"classic","label":"Classic"},{"value":"ex_demo","label":"Ex demo"},{"value":"certified_pre_owned","label":"Certified pre owned"}]},{"name":"seller_type","type":"enum","required":false,"description":"Private sellers or dealers.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private sellers"},{"value":"dealer","label":"Dealers"}]},{"name":"listing_format","type":"enum","required":false,"description":"Auctions or classified ads.","on_invalid":"reject","allowed_values":[{"value":"auction","label":"Auctions"},{"value":"classified","label":"Classified ads with an asking price"}]},{"name":"region","type":"enum","required":false,"description":"Where the seller is located (Trade Me's region list).","on_invalid":"reject","allowed_values":[{"value":"northland","label":"Northland"},{"value":"auckland","label":"Auckland"},{"value":"waikato","label":"Waikato"},{"value":"bay_of_plenty","label":"Bay of Plenty"},{"value":"gisborne","label":"Gisborne"},{"value":"hawkes_bay","label":"Hawke's Bay"},{"value":"taranaki","label":"Taranaki"},{"value":"whanganui","label":"Whanganui"},{"value":"manawatu","label":"Manawatu"},{"value":"wairarapa","label":"Wairarapa"},{"value":"wellington","label":"Wellington"},{"value":"nelson_bays","label":"Nelson Bays"},{"value":"marlborough","label":"Marlborough"},{"value":"west_coast","label":"West Coast"},{"value":"canterbury","label":"Canterbury"},{"value":"timaru_oamaru","label":"Timaru - Oamaru"},{"value":"otago","label":"Otago"},{"value":"southland","label":"Southland"},{"value":"international","label":"International"}],"example":"auckland"},{"name":"sort","type":"enum","required":false,"description":"Order of results. Without it the site's own default order is used.","on_invalid":"reject","allowed_values":[{"value":"featured_first","label":"Paid featured listings first"},{"value":"price_asc","label":"Lowest price first (opens with $1 auctions)"},{"value":"price_desc","label":"Highest price first"},{"value":"buy_now_asc","label":"Lowest Buy Now price first"},{"value":"buy_now_desc","label":"Highest Buy Now price first"},{"value":"oldest_vehicle","label":"Oldest year first"},{"value":"newest_vehicle","label":"Newest year first"},{"value":"lowest_km","label":"Lowest odometer first"},{"value":"highest_km","label":"Highest odometer first"},{"value":"newest","label":"Latest listings first"},{"value":"closing_soon","label":"Closing soonest first"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Listings per page, 1-100 (default 50). Sponsored rows are extra.","on_invalid":"reject","default":50,"minimum":1,"maximum":100,"aliases":["rows"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return the sponsored listings Trade Me injects into every page, flagged sponsored=true. They are left out by default and counted in sponsored_dropped.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, subtitle, url, vertical (marketplace|motors|property), listing_type (auction|buy_now|classified), category{number, path}, price (number, NZD), price_type (current_bid|start_price|buy_now|asking|asking_or_near_offer|enquiries_over|rent_per_week|null), price_display (the site's own text), currency, start_price, current_bid, minimum_next_bid, buy_now_price, asking_price, rent_per_week, was_price, discount_percent, bid_count (auctions; null otherwise), reserve_state (no_reserve|met|not_met|not_applicable), reserve_met, is_clearance, condition (new|used, marketplace only), region, suburb, start_date, search_index_end_date (closing time as the search index publishes it - one hour later than the listing record after a NZ daylight-saving change; listing.end_date is the record's), image, images[], seller_id, is_super_seller, is_dealer, dealer_name, pickup (allowed|required|not_available), free_shipping, suggested_shipping{price, destination, delivery_days_min, delivery_days_max, rural}, has_afterpay, has_ping, has_variants, is_featured, is_super_featured, has_gallery, is_bold, is_highlighted (paid upgrades), sponsored, vehicle{make, model, model_detail, year, odometer_km, fuel, transmission, body_style, engine_size_cc, cylinders, doors, seats, owners, exterior_colour, import_history, is_4wd, number_plate, vin, wof_expires, registration_expires, on_road_costs_included}, property{…} (property)}, count (organic rows), total_results, page, limit, has_more, sponsored_count, sponsored_dropped, fallback_results_dropped, did_you_mean, category_facets[]{number, id, name, count}, filters{}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"Toyota","limit":20}},{"name":"real_estate/search","description":"Residential property on Trade Me Property, for sale or for rent: address, suburb, district, region, property type, bedrooms, bathrooms, land and floor area, parking, how it is being sold (asking price, enquiries over, negotiation, auction, tender, deadline sale) or the weekly rent, available date, agency and open homes. Filter by region, district, price, bedrooms, bathrooms, property type and sale method.","required_params":[],"optional_params":["purpose","query","region","district_id","price_min","price_max","bedrooms_min","bedrooms_max","bathrooms_min","bathrooms_max","property_type","sales_method","sort","page","limit","include_sponsored","max_rotations"],"params":[{"name":"purpose","type":"enum","required":false,"description":"For sale (default) or for rent. Rent prices are NZD per week.","on_invalid":"reject","allowed_values":[{"value":"sale","label":"For sale"},{"value":"rent","label":"For rent"}],"default":"sale"},{"name":"query","type":"string","required":false,"description":"Optional keyword.","on_invalid":"reject","example":"hilux","aliases":["q","keyword","search_string"]},{"name":"region","type":"enum","required":false,"description":"Region of the property.","on_invalid":"reject","allowed_values":[{"value":"northland","label":"Northland"},{"value":"auckland","label":"Auckland"},{"value":"waikato","label":"Waikato"},{"value":"bay_of_plenty","label":"Bay Of Plenty"},{"value":"gisborne","label":"Gisborne"},{"value":"hawkes_bay","label":"Hawke's Bay"},{"value":"taranaki","label":"Taranaki"},{"value":"manawatu_whanganui","label":"Manawatu / Whanganui"},{"value":"wellington","label":"Wellington"},{"value":"nelson_tasman","label":"Nelson / Tasman"},{"value":"marlborough","label":"Marlborough"},{"value":"west_coast","label":"West Coast"},{"value":"canterbury","label":"Canterbury"},{"value":"otago","label":"Otago"},{"value":"southland","label":"Southland"}],"example":"auckland"},{"name":"district_id","type":"integer","required":false,"description":"Trade Me district number inside the region (7 = Auckland City). Needs region.","on_invalid":"reject","example":7,"minimum":1},{"name":"price_min","type":"number","required":false,"description":"Lowest price, NZD (per week for rent).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, NZD (per week for rent).","on_invalid":"reject","example":800000,"minimum":0},{"name":"bedrooms_min","type":"integer","required":false,"description":"Fewest bedrooms (0 = studio).","on_invalid":"reject","minimum":0,"maximum":20},{"name":"bedrooms_max","type":"integer","required":false,"description":"Most bedrooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"bathrooms_min","type":"integer","required":false,"description":"Fewest bathrooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"bathrooms_max","type":"integer","required":false,"description":"Most bathrooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"property_type","type":"enum","required":false,"description":"Property type. lifestyle_bare_land, lifestyle_dwelling and section exist for sale only; car_park for rent only.","on_invalid":"reject","allowed_values":[{"value":"apartment","label":"Apartment"},{"value":"house","label":"House"},{"value":"lifestyle_bare_land","label":"Lifestyle bare land"},{"value":"lifestyle_dwelling","label":"Lifestyle dwelling"},{"value":"section","label":"Section"},{"value":"townhouse","label":"Townhouse"},{"value":"unit","label":"Unit"},{"value":"car_park","label":"Car park"}]},{"name":"sales_method","type":"enum","required":false,"description":"How the property is being sold (for sale only).","on_invalid":"reject","allowed_values":[{"value":"price_displayed","label":"Price displayed"},{"value":"negotiation","label":"Negotiation"},{"value":"auction","label":"Auction"},{"value":"tender","label":"Tender"},{"value":"deadline_sale","label":"Deadline sale"}]},{"name":"sort","type":"enum","required":false,"description":"Order of results.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"The site's default order"},{"value":"price_asc","label":"Lowest price first (opens with placeholder prices)"},{"value":"price_desc","label":"Highest price first"},{"value":"newest","label":"Latest listings first"},{"value":"earliest_open_home","label":"Earliest open home first (for sale only)"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Listings per page, 1-100 (default 50). Sponsored rows are extra.","on_invalid":"reject","default":50,"minimum":1,"maximum":100,"aliases":["rows"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return the sponsored listings Trade Me injects into every page, flagged sponsored=true. They are left out by default and counted in sponsored_dropped.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, subtitle, url, vertical (marketplace|motors|property), listing_type (auction|buy_now|classified), category{number, path}, price (number, NZD), price_type (current_bid|start_price|buy_now|asking|asking_or_near_offer|enquiries_over|rent_per_week|null), price_display (the site's own text), currency, start_price, current_bid, minimum_next_bid, buy_now_price, asking_price, rent_per_week, was_price, discount_percent, bid_count (auctions; null otherwise), reserve_state (no_reserve|met|not_met|not_applicable), reserve_met, is_clearance, condition (new|used, marketplace only), region, suburb, start_date, search_index_end_date (closing time as the search index publishes it - one hour later than the listing record after a NZ daylight-saving change; listing.end_date is the record's), image, images[], seller_id, is_super_seller, is_dealer, dealer_name, pickup (allowed|required|not_available), free_shipping, suggested_shipping{price, destination, delivery_days_min, delivery_days_max, rural}, has_afterpay, has_ping, has_variants, is_featured, is_super_featured, has_gallery, is_bold, is_highlighted (paid upgrades), sponsored, vehicle{…} (motors), property{address, suburb, district, region, property_type, bedrooms, bathrooms, lounges, parking, total_parking, land_area_m2, floor_area_m2, rateable_value, rent_per_week, available_from (YYYY-MM-DD), max_tenants, sale_method, agency{id, name}, agency_reference, open_homes[]{start, end}, location{latitude, longitude, accuracy}}}, count (organic rows), total_results, page, limit, has_more, sponsored_count, sponsored_dropped, fallback_results_dropped, did_you_mean, category_facets[]{number, id, name, count}, filters{}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"seller_listings","description":"A Trade Me member's profile and current marketplace listings: nickname, member since, feedback score, positive and negative counts and positive percentage, address verified, in-trade flag, store, then their listings with the same row fields and sorts as search.","required_params":["seller_id"],"optional_params":["sort","page","limit","include_sponsored","max_rotations"],"params":[{"name":"seller_id","type":"integer","required":true,"description":"Trade Me member number (every listing record returns seller.member_id; rows return seller_id).","on_invalid":"reject","example":5062316,"aliases":["member_id"]},{"name":"sort","type":"enum","required":false,"description":"Order of results.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Best match (the site's default)"},{"value":"featured_first","label":"Paid featured listings first"},{"value":"price_asc","label":"Lowest price first (Trade Me orders by the Buy Now price where a listing has one)"},{"value":"price_desc","label":"Highest price first (Trade Me orders by the Buy Now price where a listing has one)"},{"value":"buy_now_asc","label":"Lowest Buy Now price first"},{"value":"buy_now_desc","label":"Highest Buy Now price first"},{"value":"most_bids","label":"Most bids first"},{"value":"newest","label":"Latest listings first"},{"value":"closing_soon","label":"Closing soonest first"},{"value":"title","label":"Title A-Z"},{"value":"largest_discount","label":"Largest discount first"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Listings per page, 1-100 (default 50). Sponsored rows are extra.","on_invalid":"reject","default":50,"minimum":1,"maximum":100,"aliases":["rows"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return the sponsored listings Trade Me injects into every page, flagged sponsored=true. They are left out by default and counted in sponsored_dropped.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"seller{member_id, nickname, member_since, feedback_score, positive_count, negative_count, positive_percent, address_verified, authenticated, in_trade, suburb, region, store{…}, biography, enabled}, results[]{listing_id, title, subtitle, url, vertical (marketplace|motors|property), listing_type (auction|buy_now|classified), category{number, path}, price (number, NZD), price_type (current_bid|start_price|buy_now|asking|asking_or_near_offer|enquiries_over|rent_per_week|null), price_display (the site's own text), currency, start_price, current_bid, minimum_next_bid, buy_now_price, asking_price, rent_per_week, was_price, discount_percent, bid_count (auctions; null otherwise), reserve_state (no_reserve|met|not_met|not_applicable), reserve_met, is_clearance, condition (new|used, marketplace only), region, suburb, start_date, search_index_end_date (closing time as the search index publishes it - one hour later than the listing record after a NZ daylight-saving change; listing.end_date is the record's), image, images[], seller_id, is_super_seller, is_dealer, dealer_name, pickup (allowed|required|not_available), free_shipping, suggested_shipping{price, destination, delivery_days_min, delivery_days_max, rural}, has_afterpay, has_ping, has_variants, is_featured, is_super_featured, has_gallery, is_bold, is_highlighted (paid upgrades), sponsored, vehicle{…} (motors), property{…} (property)}, count (organic rows), total_results, page, limit, has_more, sponsored_count, sponsored_dropped, fallback_results_dropped, did_you_mean, category_facets[]{number, id, name, count}, filters{}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller_feedback","description":"Feedback left for a Trade Me member, newest first: positive or negative, the comment, date, whether a buyer or a seller left it, the listing and price it was for, and the member's reply.","required_params":["seller_id"],"optional_params":["page","limit","max_rotations"],"params":[{"name":"seller_id","type":"integer","required":true,"description":"Trade Me member number (every listing record returns seller.member_id; rows return seller_id).","on_invalid":"reject","example":5062316,"aliases":["member_id"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Listings per page, 1-100 (default 50). Sponsored rows are extra.","on_invalid":"reject","default":50,"minimum":1,"maximum":100,"aliases":["rows"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"seller_id, feedback[]{feedback_id, type (positive|negative; null for other codes), type_code, text, date, left_by (buyer|seller), listing_id, purchase_price, response, responded_at}, count, total_results, page, has_more","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"The Trade Me category tree one level at a time: a category's number, name and path and its sub-categories, with whether each carries classified ads.","required_params":[],"optional_params":["category","max_rotations"],"params":[{"name":"category","type":"string","required":false,"description":"Category number to open; omit for the top level.","on_invalid":"reject","example":"0005-","aliases":["category_number"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"category{number, name, path, is_leaf}, children[]{number, name, path, is_leaf, has_classifieds}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"Trade Me's own search suggestions for the start of a keyword, with suggested categories.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The start of a keyword.","on_invalid":"reject","example":"bik","aliases":["q","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"query, suggestions[]{keyword, categories[]{id, name}}, count, category_suggestions[]{id, name, path[]}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"bike"}}]},{"name":"translate","category":{"id":"utilities","title":"Utilities & AI"},"title":"Translate API — free, keyless machine translation & text-to-speech powered by Google Translate: translate text into 130+ languages (single or MULTI-target in one call), turn text into spoken MP3 audio (text-to-speech / TTS) in any language, auto-detect the source language, and look up word-level dictionary meanings, synonyms and transliteration. Works with every script (Chinese, Japanese, Arabic, Cyrillic, Hindi). No API key, no Google Cloud project required.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/translate/v1","spec_available":true,"actions":[{"name":"translate","description":"Translate text into a single target language. Auto-detects the source by default and returns the detected language + confidence. Supports every script.","required_params":["text","target"],"optional_params":["source"],"params":[{"name":"text","type":"string","required":true,"description":"The text to translate. Plain UTF-8 — any script works (Latin, Chinese, Japanese, Arabic, Cyrillic…). Up to 5000 characters per call; longer input is truncated and flagged in meta.truncated.","on_invalid":"reject","example":"Hello, how are you?","aliases":["q","query"]},{"name":"target","type":"enum","required":true,"description":"Target language code to translate INTO (e.g. 'es', 'fr', 'ja', 'ar'). Must be one of the supported codes (see the 'languages' action). Friendly aliases like 'zh' or 'he' are accepted.","on_invalid":"reject","allowed_values":[{"value":"af","label":"Afrikaans"},{"value":"sq","label":"Albanian"},{"value":"am","label":"Amharic"},{"value":"ar","label":"Arabic"},{"value":"hy","label":"Armenian"},{"value":"as","label":"Assamese"},{"value":"ay","label":"Aymara"},{"value":"az","label":"Azerbaijani"},{"value":"bm","label":"Bambara"},{"value":"eu","label":"Basque"},{"value":"be","label":"Belarusian"},{"value":"bn","label":"Bengali"},{"value":"bho","label":"Bhojpuri"},{"value":"bs","label":"Bosnian"},{"value":"bg","label":"Bulgarian"},{"value":"ca","label":"Catalan"},{"value":"ceb","label":"Cebuano"},{"value":"ny","label":"Chichewa"},{"value":"zh-CN","label":"Chinese (Simplified)"},{"value":"zh-TW","label":"Chinese (Traditional)"},{"value":"co","label":"Corsican"},{"value":"hr","label":"Croatian"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"dv","label":"Divehi"},{"value":"doi","label":"Dogri"},{"value":"nl","label":"Dutch"},{"value":"en","label":"English"},{"value":"eo","label":"Esperanto"},{"value":"et","label":"Estonian"},{"value":"ee","label":"Ewe"},{"value":"tl","label":"Filipino"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"fy","label":"Frisian"},{"value":"gl","label":"Galician"},{"value":"ka","label":"Georgian"},{"value":"de","label":"German"},{"value":"el","label":"Greek"},{"value":"gn","label":"Guarani"},{"value":"gu","label":"Gujarati"},{"value":"ht","label":"Haitian Creole"},{"value":"ha","label":"Hausa"},{"value":"haw","label":"Hawaiian"},{"value":"iw","label":"Hebrew"},{"value":"hi","label":"Hindi"},{"value":"hmn","label":"Hmong"},{"value":"hu","label":"Hungarian"},{"value":"is","label":"Icelandic"},{"value":"ig","label":"Igbo"},{"value":"ilo","label":"Ilocano"},{"value":"id","label":"Indonesian"},{"value":"ga","label":"Irish"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"jw","label":"Javanese"},{"value":"kn","label":"Kannada"},{"value":"kk","label":"Kazakh"},{"value":"km","label":"Khmer"},{"value":"rw","label":"Kinyarwanda"},{"value":"gom","label":"Konkani"},{"value":"ko","label":"Korean"},{"value":"kri","label":"Krio"},{"value":"ku","label":"Kurdish (Kurmanji)"},{"value":"ckb","label":"Kurdish (Sorani)"},{"value":"ky","label":"Kyrgyz"},{"value":"lo","label":"Lao"},{"value":"la","label":"Latin"},{"value":"lv","label":"Latvian"},{"value":"ln","label":"Lingala"},{"value":"lt","label":"Lithuanian"},{"value":"lg","label":"Luganda"},{"value":"lb","label":"Luxembourgish"},{"value":"mk","label":"Macedonian"},{"value":"mai","label":"Maithili"},{"value":"mg","label":"Malagasy"},{"value":"ms","label":"Malay"},{"value":"ml","label":"Malayalam"},{"value":"mt","label":"Maltese"},{"value":"mi","label":"Maori"},{"value":"mr","label":"Marathi"},{"value":"mni-Mtei","label":"Meiteilon (Manipuri)"},{"value":"lus","label":"Mizo"},{"value":"mn","label":"Mongolian"},{"value":"my","label":"Myanmar (Burmese)"},{"value":"ne","label":"Nepali"},{"value":"no","label":"Norwegian"},{"value":"or","label":"Odia (Oriya)"},{"value":"om","label":"Oromo"},{"value":"ps","label":"Pashto"},{"value":"fa","label":"Persian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"pa","label":"Punjabi"},{"value":"qu","label":"Quechua"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sm","label":"Samoan"},{"value":"sa","label":"Sanskrit"},{"value":"gd","label":"Scots Gaelic"},{"value":"nso","label":"Sepedi"},{"value":"sr","label":"Serbian"},{"value":"st","label":"Sesotho"},{"value":"sn","label":"Shona"},{"value":"sd","label":"Sindhi"},{"value":"si","label":"Sinhala"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"so","label":"Somali"},{"value":"es","label":"Spanish"},{"value":"su","label":"Sundanese"},{"value":"sw","label":"Swahili"},{"value":"sv","label":"Swedish"},{"value":"tg","label":"Tajik"},{"value":"ta","label":"Tamil"},{"value":"tt","label":"Tatar"},{"value":"te","label":"Telugu"},{"value":"th","label":"Thai"},{"value":"ti","label":"Tigrinya"},{"value":"ts","label":"Tsonga"},{"value":"tr","label":"Turkish"},{"value":"tk","label":"Turkmen"},{"value":"ak","label":"Twi"},{"value":"uk","label":"Ukrainian"},{"value":"ur","label":"Urdu"},{"value":"ug","label":"Uyghur"},{"value":"uz","label":"Uzbek"},{"value":"vi","label":"Vietnamese"},{"value":"cy","label":"Welsh"},{"value":"xh","label":"Xhosa"},{"value":"yi","label":"Yiddish"},{"value":"yo","label":"Yoruba"},{"value":"zu","label":"Zulu"}],"example":"es","aliases":["to","tl"]},{"name":"source","type":"string","required":false,"description":"Source language code (ISO-639-style, e.g. 'en', 'de', 'zh-CN'). Defaults to 'auto' — the language is detected automatically and returned as detected_source. See the 'languages' action for codes.","on_invalid":"reject","default":"auto","example":"en","aliases":["from","sl"]}],"returns":"text (translated), source_text, source (used/detected), target, detected_source, detection_confidence, source_language_name, target_language_name","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"text":"Hello, how are you?","target":"es"}},{"name":"translate_multi","description":"Translate the SAME text into MANY target languages in a single call — the multi-target differentiator. Pass up to 60 target codes; returns a translation for each, fanned out concurrently (≈15× faster than calling translate per language).","required_params":["text","targets"],"optional_params":["source"],"params":[{"name":"text","type":"string","required":true,"description":"The text to translate. Plain UTF-8 — any script works (Latin, Chinese, Japanese, Arabic, Cyrillic…). Up to 5000 characters per call; longer input is truncated and flagged in meta.truncated.","on_invalid":"reject","example":"Hello, how are you?","aliases":["q","query"]},{"name":"targets","type":"array","required":true,"description":"List of target language codes to translate the SAME text into, in ONE call (e.g. ['es','fr','de','ja','ar']). Accepts a JSON array or a comma-separated string. Up to 60 targets; unknown codes are rejected (never silently skipped).","on_invalid":"reject","example":["es","fr","de","ja","ar"],"aliases":["to","langs","tl"]},{"name":"source","type":"string","required":false,"description":"Source language code (ISO-639-style, e.g. 'en', 'de', 'zh-CN'). Defaults to 'auto' — the language is detected automatically and returned as detected_source. See the 'languages' action for codes.","on_invalid":"reject","default":"auto","example":"en","aliases":["from","sl"]}],"returns":"source_text, source, detected_source, translations{code:{text, language_name}}, errors{code:reason} (per-target), count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"per_unit","credits":1,"per":1,"min":1},"example_params":{"text":"The weather is beautiful today.","targets":["es","fr","de","ja","ar"]}},{"name":"translate_batch","description":"Translate MANY strings into ONE target language in a single call — built for catalogue work (product titles, spec values, category names). Send up to 500 strings as an array and get an array back in the SAME order, index for index. Costs ONE upstream call regardless of how many strings you send, so a 500-title page is one request instead of 500. Items the upstream could not translate are listed in `failed[]` with a reason and come back as text:null — never as an empty string and never silently dropped.","required_params":["texts","target"],"optional_params":["source"],"params":[{"name":"texts","type":"array","required":true,"description":"The strings to translate, as a JSON array — e.g. a page of product titles or spec values. Order is preserved: result[i] always corresponds to texts[i]. Up to 500 items and 100000 characters total per call, 5000 characters per item. NOTE: pass a real JSON array. A bare string is split on commas (gateway-wide behaviour for array parameters), which would cut a title like 'Trainers, size 42' into two items.","on_invalid":"reject","example":["Wireless Bluetooth Headphones","Stainless Steel Water Bottle 1L","Men's Running Shoes, Size 42"],"aliases":["q","items","strings","batch"]},{"name":"target","type":"enum","required":true,"description":"Target language code to translate INTO (e.g. 'es', 'fr', 'ja', 'ar'). Must be one of the supported codes (see the 'languages' action). Friendly aliases like 'zh' or 'he' are accepted.","on_invalid":"reject","allowed_values":[{"value":"af","label":"Afrikaans"},{"value":"sq","label":"Albanian"},{"value":"am","label":"Amharic"},{"value":"ar","label":"Arabic"},{"value":"hy","label":"Armenian"},{"value":"as","label":"Assamese"},{"value":"ay","label":"Aymara"},{"value":"az","label":"Azerbaijani"},{"value":"bm","label":"Bambara"},{"value":"eu","label":"Basque"},{"value":"be","label":"Belarusian"},{"value":"bn","label":"Bengali"},{"value":"bho","label":"Bhojpuri"},{"value":"bs","label":"Bosnian"},{"value":"bg","label":"Bulgarian"},{"value":"ca","label":"Catalan"},{"value":"ceb","label":"Cebuano"},{"value":"ny","label":"Chichewa"},{"value":"zh-CN","label":"Chinese (Simplified)"},{"value":"zh-TW","label":"Chinese (Traditional)"},{"value":"co","label":"Corsican"},{"value":"hr","label":"Croatian"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"dv","label":"Divehi"},{"value":"doi","label":"Dogri"},{"value":"nl","label":"Dutch"},{"value":"en","label":"English"},{"value":"eo","label":"Esperanto"},{"value":"et","label":"Estonian"},{"value":"ee","label":"Ewe"},{"value":"tl","label":"Filipino"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"fy","label":"Frisian"},{"value":"gl","label":"Galician"},{"value":"ka","label":"Georgian"},{"value":"de","label":"German"},{"value":"el","label":"Greek"},{"value":"gn","label":"Guarani"},{"value":"gu","label":"Gujarati"},{"value":"ht","label":"Haitian Creole"},{"value":"ha","label":"Hausa"},{"value":"haw","label":"Hawaiian"},{"value":"iw","label":"Hebrew"},{"value":"hi","label":"Hindi"},{"value":"hmn","label":"Hmong"},{"value":"hu","label":"Hungarian"},{"value":"is","label":"Icelandic"},{"value":"ig","label":"Igbo"},{"value":"ilo","label":"Ilocano"},{"value":"id","label":"Indonesian"},{"value":"ga","label":"Irish"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"jw","label":"Javanese"},{"value":"kn","label":"Kannada"},{"value":"kk","label":"Kazakh"},{"value":"km","label":"Khmer"},{"value":"rw","label":"Kinyarwanda"},{"value":"gom","label":"Konkani"},{"value":"ko","label":"Korean"},{"value":"kri","label":"Krio"},{"value":"ku","label":"Kurdish (Kurmanji)"},{"value":"ckb","label":"Kurdish (Sorani)"},{"value":"ky","label":"Kyrgyz"},{"value":"lo","label":"Lao"},{"value":"la","label":"Latin"},{"value":"lv","label":"Latvian"},{"value":"ln","label":"Lingala"},{"value":"lt","label":"Lithuanian"},{"value":"lg","label":"Luganda"},{"value":"lb","label":"Luxembourgish"},{"value":"mk","label":"Macedonian"},{"value":"mai","label":"Maithili"},{"value":"mg","label":"Malagasy"},{"value":"ms","label":"Malay"},{"value":"ml","label":"Malayalam"},{"value":"mt","label":"Maltese"},{"value":"mi","label":"Maori"},{"value":"mr","label":"Marathi"},{"value":"mni-Mtei","label":"Meiteilon (Manipuri)"},{"value":"lus","label":"Mizo"},{"value":"mn","label":"Mongolian"},{"value":"my","label":"Myanmar (Burmese)"},{"value":"ne","label":"Nepali"},{"value":"no","label":"Norwegian"},{"value":"or","label":"Odia (Oriya)"},{"value":"om","label":"Oromo"},{"value":"ps","label":"Pashto"},{"value":"fa","label":"Persian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"pa","label":"Punjabi"},{"value":"qu","label":"Quechua"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sm","label":"Samoan"},{"value":"sa","label":"Sanskrit"},{"value":"gd","label":"Scots Gaelic"},{"value":"nso","label":"Sepedi"},{"value":"sr","label":"Serbian"},{"value":"st","label":"Sesotho"},{"value":"sn","label":"Shona"},{"value":"sd","label":"Sindhi"},{"value":"si","label":"Sinhala"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"so","label":"Somali"},{"value":"es","label":"Spanish"},{"value":"su","label":"Sundanese"},{"value":"sw","label":"Swahili"},{"value":"sv","label":"Swedish"},{"value":"tg","label":"Tajik"},{"value":"ta","label":"Tamil"},{"value":"tt","label":"Tatar"},{"value":"te","label":"Telugu"},{"value":"th","label":"Thai"},{"value":"ti","label":"Tigrinya"},{"value":"ts","label":"Tsonga"},{"value":"tr","label":"Turkish"},{"value":"tk","label":"Turkmen"},{"value":"ak","label":"Twi"},{"value":"uk","label":"Ukrainian"},{"value":"ur","label":"Urdu"},{"value":"ug","label":"Uyghur"},{"value":"uz","label":"Uzbek"},{"value":"vi","label":"Vietnamese"},{"value":"cy","label":"Welsh"},{"value":"xh","label":"Xhosa"},{"value":"yi","label":"Yiddish"},{"value":"yo","label":"Yoruba"},{"value":"zu","label":"Zulu"}],"example":"es","aliases":["to","tl"]},{"name":"source","type":"string","required":false,"description":"Source language code (ISO-639-style, e.g. 'en', 'de', 'zh-CN'). Defaults to 'auto' — the language is detected automatically and returned as detected_source. See the 'languages' action for codes.","on_invalid":"reject","default":"auto","example":"en","aliases":["from","sl"]}],"returns":"translations[]{index, source_text, text (null if it failed), detected_source}, failed[]{index, reason}, count, requested, failed_count, target, target_language_name, source, detected_source","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"per_unit","credits":1,"per":25,"min":1},"example_params":{"texts":["Wireless Bluetooth Headphones","Stainless Steel Water Bottle 1L","Men's Running Shoes, Size 42","Organic Green Tea, 100 bags","4K Ultra HD Smart TV 55 inch"],"target":"es"}},{"name":"detect","description":"Detect the language of a piece of text. Returns the detected language code, its name and a confidence score (0-1). Works on any script.","required_params":["text"],"optional_params":[],"params":[{"name":"text","type":"string","required":true,"description":"The text to translate. Plain UTF-8 — any script works (Latin, Chinese, Japanese, Arabic, Cyrillic…). Up to 5000 characters per call; longer input is truncated and flagged in meta.truncated.","on_invalid":"reject","example":"Hello, how are you?","aliases":["q","query"]}],"returns":"detected_source (code), language_name, confidence (0-1), is_reliable","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"text":"Привет мир"}},{"name":"dictionary","description":"Word-level dictionary lookup: translate a word/short phrase and get its meanings grouped by part of speech, synonyms, back-translations and transliteration (romanization). Best for single words or short phrases.","required_params":["text","target"],"optional_params":["source"],"params":[{"name":"text","type":"string","required":true,"description":"A word or short phrase to look up.","on_invalid":"reject","example":"run","aliases":["q","word"]},{"name":"target","type":"enum","required":true,"description":"Target language code to translate INTO (e.g. 'es', 'fr', 'ja', 'ar'). Must be one of the supported codes (see the 'languages' action). Friendly aliases like 'zh' or 'he' are accepted.","on_invalid":"reject","allowed_values":[{"value":"af","label":"Afrikaans"},{"value":"sq","label":"Albanian"},{"value":"am","label":"Amharic"},{"value":"ar","label":"Arabic"},{"value":"hy","label":"Armenian"},{"value":"as","label":"Assamese"},{"value":"ay","label":"Aymara"},{"value":"az","label":"Azerbaijani"},{"value":"bm","label":"Bambara"},{"value":"eu","label":"Basque"},{"value":"be","label":"Belarusian"},{"value":"bn","label":"Bengali"},{"value":"bho","label":"Bhojpuri"},{"value":"bs","label":"Bosnian"},{"value":"bg","label":"Bulgarian"},{"value":"ca","label":"Catalan"},{"value":"ceb","label":"Cebuano"},{"value":"ny","label":"Chichewa"},{"value":"zh-CN","label":"Chinese (Simplified)"},{"value":"zh-TW","label":"Chinese (Traditional)"},{"value":"co","label":"Corsican"},{"value":"hr","label":"Croatian"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"dv","label":"Divehi"},{"value":"doi","label":"Dogri"},{"value":"nl","label":"Dutch"},{"value":"en","label":"English"},{"value":"eo","label":"Esperanto"},{"value":"et","label":"Estonian"},{"value":"ee","label":"Ewe"},{"value":"tl","label":"Filipino"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"fy","label":"Frisian"},{"value":"gl","label":"Galician"},{"value":"ka","label":"Georgian"},{"value":"de","label":"German"},{"value":"el","label":"Greek"},{"value":"gn","label":"Guarani"},{"value":"gu","label":"Gujarati"},{"value":"ht","label":"Haitian Creole"},{"value":"ha","label":"Hausa"},{"value":"haw","label":"Hawaiian"},{"value":"iw","label":"Hebrew"},{"value":"hi","label":"Hindi"},{"value":"hmn","label":"Hmong"},{"value":"hu","label":"Hungarian"},{"value":"is","label":"Icelandic"},{"value":"ig","label":"Igbo"},{"value":"ilo","label":"Ilocano"},{"value":"id","label":"Indonesian"},{"value":"ga","label":"Irish"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"jw","label":"Javanese"},{"value":"kn","label":"Kannada"},{"value":"kk","label":"Kazakh"},{"value":"km","label":"Khmer"},{"value":"rw","label":"Kinyarwanda"},{"value":"gom","label":"Konkani"},{"value":"ko","label":"Korean"},{"value":"kri","label":"Krio"},{"value":"ku","label":"Kurdish (Kurmanji)"},{"value":"ckb","label":"Kurdish (Sorani)"},{"value":"ky","label":"Kyrgyz"},{"value":"lo","label":"Lao"},{"value":"la","label":"Latin"},{"value":"lv","label":"Latvian"},{"value":"ln","label":"Lingala"},{"value":"lt","label":"Lithuanian"},{"value":"lg","label":"Luganda"},{"value":"lb","label":"Luxembourgish"},{"value":"mk","label":"Macedonian"},{"value":"mai","label":"Maithili"},{"value":"mg","label":"Malagasy"},{"value":"ms","label":"Malay"},{"value":"ml","label":"Malayalam"},{"value":"mt","label":"Maltese"},{"value":"mi","label":"Maori"},{"value":"mr","label":"Marathi"},{"value":"mni-Mtei","label":"Meiteilon (Manipuri)"},{"value":"lus","label":"Mizo"},{"value":"mn","label":"Mongolian"},{"value":"my","label":"Myanmar (Burmese)"},{"value":"ne","label":"Nepali"},{"value":"no","label":"Norwegian"},{"value":"or","label":"Odia (Oriya)"},{"value":"om","label":"Oromo"},{"value":"ps","label":"Pashto"},{"value":"fa","label":"Persian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"pa","label":"Punjabi"},{"value":"qu","label":"Quechua"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sm","label":"Samoan"},{"value":"sa","label":"Sanskrit"},{"value":"gd","label":"Scots Gaelic"},{"value":"nso","label":"Sepedi"},{"value":"sr","label":"Serbian"},{"value":"st","label":"Sesotho"},{"value":"sn","label":"Shona"},{"value":"sd","label":"Sindhi"},{"value":"si","label":"Sinhala"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"so","label":"Somali"},{"value":"es","label":"Spanish"},{"value":"su","label":"Sundanese"},{"value":"sw","label":"Swahili"},{"value":"sv","label":"Swedish"},{"value":"tg","label":"Tajik"},{"value":"ta","label":"Tamil"},{"value":"tt","label":"Tatar"},{"value":"te","label":"Telugu"},{"value":"th","label":"Thai"},{"value":"ti","label":"Tigrinya"},{"value":"ts","label":"Tsonga"},{"value":"tr","label":"Turkish"},{"value":"tk","label":"Turkmen"},{"value":"ak","label":"Twi"},{"value":"uk","label":"Ukrainian"},{"value":"ur","label":"Urdu"},{"value":"ug","label":"Uyghur"},{"value":"uz","label":"Uzbek"},{"value":"vi","label":"Vietnamese"},{"value":"cy","label":"Welsh"},{"value":"xh","label":"Xhosa"},{"value":"yi","label":"Yiddish"},{"value":"yo","label":"Yoruba"},{"value":"zu","label":"Zulu"}],"example":"es","aliases":["to","tl"]},{"name":"source","type":"string","required":false,"description":"Source language code (ISO-639-style, e.g. 'en', 'de', 'zh-CN'). Defaults to 'auto' — the language is detected automatically and returned as detected_source. See the 'languages' action for codes.","on_invalid":"reject","default":"auto","example":"en","aliases":["from","sl"]}],"returns":"text (primary translation), transliteration, source, target, detected_source, dictionary[]{part_of_speech, translations[]{term, synonyms[], score}}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"text":"run","target":"es"}},{"name":"languages","description":"List all supported languages (code → English name). Useful to populate a language picker or validate a code before translating.","required_params":[],"optional_params":[],"params":[],"returns":"languages[]{code, name}, count","cacheable":true,"cache_ttl_seconds":604800,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"speak","description":"Text-to-speech: turn text into spoken audio (MP3). Pronounces the text in the chosen language's voice/accent — works with every script (Chinese, Japanese, Arabic, Cyrillic, Turkish…). Long text is split and joined into a single MP3. Returns the audio base64-encoded inline (audio/mpeg), so no second download is needed. Pair it with 'translate' to get spoken translations.","required_params":["text","lang"],"optional_params":["slow"],"params":[{"name":"text","type":"string","required":true,"description":"The text to speak aloud. Plain UTF-8 — any script works (Latin, Chinese, Japanese, Arabic, Cyrillic…). Up to 3000 characters; longer text is split into chunks and the audio is joined into one MP3. Longer input than that is truncated and flagged in meta.truncated.","on_invalid":"reject","example":"Hello, how are you?","aliases":["q","query"]},{"name":"lang","type":"enum","required":true,"description":"Language to pronounce the text in (e.g. 'en', 'es', 'ja', 'tr', 'ar'). Determines the voice/accent. Must be a supported code (see the 'languages' action). Friendly aliases like 'zh' or 'he' are accepted.","on_invalid":"reject","allowed_values":[{"value":"af","label":"Afrikaans"},{"value":"sq","label":"Albanian"},{"value":"am","label":"Amharic"},{"value":"ar","label":"Arabic"},{"value":"hy","label":"Armenian"},{"value":"as","label":"Assamese"},{"value":"ay","label":"Aymara"},{"value":"az","label":"Azerbaijani"},{"value":"bm","label":"Bambara"},{"value":"eu","label":"Basque"},{"value":"be","label":"Belarusian"},{"value":"bn","label":"Bengali"},{"value":"bho","label":"Bhojpuri"},{"value":"bs","label":"Bosnian"},{"value":"bg","label":"Bulgarian"},{"value":"ca","label":"Catalan"},{"value":"ceb","label":"Cebuano"},{"value":"ny","label":"Chichewa"},{"value":"zh-CN","label":"Chinese (Simplified)"},{"value":"zh-TW","label":"Chinese (Traditional)"},{"value":"co","label":"Corsican"},{"value":"hr","label":"Croatian"},{"value":"cs","label":"Czech"},{"value":"da","label":"Danish"},{"value":"dv","label":"Divehi"},{"value":"doi","label":"Dogri"},{"value":"nl","label":"Dutch"},{"value":"en","label":"English"},{"value":"eo","label":"Esperanto"},{"value":"et","label":"Estonian"},{"value":"ee","label":"Ewe"},{"value":"tl","label":"Filipino"},{"value":"fi","label":"Finnish"},{"value":"fr","label":"French"},{"value":"fy","label":"Frisian"},{"value":"gl","label":"Galician"},{"value":"ka","label":"Georgian"},{"value":"de","label":"German"},{"value":"el","label":"Greek"},{"value":"gn","label":"Guarani"},{"value":"gu","label":"Gujarati"},{"value":"ht","label":"Haitian Creole"},{"value":"ha","label":"Hausa"},{"value":"haw","label":"Hawaiian"},{"value":"iw","label":"Hebrew"},{"value":"hi","label":"Hindi"},{"value":"hmn","label":"Hmong"},{"value":"hu","label":"Hungarian"},{"value":"is","label":"Icelandic"},{"value":"ig","label":"Igbo"},{"value":"ilo","label":"Ilocano"},{"value":"id","label":"Indonesian"},{"value":"ga","label":"Irish"},{"value":"it","label":"Italian"},{"value":"ja","label":"Japanese"},{"value":"jw","label":"Javanese"},{"value":"kn","label":"Kannada"},{"value":"kk","label":"Kazakh"},{"value":"km","label":"Khmer"},{"value":"rw","label":"Kinyarwanda"},{"value":"gom","label":"Konkani"},{"value":"ko","label":"Korean"},{"value":"kri","label":"Krio"},{"value":"ku","label":"Kurdish (Kurmanji)"},{"value":"ckb","label":"Kurdish (Sorani)"},{"value":"ky","label":"Kyrgyz"},{"value":"lo","label":"Lao"},{"value":"la","label":"Latin"},{"value":"lv","label":"Latvian"},{"value":"ln","label":"Lingala"},{"value":"lt","label":"Lithuanian"},{"value":"lg","label":"Luganda"},{"value":"lb","label":"Luxembourgish"},{"value":"mk","label":"Macedonian"},{"value":"mai","label":"Maithili"},{"value":"mg","label":"Malagasy"},{"value":"ms","label":"Malay"},{"value":"ml","label":"Malayalam"},{"value":"mt","label":"Maltese"},{"value":"mi","label":"Maori"},{"value":"mr","label":"Marathi"},{"value":"mni-Mtei","label":"Meiteilon (Manipuri)"},{"value":"lus","label":"Mizo"},{"value":"mn","label":"Mongolian"},{"value":"my","label":"Myanmar (Burmese)"},{"value":"ne","label":"Nepali"},{"value":"no","label":"Norwegian"},{"value":"or","label":"Odia (Oriya)"},{"value":"om","label":"Oromo"},{"value":"ps","label":"Pashto"},{"value":"fa","label":"Persian"},{"value":"pl","label":"Polish"},{"value":"pt","label":"Portuguese"},{"value":"pa","label":"Punjabi"},{"value":"qu","label":"Quechua"},{"value":"ro","label":"Romanian"},{"value":"ru","label":"Russian"},{"value":"sm","label":"Samoan"},{"value":"sa","label":"Sanskrit"},{"value":"gd","label":"Scots Gaelic"},{"value":"nso","label":"Sepedi"},{"value":"sr","label":"Serbian"},{"value":"st","label":"Sesotho"},{"value":"sn","label":"Shona"},{"value":"sd","label":"Sindhi"},{"value":"si","label":"Sinhala"},{"value":"sk","label":"Slovak"},{"value":"sl","label":"Slovenian"},{"value":"so","label":"Somali"},{"value":"es","label":"Spanish"},{"value":"su","label":"Sundanese"},{"value":"sw","label":"Swahili"},{"value":"sv","label":"Swedish"},{"value":"tg","label":"Tajik"},{"value":"ta","label":"Tamil"},{"value":"tt","label":"Tatar"},{"value":"te","label":"Telugu"},{"value":"th","label":"Thai"},{"value":"ti","label":"Tigrinya"},{"value":"ts","label":"Tsonga"},{"value":"tr","label":"Turkish"},{"value":"tk","label":"Turkmen"},{"value":"ak","label":"Twi"},{"value":"uk","label":"Ukrainian"},{"value":"ur","label":"Urdu"},{"value":"ug","label":"Uyghur"},{"value":"uz","label":"Uzbek"},{"value":"vi","label":"Vietnamese"},{"value":"cy","label":"Welsh"},{"value":"xh","label":"Xhosa"},{"value":"yi","label":"Yiddish"},{"value":"yo","label":"Yoruba"},{"value":"zu","label":"Zulu"}],"example":"en","aliases":["language","tl","voice"]},{"name":"slow","type":"boolean","required":false,"description":"Speak slowly (useful for language learning / clear pronunciation). Defaults to false (normal speed).","on_invalid":"reject","default":false,"example":false}],"returns":"audio_base64 (MP3, base64), mime (audio/mpeg), format ('mp3'), lang, language_name, char_count, segments, duration_estimate_seconds, audio_bytes, slow","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"text":"Hello, how are you today?","lang":"en"}}]},{"name":"trendyol","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Trendyol API scraper — search, filters, product detail, reviews, sellers & category browse on Turkey's largest e-commerce marketplace (trendyol.com), prices in TRY","version":"0.3.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/trendyol/v1","spec_available":true,"actions":[{"name":"product/offers","description":"Selected seller and published competing seller offers for a product. Selected seller first, then competitors ordered by price. Stock is null where unpublished.","required_params":[],"optional_params":["content_id","url","limit"],"params":[{"name":"content_id","type":"string","required":false,"description":"Trendyol product ID — the digits after '-p-' in the product URL (…-p-<id>). Take it from search results. Provide content_id OR url.","on_invalid":"reject","example":762254881,"aliases":["contentId","id"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol product URL — alternative to content_id.","on_invalid":"reject","example":"https://www.trendyol.com/x/x-p-762254881","aliases":["product_url"]},{"name":"limit","type":"integer","required":false,"description":"Maximum offers, including selected seller (1-100).","on_invalid":"reject","default":100,"minimum":1,"maximum":100}],"returns":"content_id, offers[]{seller_id, seller_name, seller_score, price, price_value, currency, campaign, is_buybox, item_number, in_stock, free_cargo, url}, returned_count, published_count (including selected seller), truncated, includes_selected_seller","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"product/variants","description":"Published catalog variants and barcodes. Catalog prices can differ from the selected merchant. selected_offer_price is populated only for the matching selected item_number; other merchant-specific variant prices remain null.","required_params":[],"optional_params":["content_id","url"],"params":[{"name":"content_id","type":"string","required":false,"description":"Trendyol product ID — the digits after '-p-' in the product URL (…-p-<id>). Take it from search results. Provide content_id OR url.","on_invalid":"reject","example":762254881,"aliases":["contentId","id"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol product URL — alternative to content_id.","on_invalid":"reject","example":"https://www.trendyol.com/x/x-p-762254881","aliases":["product_url"]}],"returns":"content_id, selected_seller_id, selected_item_number, size_chart_url, variants[]{value, item_number, barcode, in_stock, price, price_value, price_scope, selected_seller_id, selected_seller_in_stock, selected_offer_price}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"product/description","description":"Long product description as HTML, plain text and image URLs. Image-only descriptions are supported. An existing product without a description returns has_description=false. Treat returned HTML as untrusted data before displaying it.","required_params":[],"optional_params":["content_id","url"],"params":[{"name":"content_id","type":"string","required":false,"description":"Trendyol product ID — the digits after '-p-' in the product URL (…-p-<id>). Take it from search results. Provide content_id OR url.","on_invalid":"reject","example":762254881,"aliases":["contentId","id"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol product URL — alternative to content_id.","on_invalid":"reject","example":"https://www.trendyol.com/x/x-p-762254881","aliases":["product_url"]}],"returns":"content_id, html, text, images[], has_description","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"product/questions","description":"Published answered product questions, with seller replies and zero-based pagination. total_count describes the returned question collection; content_total_count is a separate broader source summary.","required_params":[],"optional_params":["content_id","url","page","page_size"],"params":[{"name":"content_id","type":"string","required":false,"description":"Trendyol product ID — the digits after '-p-' in the product URL (…-p-<id>). Take it from search results. Provide content_id OR url.","on_invalid":"reject","example":762254881,"aliases":["contentId","id"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol product URL — alternative to content_id.","on_invalid":"reject","example":"https://www.trendyol.com/x/x-p-762254881","aliases":["product_url"]},{"name":"page","type":"integer","required":false,"description":"Question page, zero-based.","on_invalid":"reject","default":0,"minimum":0,"maximum":10000},{"name":"page_size","type":"integer","required":false,"description":"Questions per page (1-50).","on_invalid":"reject","default":20,"minimum":1,"maximum":50}],"returns":"content_id, questions[]{id, question, answer, seller_id, seller_name, user, verified_purchase, created_at, created_at_ms, answer_time_text}, page, page_size, total_pages, total_count, content_total_count, tags[], pagination{page, has_more}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"product/coupons","description":"Publicly visible coupons for the selected product and seller. Includes discount type, minimum spend, expiry and conditions. Anonymous visibility does not confirm personal eligibility or redemption; coupons are not subtracted from the product price.","required_params":[],"optional_params":["content_id","url"],"params":[{"name":"content_id","type":"string","required":false,"description":"Trendyol product ID — the digits after '-p-' in the product URL (…-p-<id>). Take it from search results. Provide content_id OR url.","on_invalid":"reject","example":762254881,"aliases":["contentId","id"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol product URL — alternative to content_id.","on_invalid":"reject","example":"https://www.trendyol.com/x/x-p-762254881","aliases":["product_url"]}],"returns":"content_id, seller_id, visibility=anonymous, eligibility_checked=false, coupons[]{id, discount_type, discount_value, discount_unit, currency, minimum_spend, max_discount_amount, end_date, code, eligible, applied, is_ty_plus, conditions[], products_url}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"product/detail","description":"full product by `url` OR `content_id`: title/brand/price(current+list+discount%/coupon/ty+)/campaign(+campaigns[])/rating+comment_count/in_stock/seller(+score)/other_offers[] (EVERY competing seller on the same listing WITH its store id, store name, seller score, price and campaign — seller-level price comparison in this one call)/category/images/attributes(specs)/variants. The dual-use influencer module.","required_params":[],"optional_params":["url","content_id"],"params":[{"name":"content_id","type":"string","required":false,"description":"Trendyol product ID — the digits after '-p-' in the product URL (…-p-<id>). Take it from search results. Provide content_id OR url.","on_invalid":"reject","example":762254881,"aliases":["contentId","id"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol product URL — alternative to content_id.","on_invalid":"reject","example":"https://www.trendyol.com/x/x-p-762254881","aliases":["product_url"]}],"returns":"product{content_id, title, brand, price{current, list, currency=TRY, discount_pct, coupon, ty_plus}, campaign (str|null — the 'Ürünün Kampanyaları' headline, e.g. 'Sepette %1 İndirim · 350 TL ve Üzeri Kargo Bedava'), campaigns[]{text, short, type, applied, end_date}, rating{average, comment_count}, in_stock, seller{name, score}, other_offers[]{seller_id, seller_name, seller_score, price, price_value, campaign, url, free_cargo} (cheapest first, up to 100 rows) + other_offers_count (the TRUE number of competing sellers upstream published, so you can tell a full list from a capped one) — one row per competing seller of the SAME listing, each carrying its own store identity; empty [] when the product has a single seller (Trendyol then publishes no competing-merchant block at all), category, images[], attributes{}, variants[]}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"content_id":762254881}},{"name":"product/reviews","description":"Paginated customer reviews by `content_id` OR `url`, in the order you ask for. `sort=newest` returns the most recently posted reviews first and keeps that order across every page, so you can poll a product for new reviews; without `sort` Trendyol returns its own 'recommended' order, which is not chronological. Every page carries the real totals (average rating, how many people rated, how many wrote a comment, star breakdown, total_pages for your page_size) so you know when to stop. Reviewer names are published by Trendyol already masked.","required_params":[],"optional_params":["content_id","url","page","page_size","sort"],"params":[{"name":"content_id","type":"string","required":false,"description":"Trendyol product ID — the digits after '-p-' in the product URL (…-p-<id>). Take it from search results. Provide content_id OR url.","on_invalid":"reject","example":762254881,"aliases":["contentId","id"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol product URL — alternative to content_id.","on_invalid":"reject","example":"https://www.trendyol.com/x/x-p-762254881","aliases":["product_url"]},{"name":"page","type":"integer","required":false,"description":"Review page — 0-BASED (first page = 0, then 1, 2…); summary.total_pages tells you how many exist.","on_invalid":"ignore","default":0,"minimum":0},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1–50; larger values are capped at 50). summary.total_pages is computed for this page size.","on_invalid":"ignore","default":30,"minimum":1,"maximum":50,"aliases":["pageSize"]},{"name":"sort","type":"enum","required":false,"description":"Review ordering. Use `newest` to track the most recent reviews — the order holds across pages, so page 0 is always the freshest. `relevant` (the default) is Trendyol's own 'Önerilen Sıralama' and is NOT chronological. Ordering by date uses each review's last-modified timestamp, which is the field `last_modified` in every row.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"Newest first (most recent review at the top)"},{"value":"oldest","label":"Oldest first"},{"value":"rating_desc","label":"Highest rating first"},{"value":"rating_asc","label":"Lowest rating first"},{"value":"relevant","label":"Trendyol's own recommended order (default)"}],"default":"relevant"}],"returns":"ai_summary (Trendyol's own AI digest of the reviews, Turkish; null if it publishes none) + summary{average_rating, total_rating_count, total_comment_count, total_pages, page_size, total_image_review_count, has_media, rating_breakdown{5..1}} + page, page_size, sort + reviews[]{id, user (masked by Trendyol), user_name_shown, rating, comment, date, date_epoch_ms, last_modified, last_modified_epoch_ms, seller, seller_id, trusted, likes, is_influencer, is_elite, images[]} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"content_id":762254881}},{"name":"product/similar","description":"Trendyol's own 'Benzer Ürünler' recommendation rail for a product, by `content_id` OR `url` — the products Trendyol itself puts in front of a shopper looking at this one, so you get its live view of the competitive set (same category, comparable specs) rather than a keyword guess. Each row is a full product card (price, list price, rating, review count, seller, stock) usable directly for price benchmarking, or feed results[].content_id straight into product/detail. Paginated 0-BASED; meta.pagination.has_more tells you when the rail is exhausted.","required_params":[],"optional_params":["content_id","url","page","size"],"params":[{"name":"content_id","type":"string","required":false,"description":"Trendyol product ID — the digits after '-p-' in the product URL (…-p-<id>). Take it from search results. Provide content_id OR url.","on_invalid":"reject","example":762254881,"aliases":["contentId","id"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol product URL — alternative to content_id.","on_invalid":"reject","example":"https://www.trendyol.com/x/x-p-762254881","aliases":["product_url"]},{"name":"page","type":"integer","required":false,"description":"Result page — 0-BASED (first page = 0).","on_invalid":"ignore","default":0,"minimum":0},{"name":"size","type":"integer","required":false,"description":"How many similar products (1–40; larger values are capped at 40).","on_invalid":"ignore","default":20,"minimum":1,"maximum":40}],"returns":"results[]{content_id, title, brand, url, price, price_value, list_price (null when the product carries no genuine strike-through — never an invented discount), rating, comment_count, image, category, in_stock, merchant_id, free_cargo}; meta{total_count, is_last_page, pagination}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"content_id":762254881}},{"name":"search","description":"Search Trendyol products by keyword with optional sort & price/brand filters → results[]{content_id,title,brand,url,price,list_price,rating,comment_count,category,image,free_cargo}. Resolves content_ids for product/detail. Paginated+deduped (page 1-based, max_pages ≤10). meta.total_count = full result-set size.","required_params":["query"],"optional_params":["page","max_pages","sort","price","brand"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for (Turkish keywords work best).","on_invalid":"reject","example":"laptop","aliases":["q"]},{"name":"page","type":"integer","required":false,"description":"Result page to start from — 1-BASED (1, 2, 3…), ~24 products/page.","on_invalid":"ignore","default":1,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"How many consecutive pages to fetch + dedup in one call (1–10, ~24 products/page; larger values are capped at 10).","on_invalid":"ignore","default":1,"minimum":1,"maximum":10},{"name":"sort","type":"enum","required":false,"description":"Result ordering: best_seller · most_favorite · price_asc · price_desc · newest · most_rated. Default = Trendyol relevance.","on_invalid":"ignore","allowed_values":[{"value":"best_seller","label":"Best sellers"},{"value":"most_favorite","label":"Most favorited"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"newest","label":"Newest"},{"value":"most_rated","label":"Most rated"}]},{"name":"price","type":"string","required":false,"description":"Price range filter in TRY as 'min-max' (e.g. '5000-15000'). Open-ended like '5000-' also works.","on_invalid":"ignore","example":"5000-15000","aliases":["price_range"]},{"name":"brand","type":"string","required":false,"description":"Brand-id filter — get valid brand ids from the search/filters action (the 'Marka' facet). Numeric id, not the brand name.","on_invalid":"ignore","example":102323}],"returns":"results[]{content_id, title, brand, url, price, price_value, list_price, rating, comment_count, category, image, free_cargo, fast_delivery}; meta{total_count, pagination}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"iphone"}},{"name":"search/filters","description":"Discover the available filter facets for a `query` OR `category_id` before filtering — brands (with ids for the `brand` param), price ranges, product ratings, and category-specific attributes (RAM, screen size, color, …) each with live result counts.","required_params":[],"optional_params":["query","category_id"],"params":[{"name":"query","type":"string","required":false,"description":"Search keyword to get facets for (provide query OR category_id).","on_invalid":"reject","example":"laptop","aliases":["q"]},{"name":"category_id","type":"integer","required":false,"description":"Category id (digits after '-c' in a category URL) — alternative to query.","on_invalid":"reject","example":103498,"aliases":["categoryId"]}],"returns":"filters[]{title, type, param_hint, values[]{id, text, count}} — feed a values[].id into search/category brand/price filters","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"laptop"}},{"name":"category/products","description":"Browse a Trendyol category by id — best-sellers, newest, or price/brand-filtered product lists. Same card shape as search. Get a category_id from a product's category.id (product/detail) or the '-c<id>' in a category URL.","required_params":[],"optional_params":["category_id","url","page","max_pages","sort","price","brand"],"params":[{"name":"category_id","type":"integer","required":false,"description":"Category id — the digits after '-c' in a category URL (…-x-c<id>), or a product's category.id. Provide category_id OR url.","on_invalid":"reject","example":103498,"aliases":["categoryId","wc"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol category URL — alternative to category_id.","on_invalid":"reject","example":"https://www.trendyol.com/cep-telefonu-x-c103498","aliases":["category_url"]},{"name":"page","type":"integer","required":false,"description":"Result page to start from — 1-BASED (1, 2, 3…), ~24 products/page.","on_invalid":"ignore","default":1,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"How many consecutive pages to fetch + dedup in one call (1–10, ~24 products/page; larger values are capped at 10).","on_invalid":"ignore","default":1,"minimum":1,"maximum":10},{"name":"sort","type":"enum","required":false,"description":"Result ordering: best_seller · most_favorite · price_asc · price_desc · newest · most_rated. Default = Trendyol relevance.","on_invalid":"ignore","allowed_values":[{"value":"best_seller","label":"Best sellers"},{"value":"most_favorite","label":"Most favorited"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"newest","label":"Newest"},{"value":"most_rated","label":"Most rated"}]},{"name":"price","type":"string","required":false,"description":"Price range filter in TRY as 'min-max' (e.g. '5000-15000'). Open-ended like '5000-' also works.","on_invalid":"ignore","example":"5000-15000","aliases":["price_range"]},{"name":"brand","type":"string","required":false,"description":"Brand-id filter — get valid brand ids from the search/filters action (the 'Marka' facet). Numeric id, not the brand name.","on_invalid":"ignore","example":102323}],"returns":"results[]{content_id, title, brand, url, price, list_price, rating, comment_count, category, image, free_cargo, fast_delivery}; meta{total_count, pagination}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"category_id":103498}},{"name":"seller/products","description":"All products of a Trendyol seller/store (paginated, sortable, filterable) by seller_id. Same card shape as search. meta.total_count = the seller's full catalog size.","required_params":[],"optional_params":["seller_id","url","page","max_pages","sort","price","brand"],"params":[{"name":"seller_id","type":"integer","required":false,"description":"Seller/merchant id — the digits after '-m-' in a store URL (/magaza/…-m-<id>). Get it from seller/info or a product's seller. Provide seller_id OR url.","on_invalid":"reject","example":968,"aliases":["sellerId","mid"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol store URL — alternative to seller_id.","on_invalid":"reject","example":"https://www.trendyol.com/magaza/trendyol-m-968","aliases":["store_url"]},{"name":"page","type":"integer","required":false,"description":"Result page to start from — 1-BASED (1, 2, 3…), ~24 products/page.","on_invalid":"ignore","default":1,"minimum":1},{"name":"max_pages","type":"integer","required":false,"description":"How many consecutive pages to fetch + dedup in one call (1–10, ~24 products/page; larger values are capped at 10).","on_invalid":"ignore","default":1,"minimum":1,"maximum":10},{"name":"sort","type":"enum","required":false,"description":"Result ordering: best_seller · most_favorite · price_asc · price_desc · newest · most_rated. Default = Trendyol relevance.","on_invalid":"ignore","allowed_values":[{"value":"best_seller","label":"Best sellers"},{"value":"most_favorite","label":"Most favorited"},{"value":"price_asc","label":"Price: low to high"},{"value":"price_desc","label":"Price: high to low"},{"value":"newest","label":"Newest"},{"value":"most_rated","label":"Most rated"}]},{"name":"price","type":"string","required":false,"description":"Price range filter in TRY as 'min-max' (e.g. '5000-15000'). Open-ended like '5000-' also works.","on_invalid":"ignore","example":"5000-15000","aliases":["price_range"]},{"name":"brand","type":"string","required":false,"description":"Brand-id filter — get valid brand ids from the search/filters action (the 'Marka' facet). Numeric id, not the brand name.","on_invalid":"ignore","example":102323}],"returns":"results[]{content_id, title, brand, url, price, list_price, rating, comment_count, category, image, free_cargo}; meta{total_count, pagination}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"seller_id":968}},{"name":"seller/info","description":"Trendyol seller/store profile by seller_id: store name, legal entity (official_name), total product_count, seller score, and trust badges.","required_params":[],"optional_params":["seller_id","url"],"params":[{"name":"seller_id","type":"integer","required":false,"description":"Seller/merchant id — the digits after '-m-' in a store URL (/magaza/…-m-<id>). Provide seller_id OR url.","on_invalid":"reject","example":968,"aliases":["sellerId","mid"]},{"name":"url","type":"string","required":false,"description":"Full Trendyol store URL — alternative to seller_id.","on_invalid":"reject","example":"https://www.trendyol.com/magaza/trendyol-m-968","aliases":["store_url"]}],"returns":"seller{seller_id, name, official_name, product_count, score, badges[], url}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"seller_id":968}},{"name":"seller/categories","description":"Trendyol's seller category tree, as used for product uploads: every category with its id, full path and whether it is a leaf (products are uploaded to leaf categories). Filter with `query`; take the id to seller/category-attributes for that category's upload template.","required_params":[],"optional_params":["query","leaf_only","limit"],"params":[{"name":"query","type":"string","required":false,"description":"Case-insensitive text matched against the category name and path.","on_invalid":"ignore","example":"ayakkabı","aliases":["q","name"]},{"name":"leaf_only","type":"boolean","required":false,"description":"Only leaf categories (the ones products are uploaded to). Default true.","on_invalid":"ignore","default":true},{"name":"limit","type":"integer","required":false,"description":"Maximum rows to return (1-5000).","on_invalid":"ignore","default":200,"minimum":1,"maximum":5000}],"returns":"categories[]{id, name, path, parent_id, leaf}, count, total","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"seller/category-attributes","description":"The product upload template of one Trendyol category: every attribute a listing in it takes, whether it is required, whether a custom value is allowed, whether it creates variants (varianter) or splits listings (slicer), and the allowed values.","required_params":["category_id"],"optional_params":[],"params":[{"name":"category_id","type":"string","required":true,"description":"Leaf category id from seller/categories.","on_invalid":"reject","example":411,"aliases":["id","categoryId"]}],"returns":"category{id, name}, attributes[]{id, name, required, allow_custom, allow_multiple, varianter, slicer, values[]{id, name}}, attribute_count, required_count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"category_id":103498}},{"name":"suggest","description":"keyword suggestions for a query (ops; search-fallback if suggest API blocked)","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Partial search text to complete.","on_invalid":"reject","example":"iphone","aliases":["q"]}],"returns":"suggestions[] (plain strings)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"iphone"}}]},{"name":"tripadvisor","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Tripadvisor API — hotel, restaurant & attraction reviews, ratings and place profiles from tripadvisor.com","version":"1.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/tripadvisor/v1","spec_available":true,"actions":[{"name":"reviews","description":"Reviews + the full place profile (rating histogram, subratings, amenities) for one or more Tripadvisor places, by page URL.","required_params":[],"optional_params":["startUrls","url","queries","query","maxReviews","language"],"params":[{"name":"url","type":"string","required":false,"description":"Tripadvisor page URL of the hotel/restaurant/attraction (the reliable input — copy it from the browser). Provide this OR startUrls.","on_invalid":"reject","example":"https://www.tripadvisor.com/Hotel_Review-g45963-d91703-Reviews-Bellagio-Las_Vegas_Nevada.html"},{"name":"startUrls","type":"array","required":false,"description":"Several place URLs in one call (strings or {url:…} objects). One minted session is reused across them.","on_invalid":"reject","example":[{"url":"https://www.tripadvisor.com/Hotel_Review-g45963-d91703-Reviews-Bellagio-Las_Vegas_Nevada.html"}]},{"name":"query","type":"string","required":false,"description":"UNRELIABLE: place-name lookup often fails to resolve ('Could not resolve a locationId'). Use `url` instead.","on_invalid":"ignore","example":"Bellagio Las Vegas"},{"name":"queries","type":"array","required":false,"description":"UNRELIABLE (same lookup as `query`): several place names in one call. Prefer `startUrls`.","on_invalid":"ignore","example":["Bellagio Las Vegas"]},{"name":"maxReviews","type":"integer","required":false,"description":"How many of the newest reviews to fetch per place (1–10000). More reviews = longer runtime.","on_invalid":"reject","default":200,"minimum":1,"maximum":10000},{"name":"language","type":"string","required":false,"description":"Review language filter (ISO 639-1: en, es, de…). Use 'all' for every language (machine-translated).","on_invalid":"ignore","default":"en","example":"en"}],"returns":"results[]{place{location_id, name, entity_type, rating, review_count, ranking, price_range, rating_histogram, subratings, amenities, cuisines, hours}, reviews[]{id, rating, title, text, language, published_date, trip_type, stay_date, helpful_votes, photos, mgmt_response_text}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"startUrls":[{"url":"https://www.tripadvisor.com/Hotel_Review-g45963-d91703-Reviews-Bellagio-Las_Vegas_Nevada.html"}],"maxReviews":45}},{"name":"places/list","description":"Discover hotels, restaurants or attractions in a city/area (name, rating, review count) — the feeder for `reviews`.","required_params":["location"],"optional_params":["category","geo_id","location_slug","max_results"],"params":[{"name":"location","type":"string","required":true,"description":"City or area name. Resolved to a Tripadvisor geo automatically (or pin it exactly with geo_id).","on_invalid":"reject","example":"Las Vegas"},{"name":"category","type":"enum","required":false,"description":"What kind of places to list (singular forms also accepted).","on_invalid":"ignore","allowed_values":[{"value":"hotels","label":"Hotels"},{"value":"restaurants","label":"Restaurants"},{"value":"attractions","label":"Attractions"}],"default":"hotels"},{"name":"max_results","type":"integer","required":false,"description":"How many places to return (1–500). The engine pages the results internally.","on_invalid":"reject","default":30,"minimum":1,"maximum":500,"aliases":["maxResults"]},{"name":"geo_id","type":"string","required":false,"description":"Advanced: Tripadvisor geo ID (the g-number in URLs) — skips the location lookup.","on_invalid":"ignore","example":"45963"},{"name":"location_slug","type":"string","required":false,"description":"Advanced: the URL slug that pairs with geo_id.","on_invalid":"ignore","example":"Las_Vegas_Nevada"}],"returns":"results[]{location_id, name, entity_type, rating, review_count, url, price_tier}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Las Vegas","category":"hotels","geo_id":"45963","location_slug":"Las_Vegas_Nevada","max_results":30}},{"name":"detail","description":"Full profile for one Tripadvisor hotel, restaurant or attraction by page URL: overall rating, total reviews, ranking, price level, the per-star rating breakdown, category subratings (cleanliness / service / value / location / food / atmosphere), amenities, cuisines, address, coordinates and phone.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"Tripadvisor page URL of the hotel/restaurant/attraction (copy it from the browser, or get it from `search` / `places/list`).","on_invalid":"reject","example":"https://www.tripadvisor.com/Hotel_Review-g45963-d91703-Reviews-Bellagio-Las_Vegas_Nevada.html"}],"returns":"place{location_id, name, entity_type, rating, review_count, ranking, price_range, rating_histogram, subratings, amenities, cuisines, address, latitude, longitude, phone, url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://www.tripadvisor.com/Hotel_Review-g45963-d91703-Reviews-Bellagio-Las_Vegas_Nevada.html"}},{"name":"search","description":"Find Tripadvisor places (hotels, restaurants, attractions) and destinations by name — the typeahead the site's own search box uses. Returns the matching location IDs + page URLs to feed into `reviews` or `detail`.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Place or destination name to look up (e.g. 'Bellagio Las Vegas', 'Eiffel Tower', 'Rome').","on_invalid":"reject","example":"Bellagio Las Vegas"},{"name":"type","type":"enum","required":false,"description":"Optional: keep only one kind of result.","on_invalid":"ignore","allowed_values":[{"value":"hotel","label":"Hotels"},{"value":"restaurant","label":"Restaurants"},{"value":"attraction","label":"Attractions"},{"value":"geo","label":"Cities / regions"}],"aliases":["kind"]},{"name":"limit","type":"integer","required":false,"description":"How many candidates to return (1–30).","on_invalid":"reject","default":10,"minimum":1,"maximum":30}],"returns":"results[]{location_id, name, entity_type, url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Bellagio Las Vegas","limit":5}}]},{"name":"truelancer","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"Truelancer.com API scraper — live freelance projects and freelancer profiles from Truelancer.com in clean PII-safe JSON: title, budget, skills, category, proposals, client country, and freelancer ratings/earnings. No login required.","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/truelancer/v1","spec_available":true,"actions":[{"name":"search","description":"Search live freelance PROJECTS on Truelancer.com by keyword. Returns title, description, budget{type,min,max,currency}, skills[], category, proposal count, posted_at, coarse client signals (country, verified, total spent), and the project url. No client PII (the poster's name is dropped).","required_params":[],"optional_params":["query","limit","offset"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword to search Truelancer projects (title/skills) — e.g. 'logo design', 'wordpress', 'data entry'. Omit to browse the newest projects.","on_invalid":"ignore","example":"logo design","aliases":["q","keyword","search"]},{"name":"limit","type":"integer","required":false,"description":"How many projects to return (1–75). Use `offset` to page.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":75,"aliases":["max_results","count"]},{"name":"offset","type":"integer","required":false,"description":"Pagination offset (0–5000); skip this many results before returning `limit`.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":5000,"aliases":["skip","page_offset"]}],"returns":"projects[]{id, title, description, type, budget{type,min,max,currency}, skills[], category, bids_count, posted_at, client_country, client{...}, url}, total_count, returned, offset","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"design","limit":8}},{"name":"project","description":"Full detail for one Truelancer.com project by URL or slug — everything from `search` plus views, end-date, tags, payment-verified flag, and proposal breakdown (received/active/shortlisted). No client PII.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"The project to fetch: a Truelancer project URL or SEO slug ('freelance-project/<slug>-<id>'). A bare numeric id is not resolvable unauthenticated (the slug is required).","on_invalid":"ignore","example":"https://www.truelancer.com/freelance-project/example-646814","aliases":["project_id","url","seo_url"]}],"returns":"project{...all search fields..., detail{total_views, end_date, tags[], payment_verified, proposals{received,active,shortlisted}}}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user","description":"PUBLIC business profile of a Truelancer.com freelancer by handle or profile URL: display name, headline, country, hourly rate, skills, ratings (avg rating, reviews, five-star %, projects delivered, total earnings), membership and availability. PII (email/phone/legal-name/address) is NEVER returned.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"The freelancer to fetch: a Truelancer profile handle or profile URL. Returns the PUBLIC business profile only — no email / phone / legal-name / address (those are never returned).","on_invalid":"ignore","example":"johnsmith","aliases":["user","user_id","id"]}],"returns":"user{id, username, display_name, tagline, country, hourly_rate, primary_currency, registration_year, membership, skills[], reputation{overall_rating,reviews,five_star_percent,projects_delivered,total_earnings}, availability, profile_url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"trustpilot","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Trustpilot API — company reviews, TrustScore, profile details, review filters, category browsing, and consumer profiles from Trustpilot.com","version":"2.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/trustpilot/v1","spec_available":true,"actions":[{"name":"company/reviews","description":"Get a company's Trustpilot reviews and its full profile from trustpilot.com — TrustScore, star rating, total review count, 5-to-1-star rating distribution, business categories, and every review with rating, title, text, date, verified status, likes and the company's reply. Newest first; optionally filter by star rating.","required_params":["company"],"optional_params":["maxReviews","includeCompany","sort","date_posted","rating","verified","with_replies","query","languages","page","locale"],"params":[{"name":"company","type":"string","required":true,"description":"The company's website domain (e.g. gossby.com), its Trustpilot review-page URL, or its Trustpilot page slug.","on_invalid":"reject","example":"gossby.com","aliases":["companyDomain","companyUrl","company_domain","domain"]},{"name":"maxReviews","type":"integer","required":false,"description":"How many reviews to return (1–20000). More reviews take longer.","on_invalid":"reject","default":200,"minimum":1,"maximum":20000},{"name":"sort","type":"enum","required":false,"description":"How to order reviews.","on_invalid":"ignore","allowed_values":[{"value":"most_relevant","label":"Most relevant"},{"value":"recency","label":"Newest first"}],"default":"most_relevant"},{"name":"date_posted","type":"enum","required":false,"description":"Only reviews from this time range.","on_invalid":"ignore","allowed_values":[{"value":"any","label":"Any time"},{"value":"last_12_months","label":"Last 12 months"},{"value":"last_6_months","label":"Last 6 months"},{"value":"last_3_months","label":"Last 3 months"},{"value":"last_30_days","label":"Last 30 days"}],"default":"any","aliases":["date"]},{"name":"rating","type":"string","required":false,"description":"Only reviews with these star ratings. A single value or a comma-separated list, e.g. '5' or '4,5'.","on_invalid":"ignore","example":"4,5","aliases":["stars","starRating"]},{"name":"verified","type":"boolean","required":false,"description":"Only verified reviews. Combining filters can narrow a company to an empty view; that returns ok with an empty reviews list and the company profile.","on_invalid":"ignore","default":false},{"name":"with_replies","type":"boolean","required":false,"description":"Only reviews that have an owner reply.","on_invalid":"ignore","default":false},{"name":"query","type":"string","required":false,"description":"Only reviews matching this keyword/phrase.","on_invalid":"ignore","aliases":["search"]},{"name":"languages","type":"string","required":false,"description":"Only reviews written in this language (ISO code, e.g. 'en', 'de'); 'all' for every language.","on_invalid":"ignore","default":"all","example":"en"},{"name":"includeCompany","type":"boolean","required":false,"description":"Include the company profile alongside the reviews.","on_invalid":"reject","default":true},{"name":"page","type":"integer","required":false,"description":"First page of reviews to return, 20 per page (1–10). Logged-out Trustpilot serves at most 200 reviews per view, so page 10 is the last one.","on_invalid":"reject","default":1,"minimum":1,"maximum":10},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"results[]{company{domain, name, trust_score, stars, number_of_reviews, number_of_reviews_last_12_months, rating_distribution (5★..1★), categories, is_claimed, is_closed, reply_behavior{reply_percentage, average_days_to_reply}, ai_summary}, reviews[]{review_id, rating, title, text, language, published_date, experience_date, is_verified, likes, is_pending, is_flagged, reviewer_name*, reviewer_country, reply_text}, total_reviews, completeness_pct} (*reviewer name/country redacted by default; request include_pii=true for full reviewer data)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"company":"amazon.com","maxReviews":40}},{"name":"company/details","description":"The full Trustpilot company profile WITHOUT reviews (cheaper than company/reviews when you only need the listing) → TrustScore, star rating, total reviews (and last-12-months), 5-to-1-star distribution, category rankings (e.g. #2 of 26 in Bank), contact info (address, phone, website, email), how the business replies to reviews (reply rate + average days), business verification, claimed/closed status, what customers talk about most (AI topic summaries), the AI review summary and the company description. By company domain.","required_params":["company"],"optional_params":["locale"],"params":[{"name":"company","type":"string","required":true,"description":"The company's website domain (e.g. gossby.com), its Trustpilot review-page URL, or its Trustpilot page slug.","on_invalid":"reject","example":"gossby.com","aliases":["companyDomain","companyUrl","company_domain","domain"]},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"company{name, domain, trust_score, stars, number_of_reviews, number_of_reviews_last_12_months, rating_distribution (5★..1★), categories, rankings[]{category, rank, of}, breadcrumb, is_claimed, is_closed, is_collecting_reviews, claimed_date, reply_behavior{reply_percentage, average_days_to_reply, negative_reviews_with_replies, total_negative_reviews}, verification{verified_payment_method, verified_user_identity, verified_by_google}, locations_count, website_url, website_title, contact_email, contact_phone, contact_address, contact_city, contact_country, contact_zip, topics[]{topic, summary}, ai_summary, description}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"company":"lendingclub.com"}},{"name":"category/browse","description":"List the companies in a Trustpilot category (20/page) → each company's name, domain, TrustScore, review count and location. Filter by country, minimum TrustScore and claimed status, and sort by recently-reviewed. Also returns the category's size and subcategories, plus the newest companies and the recently-reviewed companies in that category — all in one call.","required_params":["categoryId"],"optional_params":["page","cursor","locale","sort","country","min_rating","claimed"],"params":[{"name":"categoryId","type":"enum","required":true,"description":"Trustpilot category. Pick from the list (full 2-level taxonomy) — or type any deeper category slug from a trustpilot.com/categories/<slug> URL; those work too.","on_invalid":"ignore","allowed_values":[{"value":"animals_pets","label":"Animals & Pets"},{"value":"animal_health","label":"Animal Health"},{"value":"animal_parks_zoo","label":"Animal Parks & Zoo"},{"value":"cats_dogs","label":"Cats & Dogs"},{"value":"horses_riding","label":"Horses & Riding"},{"value":"pet_services","label":"Pet Services"},{"value":"pet_stores","label":"Pet Stores"},{"value":"beauty_wellbeing","label":"Beauty & Well-being"},{"value":"cosmetics_makeup","label":"Cosmetics & Makeup"},{"value":"hair_care_styling","label":"Hair Care & Styling"},{"value":"personal_care","label":"Personal Care"},{"value":"salons_clinics","label":"Salons & Clinics"},{"value":"tattoos_piercings","label":"Tattoos & Piercings"},{"value":"wellness_spa","label":"Wellness & Spa"},{"value":"yoga_meditation","label":"Yoga & Meditation"},{"value":"business_services","label":"Business Services"},{"value":"administration_services","label":"Administration & Services"},{"value":"associations_centers","label":"Associations & Centers"},{"value":"hr_recruiting","label":"HR & Recruiting"},{"value":"import_export","label":"Import & Export"},{"value":"it_communication","label":"IT & Communication"},{"value":"office_space_supplies","label":"Office Space & Supplies"},{"value":"print_graphic_design","label":"Print & Graphic Design"},{"value":"research_development","label":"Research & Development"},{"value":"sales_marketing","label":"Sales & Marketing"},{"value":"shipping_logistics","label":"Shipping & Logistics"},{"value":"wholesale","label":"Wholesale"},{"value":"construction_manufactoring","label":"Construction & Manufacturing"},{"value":"architects_engineers","label":"Architects & Engineers"},{"value":"building_materials","label":"Building Materials"},{"value":"chemicals_plastic","label":"Chemicals & Plastic"},{"value":"construction_services","label":"Construction Services"},{"value":"contractors_consultants","label":"Contractors & Consultants"},{"value":"factory_equipment","label":"Factory Equipment"},{"value":"garden_landscaping","label":"Garden & Landscaping"},{"value":"industrial_supplies","label":"Industrial Supplies"},{"value":"manufacturing","label":"Manufacturing"},{"value":"production_services","label":"Production Services"},{"value":"tools_equipment","label":"Tools & Equipment"},{"value":"education_training","label":"Education & Training"},{"value":"colleges_universities","label":"Colleges & Universities"},{"value":"courses_classes","label":"Courses & Classes"},{"value":"education_services","label":"Education Services"},{"value":"language_learning","label":"Language Learning"},{"value":"music_theater_classes","label":"Music & Theater Classes"},{"value":"school_high_school","label":"School & High School"},{"value":"specials_schools","label":"Specials Schools"},{"value":"vocational_training","label":"Vocational Training"},{"value":"electronics_technology","label":"Electronics & Technology"},{"value":"appliances_electronics","label":"Appliances & Electronics"},{"value":"audio_visual","label":"Audio & Visual"},{"value":"computers_phones","label":"Computers & Phones"},{"value":"internet_software","label":"Internet & Software"},{"value":"repair_services","label":"Repair & Services"},{"value":"events_entertainment","label":"Events & Entertainment"},{"value":"adult_entertainment","label":"Adult Entertainment"},{"value":"childrens_entertainment","label":"Children's Entertainment"},{"value":"clubbing_nightlife","label":"Clubbing & Nightlife"},{"value":"events_venues","label":"Events & Venues"},{"value":"gambling","label":"Gambling"},{"value":"gaming","label":"Gaming"},{"value":"museums_exibits","label":"Museums & Exhibits"},{"value":"music_movies","label":"Music & Movies"},{"value":"theater_opera","label":"Theater & Opera"},{"value":"wedding_party","label":"Wedding & Party"},{"value":"food_beverages_tobacco","label":"Food, Beverages & Tobacco"},{"value":"agriculture_produce","label":"Agriculture & Produce"},{"value":"asian_grocery_stores","label":"Asian Grocery Stores"},{"value":"bakery_pastry","label":"Bakery & Pastry"},{"value":"beer_wine","label":"Beer & Wine"},{"value":"beverages_liquor","label":"Beverages & Liquor"},{"value":"candy_chocolate","label":"Candy & Chocolate"},{"value":"coffee_tea","label":"Coffee & Tea"},{"value":"food_production","label":"Food Production"},{"value":"fruits_vegetables","label":"Fruits & Vegetables"},{"value":"grocery_stores_markets","label":"Grocery Stores & Markets"},{"value":"lunch_catering","label":"Lunch & Catering"},{"value":"meat_seafood_eggs","label":"Meat, Seafood & Eggs"},{"value":"smoking_tobacco","label":"Smoking & Tobacco"},{"value":"health_medical","label":"Health & Medical"},{"value":"clinics","label":"Clinics"},{"value":"dental_services","label":"Dental Services"},{"value":"diagnostics_testing","label":"Diagnostics & Testing"},{"value":"doctors_surgeons","label":"Doctors & Surgeons"},{"value":"health_equipment","label":"Health Equipment"},{"value":"hospital_emergency","label":"Hospital & Emergency"},{"value":"medical_specialists","label":"Medical Specialists"},{"value":"mental_health","label":"Mental Health"},{"value":"pharmacy_medicine","label":"Pharmacy & Medicine"},{"value":"physical_aids","label":"Physical Aids"},{"value":"pregnancy_children","label":"Pregnancy & Children"},{"value":"therapy_senior_health","label":"Therapy & Senior Health"},{"value":"vision_hearing","label":"Vision & Hearing"},{"value":"hobbies_crafts","label":"Hobbies & Crafts"},{"value":"art_handicraft","label":"Art & Handicraft"},{"value":"astrology_numerology","label":"Astrology & Numerology"},{"value":"fishing_hunting","label":"Fishing & Hunting"},{"value":"hobbies","label":"Hobbies"},{"value":"metal_stone_glass_work","label":"Metal, Stone & Glass Work"},{"value":"music_instruments","label":"Music & Instruments"},{"value":"needlework_knitting","label":"Needlework & Knitting"},{"value":"outdoor_activities","label":"Outdoor Activities"},{"value":"painting_paper","label":"Painting & Paper"},{"value":"home_garden","label":"Home & Garden"},{"value":"bathroom_kitchen","label":"Bathroom & Kitchen"},{"value":"cultural_goods","label":"Cultural Goods"},{"value":"decoration_interior","label":"Decoration & Interior"},{"value":"energy_heating","label":"Energy & Heating"},{"value":"fabric_stationary","label":"Fabric & Stationery"},{"value":"furniture_stores","label":"Furniture Stores"},{"value":"garden_pond","label":"Garden & Pond"},{"value":"home_garden_services","label":"Home & Garden Services"},{"value":"home_goods_stores","label":"Home Goods Stores"},{"value":"home_improvements","label":"Home Improvements"},{"value":"home_services","label":"Home Services"},{"value":"cleaning_service_providers","label":"Cleaning Service Providers"},{"value":"craftsman","label":"Craftsman"},{"value":"house_services","label":"House Services"},{"value":"house_sitting_security","label":"House Sitting & Security"},{"value":"moving_storage","label":"Moving & Storage"},{"value":"plumbing_sanitation","label":"Plumbing & Sanitation"},{"value":"repair_service_providers","label":"Repair Service Providers"},{"value":"legal_services_government","label":"Legal Services & Government"},{"value":"customs_toll","label":"Customs & Toll"},{"value":"government_department","label":"Government Department"},{"value":"law_enforcement","label":"Law Enforcement"},{"value":"lawyers_attorneys","label":"Lawyers & Attorneys"},{"value":"legal_service_providers","label":"Legal Service Providers"},{"value":"libraries_archives","label":"Libraries & Archives"},{"value":"municipal_department","label":"Municipal Department"},{"value":"registration_services","label":"Registration Services"},{"value":"media_publishing","label":"Media & Publishing"},{"value":"books_magazines","label":"Books & Magazines"},{"value":"media_information","label":"Media & Information"},{"value":"photography","label":"Photography"},{"value":"video_sound","label":"Video & Sound"},{"value":"money_insurance","label":"Money & Insurance"},{"value":"accounting_tax","label":"Accounting & Tax"},{"value":"banking_money","label":"Banking & Money"},{"value":"credit_debt_services","label":"Credit & Debt Services"},{"value":"insurance","label":"Insurance"},{"value":"investments_wealth","label":"Investments & Wealth"},{"value":"real_estate","label":"Real Estate"},{"value":"public_local_services","label":"Public & Local Services"},{"value":"employment_career","label":"Employment & Career"},{"value":"funeral_memorial","label":"Funeral & Memorial"},{"value":"housing_associations","label":"Housing Associations"},{"value":"kids_family","label":"Kids & Family"},{"value":"military_veteran","label":"Military & Veteran"},{"value":"nature_environment","label":"Nature & Environment"},{"value":"professional_organizations","label":"Professional Organizations"},{"value":"public_services_welfare","label":"Public Services & Welfare"},{"value":"religious_institutions","label":"Religious Institutions"},{"value":"shelters_homes","label":"Shelters & Homes"},{"value":"waste_management","label":"Waste Management"},{"value":"restaurants_bars","label":"Restaurants & Bars"},{"value":"african_pacific_cuisine","label":"African & Pacific Cuisine"},{"value":"bars_cafes","label":"Bars & Cafes"},{"value":"chinese_korean_cuisine","label":"Chinese & Korean Cuisine"},{"value":"european_cuisine","label":"European Cuisine"},{"value":"general_restaurants","label":"General Restaurants"},{"value":"japanese_cuisine","label":"Japanese Cuisine"},{"value":"mediterranean_cuisine","label":"Mediterranean Cuisine"},{"value":"middle_eastern_cuisine","label":"Middle Eastern Cuisine"},{"value":"north_south_american_cuisine","label":"North & South American Cuisine"},{"value":"southeast_asian_cuisine","label":"Southeast Asian Cuisine"},{"value":"takeaway","label":"Takeaway"},{"value":"vegetarian_diet","label":"Vegetarian & Diet"},{"value":"shopping_fashion","label":"Shopping & Fashion"},{"value":"accessories","label":"Accessories"},{"value":"clothing_underwear","label":"Clothing & Underwear"},{"value":"clothing_rental_repair","label":"Clothing Rental & Repair"},{"value":"costume_wedding","label":"Costume & Wedding"},{"value":"jewelry_watches","label":"Jewelry & Watches"},{"value":"malls_marketplaces","label":"Malls & Marketplaces"},{"value":"sports","label":"Sports"},{"value":"ball_games","label":"Ball Games"},{"value":"bat-and-ball_games","label":"Bat-and-ball Games"},{"value":"bowls_lawn_sports","label":"Bowls & Lawn Sports"},{"value":"dancing_gymnastics","label":"Dancing & Gymnastics"},{"value":"equipment_associations","label":"Equipment & Associations"},{"value":"extreme_sports","label":"Extreme Sports"},{"value":"fitness_weight_lifting","label":"Fitness & Weight Lifting"},{"value":"golf_ultimate","label":"Golf & Ultimate"},{"value":"hockey_ice_skating","label":"Hockey & Ice Skating"},{"value":"martial_arts_wrestling","label":"Martial arts & Wrestling"},{"value":"outdoor_winter_sports","label":"Outdoor & Winter Sports"},{"value":"shooting_target_sports","label":"Shooting & Target Sports"},{"value":"swimming_water_sports","label":"Swimming & Water Sports"},{"value":"tennis_racquet_sports","label":"Tennis & Racquet Sports"},{"value":"travel_vacation","label":"Travel & Vacation"},{"value":"accomodations_lodging","label":"Accommodation & Lodging"},{"value":"activities_tours","label":"Activities & Tours"},{"value":"airlines_air_travel","label":"Airlines & Air Travel"},{"value":"hotels","label":"Hotels"},{"value":"travel_agencies","label":"Travel Agencies"},{"value":"utilities","label":"Utilities"},{"value":"energy_power","label":"Energy & Power"},{"value":"oil_fuel","label":"Oil & Fuel"},{"value":"water_utilities","label":"Water Utilities"},{"value":"vehicles_transportation","label":"Vehicles & Transportation"},{"value":"air_water_transport","label":"Air & Water Transport"},{"value":"airports_parking","label":"Airports & Parking"},{"value":"auto_parts_wheels","label":"Auto Parts & Wheels"},{"value":"bicycles","label":"Bicycles"},{"value":"cars_trucks","label":"Cars & Trucks"},{"value":"motorcycle_powersports","label":"Motorcycle & Powersports"},{"value":"other_vehicles_trailers","label":"Other Vehicles & Trailers"},{"value":"taxis_public_transport","label":"Taxis & Public Transport"},{"value":"vehical_rental","label":"Vehicle Rental"},{"value":"vehicle_repair_fuel","label":"Vehicle Repair & Fuel"}],"example":"electronics_technology","aliases":["category"]},{"name":"sort","type":"enum","required":false,"description":"How to order the companies in a category.","on_invalid":"ignore","allowed_values":[{"value":"recommended","label":"Recommended (default)"},{"value":"latest_review","label":"Recently reviewed first"}],"default":"recommended"},{"name":"country","type":"string","required":false,"description":"Only companies based in this country (ISO-2 code, e.g. 'GB', 'US', 'DE'). Leave empty for all countries.","on_invalid":"ignore","example":"GB"},{"name":"min_rating","type":"enum","required":false,"description":"Only companies with at least this TrustScore.","on_invalid":"ignore","allowed_values":[{"value":"any","label":"Any"},{"value":"3","label":"3+"},{"value":"3.5","label":"3.5+"},{"value":"4","label":"4+"},{"value":"4.5","label":"4.5+"}],"default":"any","aliases":["trustscore"]},{"name":"claimed","type":"boolean","required":false,"description":"Only companies that have claimed their Trustpilot profile.","on_invalid":"ignore","default":false},{"name":"page","type":"integer","required":false,"description":"Page number (1–500; Trustpilot serves at most 500 pages per view).","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"companies[]{name, domain, trustScore, numReviews, categories, location} + categoryDetails{displayName, numberOfBusinesses, subcategories[]} + newestCompanies[] + recentlyReviewedCompanies[] + totalHits + totalPages + meta.pagination{page, has_more, next_cursor, total}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"categoryId":"electronics_technology"}},{"name":"category/companies","description":"List the companies in a Trustpilot category (20/page), ranked → each company's name, domain, TrustScore, review count, categories and location. Filter by country, minimum TrustScore and claimed status. Paginate with page.","required_params":["categoryId"],"optional_params":["page","locale","sort","country","min_rating","claimed"],"params":[{"name":"categoryId","type":"string","required":true,"description":"A Trustpilot category id/slug, e.g. 'electronics_technology', 'restaurants_bars' (or a trustpilot.com/categories/<slug> URL).","on_invalid":"reject","example":"electronics_technology","aliases":["category","category_id"]},{"name":"sort","type":"enum","required":false,"description":"How to order the companies in a category.","on_invalid":"ignore","allowed_values":[{"value":"recommended","label":"Recommended (default)"},{"value":"latest_review","label":"Recently reviewed first"}],"default":"recommended"},{"name":"country","type":"string","required":false,"description":"Only companies based in this country (ISO-2 code, e.g. 'GB', 'US', 'DE'). Leave empty for all countries.","on_invalid":"ignore","example":"GB"},{"name":"min_rating","type":"enum","required":false,"description":"Only companies with at least this TrustScore.","on_invalid":"ignore","allowed_values":[{"value":"any","label":"Any"},{"value":"3","label":"3+"},{"value":"3.5","label":"3.5+"},{"value":"4","label":"4+"},{"value":"4.5","label":"4.5+"}],"default":"any","aliases":["trustscore"]},{"name":"claimed","type":"boolean","required":false,"description":"Only companies that have claimed their Trustpilot profile.","on_invalid":"ignore","default":false},{"name":"page","type":"integer","required":false,"description":"Page number (1–500; Trustpilot serves at most 500 pages per view).","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"companies[]{name, domain, trustScore, numReviews, categories, location} + categoryDetails + meta.pagination","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"categoryId":"electronics_technology"}},{"name":"category/recently-reviewed","description":"The companies in a Trustpilot category that were reviewed most recently → name, domain, TrustScore, review count and location.","required_params":["categoryId"],"optional_params":["locale"],"params":[{"name":"categoryId","type":"string","required":true,"description":"A Trustpilot category id/slug, e.g. 'electronics_technology', 'restaurants_bars' (or a trustpilot.com/categories/<slug> URL).","on_invalid":"reject","example":"electronics_technology","aliases":["category","category_id"]},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"companies[]{name, domain, trustScore, numReviews, location} + categoryDetails","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"categoryId":"electronics_technology"}},{"name":"category/newest","description":"The newest companies added to a Trustpilot category → name, domain, TrustScore, review count and location.","required_params":["categoryId"],"optional_params":["locale"],"params":[{"name":"categoryId","type":"string","required":true,"description":"A Trustpilot category id/slug, e.g. 'electronics_technology', 'restaurants_bars' (or a trustpilot.com/categories/<slug> URL).","on_invalid":"reject","example":"electronics_technology","aliases":["category","category_id"]},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"companies[]{name, domain, trustScore, numReviews, location} + categoryDetails","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"categoryId":"electronics_technology"}},{"name":"category/details","description":"Details of a Trustpilot category → its display name, the number of businesses in it, and its subcategories.","required_params":["categoryId"],"optional_params":["locale"],"params":[{"name":"categoryId","type":"string","required":true,"description":"A Trustpilot category id/slug, e.g. 'electronics_technology', 'restaurants_bars' (or a trustpilot.com/categories/<slug> URL).","on_invalid":"reject","example":"electronics_technology","aliases":["category","category_id"]},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"categoryDetails{displayName, numberOfBusinesses, subcategories[]}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"categoryId":"electronics_technology"}},{"name":"category/search","description":"Search Trustpilot categories by keyword → matching categories with their id and display name (feed a categoryId into category/companies).","required_params":["query"],"optional_params":["locale"],"params":[{"name":"query","type":"string","required":true,"description":"A keyword to find matching Trustpilot categories.","on_invalid":"reject","example":"soft","aliases":["name","q"]},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"categories[]{categoryId, displayName}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike"}},{"name":"company/search","description":"Search Trustpilot for companies by name (10 matches/page) → each match's name, domain, TrustScore, star rating, review count, categories and location. Filter by minimum TrustScore and minimum review count. Also returns matching categories.","required_params":["query"],"optional_params":["page","cursor","min_rating","min_review_count","locale"],"params":[{"name":"query","type":"string","required":true,"description":"The company name/keyword to search for.","on_invalid":"reject","example":"bestbuy","aliases":["name","q"]},{"name":"min_rating","type":"enum","required":false,"description":"Only companies with at least this TrustScore.","on_invalid":"ignore","allowed_values":[{"value":"any","label":"Any"},{"value":"3","label":"3+"},{"value":"4","label":"4+"},{"value":"4.5","label":"4.5+"}],"default":"any","aliases":["trustscore"]},{"name":"min_review_count","type":"enum","required":false,"description":"Only companies with at least this many reviews.","on_invalid":"ignore","allowed_values":[{"value":"any","label":"Any"},{"value":"25","label":"25+"},{"value":"50","label":"50+"},{"value":"100","label":"100+"},{"value":"250","label":"250+"},{"value":"500","label":"500+"}],"default":"any","aliases":["numberOfReviews"]},{"name":"page","type":"integer","required":false,"description":"Page number (1–500; Trustpilot serves at most 500 pages per view).","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"matches[]{name, domain, trustScore, stars, numReviews, categories, location, businessUnitId} + categories[] + pagination + meta.pagination{page, has_more, next_cursor, total}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike"}},{"name":"consumer/details","description":"A Trustpilot consumer's public profile → display name, country, number of reviews written, and review statistics. By consumer id.","required_params":["consumer_id"],"optional_params":["locale"],"params":[{"name":"consumer_id","type":"string","required":true,"description":"The Trustpilot consumer id (from a review's consumer, or a trustpilot.com/users/… URL).","on_invalid":"reject","example":"5fafc38b32ed7f0019d27bc5","aliases":["consumerId","userId","user_id"]},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"consumer{displayName*, country, numberOfReviews, verified} + statistics (*name/country redacted by default)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"consumer/reviews","description":"Every review a Trustpilot consumer has written across all companies → each review's company, rating, title, text and date. Paginate with page.","required_params":["consumer_id"],"optional_params":["page","cursor","locale"],"params":[{"name":"consumer_id","type":"string","required":true,"description":"The Trustpilot consumer id (from a review's consumer, or a trustpilot.com/users/… URL).","on_invalid":"reject","example":"5fafc38b32ed7f0019d27bc5","aliases":["consumerId","userId","user_id"]},{"name":"page","type":"integer","required":false,"description":"Page number (1–500; Trustpilot serves at most 500 pages per view).","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"reviews[]{companyName, companyDomain, rating, title, text, date, isVerified} + meta.pagination{page, has_more, next_cursor}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"reviewer/profile","description":"Alias of consumer/details + consumer/reviews: a reviewer's profile AND every review they have written. By consumer id.","required_params":["consumer_id"],"optional_params":["page","cursor","locale"],"params":[{"name":"consumer_id","type":"string","required":true,"description":"The Trustpilot consumer id (from a review's consumer, or a trustpilot.com/users/… URL).","on_invalid":"reject","example":"5fafc38b32ed7f0019d27bc5","aliases":["consumerId","userId","user_id"]},{"name":"page","type":"integer","required":false,"description":"Page number (1–500; Trustpilot serves at most 500 pages per view).","on_invalid":"reject","default":1,"minimum":1,"maximum":500},{"name":"cursor","type":"string","required":false,"description":"Next page: pass the previous response's meta.pagination.next_cursor (the 'Next' button does this automatically).","on_invalid":"ignore"},{"name":"locale","type":"enum","required":false,"description":"Trustpilot country/locale (the website footer's country selector). en-US is fully served today; other locales are accepted and currently resolve to the en-US view (per-locale routing is being added).","on_invalid":"ignore","allowed_values":[{"value":"da-DK","label":"Denmark"},{"value":"de-AT","label":"Austria"},{"value":"de-CH","label":"Switzerland (DE)"},{"value":"de-DE","label":"Germany"},{"value":"en-AU","label":"Australia"},{"value":"en-CA","label":"Canada"},{"value":"en-GB","label":"United Kingdom"},{"value":"en-IE","label":"Ireland"},{"value":"en-NZ","label":"New Zealand"},{"value":"en-US","label":"United States"},{"value":"es-ES","label":"Spain"},{"value":"fi-FI","label":"Finland"},{"value":"fr-BE","label":"Belgium (FR)"},{"value":"nl-BE","label":"Belgium (NL)"},{"value":"fr-FR","label":"France"},{"value":"it-IT","label":"Italy"},{"value":"ja-JP","label":"Japan"},{"value":"nb-NO","label":"Norway"},{"value":"nl-NL","label":"Netherlands"},{"value":"pl-PL","label":"Poland"},{"value":"pt-BR","label":"Brazil"},{"value":"pt-PT","label":"Portugal"},{"value":"sv-SE","label":"Sweden"}],"default":"en-US","example":"en-US"}],"returns":"profile{displayName*, country, numberOfReviews, verified, stats} + reviews[]{companyName, companyDomain, rating, title, text, date, isVerified} + meta.pagination (*redacted by default)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":null}]},{"name":"trustradius","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"TrustRadius API — B2B software reviews, ratings & product profiles from trustradius.com and GetApp","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/trustradius/v1","spec_available":true,"actions":[{"name":"product/reviews","description":"Fetch verified user reviews and ratings for a B2B software product from TrustRadius (up to 639 reviews with full verbatim text, reviewer job title, company industry and size) or GetApp. Filter by public-only or include all review visibility levels.","required_params":["product_slug"],"optional_params":["source","skip","limit","fetch_all","include_non_public","category_path"],"params":[{"name":"product_slug","type":"string","required":true,"description":"Product slug on the source site (the URL segment, e.g. 'slack'). Resolve one from a URL via the product/resolve action.","on_invalid":"reject","example":"slack"},{"name":"source","type":"enum","required":false,"description":"Review platform to fetch from. Defaults to trustradius.com (full pagination, up to 639 reviews). getapp requires category_path and returns a partial page snapshot. capterra and g2 are not currently available.","on_invalid":"ignore","allowed_values":[{"value":"trustradius","label":"TrustRadius — full review fetch (up to 639 reviews)"},{"value":"getapp","label":"GetApp — partial page snapshot"},{"value":"capterra","label":"Capterra — not available (use getapp)"},{"value":"g2","label":"G2 — not available"}],"default":"trustradius","example":"trustradius"},{"name":"skip","type":"integer","required":false,"description":"Number of reviews to skip (pagination offset; TrustRadius skip/limit mode).","on_invalid":"ignore","default":0,"example":0,"minimum":0,"aliases":["offset"]},{"name":"limit","type":"integer","required":false,"description":"Reviews per page (1-100). Omit (or set fetch_all) to pull everything.","on_invalid":"ignore","example":50,"minimum":1,"maximum":100},{"name":"fetch_all","type":"boolean","required":false,"description":"TrustRadius: fetch ALL reviews in one pass (ignores skip/limit).","on_invalid":"ignore","default":false,"example":true},{"name":"include_non_public","type":"boolean","required":false,"description":"Include reviews not marked public (default false = public only).","on_invalid":"ignore","default":false,"example":false},{"name":"category_path","type":"string","required":false,"description":"GetApp-only: the category/product path (e.g. 'collaboration-software/a/slack/reviews/'). Required when source=getapp.","on_invalid":"reject","example":"collaboration-software/a/slack/reviews/"}],"returns":"source, product_slug, reviews[] (title, rating_overall, verbatims, reviewer job_type/company_industry/company_size, …), pagination, pages_fetched, public_only","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"source":"trustradius","product_slug":"slack","fetch_all":true}},{"name":"product/detail","description":"product metadata (name, description, rating, category)","required_params":["product_slug"],"optional_params":["source","category_path"],"params":[{"name":"product_slug","type":"string","required":true,"description":"Product slug on the source site (the URL segment, e.g. 'slack'). Resolve one from a URL via the product/resolve action.","on_invalid":"reject","example":"slack"},{"name":"source","type":"enum","required":false,"description":"Review platform to fetch from. Defaults to trustradius.com (full pagination, up to 639 reviews). getapp requires category_path and returns a partial page snapshot. capterra and g2 are not currently available.","on_invalid":"ignore","allowed_values":[{"value":"trustradius","label":"TrustRadius — full review fetch (up to 639 reviews)"},{"value":"getapp","label":"GetApp — partial page snapshot"},{"value":"capterra","label":"Capterra — not available (use getapp)"},{"value":"g2","label":"G2 — not available"}],"default":"trustradius","example":"trustradius"},{"name":"category_path","type":"string","required":false,"description":"GetApp-only: the category/product path (e.g. 'collaboration-software/a/slack/reviews/'). Required when source=getapp.","on_invalid":"reject","example":"collaboration-software/a/slack/reviews/"}],"returns":"source, product{} — name, slug, description, rating_avg, rating_count, rating_scale_min/max (TrustRadius scores out of 10), category, category_path, url. source=getapp additionally returns vendor, pricing, features and integrations.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"source":"trustradius","product_slug":"slack"}},{"name":"product/resolve","description":"resolve a TrustRadius/GetApp/Capterra/G2 URL → source + slug","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"A TrustRadius / GetApp / Capterra / G2 product URL to parse into {source, product_slug}.","on_invalid":"reject","example":"https://www.trustradius.com/products/slack/reviews"}],"returns":"source, product_slug (plus product_id, category_path, or availability note depending on the platform)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":0},"example_params":null}]},{"name":"turo","category":{"id":"travel","title":"Travel & Lodging"},"title":"Turo API scraper — search peer-to-peer car rentals & car sharing on turo.com: find cars by location and dates with price/make/type/sort filters, get vehicle specs, pricing calendars and similar cars, plus full host profiles, a host's whole fleet and host reviews — make, model, year, daily price, ratings, trips, photos and location, no account required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/turo/v1","spec_available":true,"actions":[{"name":"search","description":"Search Turo for rentable cars at a location and date range. Filter by make, model, vehicle type (CAR/SUV/MINIVAN/TRUCK/VAN), max price and sort order; paginated (~200 cars/page). Returns the full result page as clean JSON. (If the site serves a bot check the engine retries and, only if it still cannot pass, returns a clean TARGET_BLOCKED — never fabricated data.)","required_params":["location"],"optional_params":["start_date","end_date","start_time","end_time","country","make","model","vehicle_type","max_price","sort","page"],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — a US city, address or airport ('Los Angeles, CA, USA', 'Miami, FL', 'LAX airport'). Resolved to coordinates automatically.","on_invalid":"reject","example":"Los Angeles, CA, USA","aliases":["query","city","q"]},{"name":"start_date","type":"string","required":false,"description":"Trip start date (YYYY-MM-DD). Defaults to ~14 days out.","on_invalid":"ignore","example":"2026-10-07","aliases":["startDate","pickup_date"]},{"name":"end_date","type":"string","required":false,"description":"Trip end date (YYYY-MM-DD). Defaults to start + 3 days.","on_invalid":"ignore","example":"2026-10-10","aliases":["endDate","dropoff_date"]},{"name":"start_time","type":"string","required":false,"description":"Pickup time of day (HH:MM, 24h). Default 10:00.","on_invalid":"ignore","default":"10:00","example":"10:00"},{"name":"end_time","type":"string","required":false,"description":"Return time of day (HH:MM, 24h). Default 10:00.","on_invalid":"ignore","default":"10:00","example":"10:00"},{"name":"country","type":"string","required":false,"description":"ISO-2 market country. Default US (Turo's core market).","on_invalid":"ignore","default":"US","example":"US"},{"name":"make","type":"string","required":false,"description":"Filter by car make (e.g. Tesla, BMW, Toyota). See the `makes` action for the full supported list.","on_invalid":"ignore","example":"Tesla"},{"name":"model","type":"string","required":false,"description":"Filter by model (use together with make, e.g. Model 3).","on_invalid":"ignore","example":"Model 3"},{"name":"vehicle_type","type":"enum","required":false,"description":"Filter by body type. One of: CAR, SUV, MINIVAN, TRUCK, VAN, CARGO_VAN, BOX_TRUCK.","on_invalid":"ignore","allowed_values":[{"value":"CAR","label":"Cars"},{"value":"SUV","label":"SUVs"},{"value":"MINIVAN","label":"Minivans"},{"value":"TRUCK","label":"Trucks"},{"value":"VAN","label":"Vans"},{"value":"CARGO_VAN","label":"Cargo vans"},{"value":"BOX_TRUCK","label":"Box trucks"}],"example":"SUV"},{"name":"max_price","type":"number","required":false,"description":"Only cars at or below this average daily price (in the market currency, USD for US).","on_invalid":"ignore","example":150,"minimum":0},{"name":"sort","type":"enum","required":false,"description":"Sort order. One of: RELEVANCE (default), PRICE_LOW, PRICE_HIGH, DISTANCE.","on_invalid":"ignore","allowed_values":[{"value":"RELEVANCE","label":"Relevance"},{"value":"PRICE_LOW","label":"Price: low to high"},{"value":"PRICE_HIGH","label":"Price: high to low"},{"value":"DISTANCE","label":"Distance away"}],"default":"RELEVANCE","example":"PRICE_LOW"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page until meta has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200}],"returns":"cars[]{vehicle_id, make, model, year, trim, type, transmission, price_per_day{amount,currency}, rating, trip_count, is_all_star_host, image, location{city,state,latitude,longitude}, host{host_id,first_name,is_all_star_host,url}, url} + meta{total_hits, page, has_more, search_location}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"location":"Miami, FL, USA"}},{"name":"vehicle.detail","description":"Full detail for one Turo car: make/model/year/trim, transmission, seats, doors, luggage and fuel/battery specs, the categorized feature list, host card, ratings, and the price calendar. The protected listing card (host card + sub-ratings) rides a Cloudflare-guarded endpoint (best-effort, bounded retry); the specs, feature list and price calendar always come back from the open endpoints.","required_params":["vehicle_id"],"optional_params":["start_date","end_date","start_time","end_time"],"params":[{"name":"vehicle_id","type":"string","required":true,"description":"Turo vehicle/listing id — the number at the end of a car URL (turo.com/.../<vehicle_id>) or `vehicle_id` from search.","on_invalid":"reject","example":"3613768","aliases":["vehicleId","id"]},{"name":"start_date","type":"string","required":false,"description":"Trip start date (YYYY-MM-DD). Defaults to ~14 days out.","on_invalid":"ignore","example":"2026-10-07","aliases":["startDate","pickup_date"]},{"name":"end_date","type":"string","required":false,"description":"Trip end date (YYYY-MM-DD). Defaults to start + 3 days.","on_invalid":"ignore","example":"2026-10-10","aliases":["endDate","dropoff_date"]},{"name":"start_time","type":"string","required":false,"description":"Pickup time of day (HH:MM, 24h). Default 10:00.","on_invalid":"ignore","default":"10:00","example":"10:00"},{"name":"end_time","type":"string","required":false,"description":"Return time of day (HH:MM, 24h). Default 10:00.","on_invalid":"ignore","default":"10:00","example":"10:00"}],"returns":"vehicle{vehicle_id, make, model, year, trim, color, vin, transmission, seats, doors, luggage, fuel_type, battery_range_miles, image, url, description, location, host{...}, ratings{overall, count, categories[]}, number_of_reviews, number_of_trips} + features[]{category, items[]} + price{average_daily, currency} + card_blocked(bool)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"vehicle_id":"3613768"}},{"name":"vehicle.features","description":"Specs + the full categorized feature list for one car (transmission, seats, doors, luggage capacity, fuel type, battery range, and features like Backup camera, All-wheel drive, Apple CarPlay, grouped by category).","required_params":["vehicle_id"],"optional_params":[],"params":[{"name":"vehicle_id","type":"string","required":true,"description":"Turo vehicle/listing id — the number at the end of a car URL (turo.com/.../<vehicle_id>) or `vehicle_id` from search.","on_invalid":"reject","example":"3613768","aliases":["vehicleId","id"]}],"returns":"specs{transmission, seats, doors, luggage, large_luggage, small_luggage, fuel_type, battery_range_miles, fuel_economy} + features[]{category, items[]{label, value}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"vehicle_id":"3613768"}},{"name":"vehicle.pricing","description":"Daily price calendar for one car across a date window: per-day price + day of week. Defaults to the next ~3 months if no window is given.","required_params":["vehicle_id"],"optional_params":["start_date","end_date"],"params":[{"name":"vehicle_id","type":"string","required":true,"description":"Turo vehicle/listing id — the number at the end of a car URL (turo.com/.../<vehicle_id>) or `vehicle_id` from search.","on_invalid":"reject","example":"3613768","aliases":["vehicleId","id"]},{"name":"start_date","type":"string","required":false,"description":"Calendar window start (YYYY-MM-DD). Default: today.","on_invalid":"ignore","example":"2026-09-24"},{"name":"end_date","type":"string","required":false,"description":"Calendar window end (YYYY-MM-DD). Default: ~3 months out.","on_invalid":"ignore","example":"2026-12-22"}],"returns":"currency + days[]{date, day_of_week, price} + price_range{min, max} + average_price","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"vehicle_id":"3613768"}},{"name":"vehicle.similar","description":"Cars similar to a given make/model near a location and dates — a make/model-seeded list of rentable Turo cars (price, rating, host, photo, location), and the most dependable way to get one. Pass make + model + location; vehicle_id is optional (used only to exclude that exact car).","required_params":["make","location"],"optional_params":["model","vehicle_id","start_date","end_date","start_time","end_time","country","max_results"],"params":[{"name":"make","type":"string","required":true,"description":"Car make to seed similar results (e.g. Tesla, BMW).","on_invalid":"reject","example":"Tesla"},{"name":"model","type":"string","required":false,"description":"Model to seed similar results (e.g. Model 3, 5 Series).","on_invalid":"ignore","example":"Model 3"},{"name":"location","type":"string","required":true,"description":"Where to search — a US city, address or airport ('Los Angeles, CA, USA', 'Miami, FL', 'LAX airport'). Resolved to coordinates automatically.","on_invalid":"reject","example":"Los Angeles, CA, USA","aliases":["query","city","q"]},{"name":"start_date","type":"string","required":false,"description":"Trip start date (YYYY-MM-DD). Defaults to ~14 days out.","on_invalid":"ignore","example":"2026-10-07","aliases":["startDate","pickup_date"]},{"name":"end_date","type":"string","required":false,"description":"Trip end date (YYYY-MM-DD). Defaults to start + 3 days.","on_invalid":"ignore","example":"2026-10-10","aliases":["endDate","dropoff_date"]},{"name":"start_time","type":"string","required":false,"description":"Pickup time of day (HH:MM, 24h). Default 10:00.","on_invalid":"ignore","default":"10:00","example":"10:00"},{"name":"end_time","type":"string","required":false,"description":"Return time of day (HH:MM, 24h). Default 10:00.","on_invalid":"ignore","default":"10:00","example":"10:00"},{"name":"country","type":"string","required":false,"description":"ISO-2 market country. Default US (Turo's core market).","on_invalid":"ignore","default":"US","example":"US"},{"name":"vehicle_id","type":"string","required":false,"description":"Optional: a vehicle id to exclude from the results.","on_invalid":"ignore","example":"3613768"},{"name":"max_results","type":"integer","required":false,"description":"How many similar cars to return (1-20). Default 9.","on_invalid":"ignore","default":9,"example":9,"minimum":1,"maximum":20}],"returns":"cars[]{vehicle_id, make, model, year, type, transmission, price_per_day{amount,currency}, rating, image, location{...}, host{...}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"Tesla","model":"Model 3","location":"Miami, FL, USA"}},{"name":"host.profile","description":"Full Turo host (driver) profile: first name, All-Star/Pro status, member-since, response rate & time, ratings from renters and from car owners, rental counts and account verifications (phone/email/ID). Last name only with include_pii=true.","required_params":["host_id"],"optional_params":[],"params":[{"name":"host_id","type":"string","required":true,"description":"Turo host/driver id — the number in a host URL (turo.com/us/en/drivers/<host_id>) or `host.host_id` from a result.","on_invalid":"reject","example":"33962137","aliases":["driverId","driver_id","id"]}],"returns":"host{host_id, first_name, is_all_star_host, is_pro_host, image, url, member_since{month,year}, response_rate, response_time, bio, rating_from_renters, rating_to_hundredth, rentals_from_renters, ratings_from_renters_count, rentals_from_owners, verifications[]}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"host_id":"33962137"}},{"name":"host.cars","description":"Every car a Turo host has listed, paginated — make/model/year, daily price, rating, review count, location and photo per car.","required_params":["host_id"],"optional_params":["page"],"params":[{"name":"host_id","type":"string","required":true,"description":"Turo host/driver id — the number in a host URL (turo.com/us/en/drivers/<host_id>) or `host.host_id` from a result.","on_invalid":"reject","example":"33962137","aliases":["driverId","driver_id","id"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page until meta has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200}],"returns":"cars[]{vehicle_id, make, model, year, trim, transmission, price_per_day{amount,currency}, rating, review_count, image, location{...}, url} + meta{page, total_pages, has_more}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"host_id":"33962137"}},{"name":"host.reviews","description":"Reviews left for a Turo host by their guests, paginated — star rating, the review text, date and the host's reply. Reviewer first name is kept (public on Turo); last name only with include_pii=true.","required_params":["host_id"],"optional_params":["page","per_page"],"params":[{"name":"host_id","type":"string","required":true,"description":"Turo host/driver id — the number in a host URL (turo.com/us/en/drivers/<host_id>) or `host.host_id` from a result.","on_invalid":"reject","example":"33962137","aliases":["driverId","driver_id","id"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page until meta has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200},{"name":"per_page","type":"integer","required":false,"description":"Reviews per page (1-50). Default 20.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50,"aliases":["itemsPerPage"]}],"returns":"reviews[]{rating, text, date, reviewer{first_name, host_id}, host_reply} + meta{page, total_pages, per_page, has_more}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"host_id":"33962137"}},{"name":"location.autocomplete","description":"Resolve a free-text place into Turo search locations (cities and airports) with id, type and coordinates — handy to confirm the place before searching.","required_params":["location"],"optional_params":[],"params":[{"name":"location","type":"string","required":true,"description":"Place text to resolve (city / airport / address).","on_invalid":"reject","example":"Miami","aliases":["query","q","searchTerm"]}],"returns":"results[]{id, label, type, latitude, longitude}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"location":"Los Angeles"}},{"name":"makes","description":"The full list of car makes Turo supports in a market (e.g. Tesla, BMW, Toyota, Ferrari) — useful as the allowed values for the search `make` filter.","required_params":[],"optional_params":["country"],"params":[{"name":"country","type":"string","required":false,"description":"ISO-2 market country. Default US (Turo's core market).","on_invalid":"ignore","default":"US","example":"US"}],"returns":"makes[] (string list) + count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"country":"US"}}]},{"name":"twitch","category":{"id":"social","title":"Social Media"},"title":"Twitch API scraper — channel, live stream, VOD, clip, search and directory data: channel profile (id, display name, description, follower count, partner/affiliate status, profile image), live stream status (viewer count, game/category, title, started-at), a streamer's past broadcasts (VODs) and top clips, channel and category/game search, the top live games with viewer counts, and the top live streams site-wide — all from Twitch's public GraphQL, no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/twitch/v1","spec_available":true,"actions":[{"name":"channel","description":"Full channel/user profile by login: id, display name, description, created-at, profile and banner image, follower count, partner/affiliate/staff flags, and the current live stream (title, viewer count, game/category, started-at) if live.","required_params":["login"],"optional_params":[],"params":[{"name":"login","type":"string","required":true,"description":"Twitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.","on_invalid":"reject","example":"shroud","aliases":["channel","user","username"]}],"returns":"channel{id, login, display_name, description, created_at, profile_image, banner_image, follower_count, is_partner, is_affiliate, is_live, stream{...}, url}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"login":"shroud"}},{"name":"stream","description":"Live status of a channel: whether it is live right now and, if so, the stream id, title, viewer count, game/category, started-at timestamp and a 1080p thumbnail. Returns is_live=false (honest-empty) for an offline channel.","required_params":["login"],"optional_params":[],"params":[{"name":"login","type":"string","required":true,"description":"Twitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.","on_invalid":"reject","example":"shroud","aliases":["channel","user","username"]}],"returns":"{login, display_name, is_live, stream{id, title, viewer_count, started_at, game{...}, thumbnail}}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"login":"shroud"}},{"name":"videos","description":"A channel's past broadcasts / VODs (most recent first), up to 100 in one page: id, title, duration, view count, published-at, game/category and thumbnail. Note: Twitch integrity-gates pagination beyond the first page for keyless access.","required_params":["login"],"optional_params":["limit","type","sort"],"params":[{"name":"login","type":"string","required":true,"description":"Twitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.","on_invalid":"reject","example":"shroud","aliases":["channel","user","username"]},{"name":"limit","type":"integer","required":false,"description":"How many VODs to return (1-100, single page).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"type","type":"enum","required":false,"description":"Which kind of videos: ARCHIVE (past broadcasts, default), HIGHLIGHT, UPLOAD or ALL.","on_invalid":"ignore","allowed_values":[{"value":"ARCHIVE","label":"Past broadcasts"},{"value":"HIGHLIGHT","label":"Highlights"},{"value":"UPLOAD","label":"Uploads"},{"value":"ALL","label":"All types"}],"default":"ARCHIVE","example":"ARCHIVE"},{"name":"sort","type":"enum","required":false,"description":"Order: TIME (newest first, default) or VIEWS (most viewed).","on_invalid":"ignore","allowed_values":[{"value":"TIME","label":"Newest first"},{"value":"VIEWS","label":"Most viewed"}],"default":"TIME","example":"TIME"}],"returns":"videos[]{id, title, duration_seconds, view_count, published_at, game{...}, thumbnail, url} + meta{has_more}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"login":"pokimane","limit":5}},{"name":"clips","description":"Top clips of a channel, ranked by views, up to 100 in one page: id, slug, title, view count, created-at, duration, game/category, the clip creator and the clip URL. Filter the time window with `period`. Pagination beyond page one is integrity-gated.","required_params":["login"],"optional_params":["limit","period"],"params":[{"name":"login","type":"string","required":true,"description":"Twitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.","on_invalid":"reject","example":"shroud","aliases":["channel","user","username"]},{"name":"limit","type":"integer","required":false,"description":"How many clips to return (1-100).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"period","type":"enum","required":false,"description":"Time window for top clips: LAST_DAY, LAST_WEEK (default), LAST_MONTH or ALL_TIME.","on_invalid":"ignore","allowed_values":[{"value":"LAST_DAY","label":"Last 24 hours"},{"value":"LAST_WEEK","label":"Last 7 days"},{"value":"LAST_MONTH","label":"Last 30 days"},{"value":"ALL_TIME","label":"All time"}],"default":"LAST_WEEK","example":"LAST_WEEK"}],"returns":"clips[]{id, slug, title, view_count, created_at, duration_seconds, game{...}, clipper, url} + meta{has_more}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"login":"xqc","limit":5,"period":"ALL_TIME"}},{"name":"search_channels","description":"Search Twitch channels by name/keyword. Returns matching channels with id, login, display name, description, follower count, partner/affiliate flags and live status (viewer count + game when live).","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search term.","on_invalid":"reject","example":"valorant","aliases":["q","text","term"]},{"name":"limit","type":"integer","required":false,"description":"Max channels to return (1-30).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":30}],"returns":"channels[]{id, login, display_name, description, follower_count, is_partner, is_live, viewer_count, game{...}, url}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"ninja","limit":5}},{"name":"search_categories","description":"Search Twitch games/categories by name. Returns matching categories with id, name, display name, current live viewer count and box-art image.","required_params":["query"],"optional_params":["limit"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text search term.","on_invalid":"reject","example":"valorant","aliases":["q","text","term"]},{"name":"limit","type":"integer","required":false,"description":"Max categories to return (1-30).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":30}],"returns":"categories[]{id, name, display_name, viewer_count, box_art, url}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"valorant","limit":5}},{"name":"top_games","description":"The top games/categories on Twitch right now, ranked by live viewers: id, name, display name, current viewer count, content tags and box-art image. Up to 30.","required_params":[],"optional_params":["limit"],"params":[{"name":"limit","type":"integer","required":false,"description":"How many top games to return (1-30).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":30}],"returns":"games[]{id, name, display_name, viewer_count, tags[], box_art, url}","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":5}},{"name":"top_streams","description":"The top live streams on Twitch right now, ranked by viewers: stream id, title, viewer count, started-at, the broadcasting channel (login, display name) and the game/category. Up to 30.","required_params":[],"optional_params":["limit"],"params":[{"name":"limit","type":"integer","required":false,"description":"How many top streams to return (1-30).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":30}],"returns":"streams[]{id, title, viewer_count, started_at, channel{login, display_name}, game{...}, thumbnail, url}","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":5}},{"name":"game","description":"Game/category detail by name plus its top live streams: category id, display name, total live viewers, description, avatar — and the top channels (up to 30) currently streaming it, each with title, viewer count and broadcaster.","required_params":["name"],"optional_params":["limit"],"params":[{"name":"name","type":"string","required":true,"description":"Exact game/category name as Twitch lists it (e.g. 'VALORANT', 'Just Chatting', 'Counter-Strike'). Use search_categories to resolve a fuzzy name first.","on_invalid":"reject","example":"VALORANT","aliases":["game","category","q"]},{"name":"limit","type":"integer","required":false,"description":"How many of the game's top live streams to return (1-30).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":30}],"returns":"game{id, name, display_name, viewer_count, description, avatar} + streams[]{id, title, viewer_count, channel{login, display_name}, url}","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"VALORANT","limit":5}},{"name":"schedule","description":"A channel's stream schedule: the next upcoming stream (start, title, category) plus the channel's recurring weekly schedule segments — each with start/end time, title, cancelled flag and the planned game/category. Returns honest-empty when the channel has not published a schedule.","required_params":["login"],"optional_params":[],"params":[{"name":"login","type":"string","required":true,"description":"Twitch channel login name — the handle in twitch.tv/<login> (e.g. 'shroud', 'pokimane', 'xqc'). Case-insensitive.","on_invalid":"reject","example":"shroud","aliases":["channel","user","username"]}],"returns":"{login, display_name, schedule_id, next_segment{start_at, title, categories[]}, segments[]{id, start_at, end_at, title, is_cancelled, categories[]{id, name, box_art}}}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"login":"lirik"}},{"name":"game_clips","description":"Top clips for a whole game/category (site-wide, across all channels), ranked by views, up to 100 in one page: id, slug, title, view count, created-at, duration, the broadcaster the clip is from, the clip creator and the URL. Filter the time window with `period`. Pagination beyond page one is integrity-gated.","required_params":["name"],"optional_params":["limit","period"],"params":[{"name":"name","type":"string","required":true,"description":"Exact game/category name as Twitch lists it (e.g. 'VALORANT', 'Just Chatting', 'Counter-Strike'). Use search_categories to resolve a fuzzy name first.","on_invalid":"reject","example":"VALORANT","aliases":["game","category","q"]},{"name":"limit","type":"integer","required":false,"description":"How many clips to return (1-100).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"period","type":"enum","required":false,"description":"Time window for top clips: LAST_DAY, LAST_WEEK (default), LAST_MONTH or ALL_TIME.","on_invalid":"ignore","allowed_values":[{"value":"LAST_DAY","label":"Last 24 hours"},{"value":"LAST_WEEK","label":"Last 7 days"},{"value":"LAST_MONTH","label":"Last 30 days"},{"value":"ALL_TIME","label":"All time"}],"default":"LAST_WEEK","example":"LAST_WEEK"}],"returns":"clips[]{id, slug, title, view_count, created_at, duration_seconds, broadcaster{login, display_name}, clipper, game{...}, url} + meta{has_more}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"VALORANT","limit":5,"period":"ALL_TIME"}},{"name":"game_videos","description":"Top past broadcasts / VODs for a whole game/category (site-wide, across all channels), up to 100 in one page: id, title, duration, view count, published-at, the owning channel and a thumbnail. Order by views (default) or newest. Pagination beyond page one is integrity-gated.","required_params":["name"],"optional_params":["limit","sort"],"params":[{"name":"name","type":"string","required":true,"description":"Exact game/category name as Twitch lists it (e.g. 'VALORANT', 'Just Chatting', 'Counter-Strike'). Use search_categories to resolve a fuzzy name first.","on_invalid":"reject","example":"VALORANT","aliases":["game","category","q"]},{"name":"limit","type":"integer","required":false,"description":"How many VODs to return (1-100).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Order: VIEWS (most viewed, default) or TIME (newest first).","on_invalid":"ignore","allowed_values":[{"value":"VIEWS","label":"Most viewed"},{"value":"TIME","label":"Newest first"}],"default":"VIEWS","example":"VIEWS"}],"returns":"videos[]{id, title, duration_seconds, view_count, published_at, owner{login, display_name}, game{...}, thumbnail, url} + meta{has_more}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"Just Chatting","limit":5}},{"name":"team","description":"A Twitch team profile by name plus its member channels: team id, name, display name, description, logo/banner image — and the member channels (up to 100), each with login, display name, partner/affiliate status and current live status (viewer count + game when live).","required_params":["name"],"optional_params":["limit"],"params":[{"name":"name","type":"string","required":true,"description":"Twitch team name/slug (lowercase, as in the team page URL twitch.tv/team/<name> — e.g. 'tsm', 'fnatic', 'cloud9').","on_invalid":"reject","example":"tsm","aliases":["team","slug"]},{"name":"limit","type":"integer","required":false,"description":"Max member channels to return (1-100).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":100}],"returns":"team{id, name, display_name, description, logo, banner} + members[]{login, display_name, is_partner, is_live, viewer_count, game{...}, url}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"tsm","limit":5}}]},{"name":"twitter","category":{"id":"other","title":"Other"},"title":"Twitter / X Data API — profiles, tweets, replies, media, likes, tweet detail + replies, search (top/latest/people/media), followers/following, list timelines. Account-pool backed: no official API key, no quota.","version":"0.2.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/twitter/v1","spec_available":true,"actions":[{"name":"profile","description":"User profile by @username — name, bio, followers, following, tweet/like counts, verified, created date, location, website, avatar/banner.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"The @handle (with or without @).","on_invalid":"reject","example":"nasa"}],"returns":"user{user_id, name, username, description, followers, following, tweets, likes, media_count, verified, created_at, location, website, profile_image, profile_banner, pinned_tweet_ids, url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_by_id","description":"User profile by numeric user_id (same fields as profile).","required_params":["user_id"],"optional_params":[],"params":[{"name":"user_id","type":"string","required":true,"description":"Numeric user id.","on_invalid":"reject","example":"11348282"}],"returns":"user{...} (same shape as profile)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_tweets","description":"A user's tweets — full text, engagement (likes/retweets/replies/quotes/views), media, quoted/retweeted, with cursor pagination.","required_params":["username"],"optional_params":["user_id","limit","cursor"],"params":[{"name":"username","type":"string","required":false,"description":"@handle (resolved to id) — or pass user_id.","on_invalid":"reject","example":"nasa"},{"name":"user_id","type":"string","required":false,"description":"Numeric user id (skips the handle lookup).","on_invalid":"reject","example":"11348282"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"tweets[]{tweet_id,text,created_at,likes,retweets,replies,quotes,views,media[],hashtags,mentions,urls,quoted,retweeted,author,url} + next_cursor + user_id","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_replies","description":"A user's tweets AND replies (timeline incl. replies). Each reply also carries reply_to_text (the parent tweet's text, ≤280 chars) + reply_to_author so a reply is interpretable without a second call — resolved from the conversation already in the response.","required_params":["username"],"optional_params":["user_id","limit","cursor"],"params":[{"name":"username","type":"string","required":false,"description":"@handle — or pass user_id.","on_invalid":"reject","example":"nasa"},{"name":"user_id","type":"string","required":false,"description":"Numeric user id.","on_invalid":"reject","example":"11348282"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"tweets[]{tweet_id,text,reply_to_tweet_id,reply_to_user,reply_to_text,reply_to_author,quoted,media[],author,url,…} + next_cursor + user_id","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_media","description":"A user's media tweets — photos & videos (with video_url + duration), engagement, pagination.","required_params":["username"],"optional_params":["user_id","limit","cursor"],"params":[{"name":"username","type":"string","required":false,"description":"@handle — or pass user_id.","on_invalid":"reject","example":"nasa"},{"name":"user_id","type":"string","required":false,"description":"Numeric user id.","on_invalid":"reject","example":"11348282"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"tweets[]{...,media[]{type,url,video_url,duration_ms,alt}} + next_cursor","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_likes","description":"Tweets a user has liked (if the account exposes likes).","required_params":["username"],"optional_params":["user_id","limit","cursor"],"params":[{"name":"username","type":"string","required":false,"description":"@handle — or pass user_id.","on_invalid":"reject","example":"nasa"},{"name":"user_id","type":"string","required":false,"description":"Numeric user id.","on_invalid":"reject","example":"11348282"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"tweets[]{...} + next_cursor","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"tweet","description":"A single tweet by id — full text, engagement, media, quoted/retweeted, author.","required_params":["tweet_id"],"optional_params":[],"params":[{"name":"tweet_id","type":"string","required":true,"description":"The tweet (status) id.","on_invalid":"reject","example":"1860324374516560355"}],"returns":"tweet{tweet_id,text,created_at,likes,retweets,replies,quotes,views,media[],quoted,retweeted,author,url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"tweet_replies","description":"A tweet PLUS its replies/comments (threaded conversation) with DEEP cursor pagination.","required_params":["tweet_id"],"optional_params":["limit","cursor"],"params":[{"name":"tweet_id","type":"string","required":true,"description":"The tweet id to load replies for.","on_invalid":"reject","example":"1860324374516560355"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":40,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"tweets[]{...} (focal tweet first, then replies) + next_cursor","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"search","description":"Search tweets or people. product=Top|Latest|People|Media. Supports X search operators in the query. Cursor pagination.","required_params":["query"],"optional_params":["product","limit","cursor"],"params":[{"name":"query","type":"string","required":true,"description":"Search text (supports operators like from:, since:, filter:media).","on_invalid":"reject","example":"nasa artemis"},{"name":"product","type":"enum","required":false,"description":"Result type.","on_invalid":"ignore","allowed_values":[{"value":"Top","label":"Top"},{"value":"Latest","label":"Latest / recent"},{"value":"People","label":"People / users"},{"value":"Media","label":"Media"}],"default":"Top"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"tweets[] (or users[] when product=People) + next_cursor + product","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"followers","description":"A user's followers (each a full user object), paginated.","required_params":["username"],"optional_params":["user_id","limit","cursor"],"params":[{"name":"username","type":"string","required":false,"description":"@handle — or pass user_id.","on_invalid":"reject","example":"nasa"},{"name":"user_id","type":"string","required":false,"description":"Numeric user id.","on_invalid":"reject","example":"11348282"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"users[]{user_id,name,username,description,followers,...} + next_cursor","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"following","description":"Accounts a user follows (each a full user object), paginated.","required_params":["username"],"optional_params":["user_id","limit","cursor"],"params":[{"name":"username","type":"string","required":false,"description":"@handle — or pass user_id.","on_invalid":"reject","example":"nasa"},{"name":"user_id","type":"string","required":false,"description":"Numeric user id.","on_invalid":"reject","example":"11348282"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"users[]{...} + next_cursor","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"list_tweets","description":"Latest tweets from a Twitter List by id, paginated.","required_params":["list_id"],"optional_params":["limit","cursor"],"params":[{"name":"list_id","type":"string","required":true,"description":"The List id — the digits in x.com/i/lists/<id>. A list id that no longer exists returns NOT_FOUND (X answers such ids with an empty timeline object, not an error).","on_invalid":"reject","example":"1011591069782499328"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"tweets[]{...} + next_cursor","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"trends","description":"Current trending topics on X / Twitter (the Explore feed) — each with its name, location/category context, post-volume, and a search URL.","required_params":[],"optional_params":["limit"],"params":[{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":40,"minimum":1,"maximum":100}],"returns":"trends[]{name, category, description, url}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"community_search","description":"Search posts across X Communities by keyword — returns matching community tweets (same rich tweet shape as search).","required_params":["query"],"optional_params":["product","limit","cursor"],"params":[{"name":"query","type":"string","required":true,"description":"Keywords to search within X Communities.","on_invalid":"reject","example":"python"},{"name":"product","type":"string","required":false,"description":"Latest (chronological) or Top (relevance).","on_invalid":"reject","allowed_values":[{"value":"Top","label":"Top"},{"value":"Latest","label":"Latest"}],"example":"Latest"},{"name":"limit","type":"integer","required":false,"description":"Max items to return.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100},{"name":"cursor","type":"string","required":false,"description":"Pagination cursor from a previous response's next_cursor.","on_invalid":"ignore"}],"returns":"tweets[]{...} + next_cursor","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"udemy","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Udemy API scraper — search courses by keyword, then pull course detail, live pricing, ratings, paginated student reviews and the full curriculum (chapters + lectures) for any Udemy course by URL, slug or id, plus discovery: browse every course by an instructor and walk the live category taxonomy. Returns title, headline, instructors, rating, subscriber count, level, language, what-you'll-learn, requirements, price/discount and the complete lecture outline. No API key required.","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/udemy/v1","spec_available":true,"actions":[{"name":"search","description":"Search Udemy courses by keyword (any topic, e.g. 'python', 'excel', 'machine learning'). Returns a paginated list of course cards — id, title, headline, instructors, rating, review count, level, duration, language — most-relevant first. Feed a result's course_id into detail / pricing / reviews / curriculum. Page with `page`; meta.has_more / meta.total_count tell you how many.","required_params":["query"],"optional_params":["page","page_size"],"params":[{"name":"query","type":"string","required":true,"description":"The keyword(s) to search Udemy courses for (a topic, skill, tool or course title — e.g. 'python', 'excel formulas', 'aws certified').","on_invalid":"reject","example":"python","aliases":["q","keyword"]},{"name":"page","type":"integer","required":false,"description":"Page number (results are paginated). Page until meta.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Results per page (1-24, default 12).","on_invalid":"ignore","default":12,"example":12,"minimum":1,"maximum":24}],"returns":"results[]{course_id, title, headline, url, image, rating, num_reviews, num_lectures, instructional_level, video_length, locale, is_free, instructors[]{id, name}} + meta{page, has_more, next_page, total_count}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"python"}},{"name":"detail","description":"Full course card for a Udemy course by URL, slug or id: title, headline, instructors, rating, review count, subscriber count, level, language, duration, price, category, description, what-you'll-learn, requirements and target audience.","required_params":[],"optional_params":["course_id","slug","url"],"params":[{"name":"course_id","type":"string","required":false,"description":"The Udemy course to look up — its numeric id (the number in /course/<slug>/ → api id), its slug, or a full Udemy course URL (https://www.udemy.com/course/the-complete-python-bootcamp/). A URL/slug is resolved to the course automatically.","on_invalid":"reject","example":"567828","aliases":["slug","url","course_url"]}],"returns":"course{course_id, title, headline, url, image, rating, num_reviews, num_subscribers, num_lectures, instructional_level, content_info, video_length, locale, price{price_string, amount, currency, is_paid}, instructors[]{id, name, job_title, url}, category, subcategory, description, what_you_will_learn[], requirements[], target_audience[]}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"course_id":"567828"}},{"name":"pricing","description":"Live price, list price and discount price for one or many Udemy courses by id (comma-separated). Fast, lightweight — use it to track current/sale pricing.","required_params":["course_ids"],"optional_params":[],"params":[{"name":"course_ids","type":"string","required":true,"description":"One or more numeric Udemy course ids, comma-separated (up to 50). Get ids from the detail action.","on_invalid":"reject","example":"567828,6873227","aliases":["course_id"]}],"returns":"prices[]{course_id, price{amount, currency, price_string}, list_price{...}, discount_price{...}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"course_ids":"567828"}},{"name":"reviews","description":"Paginated public student reviews for a course by id: star rating, review text, date and the instructor's reply. Page with `page` — meta.has_more / meta.review_count tell you how many.","required_params":["course_id"],"optional_params":["page","page_size"],"params":[{"name":"course_id","type":"string","required":true,"description":"Numeric Udemy course id to pull reviews for (from the detail action).","on_invalid":"reject","example":"567828"},{"name":"page","type":"integer","required":false,"description":"Page number (results are paginated). Page until meta.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page (1-100, default 10).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":100}],"returns":"reviews[]{review_id, author, rating, content, created, modified, instructor_reply} + meta{page, has_more, next_page, review_count}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"per_unit","credits":1,"per":20,"min":1},"example_params":{"course_id":"567828"}},{"name":"curriculum","description":"The course outline by id: chapters and lectures in order, with title, position, lecture asset type and whether the lecture is a free preview. Paginated.","required_params":["course_id"],"optional_params":["page","page_size"],"params":[{"name":"course_id","type":"string","required":true,"description":"Numeric Udemy course id (from the detail action).","on_invalid":"reject","example":"567828"},{"name":"page","type":"integer","required":false,"description":"Page number (results are paginated). Page until meta.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Items per page (1-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100}],"returns":"items[]{type(chapter|lecture), id, title, index, description, asset_type, is_free} + meta{page, has_more, next_page, item_count}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"course_id":"567828"}},{"name":"by_instructor","description":"Browse every course published by a Udemy instructor, by their numeric instructor id. Returns a paginated list of course cards (id, title, rating, price, level, instructors) — use it to discover courses to feed into detail/pricing/reviews/curriculum. Get the instructor id from any course's instructors[] (detail action).","required_params":["instructor_id"],"optional_params":["page","page_size"],"params":[{"name":"instructor_id","type":"string","required":true,"description":"Numeric Udemy instructor id (the id in a course's instructors[].id, available from the detail action).","on_invalid":"reject","example":"9685726","aliases":["user_id"]},{"name":"page","type":"integer","required":false,"description":"Page number (results are paginated). Page until meta.has_more is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"page_size","type":"integer","required":false,"description":"Items per page (1-100, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":100}],"returns":"courses[]{course_id, title, headline, url, image, rating, num_reviews, num_subscribers, num_lectures, instructional_level, content_info, price{...}, instructors[]{id, name, job_title, url}} + meta{page, has_more, next_page, course_count}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":1},"example_params":{"instructor_id":"9685726"}},{"name":"categories","description":"The live Udemy category taxonomy (Development, Business, IT & Software, Design, …) with ids, titles and slugs. Pass a category_id to drill into its subcategories. Use this to map the Udemy catalogue structure.","required_params":[],"optional_params":["category_id"],"params":[{"name":"category_id","type":"string","required":false,"description":"Optional. A category id (from this action) to list its subcategories instead of the top-level categories.","on_invalid":"ignore","example":"288"}],"returns":"categories[]{id, title, slug, type, url}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"uk-tenders","category":{"id":"government","title":"Government & Tenders"},"title":"UK public-tender API — every contract opportunity and award published by a UK public body on Contracts Finder (central government, NHS, councils, universities) in clean JSON: full notice text, response deadline, contract value, winning supplier, contract start/end dates, CPV codes and the buyer's published contact. No api_key.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/uk-tenders/v1","spec_available":true,"actions":[{"name":"search","description":"Search UK public-sector contract notices by phrase, status, value, deadline, CPV code and publication date. Every hit already carries the FULL notice text (no second call), plus the money: the published value range for live tenders, and the winning supplier, the awarded amount and the contract end date for awards.","required_params":["q"],"optional_params":["phrase","statuses","notice_types","published_from","published_to","published_within_days","deadline_from","min_value","cpv_codes","sort","limit"],"params":[{"name":"q","type":"string","required":true,"description":"What to search for across the notice title and full description. By default this is treated as an EXACT PHRASE — the engine quotes it for you, because the raw index otherwise matches single words and returns thousands of irrelevant notices (measured: 'web scraping' unquoted = 7,802 hits, quoted = 12). Set `phrase=false` for the loose behaviour.","on_invalid":"ignore","example":"web scraping","aliases":["query","keyword","search","keywords"]},{"name":"phrase","type":"boolean","required":false,"description":"true (default): match `q` as an exact phrase. false: let the index match the words loosely — much broader and much noisier. What was actually sent upstream comes back as `query_sent`.","on_invalid":"ignore","default":true,"example":true,"aliases":["exact","exact_phrase"]},{"name":"statuses","type":"array","required":false,"description":"Restrict to these notice statuses (comma-separated string or list). Empty = all. Use 'Open' for things you can still bid on and 'Awarded' to see who won and for how much. ⚠️ An unknown value silently returns zero results upstream, so this engine rejects unknown values instead.","on_invalid":"ignore","allowed_values":[{"value":"Open","label":"Still accepting bids — the only status you can actually respond to"},{"value":"Closed","label":"The deadline has passed but no award has been published"},{"value":"Awarded","label":"A supplier has won it — carries the winning supplier, the value and the end date"},{"value":"Cancelled","label":"The buyer withdrew the requirement"},{"value":"Unsuccessful","label":"The procurement ended without an award"}],"example":["Open"],"aliases":["status","notice_status"]},{"name":"notice_types","type":"array","required":false,"description":"Restrict to these notice types (comma-separated string or list). 'Contract' is a live procurement; 'Pipeline' is an early warning about one that is coming.","on_invalid":"ignore","allowed_values":[{"value":"Contract","label":"A live procurement — the buyer wants bids"},{"value":"Pipeline","label":"An early heads-up about a requirement that is coming"},{"value":"Pre-procurement","label":"Market engagement / prior information before a formal tender"},{"value":"Future opportunity","label":"A planned opportunity not yet open"}],"example":["Contract"],"aliases":["notice_type","type","types"]},{"name":"published_from","type":"string","required":false,"description":"Only notices published on or after this date (YYYY-MM-DD). This one runs UPSTREAM and bites hard — measured 86 → 8 on the same query — so it is the cheapest way to keep a search fresh.","on_invalid":"ignore","example":"2026-03-27","aliases":["since","from_date"]},{"name":"published_to","type":"string","required":false,"description":"Only notices published on or before this date (YYYY-MM-DD).","on_invalid":"ignore","example":"2026-09-23","aliases":["until","to_date"]},{"name":"published_within_days","type":"integer","required":false,"description":"Convenience for `published_from`: only notices published in the last N days. Translated into the upstream date filter, so it is genuinely cheap. If you also pass `published_from`, that wins.","on_invalid":"ignore","example":90,"minimum":1,"maximum":3650,"aliases":["within_days","max_age_days"]},{"name":"deadline_from","type":"string","required":false,"description":"Only notices whose response deadline falls on or after this date (YYYY-MM-DD) — i.e. ones there is still time to answer. Runs upstream (measured 86 → 6).","on_invalid":"ignore","example":"2026-09-23","aliases":["closing_after"]},{"name":"min_value","type":"number","required":false,"description":"Only notices whose published contract value is at least this many GBP. Notices that publish no value at all are dropped by this filter — leave it out if you would rather see them.","on_invalid":"ignore","example":50000,"minimum":0,"aliases":["value_from","valueFrom"]},{"name":"cpv_codes","type":"array","required":false,"description":"EU Common Procurement Vocabulary codes to restrict to (comma-separated string or list). 72000000 = IT services, 48000000 = software packages, 79000000 = business services. Useful for sweeping a whole category without a keyword.","on_invalid":"ignore","example":["72000000"],"aliases":["cpv","cpvCodes"]},{"name":"sort","type":"enum","required":false,"description":"Row order. Applied locally, because the API ignores its own `sort` field.","on_invalid":"ignore","allowed_values":[{"value":"newest","label":"Newest published first. Applied locally — the API ignores its own `sort` field."},{"value":"deadline","label":"Soonest response deadline first; notices without a deadline go last."},{"value":"value","label":"Highest contract value first — the money view."},{"value":"relevance","label":"The order the index returned, untouched."}],"default":"newest","example":"newest"},{"name":"limit","type":"integer","required":false,"description":"How many notices to return (1–500, default 25). ⚠️ The API has no paging of any kind (every offset/page parameter was tested and ignored), so this is also the depth ceiling: if `total_matches` is larger than what you asked for, narrow the query instead of paging.","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":500,"aliases":["max_results","count","size"]}],"returns":"notices[]{id, url, notice_identifier, title, description, buyer, notice_type, status, published_at, deadline, contract_start, contract_end, value_low, value_high, value_currency, awarded_value, awarded_supplier, awarded_at, cpv_codes[], cpv_description, region, postcode, suitable_for_sme}, total_matches, returned, query_sent, truncated, filtered_out","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"web scraping","limit":10}},{"name":"notice","description":"One notice in full by id: the buyer's published contact details (name, e-mail, phone, address), the 'how to respond' instructions with the portal link, the procedure type, the number of times the notice has been viewed (a competition signal), and the complete award block — every winning supplier with their address, the amount and the contract start and end dates. None of this is in the search response.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"The Contracts Finder notice UUID, as returned by `search` in `id`. A full notice URL also works — the id is read out of it.","on_invalid":"ignore","example":"ec641d32-1f15-48f3-9458-bc4cd94b04c5","aliases":["notice_id","url"]}],"returns":"notice{id, url, notice_identifier, title, description, buyer, notice_type, status, published_at, deadline, contract_start, contract_end, value_low, value_high, awarded_value, awarded_supplier, awarded_at, awards[]{supplier,supplier_address,value,awarded_at,contract_start,contract_end,procedure_type,duns_number}, cpv_codes[], cpv_description, region, nationwide, coordinates{lat,lon}, sector, procedure_type, contract_kind, is_framework_agreement, is_extension_possible, additional_text, view_count, version, is_pre_awarded, created_at, last_updated, contact{name,email,phone,address,town,postcode,country,website}}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"ec641d32-1f15-48f3-9458-bc4cd94b04c5"}}]},{"name":"ulta","category":{"id":"other","title":"Other"},"title":"Ulta Beauty API — browse or keyword-search the ulta.com (US) beauty catalogue and pull one product in full: every shade/size variant with its own price and stock and Ulta's own sku, the complete image and video gallery, brand, availability, rating and top customer reviews inline — no API key, account or cookie required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/ulta/v1","spec_available":true,"actions":[{"name":"search","description":"Find products on ulta.com (US). Browse a `category` — `/shop/makeup/face/foundation`, `/shop/hair/shampoo-conditioner/shampoo`, `/shop/skin-care/moisturizers` — for the precise, fully pageable result set with Ulta's own total, or give a free-text `query` ('mascara', 'vitamin c serum', 'dyson airwrap') to let Ulta's own type-ahead decide which category answers it. Every product comes back with Ulta's own product id and sku, the name, brand, image, list and sale price (a range when the shades differ), the star rating and review count, the shade/size count and Ulta's badges and promo text. Narrow with `brand`, `min_rating`, `sort` and any facet Ulta publishes for that category; the live facet vocabulary comes back WITH counts in every category response, so a filter value is never a guess.","required_params":[],"optional_params":["query","category","page","max_results","sort","brand","min_rating","filters","sku_prices"],"params":[{"name":"query","type":"string","required":false,"description":"A beauty keyword — a product type, a brand, or a brand + product ('mascara', 'vitamin c serum', 'dyson airwrap', 'MAC lipstick'). This runs Ulta's OWN type-ahead and then browses the category Ulta suggests for that keyword, which is what a shopper gets when they type it into ulta.com's search box. Provide `query` OR `category` (a category is the more precise input, and the only one that guarantees paging over a full result set). IMPORTANT, so you can plan around it: ulta.com's own keyword results page is rendered entirely in the browser and the request behind it is not addressable, so this API does NOT claim to reproduce Ulta's keyword ranking. When the type-ahead maps the keyword to a category (measured: 9 of 12 common keywords do) you get that category's full, pageable result set and `meta.search_mode='keyword_to_category'`. When the keyword is a BRAND ('clinique', 'drunk elephant', 'mac cosmetics', 'the ordinary') the type-ahead resolves it to the brand's own ulta.com/brand/<slug> page and you get that brand's FULL, pageable, fully-priced catalogue across every department with `meta.search_mode='brand'` — one call, all fields present (list_price, sale_price, rating, review_count). When the keyword is neither (Ulta has no category and no brand for it) you get Ulta's own top-result cards and `meta.search_mode='keyword_top_results'` — a handful of products with `list_price`, `sale_price`, `rating` and `review_count` null, because Ulta's type-ahead does not publish them; and a keyword Ulta carries nothing for at all (e.g. a brand it does not stock) returns an honest empty. Either way `suggestions` comes back so you can see what Ulta matched and browse a suggested category directly on the next call.","on_invalid":"reject","example":"vitamin c serum","aliases":["q","keyword","search","text"]},{"name":"category","type":"string","required":false,"description":"An ulta.com category to browse, as the path from a ulta.com/shop/... URL — `/shop/makeup/face/foundation`, `/shop/hair/shampoo-conditioner/shampoo`, `/shop/skin-care/moisturizers`, `/shop/fragrance/womens-fragrance`. A full https://www.ulta.com/shop/... URL and a leading-slash-free form are both accepted. This is the precise mode: real total, real paging, live filter vocabulary with counts, and sorting. The authoritative list of every category Ulta publishes is its own sitemap, https://www.ulta.com/sitemap/shop.xml (275 entries at the time of writing) — a path that is not a real category returns NOT_FOUND rather than an empty grid, so a typo can never look like an out-of-stock category.","on_invalid":"reject","example":"/shop/makeup/face/foundation","aliases":["category_path","path","c"]},{"name":"page","type":"integer","required":false,"description":"Which page of the category to return (1-based). Ulta's own page size is 64 products and is not adjustable, so page 2 is products 65-128. Page until `meta.pagination.has_more` is false. Paging applies to category browsing (including keyword searches that resolved to a category); the type-ahead's top results are a single short page.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200},{"name":"max_results","type":"integer","required":false,"description":"How many products to return (1-384). Ulta serves 64 per upstream page, so asking for more than 64 fetches additional pages — each one is a further megabyte-class request against Ulta, so ask for what you will use. Values above the category's own total simply return the total.","on_invalid":"ignore","default":64,"minimum":1,"maximum":384,"aliases":["limit","max"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering, using Ulta's own sort vocabulary. Omit for Ulta's default, which IS `best_sellers` — passing `best_sellers` explicitly is measured to return the identical order, and this API tells you so in `meta.filters` rather than pretending it re-sorted anything. `price_asc`, `price_desc`, `new_arrivals` and `top_rated` all measurably change the result order.","on_invalid":"reject","allowed_values":[{"value":"best_sellers","label":"Ulta's best sellers — this is also the default order, so it changes nothing when applied on its own"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"new_arrivals","label":"Newest first"},{"value":"top_rated","label":"Highest customer rating first"}],"example":"price_asc","aliases":["order","sort_by"]},{"name":"brand","type":"string","required":false,"description":"Keep only products from one brand, using Ulta's own brand spelling. The brands that actually exist in the category you are browsing come back in `facets.filters` (group `BRAND`) with a product count each, so this never has to be a guess — take the value from there. Ulta matches the brand exactly, and the filtered `meta.pagination.total_results` is measured to equal the count Ulta declared for that brand.","on_invalid":"ignore","example":"MAC"},{"name":"min_rating","type":"integer","required":false,"description":"Keep only products rated at least this many stars (1-5), using Ulta's own rating filter. Verified to bite: on Foundation, `4` narrows 225 products to the 184 Ulta itself declares for that band.","on_invalid":"ignore","example":4,"minimum":1,"maximum":5,"aliases":["rating","rating_min"]},{"name":"filters","type":"object","required":false,"description":"Any other Ulta facet, as {facet parameter: value} taken VERBATIM from `facets.filters` in a previous response — e.g. {\"finish\": \"matte\"}, {\"price\": \"25-75\"}, {\"special offer\": \"sale\"}, {\"skin type\": \"dry\"}, {\"preference\": \"cruelty free\"}. The available facets are per-category (Foundation has Form/Finish/Coverage/Skin Type/SPF, Shampoo has different ones), which is why they are published as live data rather than a fixed enum. Each facet value in `facets.filters` carries the count Ulta declares for it, and applying it is measured to return exactly that count. A comma-separated `key=value` string is accepted too. Values you invent are passed to Ulta as-is and will simply match nothing.","on_invalid":"ignore","example":{"finish":"matte","price":"25-75"}},{"name":"sku_prices","type":"enum","required":false,"description":"Whether to fill `sku_price` on range cards. Ulta's grid tile prints only the price RANGE across a product's sizes/shades ('$12.00 - $58.00'), and the card's sku is often NOT the cheapest one (Redken All Soft card sku 2580410 is the 10.1 oz at $31 while the range starts at $12). With `auto` each range card's own sku is priced from the same module Ulta's swatch fires; `none` skips that.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Default. On every card whose tile shows a price RANGE, fetch the price of that card's own sku (one small upstream request per range card, capped at 96)"},{"value":"none","label":"Do not fetch. Range cards keep sku_price null; single-price cards still carry it"}],"default":"auto","example":"auto"}],"returns":"products[]{product_id, sku_id, url, name, brand, image, image_alt, list_price, list_price_max, sale_price, sale_price_max, price, currency, on_sale, discount_amount, rating, review_count, variant_label, badge, badge_tags[], promo_text, additional_offers_text, sponsored, limited_stock, price_is_range, sku_price, sku_price_source, in_stock} + (price is the LOWEST variant price when price_is_range; sku_price is the card sku's OWN price — read off the tile when it prints one price, fetched per sku when it prints a range (sku_price_source 'tile' / 'sku_pricing'); null only when not measured (sku_prices='none', the fan-out cap, or Ulta returned no price for that sku), counted in meta.coverage.sku_pricing; in_stock is always null — Ulta's grid publishes no availability, use /price per sku) + category{path, url, title, result_count, page, page_size} (when a category answered) + suggestions[]{label, type, url, product_id, sku_id} (when you searched by keyword — what Ulta's own type-ahead matched, so the next call can browse a suggested category directly) + facets{sort[]{value,label}, filters[]{group_id, title, select, param, values[]{value,label,count,disabled}}} (category mode; the values are Ulta's own and each one is measured to narrow the result set to exactly the count it declares). meta.search_mode says which route answered — `category` (you browsed one), `keyword_to_category` (Ulta's type-ahead mapped your keyword to a category and it was browsed), `brand` (the keyword is a brand and its full priced ulta.com/brand/<slug> catalogue was browsed) or `keyword_top_results` (Ulta had no category or brand for the keyword, so these are its own top-result cards). meta.pagination{page, per_page, total_results, returned, has_more, next_page} and meta.filters{applied, ignored, notes} carry the counts and say exactly which parameters were sent to Ulta. HONEST LIMITS: a `keyword_top_results` card has list_price, sale_price, rating and review_count NULL because Ulta's type-ahead does not publish them — the same product through `product_detail`, or through its category, has all four. Search cards never carry variants, description, ingredients or per-shade stock; `product_detail` is where those live. Ulta publishes no barcode/UPC and no shipping weight anywhere.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":2,"per":64,"min":3},"example_params":{"category":"/shop/makeup/face/foundation","max_results":20}},{"name":"price","description":"Re-check ONE variant's price and stock, cheaply. Give it the product_id and the sku_id you already hold and it returns the current price, the regular price, whether that variant is in stock, and nothing else — no description, images, ingredients, variants or reviews. Built for refreshing a catalogue you already have rather than discovering products: it reads the same small module Ulta's own shade swatch fires, so it costs a fraction of a full product_detail. Note that sku_id is REQUIRED, because Ulta stocks and prices every shade and size separately — a product can be on sale and buyable in one size while another is sold out, so there is no single product-level answer.","required_params":["product_id","sku_id"],"optional_params":["url"],"params":[{"name":"product_id","type":"string","required":true,"description":"Ulta's own product id, exactly as `search` returns it — e.g. `pimprod2057355`. Required here: the price module is scoped to a product and one of its skus.","on_invalid":"reject","example":"pimprod2057355","aliases":["id","pid"]},{"name":"sku_id","type":"string","required":true,"description":"Ulta's numeric sku for ONE variant (shade or size). REQUIRED, and not a formality: Ulta stocks and prices every shade and size separately, so a product can be on sale and buyable in one shade while another is sold out. There is no product-level price to fall back on. Use `product_detail` for the whole matrix.","on_invalid":"reject","example":"2651970","aliases":["sku","variant_id"]},{"name":"url","type":"string","required":false,"description":"A full ulta.com product URL — an alternative to `product_id`. The `?sku=` suffix is honoured if present.","on_invalid":"ignore","example":"https://www.ulta.com/p/double-wear-stay-in-place-longwear-matte-foundation-pimprod2057355?sku=2651970","aliases":["product_url"]}],"returns":"product_id, sku_id, variant_label, current_price, regular_price, currency, on_sale, in_stock. An unknown sku returns NOT_FOUND rather than the product's default variant — Ulta silently substitutes it, and that substitution is checked and rejected. current_price is what a shopper pays now and regular_price is the struck-through price; when Ulta prints only one price they are equal. in_stock is null (never false) when Ulta states nothing — silence is not an out-of-stock claim. regular_price_max / current_price_max appear only when Ulta prints a range for that sku.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"product_detail","description":"Get one Ulta Beauty product in full, by Ulta's product id or by its ulta.com URL — brand, name, the marketing copy in both plain text and its original Markdown, the full ingredient list, how-to-use, size, category path, list and sale price, availability, star rating and question count, the complete image AND video gallery with dimensions, Ulta's merchandising highlights and active promotions, one row per shade/size variant carrying that variant's OWN sku, price, sale price, stock flag, swatch and product images, and the customer reviews inline with the rating histogram, the recommended ratio, the most helpful positive and negative review, and the reviewer-reported attribute rollups. One call, everything the product page shows.","required_params":[],"optional_params":["product_id","sku_id","url","reviews","variant_prices"],"params":[{"name":"product_id","type":"string","required":false,"description":"Ulta's own product id, exactly as `search` returns it — e.g. `pimprod2057355`. Ulta also uses `xlsImpprod…`, `mkt…`, `gwp…`, `VP…` and `fs…` prefixes; all are accepted verbatim. This alone is enough: the slug in an Ulta product URL is decorative and the id resolves the product on its own. Provide `product_id`, or a product `url`.","on_invalid":"reject","example":"pimprod2057355","aliases":["id","pid"]},{"name":"sku_id","type":"string","required":false,"description":"Optional variant selector — Ulta's numeric sku for ONE shade/size, exactly as search returns it. product_id is the primary key that resolves the product; the sku only decides which variant Ulta treats as selected (and therefore which shade's price, images and 'selected' flag appear at the top level). Every variant of the product is returned whichever sku you pass, and a sku Ulta does not recognise simply falls back to the default variant — so a search-returned sku is always accepted and never causes an error. Omit it for Ulta's default variant.","on_invalid":"reject","example":"2651970","aliases":["sku","variant_id"]},{"name":"url","type":"string","required":false,"description":"A full ulta.com product URL — an alternative to `product_id`. The `?sku=` suffix is honoured if present.","on_invalid":"ignore","example":"https://www.ulta.com/p/double-wear-stay-in-place-longwear-matte-foundation-pimprod2057355?sku=2651970","aliases":["product_url"]},{"name":"variant_prices","type":"enum","required":false,"description":"How hard to work for the per-variant price matrix. This knob exists because of a real Ulta behaviour: an ulta.com product page prices ONLY the shade or size it has selected — the other swatches carry no price at all — so every additional variant price is a separate (small) request. `auto`, the default, fetches all of them when the product has 12 or fewer variants, which covers every size/format set (a 4-size perfume really is $37/$110/$145/$180 and a 5-size moisturiser $20/$35/$42/$50/$66, so those must never be guessed). On a big shade set it samples 3 shades spread across the range; measured across four products with 26-71 shades, every sampled shade of a given product had the identical price, so if the 3 agree it stops there and tells you in `product.price_note` — and if they disagree it fetches the rest. `all` always fetches every variant (capped at 60). `none` skips it. A variant whose price was NOT measured is null and `price_measured` is false; the product price is never copied down onto it. `meta.coverage.variant_pricing` reports exactly what was fetched.","on_invalid":"reject","allowed_values":[{"value":"auto","label":"Default. Fetch every variant's own price when the product has 12 or fewer variants (this is every size/format set measured); on a larger set, sample 3 variants across the range and fetch the rest only if those 3 disagree"},{"value":"all","label":"Fetch every variant's own price, up to 60 variants. Costs one extra small upstream request per variant"},{"value":"none","label":"Do not fetch any variant prices. Only the variant Ulta's page has selected carries a price; the rest are null"}],"default":"auto","example":"auto","aliases":["per_variant_prices"]},{"name":"reviews","type":"integer","required":false,"description":"How many written reviews to inline with the product (0-25; 25 is the review host's own per-page ceiling, established by bisection — 100 is rejected by it). Set 0 to skip the review call entirely: the rating, the review count and the two most-helpful reviews still come from the product page itself, so you lose the review list, the rating histogram and the reviewer-reported attribute rollups, and save one upstream request.","on_invalid":"ignore","default":8,"example":8,"minimum":0,"maximum":25,"aliases":["review_limit","max_reviews"]}],"returns":"product{product_id, sku_id, url, canonical_url, name, brand, brand_url, category, category_path[]{label,url}, list_price, list_price_max, sale_price, sale_price_max, price, currency, on_sale, discount_amount, in_stock, availability, coming_soon, rating, review_count, question_count, summary, description, description_markdown, ingredients, usage, restrictions, prop65_warning, highlights[]{group,label,description}, size, size_label, variant_type, variant_label, variant_count_label, variant_count, variants[]{sku_id, product_id, name, description, list_price, list_price_max, sale_price, sale_price_max, price, price_measured, currency, on_sale, in_stock, unavailable, disabled, out_of_stock_label, selected, image, swatch_image, texture_image, url, tags[]}, price_note, images[]{url, media_type, alt, name, video_url, width, height, format}, image, image_count, video_count, promotions[], subscription_eligible, seller, meta_title, meta_description, reviews{source, page_id, average_rating, rating_count, review_count, native_review_count, syndicated_review_count, recommended_ratio, rating_histogram{1..5}, total_available, returned, most_helpful_positive, most_helpful_negative, attributes[]{key,name,type,values[]{label,count}}, items[]{review_id, rating, headline, comment, nickname, location, created_at, updated_at, helpful_votes, not_helpful_votes, verified_buyer, staff_reviewer, media[]}}}. meta.coverage counts how many of THIS product's variants carry a price and a stock flag, so you can see the completeness of the rows you were given instead of trusting an average. FIELD NOTES: prices come in pairs — `list_price` and `list_price_max` are equal when the product has one price and differ when its shades do (Ulta prints '$38.50 - $55.00' on 46% of catalogue tiles). An ulta.com product page prices ONLY the variant it has selected, so the other variants' prices are fetched separately — see `variant_prices`, `variants[].price_measured` and `product.price_note`. A variant price is always that variant's own and is NEVER copied down from the product. `in_stock` on a variant is a BOOLEAN because Ulta publishes no per-variant quantity anywhere — null means Ulta said nothing, never zero. `rating_count` counts every rating Ulta shows, `native_review_count` how many were written on ulta.com and `syndicated_review_count` how many came from the brand's own site. HONEST LIMITS — WHAT ULTA DOES NOT PUBLISH, so you can plan around it: no barcode, UPC or EAN; no shipping weight and no package dimensions (`size` is the product's own volume, e.g. '1.0 oz', not a shipping weight); no per-store or per-variant stock counts; and no separate specification table — what a spec sheet would hold is in `description`, `ingredients`, `usage`, `size` and `highlights`.","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"pimprod2057355","reviews":5,"variant_prices":"none"}}]},{"name":"url-resolver","category":{"id":"utilities","title":"Utilities & AI"},"title":"URL Resolver API — follow redirect chains, strip tracking parameters, detect affiliate networks and identify marketplace products","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/url-resolver/v1","spec_available":true,"actions":[{"name":"resolve","description":"Follow the redirect chain to the final URL (hop-by-hop, every status observable).","required_params":["url"],"optional_params":["max_hops"],"params":[{"name":"url","type":"string","required":true,"description":"Any http(s) URL to resolve — short links (bit.ly, amzn.to, t.co), affiliate links, ad redirect URLs, or regular canonical URLs. Only http/https is accepted.","on_invalid":"reject","example":"https://bit.ly/3xYexample"},{"name":"max_hops","type":"integer","required":false,"description":"Maximum redirects to follow (1–10).","on_invalid":"reject","default":10,"example":10,"minimum":1,"maximum":10}],"returns":"final_url, redirect_chain[] (url/status/host/resolved_ips/location), status_codes[], final_domain, hop_count, content_type, is_short_link, redirect_loop","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"http://github.com"}},{"name":"normalize","description":"Resolve then strip tracking params (utm_*/fbclid/gclid…) → canonical URL.","required_params":["url"],"optional_params":["follow"],"params":[{"name":"url","type":"string","required":true,"description":"Any http(s) URL to resolve — short links (bit.ly, amzn.to, t.co), affiliate links, ad redirect URLs, or regular canonical URLs. Only http/https is accepted.","on_invalid":"reject","example":"https://bit.ly/3xYexample"},{"name":"follow","type":"boolean","required":false,"description":"Follow redirects to the final URL before analysing (default true). false = analyse the URL exactly as given (no network).","on_invalid":"reject","default":true,"example":true}],"returns":"canonical_url, cleaned_url, stripped_tracking_params[], detected_platform, page_title","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.example.com/?utm_source=a&fbclid=b&id=42","follow":false}},{"name":"detect_affiliate","description":"Detect the affiliate network/params/merchant across the whole redirect chain, incl. first-party brand programs (influencer/seller deeplinks).","required_params":["url"],"optional_params":["follow"],"params":[{"name":"url","type":"string","required":true,"description":"Any http(s) URL to resolve — short links (bit.ly, amzn.to, t.co), affiliate links, ad redirect URLs, or regular canonical URLs. Only http/https is accepted.","on_invalid":"reject","example":"https://bit.ly/3xYexample"},{"name":"follow","type":"boolean","required":false,"description":"Follow redirects to the final URL before analysing (default true). false = analyse the URL exactly as given (no network).","on_invalid":"reject","default":true,"example":true}],"returns":"is_affiliate, affiliate_type (network|first_party), affiliate_network, affiliate_params, merchant_hint, all_networks[], first_party_signals[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.amazon.com/dp/B08N5WRWNW?tag=myaff-20","follow":false}},{"name":"product_hint","description":"Identify marketplace + product-id + the ReefAPI engine that can fetch the product.","required_params":["url"],"optional_params":["follow"],"params":[{"name":"url","type":"string","required":true,"description":"Any http(s) URL to resolve — short links (bit.ly, amzn.to, t.co), affiliate links, ad redirect URLs, or regular canonical URLs. Only http/https is accepted.","on_invalid":"reject","example":"https://bit.ly/3xYexample"},{"name":"follow","type":"boolean","required":false,"description":"Follow redirects to the final URL before analysing (default true). false = analyse the URL exactly as given (no network).","on_invalid":"reject","default":true,"example":true}],"returns":"final_domain, marketplace, possible_product_id, engine_hint, is_product_url","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.amazon.com/dp/B08N5WRWNW","follow":false}},{"name":"preview","description":"Link unfurl: OpenGraph + Twitter-card title/description/image/favicon (Slack/Discord style).","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"Any http(s) URL to resolve — short links (bit.ly, amzn.to, t.co), affiliate links, ad redirect URLs, or regular canonical URLs. Only http/https is accepted.","on_invalid":"reject","example":"https://bit.ly/3xYexample"},{"name":"max_hops","type":"integer","required":false,"description":"Maximum redirects to follow (1–10).","on_invalid":"reject","default":10,"example":10,"minimum":1,"maximum":10}],"returns":"title, description, image, site_name, type, card, favicon, has_opengraph","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.example.com/"}},{"name":"safety","description":"Heuristic URL-risk flags (ip-host, non-https, punycode, userinfo, high-abuse TLD, long/multi-shortener chain, cross-domain) + risk level/score.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"Any http(s) URL to resolve — short links (bit.ly, amzn.to, t.co), affiliate links, ad redirect URLs, or regular canonical URLs. Only http/https is accepted.","on_invalid":"reject","example":"https://bit.ly/3xYexample"},{"name":"max_hops","type":"integer","required":false,"description":"Maximum redirects to follow (1–10).","on_invalid":"reject","default":10,"example":10,"minimum":1,"maximum":10}],"returns":"risk_level, risk_score, flags[], domain_changed, final_is_https, threat_intel","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.amazon.com/dp/B08N5WRWNW"}},{"name":"full","description":"One call: resolve + normalize + detect_affiliate + product_hint + preview + safety.","required_params":["url"],"optional_params":["max_hops"],"params":[{"name":"url","type":"string","required":true,"description":"Any http(s) URL to resolve — short links (bit.ly, amzn.to, t.co), affiliate links, ad redirect URLs, or regular canonical URLs. Only http/https is accepted.","on_invalid":"reject","example":"https://bit.ly/3xYexample"},{"name":"max_hops","type":"integer","required":false,"description":"Maximum redirects to follow (1–10).","on_invalid":"reject","default":10,"example":10,"minimum":1,"maximum":10}],"returns":"resolve + canonical + affiliate + product + preview + safety blocks, merged","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.amazon.com/dp/B08N5WRWNW?tag=aff-20&utm_source=x"}},{"name":"batch","description":"Resolve up to 50 URLs concurrently in one call — each URL is validated and resolved independently.","required_params":["urls"],"optional_params":[],"params":[{"name":"urls","type":"array","required":true,"description":"List of http(s) URLs to resolve in one call (max 50); each URL is validated and resolved independently.","on_invalid":"reject","example":["https://bit.ly/a","https://amzn.to/b"]}],"returns":"results[] (one resolve block per input, with ok/error), count, ok_count","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"urls":["http://github.com","https://www.example.com/?utm_source=z"]}}]},{"name":"username-osint","category":{"id":"social","title":"Social Media"},"title":"Username Search API — find every public account for a username across 3000+ sites: check a username (or Steam ID/URL) and get each platform where it exists plus the public profile link (GitHub, Instagram, TikTok, Reddit, Discord, Telegram, Twitch, YouTube and thousands more)","version":"2.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/username-osint/v1","spec_available":true,"actions":[{"name":"username","description":"Find every public account for a username across 3000+ sites (powered by the Maigret OSINT engine) → for each site where the account exists: the platform + the public profile link. Also accepts a Steam numeric ID or profile URL (steamcommunity.com/profiles/...). Scan the top-N most-popular sites (default 300), filter by tag (gaming/social/coding/…), or deep-scan to extract linked identifiers.","required_params":["username"],"optional_params":["top","tags","sites","deep"],"params":[{"name":"username","type":"string","required":true,"description":"The public username/handle to check across the platform stable-set. A public handle, NOT an email or phone. Letters, digits, . _ - only.","on_invalid":"reject","example":"torvalds","aliases":["user","handle","u"]},{"name":"top","type":"integer","required":false,"description":"How many of the most-popular sites to scan (20-500). More sites = broader coverage but slower. Default 300 (~15s).","on_invalid":"ignore","default":300,"example":300},{"name":"tags","type":"array","required":false,"description":"Restrict the scan to Maigret site tags (e.g. gaming, social, coding, photo, music, forum, finance, us, ru). Comma-separated. Default = all.","on_invalid":"ignore","example":"gaming,social","aliases":["categories"]},{"name":"sites","type":"array","required":false,"description":"Restrict the scan to these exact platform names (case-insensitive). Default = the full stable-set for the input type. Unknown names ignored.","on_invalid":"ignore","example":"GitHub,Telegram","aliases":["platforms"]},{"name":"deep","type":"boolean","required":false,"description":"Parse found profiles to extract linked identifiers (other usernames, ids, names) for pivoting. Slower. Default false.","on_invalid":"ignore","default":false,"example":false}],"returns":"input_type, query, results[]{platform, category, status, profile_url?}, summary{platforms_checked, platforms_found, found_platforms[], category_distribution, status_counts}, sites_scanned, linked_identifiers?","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"username":"torvalds","top":30}}]},{"name":"v2ex","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"V2EX API scraper — live topics with full post bodies, complete reply threads, member profiles, the 1364-node taxonomy, and full-text search across every V2EX topic since 2010. China's biggest developer/tech community (v2ex.com) in clean JSON. No login, no token, no China exit required.","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/v2ex/v1","spec_available":true,"actions":[{"name":"search","description":"Full-text search across EVERY V2EX topic since 2010 (title + body + replies) — the historical archive the site's own JSON API does not expose. Filter by node, date range and sort by recency or relevance; each hit returns the full post body, author handle, node, reply count and markup-free match snippets.","required_params":["q"],"optional_params":["match","sort","order","node","since","until","limit","offset","resolve_nodes"],"params":[{"name":"q","type":"string","required":true,"description":"Full-text search term, Chinese or English — e.g. '爬虫' (web scraping, 12.8k topics), '求推荐' (asking for a recommendation, 28.2k), '外包' (outsourcing, 20.4k), '数据采集' (data collection), 'API 接口'. Searches title + body + replies of every V2EX topic since 2010. Quotes are NOT sent upstream (the index rejects them with a 503) — quoting a term switches on exact-phrase matching instead, same as match=phrase.","on_invalid":"ignore","example":"爬虫","aliases":["query","keyword","search","term"]},{"name":"match","type":"enum","required":false,"description":"How strictly a hit must match a multi-word query. The index does not insist on every token (measured: only 6 of 30 rows returned for '树莓派 教程' contained 教程), so 'all' and 'phrase' narrow the returned rows here and report how many were dropped in `filtered_out`. 'phrase' matches the query as a literal substring, spaces included.","on_invalid":"ignore","allowed_values":[{"value":"any","label":"Keep every hit the index returns. It does not insist on all query tokens, so a multi-word query can return topics containing only one of the words. Default."},{"value":"all","label":"Only keep hits whose title or body contains EVERY whitespace-separated query token."},{"value":"phrase","label":"Only keep hits containing the query as an exact substring (what a quoted search would do — sov2ex itself answers 503 to a quoted query, so this is done client-side)."}],"default":"any","example":"all","aliases":["match_mode"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering field.","on_invalid":"ignore","allowed_values":[{"value":"created","label":"Newest topics first (chronological — best for monitoring/lead feeds)"},{"value":"sumup","label":"Best match first (relevance score over title + body + replies)"}],"default":"created","example":"created","aliases":["sort_by","order_by"]},{"name":"order","type":"enum","required":false,"description":"Sort direction. With sort=created, 'desc' gives the freshest topics first and 'asc' walks the archive from 2010 forward.","on_invalid":"ignore","allowed_values":[{"value":"desc","label":"Descending — newest first for sort=created, highest score first for sort=sumup"},{"value":"asc","label":"Ascending — oldest first"}],"default":"desc","example":"desc","aliases":["direction"]},{"name":"node","type":"string","required":false,"description":"Restrict the search to one node slug (e.g. 'jobs' cut a 20,456-hit '外包' search to 2,478 — the filter genuinely bites).","on_invalid":"ignore","example":"jobs","aliases":["node_name","in_node"]},{"name":"since","type":"string","required":false,"description":"Only topics created on/after this date. Accepts 'YYYY-MM-DD', an ISO timestamp, or epoch seconds (milliseconds are converted).","on_invalid":"ignore","example":"2026-01-01","aliases":["gte","from_date","after"]},{"name":"until","type":"string","required":false,"description":"Only topics created on/before this date. Same formats as `since`.","on_invalid":"ignore","example":"2026-08-01","aliases":["lte","to_date","before"]},{"name":"limit","type":"integer","required":false,"description":"How many topics to return (1–50, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":50,"aliases":["max_results","count","size"]},{"name":"offset","type":"integer","required":false,"description":"Pagination offset. The index caps the window at offset + limit ≤ 1000; deeper paging is refused upstream, so narrow the query with `node`/`since`/`until` instead of paging past it.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":999,"aliases":["from","skip"]},{"name":"resolve_nodes","type":"boolean","required":false,"description":"The search index stores numeric node ids only. When true (default) the engine attaches the node slug/title from a 24h-cached copy of the node directory; set false to skip that lookup entirely.","on_invalid":"ignore","default":true,"example":true,"aliases":["with_node_names"]}],"returns":"topics[]{id, title, content, url, node{id,name,title,title_en,url}, author{username,url}, reply_count, created_at, created_at_iso, match_snippets[], score}, total_matches_upstream, returned, offset, filtered_out, query","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"爬虫","limit":10}},{"name":"node_topics","description":"The newest topics of one V2EX node (sub-forum) with the COMPLETE post body — a live freshness feed for a niche: 'jobs' for hiring posts, 'outsourcing' for project leads, 'qna' for buying-intent questions, 'programmer' for developer chatter. Returns the node's own metadata (topic count, subscriber count) alongside.","required_params":["node_name"],"optional_params":["limit"],"params":[{"name":"node_name","type":"string","required":true,"description":"V2EX node (sub-forum) slug — e.g. 'qna' (问与答, 240k topics), 'programmer' (程序员, 72k), 'jobs' (酷工作, 60k), 'outsourcing' (外包, 7.5k), 'create', 'career', 'python'. Use the `nodes` action to browse or search all 1364 node slugs.","on_invalid":"ignore","example":"programmer","aliases":["node","name","slug"]},{"name":"limit","type":"integer","required":false,"description":"How many topics to return (1–10, default 10).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":10,"aliases":["max_results","count","size"]}],"returns":"node{id,name,title,title_en,url,topic_count,subscriber_count,parent_node}, topics[]{id, title, content, url, node, author{id,username,url,tagline}, reply_count, created_at, created_at_iso, last_touched_at, last_reply_by}, returned","cacheable":true,"cache_ttl_seconds":120,"pricing":{"mode":"flat","credits":1},"example_params":{"node_name":"qna"}},{"name":"latest","description":"The newest topics across the WHOLE of V2EX (all nodes), each with its full post body — a single-call firehose of what the Chinese dev community is posting right now (typically ~47 topics, the freshest usually minutes old).","required_params":[],"optional_params":["limit"],"params":[{"name":"limit","type":"integer","required":false,"description":"How many topics to return (1–50, default 50).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":50,"aliases":["max_results","count","size"]}],"returns":"topics[]{id, title, content, url, node, author, reply_count, created_at, created_at_iso, last_touched_at}, returned","cacheable":true,"cache_ttl_seconds":60,"pricing":{"mode":"flat","credits":1},"example_params":{"limit":20}},{"name":"hot","description":"Today's most-discussed V2EX topics with full bodies — the site's own hot list, ordered by the traction the community itself gave them.","required_params":[],"optional_params":["limit"],"params":[{"name":"limit","type":"integer","required":false,"description":"How many topics to return (1–20, default 20).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":20,"aliases":["max_results","count","size"]}],"returns":"topics[]{id, title, content, url, node, author, reply_count, created_at, created_at_iso}, returned","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"topic","description":"One V2EX topic by id or URL: the full post body plus the COMPLETE reply thread (every reply, in order, with author handle and timestamp) — the discussion is where the buying intent, the tool recommendations and the salary numbers actually live.","required_params":["id"],"optional_params":["with_replies","replies_limit"],"params":[{"name":"id","type":"string","required":true,"description":"The topic to fetch: a numeric topic id (1236386) or a topic URL (https://www.v2ex.com/t/1236386#reply7).","on_invalid":"ignore","example":"1236386","aliases":["topic_id","url","topic"]},{"name":"with_replies","type":"boolean","required":false,"description":"Also fetch the discussion thread (one extra upstream call). The reply endpoint returns EVERY reply in one shot — verified 204/204 on a 204-reply topic — so nothing is silently truncated upstream.","on_invalid":"ignore","default":true,"example":true,"aliases":["replies","include_replies"]},{"name":"replies_limit","type":"integer","required":false,"description":"Cap on returned replies (1–1000, default 100). `reply_count` always reports the true total, so truncation is visible.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":1000,"aliases":["max_replies"]}],"returns":"topic{id, title, content, url, node, author, reply_count, created_at, created_at_iso, last_touched_at}, replies[]{id, content, author, created_at, created_at_iso}, replies_returned, replies_total, replies_truncated, replies_match_counter","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"user_topics","description":"The newest topics posted by one V2EX member, with full bodies — follow a recruiter, a vendor or a prolific poster without watching every node.","required_params":["username"],"optional_params":["limit"],"params":[{"name":"username","type":"string","required":true,"description":"V2EX member handle (case-sensitive, e.g. 'Livid'). A numeric member id also works.","on_invalid":"ignore","example":"Livid","aliases":["user","member","handle"]},{"name":"limit","type":"integer","required":false,"description":"How many topics to return (1–10, default 10).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":10,"aliases":["max_results","count","size"]}],"returns":"author{id,username,url,tagline}, topics[]{id, title, content, url, node, reply_count, created_at, created_at_iso}, returned","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"Livid"}},{"name":"member","description":"Public profile of a V2EX member by handle or id: tagline, bio, website, github/twitter handle, self-typed location, join date and PRO status. Only what the member published themselves — the API exposes no e-mail, phone or real name.","required_params":["username"],"optional_params":[],"params":[{"name":"username","type":"string","required":true,"description":"V2EX member handle (case-sensitive, e.g. 'Livid'). A numeric member id also works.","on_invalid":"ignore","example":"Livid","aliases":["user","member","handle"]}],"returns":"member{id, username, url, tagline, bio, website, github, twitter, location, avatar, joined_at, joined_at_iso, is_pro}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"username":"Livid"}},{"name":"nodes","description":"The V2EX node taxonomy — all 1364 sub-forums with slug, Chinese and English title, topic count, subscriber count and parent node. Pass `name` for one node, or `query` to search the directory (matches slug, Chinese title and English title). This is how you find the `node_name` for `node_topics` and the `node` filter for `search`.","required_params":[],"optional_params":["name","query","limit"],"params":[{"name":"name","type":"string","required":false,"description":"Fetch exactly one node by slug (cheapest call — ~650 bytes instead of the full directory).","on_invalid":"ignore","example":"qna","aliases":["node_name","slug"]},{"name":"query","type":"string","required":false,"description":"Search the node directory by slug or title (Chinese or English), e.g. 'python', '工作', 'job'.","on_invalid":"ignore","example":"python","aliases":["q","search"]},{"name":"limit","type":"integer","required":false,"description":"How many nodes to return (1–1400, default 200).","on_invalid":"ignore","default":200,"example":200,"minimum":1,"maximum":1400,"aliases":["max_results","count","size"]}],"returns":"nodes[]{id, name, title, title_en, url, topic_count, subscriber_count, parent_node, aliases[]}, returned, total_nodes","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"python"}}]},{"name":"validate","category":{"id":"utilities","title":"Utilities & AI"},"title":"Validation API — validate EU VAT numbers (VIES), IBAN bank accounts (offline) and email addresses (syntax + MX + disposable) in one call","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/validate/v1","spec_available":true,"actions":[{"name":"vat","description":"Validate an EU VAT number via VIES → validity + registered company name & address.","required_params":["vat_number"],"optional_params":["country"],"params":[{"name":"vat_number","type":"string","required":true,"description":"The VAT number to validate against EU VIES. Either a full VAT incl. the 2-letter country prefix (e.g. 'IE6388047V', 'DE811569869') or just the digits when you also pass `country`. Spaces/dots/dashes are ignored.","on_invalid":"reject","example":"IE6388047V","aliases":["vat","vatNumber","number","vat_id"]},{"name":"country","type":"string","required":false,"description":"ISO-3166 / VIES country code for the VAT number (e.g. DE, FR, IE, NL). Optional if `vat_number` already starts with the prefix. VIES uses EL for Greece and XI for Northern Ireland; GR/GB are accepted and mapped.","on_invalid":"ignore","example":"IE","aliases":["country_code","countryCode","cc"]}],"returns":"valid, format_valid, query, vat_number, full_vat_number, country_code, company_name, company_address, request_date, request_identifier, consultation_number, source ('vies')","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"vat_number":"IE6388047V"}},{"name":"iban","description":"Validate + parse an IBAN offline (ISO 13616 mod-97) → country, BBAN, bank/branch/account. Optional enrich=true adds BIC + bank name/city (openiban.com, proxied).","required_params":["iban"],"optional_params":["enrich"],"params":[{"name":"iban","type":"string","required":true,"description":"The IBAN to validate + parse (offline, ISO 13616 mod-97). Spaces and dashes are ignored; case-insensitive. Returns country, check-digits, BBAN, bank/branch/account, and the checksum math.","on_invalid":"reject","example":"DE89370400440532013000","aliases":["iban_number","account","number"]},{"name":"enrich","type":"boolean","required":false,"description":"If true and the IBAN is valid, also fetch BIC + bank name/city from openiban.com (free, proxied). Bank-directory coverage is openiban's supported set (proven live: DE/NL/LU/LI; AT/BE/CH listed but their directory may miss codes). Never changes the validity verdict — the mod-97 result is ours, offline. Default false keeps iban 100% offline.","on_invalid":"ignore","default":false,"example":false,"aliases":["bic","bank_data"]}],"returns":"valid, iban, formatted, country_code, country_name, check_digits, bban, bank_code, branch_code, account_number, national_check, sepa, checksum{}, reason, bank{bic,name,zip,city} + enrich{attempted,source,bank_found} (enrich=true only)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"iban":"DE89 3704 0044 0532 0130 00"}},{"name":"email","description":"Validate an email: syntax + live MX + disposable-domain + role-account flags.","required_params":["email"],"optional_params":["check_mx"],"params":[{"name":"email","type":"string","required":true,"description":"The email address to validate: RFC-5322-pragmatic syntax + live MX lookup (DNS-over-HTTPS) + disposable-domain + role-account detection.","on_invalid":"reject","example":"jane.doe@google.com","aliases":["address","mail","email_address"]},{"name":"check_mx","type":"boolean","required":false,"description":"Whether to perform the live MX/DNS lookup (default true). Set false for a pure offline syntax+disposable check (no network, faster).","on_invalid":"ignore","default":true,"example":true}],"returns":"valid, email, syntax_valid, local_part, domain, has_mx, mx_records[], is_disposable, is_role_account, is_free_provider, did_you_mean, deliverable, score (0-100), reason","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"email":"jane.doe@google.com"}},{"name":"batch","description":"Validate up to 100 mixed items ({type:vat|iban|email,value}) in one call.","required_params":["items"],"optional_params":["check_mx"],"params":[{"name":"items","type":"array","required":true,"description":"Up to 100 mixed validation items. Each is an object {type: vat|iban|email, value: <string>} (vat items may also carry a `country`). Each item is validated independently — a bad entry yields valid:false, it never fails the whole batch.","on_invalid":"reject","example":[{"type":"iban","value":"DE89370400440532013000"},{"type":"email","value":"info@stripe.com"},{"type":"vat","value":"IE6388047V"}],"aliases":["inputs","batch","data"]},{"name":"check_mx","type":"boolean","required":false,"description":"Whether to perform the live MX/DNS lookup (default true). Set false for a pure offline syntax+disposable check (no network, faster).","on_invalid":"ignore","default":true,"example":true}],"returns":"count, valid_count, results[] (each tagged with its type + the same record the single-action would return)","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{"items":[{"type":"iban","value":"DE89370400440532013000"},{"type":"email","value":"test@mailinator.com","check_mx":false},{"type":"iban","value":"bad"}]}}]},{"name":"vatan","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Vatan Bilgisayar API scraper — search vatanbilgisayar.com (Turkish electronics) and read full product records: TRY price with the Web'e Özel and basket ('sepette') prices kept apart, struck price, instalments, availability, rating, specifications, variants, images, store stock across Vatan's shops and the deal lists. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/vatan/v1","spec_available":true,"actions":[{"name":"search","description":"Search vatanbilgisayar.com by keyword or browse a category, 24 products per page: slug, product code, title, images, the online price in TRY with the struck price, the Web'e Özel price and the basket-only ('sepette') price kept apart, the card's rating, colour options and deal notes. Filter by brand, price range and in-stock, sort the way the site does, page through results. Keywords Vatan redirects to a category are followed with the filters kept. The response lists the categories, brands and price bands available.","required_params":[],"optional_params":["query","category","brand","page","sort","min_price","max_price","in_stock_only","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"What to look for on vatanbilgisayar.com — a Turkish keyword ('kulaklık', 'robot süpürge'), a brand or a model. Optional when `category` is given.","on_invalid":"reject","example":"kulaklık","aliases":["q","keyword","text"]},{"name":"category","type":"string","required":false,"description":"Browse a Vatan category instead of searching: its URL or path ('notebook', '/apple/cep-telefonu-modelleri/'), as returned in `filters.categories[].path`.","on_invalid":"reject","example":"notebook","aliases":["category_url","category_path"]},{"name":"brand","type":"string","required":false,"description":"Only this brand: the `brand` value from `filters.brands` (e.g. 'jbl', 'lenovo').","on_invalid":"reject","example":"jbl","aliases":["brand_slug"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Vatan pages hold 24 products.","on_invalid":"ignore","default":1,"minimum":1,"maximum":300},{"name":"sort","type":"enum","required":false,"description":"Result order — only the orderings vatanbilgisayar.com itself offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Vatan's recommended order"},{"value":"best_selling","label":"Best sellers first"},{"value":"price_asc","label":"Price, lowest first"},{"value":"price_desc","label":"Price, highest first"},{"value":"most_reviewed","label":"Most reviewed first"},{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"}],"default":"relevance"},{"name":"min_price","type":"number","required":false,"description":"Lowest price in TRY.","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in TRY.","on_invalid":"reject","minimum":0},{"name":"in_stock_only","type":"boolean","required":false,"description":"true: only products Vatan lists as in stock (the site's own 'Stoktakiler' filter).","on_invalid":"ignore","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no product on the page contains a word of the query, results is empty and fallback_results_dropped counts the dropped products. true returns them apart, in fallback_results.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, slug (use with product/detail), product_code (Vatan's code, often the MPN), title, url, image, images[], price (TRY — the online price; the Web'e Özel price when one applies), currency, regular_price (the big price on a Web'e Özel product), price_label, price_note, was_price (struck price), discount_percent, discount_amount, basket_price (a 'Sepette' price applied only in the basket — NOT the price), basket_price_label, rating_rounded (the card's 1-decimal score, null when unrated; exact rating in product/detail), lowest_price_note, web_exclusive_badge, color_options, color_options_out_of_stock, is_outlet, badge_images[]}, count, page, page_size (24), total_results (the site's own count), total_pages, page_notice, sort, query, category, brand, redirected_to (the listing a keyword was redirected to), keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[] (only with include_fallback_results=true), filters{categories[]{name, path, count}, brands[]{name, brand, count}, price_bands[]{label, path, count}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"kulaklık"}},{"name":"product/detail","description":"The full Vatan product record by numeric id, URL or slug: title, brand, product code and MPN, online price in TRY with the Web'e Özel, struck and basket-only prices kept apart, interest-free instalments, availability (including 'out of stock online'), free shipping, rating and review count, image gallery, breadcrumb, key attributes and the full specification table, description, colour/capacity variants with their ids, and the page's review sample.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"A Vatan product: its numeric id (141004, `product_id` in suggest and detail), its product URL, or the URL slug every search row returns in `slug`.","on_invalid":"reject","example":"141004","aliases":["id","url","slug"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, product_code, mpn, title, brand, color, url, slug, group_id, price, currency, regular_price, price_label, price_note, was_price, discount_percent, discount_amount, basket_price, basket_price_label, schema_org_price, installment{months, monthly_amount, same_as_cash_price}, installment_from_monthly, lowest_price_note, summary, availability (in_stock | out_of_stock | out_of_stock_online | pre_order | null), free_shipping, rating, review_count, rating_scale, schema_org_reviews[]{rating, title, text, date} (the page's structured sample, not the newest), images[], breadcrumb[]{name, url}, category_path[], key_attributes[]{name, value}, specifications[]{group, name, value}, description, variants[]{product_id, url, label, image}, is_outlet}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"141004"}},{"name":"product/stores","description":"Which Vatan stores hold a product right now: every store with stock, its city, address, phone, coordinates, opening hours, whether it is a hyperstore, and the stock number Vatan publishes. Accepts the numeric id, URL or slug.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"A Vatan product: its numeric id (141004, `product_id` in suggest and detail), its product URL, or the URL slug every search row returns in `slug`.","on_invalid":"reject","example":"141004","aliases":["id","url","slug"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"stores[]{store_id, name, city, address, phone, latitude, longitude, opening_hours, is_hyperstore, stock, image}, count, cities[], product_id","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"141004"}},{"name":"search/suggest","description":"Vatan's own search-box list for a partial keyword: the matching products with numeric id, title, price, URL, image and category, plus the suggested categories.","required_params":["query"],"optional_params":["limit","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the shopper has typed so far (at least 2 characters).","on_invalid":"reject","example":"robot süpürge","aliases":["q","term","keyword"]},{"name":"limit","type":"integer","required":false,"description":"How many products to return (the site's list can hold several hundred).","on_invalid":"ignore","default":50,"minimum":1,"maximum":500},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"products[]{product_id, title, price, currency, url, image, category, brand_group}, products_total, categories[]{name, path}, query","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"robot süpürge"}},{"name":"deals","description":"Vatan's deal lists as product rows: Fırsat Ürünler, Web'e Özel prices or Outlet items, with the same fields, sorting and paging as search.","required_params":[],"optional_params":["type","page","sort","max_rotations"],"params":[{"name":"type","type":"enum","required":false,"description":"Which Vatan deal list.","on_invalid":"reject","allowed_values":[{"value":"firsat","label":"Fırsat Ürünler — Vatan's deal products"},{"value":"web_ozel","label":"Web'e Özel — online-only prices"},{"value":"outlet","label":"Outlet — outlet (open-box / display) items"}],"default":"firsat"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Vatan pages hold 24 products.","on_invalid":"ignore","default":1,"minimum":1,"maximum":300},{"name":"sort","type":"enum","required":false,"description":"Result order — only the orderings vatanbilgisayar.com itself offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Vatan's recommended order"},{"value":"best_selling","label":"Best sellers first"},{"value":"price_asc","label":"Price, lowest first"},{"value":"price_desc","label":"Price, highest first"},{"value":"most_reviewed","label":"Most reviewed first"},{"value":"newest","label":"Newest first"},{"value":"oldest","label":"Oldest first"}],"default":"relevance"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, slug (use with product/detail), product_code (Vatan's code, often the MPN), title, url, image, images[], price (TRY — the online price; the Web'e Özel price when one applies), currency, regular_price (the big price on a Web'e Özel product), price_label, price_note, was_price (struck price), discount_percent, discount_amount, basket_price (a 'Sepette' price applied only in the basket — NOT the price), basket_price_label, rating_rounded (the card's 1-decimal score, null when unrated; exact rating in product/detail), lowest_price_note, web_exclusive_badge, color_options, color_options_out_of_stock, is_outlet, badge_images[]}, count, page, page_size (24), total_results (the site's own count), total_pages, page_notice, sort, query, category, brand, redirected_to (the listing a keyword was redirected to), keyword_matches_on_page, fallback_results_dropped, fallback_total, fallback_results[] (only with include_fallback_results=true), filters{categories[]{name, path, count}, brands[]{name, brand, count}, price_bands[]{label, path, count}}, type","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"firsat"}}]},{"name":"vehicle","category":{"id":"utilities","title":"Utilities & AI"},"title":"Vehicle Data API — VIN decoder, recalls, NCAP safety ratings, complaints & EPA fuel economy (NHTSA + EPA, browserless, US-gov public-domain)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/vehicle/v1","spec_available":true,"actions":[{"name":"vin_decode","description":"decode a VIN → make/model/year/trim/engine/specs (vPIC)","required_params":["vin"],"optional_params":["modelyear","raw"],"params":[{"name":"vin","type":"string","required":true,"description":"A Vehicle Identification Number, 1-17 chars (A-Z 0-9, no I/O/Q; use * for unknown positions in a partial VIN).","on_invalid":"reject","example":"1HGCM82633A004352","aliases":["VIN"]},{"name":"modelyear","type":"integer","required":false,"description":"Optional model year to disambiguate a partial VIN decode.","on_invalid":"ignore","example":2011,"aliases":["model_year"]},{"name":"raw","type":"boolean","required":false,"description":"If true, also include the full flat NHTSA attribute row(s) (~130 fields) under `attributes`.","on_invalid":"ignore","default":false,"example":false}],"returns":"vin, vehicle{} (make, model, modelYear, trim, engine, transmission, drivetrain, weight, plant, …), decode{} (errorCode/Text, suggestedVin)","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":1},"example_params":{"vin":"1HGCM82633A004352"}},{"name":"vin_decode_batch","description":"decode up to 50 VINs in one call (vPIC batch)","required_params":["vins"],"optional_params":["raw"],"params":[{"name":"vins","type":"array","required":true,"description":"Up to 50 VINs. Either a 'VIN,year;VIN,year' string, or an array of VIN strings / [VIN, year] pairs / {vin, modelyear} objects.","on_invalid":"reject","example":"1HGCM82633A004352,2003;5UXWX7C5*BA,2011","aliases":["data"]},{"name":"raw","type":"boolean","required":false,"description":"If true, also include the full flat NHTSA attribute row(s) (~130 fields) under `attributes`.","on_invalid":"ignore","default":false,"example":false}],"returns":"count, vehicles[] (each {vin, vehicle{}, decode{}})","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":2},"example_params":{"vins":"1HGCM82633A004352,2003;5UXWX7C5*BA,2011"}},{"name":"vin_decode_flat","description":"per-variable VIN decode — one row per NHTSA variable with its label (the long-form companion to vin_decode)","required_params":["vin"],"optional_params":["modelyear"],"params":[{"name":"vin","type":"string","required":true,"description":"A Vehicle Identification Number, 1-17 chars (A-Z 0-9, no I/O/Q; use * for unknown positions in a partial VIN).","on_invalid":"reject","example":"1HGCM82633A004352","aliases":["VIN"]},{"name":"modelyear","type":"integer","required":false,"description":"Optional model year to disambiguate a partial VIN decode.","on_invalid":"ignore","example":2011,"aliases":["model_year"]}],"returns":"vin, count, variables[] (variable, value, variableId, valueId)","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":1},"example_params":{"vin":"1HGCM82633A004352"}},{"name":"fuel_economy","description":"EPA fuel economy — MPG/MPGe (city/highway/combined), CO2, annual fuel cost, EV range. By year+make+model (auto-resolves trims) or EPA id","required_params":[],"optional_params":["id","year","make","model"],"params":[{"name":"id","type":"integer","required":false,"description":"An EPA fuel-economy vehicle id (from fuel_economy_options). Provide this OR year+make+model.","on_invalid":"ignore","example":43302,"aliases":["vehicleId","fe_id"]},{"name":"year","type":"integer","required":false,"description":"Model year (e.g. 2021). EPA covers 1984–present.","on_invalid":"ignore","example":2021,"aliases":["modelYear","model_year"]},{"name":"make","type":"string","required":false,"description":"Vehicle make / brand (e.g. Honda, BMW, Acura). Case-insensitive; matched against NHTSA's catalog.","on_invalid":"ignore","example":"Honda"},{"name":"model","type":"string","required":false,"description":"Vehicle model name (e.g. Accord, RDX). Case-insensitive.","on_invalid":"ignore","example":"Accord"}],"returns":"by id → vehicle{} (mpg{city,highway,combined}, fuelType, co2GramsPerMile, annualFuelCostUsd, fuelEconomyScore, ev{range}); by year+make+model → vehicles[]{} per trim","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":1},"example_params":{"year":"2021","make":"Toyota","model":"Camry"}},{"name":"fuel_economy_options","description":"list EPA trims (each → an id for fuel_economy) for a year+make+model","required_params":["year","make","model"],"optional_params":[],"params":[{"name":"year","type":"integer","required":true,"description":"Model year (1984–present).","on_invalid":"ignore","example":2021,"aliases":["modelYear","model_year"]},{"name":"make","type":"string","required":true,"description":"Vehicle make / brand (e.g. Honda, BMW, Acura). Case-insensitive; matched against NHTSA's catalog.","on_invalid":"ignore","example":"Honda"},{"name":"model","type":"string","required":true,"description":"Vehicle model name (e.g. Accord, RDX). Case-insensitive.","on_invalid":"ignore","example":"Accord"}],"returns":"year, make, model, count, options[] (id, trim, epaModel)","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":1},"example_params":{"year":"2021","make":"Toyota","model":"RAV4"}},{"name":"fuel_prices","description":"current US national average fuel prices (regular/midgrade/premium/diesel/e85/electric/cng/lpg)","required_params":[],"optional_params":[],"params":[],"returns":"prices{} (per fuel type, USD/gal or USD/kWh)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"canadian_specs","description":"dimensional & weight specs (length, width, height, wheelbase, curb weight, track) from NHTSA's Canadian vehicle database","required_params":["year"],"optional_params":["make","model"],"params":[{"name":"year","type":"integer","required":true,"description":"Model year (1984–present).","on_invalid":"ignore","example":2021,"aliases":["modelYear","model_year"]},{"name":"make","type":"string","required":false,"description":"Vehicle make (exact spelling, case-insensitive; matched against NHTSA's Canadian database).","on_invalid":"ignore","example":"Acura"},{"name":"model","type":"string","required":false,"description":"Optional model filter (substring, matched server-side).","on_invalid":"ignore","example":""}],"returns":"year, make, model, count, specs[] (OL/OW/OH length-width-height, WB wheelbase, CW curb weight, TWF/TWR track widths)","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":1},"example_params":{"year":"2011","make":"Acura"}},{"name":"recalls","description":"safety recalls by make+model+modelYear, or by campaignNumber","required_params":[],"optional_params":["make","model","modelYear","campaignNumber"],"params":[{"name":"make","type":"string","required":false,"description":"Vehicle make / brand (e.g. Honda, BMW, Acura). Case-insensitive; matched against NHTSA's catalog.","on_invalid":"ignore","example":"Honda"},{"name":"model","type":"string","required":false,"description":"Vehicle model name (e.g. Accord, RDX). Case-insensitive.","on_invalid":"ignore","example":"Accord"},{"name":"modelYear","type":"integer","required":false,"description":"4-digit model year (e.g. 2012).","on_invalid":"ignore","example":2012,"aliases":["model_year","year"]},{"name":"campaignNumber","type":"string","required":false,"description":"An NHTSA recall campaign number — looks up that single campaign directly (alternative to make+model+modelYear).","on_invalid":"ignore","example":"20V505000","aliases":["campaign_number"]}],"returns":"count, recalls[] (campaignNumber, component, summary, consequence, remedy, parkIt/parkOutSide, units affected)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"acura","model":"rdx","modelYear":"2012"}},{"name":"safety_ratings","description":"NCAP star ratings + crash-test media; by vehicleId, or year+make+model (auto-resolves variants), or drill-down","required_params":[],"optional_params":["vehicleId","modelYear","make","model"],"params":[{"name":"vehicleId","type":"integer","required":false,"description":"NHTSA NCAP VehicleId for a direct safety rating (from a prior year+make+model drill-down).","on_invalid":"ignore","example":7523,"aliases":["vehicle_id"]},{"name":"modelYear","type":"integer","required":false,"description":"4-digit model year (e.g. 2012).","on_invalid":"ignore","example":2012,"aliases":["model_year","year"]},{"name":"make","type":"string","required":false,"description":"Vehicle make / brand (e.g. Honda, BMW, Acura). Case-insensitive; matched against NHTSA's catalog.","on_invalid":"ignore","example":"Honda"},{"name":"model","type":"string","required":false,"description":"Vehicle model name (e.g. Accord, RDX). Case-insensitive.","on_invalid":"ignore","example":"Accord"}],"returns":"by vehicleId → rating{}; by year+make+model → vehicles[]{rating}; partial → drill-down list (modelYears / makes / models)","cacheable":true,"cache_ttl_seconds":604800,"pricing":{"mode":"flat","credits":1},"example_params":{"vehicleId":"7523"}},{"name":"complaints","description":"consumer complaints by make+model+modelYear","required_params":["make","model","modelYear"],"optional_params":[],"params":[{"name":"make","type":"string","required":true,"description":"Vehicle make / brand (e.g. Honda, BMW, Acura). Case-insensitive; matched against NHTSA's catalog.","on_invalid":"ignore","example":"Honda"},{"name":"model","type":"string","required":true,"description":"Vehicle model name (e.g. Accord, RDX). Case-insensitive.","on_invalid":"ignore","example":"Accord"},{"name":"modelYear","type":"integer","required":true,"description":"4-digit model year (e.g. 2012).","on_invalid":"ignore","example":2012,"aliases":["model_year","year"]}],"returns":"count, complaints[] (odiNumber, components, summary, crash/fire, injuries/deaths, dates)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"acura","model":"rdx","modelYear":"2012"}},{"name":"models","description":"models for a make (optionally a modelYear / vehicleType)","required_params":["make"],"optional_params":["modelYear","vehicleType"],"params":[{"name":"make","type":"string","required":true,"description":"Vehicle make / brand (e.g. Honda, BMW, Acura). Case-insensitive; matched against NHTSA's catalog.","on_invalid":"ignore","example":"Honda"},{"name":"modelYear","type":"integer","required":false,"description":"4-digit model year (e.g. 2012).","on_invalid":"ignore","example":2012,"aliases":["model_year","year"]},{"name":"vehicleType","type":"string","required":false,"description":"Vehicle type filter (e.g. car, truck, mpv, motorcycle, bus, trailer). Case-insensitive; matched against NHTSA's catalog.","on_invalid":"ignore","example":"car","aliases":["vehicle_type"]}],"returns":"make, count, models[] (modelId, model, makeId)","cacheable":true,"cache_ttl_seconds":604800,"pricing":{"mode":"flat","credits":1},"example_params":{"make":"honda"}},{"name":"makes","description":"all makes, or makes for a vehicleType (car/truck/mpv/motorcycle/...)","required_params":[],"optional_params":["vehicleType"],"params":[{"name":"vehicleType","type":"string","required":false,"description":"Vehicle type filter (e.g. car, truck, mpv, motorcycle, bus, trailer). Case-insensitive; matched against NHTSA's catalog.","on_invalid":"ignore","example":"car","aliases":["vehicle_type"]}],"returns":"count, makes[] (makeId, make, vehicleType when filtered)","cacheable":true,"cache_ttl_seconds":604800,"pricing":{"mode":"flat","credits":0},"example_params":{"vehicleType":"car"}},{"name":"manufacturers","description":"all manufacturers (paged) or details for one","required_params":[],"optional_params":["manufacturer","page"],"params":[{"name":"manufacturer","type":"string","required":false,"description":"Manufacturer name or id to fetch details for; omit to page the full list.","on_invalid":"ignore","example":"Honda Motor Co"},{"name":"page","type":"integer","required":false,"description":"Page number for the full manufacturer list (~100 per page).","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"count, manufacturers[] (mfrId, mfrName, mfrCommonName, country, vehicleTypes)","cacheable":true,"cache_ttl_seconds":604800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"wmi_decode","description":"decode a 3-char WMI to its manufacturer","required_params":["wmi"],"optional_params":[],"params":[{"name":"wmi","type":"string","required":true,"description":"A 3-character World Manufacturer Identifier (the first 3 VIN chars).","on_invalid":"reject","example":"1HG"}],"returns":"wmi + decoded fields (Make, Manufacturer, country, …)","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":1},"example_params":{"wmi":"1HG"}},{"name":"manufacturer_wmis","description":"all WMIs registered to a manufacturer","required_params":["manufacturer"],"optional_params":[],"params":[{"name":"manufacturer","type":"string","required":true,"description":"Manufacturer name or id (a `make` is also accepted) whose registered WMIs to list.","on_invalid":"reject","example":"Honda Motor Co","aliases":["make"]}],"returns":"manufacturer, count, wmis[] (wmi, name, country, vehicleType, dateAvailableToPublic)","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"vehicle_types","description":"vehicle types produced by a make","required_params":["make"],"optional_params":[],"params":[{"name":"make","type":"string","required":true,"description":"Vehicle make / brand (e.g. Honda, BMW, Acura). Case-insensitive; matched against NHTSA's catalog.","on_invalid":"ignore","example":"Honda"}],"returns":"make, count, vehicleTypes[] (vehicleTypeId, vehicleType)","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":0},"example_params":{"make":"honda"}},{"name":"product_options","description":"recall/complaint enumeration tree (modelYears → makes → models; issueType=r|c)","required_params":[],"optional_params":["issueType","modelYear","make"],"params":[{"name":"issueType","type":"enum","required":false,"description":"Which enumeration tree to walk: r = recalls, c = complaints. Any value other than c/complaint(s) is treated as r.","on_invalid":"ignore","allowed_values":[{"value":"r","label":"Recalls (default)"},{"value":"c","label":"Complaints"}],"default":"r","example":"r","aliases":["issue_type"]},{"name":"modelYear","type":"integer","required":false,"description":"Optional model year: with no make → makes for that year; with a make → models. Omit both → the list of available model years.","on_invalid":"ignore","example":2012,"aliases":["model_year","year"]},{"name":"make","type":"string","required":false,"description":"Optional make to drill product_options down to its models.","on_invalid":"ignore","example":"Honda"}],"returns":"issueType, level (modelYears/makes/models), and the matching list under that key","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"issueType":"r","modelYear":"2012"}},{"name":"plant_codes","description":"equipment (tire) plant codes for a year","required_params":["year"],"optional_params":["equipmentType","reportType"],"params":[{"name":"year","type":"integer","required":true,"description":"Production year for the equipment (tire) plant codes.","on_invalid":"ignore","example":2015,"aliases":["modelYear","model_year"]},{"name":"equipmentType","type":"enum","required":false,"description":"NHTSA equipment type code for plant codes (default 1 = tires).","on_invalid":"ignore","allowed_values":[{"value":"1","label":"Tires (default)"},{"value":"3","label":"Brake hoses"},{"value":"13","label":"Glazing"}],"default":"1","example":"1","aliases":["equipment_type"]},{"name":"reportType","type":"enum","required":false,"description":"Which plant-code report slice to return (default New).","on_invalid":"ignore","allowed_values":[{"value":"New","label":"Newly added (default)"},{"value":"Updated","label":"Updated"},{"value":"All","label":"All"}],"default":"New","example":"New","aliases":["report_type"]}],"returns":"year, equipmentType, reportType, count, plants[]","cacheable":true,"cache_ttl_seconds":2592000,"pricing":{"mode":"flat","credits":1},"example_params":{"year":"2021"}}]},{"name":"vestiaire","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Vestiaire Collective API scraper — the luxury resale marketplace (vestiairecollective.com): search for-sale and sold second-hand designer listings in 23 buyer countries with the price that country pays, read a full listing (seller price vs buyer fee, price drop, condition, measurements, seller type and sales history, shipping), browse a seller's listings and autocomplete. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/vestiaire/v1","spec_available":true,"actions":[{"name":"search","description":"Search Vestiaire Collective listings by keyword and/or brand, model and category, for sale or sold, with the site's own sorts and filters (department, condition, colour, material, seller badge, Direct Shipping, price range, listed after). Each row: product id and url, name, brand, model, category, condition, size, colours, the price a buyer in that country pays with the original price and price-drop %, sold flag, likes, listing date, seller id and badge, the item's country, local-delivery and Direct Shipping flags, and images. A query with no genuine match returns empty (padding counted in fallback_results_dropped); the site's own spelling correction is reported.","required_params":[],"optional_params":["country","currency","language","query","include_fallback_results","status","sort","gender","condition","brand_id","model_id","category_id","color_id","material_id","seller_badge","direct_shipping","price_min","price_max","listed_after","page","page_size","include_facets"],"params":[{"name":"country","type":"enum","required":false,"description":"Buyer country (ISO-2; 'uk' accepted for gb). Prices include Vestiaire's buyer fee for delivery to this country, and the currency and language follow it. Default us.","on_invalid":"reject","allowed_values":[{"value":"us","label":"US (USD)"},{"value":"gb","label":"GB (GBP)"},{"value":"fr","label":"FR (EUR)"},{"value":"de","label":"DE (EUR)"},{"value":"it","label":"IT (EUR)"},{"value":"es","label":"ES (EUR)"},{"value":"nl","label":"NL (EUR)"},{"value":"be","label":"BE (EUR)"},{"value":"at","label":"AT (EUR)"},{"value":"ie","label":"IE (EUR)"},{"value":"pt","label":"PT (EUR)"},{"value":"gr","label":"GR (EUR)"},{"value":"fi","label":"FI (EUR)"},{"value":"ch","label":"CH (CHF)"},{"value":"se","label":"SE (SEK)"},{"value":"dk","label":"DK (DKK)"},{"value":"pl","label":"PL (PLN)"},{"value":"hk","label":"HK (HKD)"},{"value":"sg","label":"SG (SGD)"},{"value":"au","label":"AU (AUD)"},{"value":"ca","label":"CA (CAD)"},{"value":"jp","label":"JP (JPY)"},{"value":"kr","label":"KR (KRW)"}],"default":"us","example":"fr"},{"name":"currency","type":"enum","required":false,"description":"Override the country's currency with one of the 13 currencies Vestiaire prices in.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"EUR"},{"value":"USD","label":"USD"},{"value":"GBP","label":"GBP"},{"value":"HKD","label":"HKD"},{"value":"SGD","label":"SGD"},{"value":"AUD","label":"AUD"},{"value":"CAD","label":"CAD"},{"value":"PLN","label":"PLN"},{"value":"CHF","label":"CHF"},{"value":"SEK","label":"SEK"},{"value":"DKK","label":"DKK"},{"value":"JPY","label":"JPY"},{"value":"KRW","label":"KRW"}],"example":"EUR"},{"name":"language","type":"enum","required":false,"description":"Language of names, categories, conditions and URLs; the keyword search follows it. Default: the country's language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"nl","label":"Dutch"},{"value":"sv","label":"Swedish"},{"value":"ko","label":"Korean"},{"value":"zh","label":"Chinese (traditional)"}],"example":"fr"},{"name":"query","type":"string","required":false,"description":"Keyword (brand, model, item). Optional when a brand, model, category or seller filter is given.","on_invalid":"reject","example":"hermes birkin","aliases":["q","keyword"]},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When a query matches nothing, Vestiaire pads the page with unrelated listings. They are dropped by default (fallback_results_dropped counts them); true returns them apart in fallback_results.","on_invalid":"reject","default":false},{"name":"status","type":"enum","required":false,"description":"For-sale listings, sold listings (price research) or both.","on_invalid":"reject","allowed_values":[{"value":"available","label":"For sale"},{"value":"sold","label":"Sold listings"},{"value":"all","label":"Both"}],"default":"available","example":"sold"},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"newest","label":"Newest"},{"value":"price_asc","label":"Price low→high"},{"value":"price_desc","label":"Price high→low"}],"default":"relevance","example":"price_asc"},{"name":"gender","type":"enum","required":false,"description":"Department.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All"},{"value":"women","label":"Women"},{"value":"men","label":"Men"},{"value":"kids","label":"Kids"}],"default":"all","example":"women"},{"name":"condition","type":"enum","required":false,"description":"Item condition.","on_invalid":"reject","allowed_values":[{"value":"never_worn_with_tag","label":"Never worn, with tag"},{"value":"never_worn","label":"Never worn"},{"value":"very_good","label":"Very good condition"},{"value":"good","label":"Good condition"},{"value":"fair","label":"Fair condition"}],"example":"never_worn"},{"name":"brand_id","type":"string","required":false,"description":"Vestiaire brand id (rows and suggest return brand_id; 50 = Chanel).","on_invalid":"reject","example":"50"},{"name":"model_id","type":"string","required":false,"description":"Vestiaire model id (rows return model_id; 7597 = Chanel Timeless/Classique).","on_invalid":"reject","example":"7597"},{"name":"category_id","type":"string","required":false,"description":"Top category id, per department: women 2 clothing, 3 shoes, 5 bags, 6 accessories, 63 jewellery; men's ids differ (12 clothing, 13 shoes …). Rows return base_category_id; include_facets lists them with their department.","on_invalid":"reject","example":"5"},{"name":"color_id","type":"string","required":false,"description":"Colour id (14 black, 1 white …; include_facets lists them).","on_invalid":"reject","example":"14"},{"name":"material_id","type":"string","required":false,"description":"Material id (3 leather, 2 cotton …; include_facets lists them).","on_invalid":"reject","example":"3"},{"name":"seller_badge","type":"enum","required":false,"description":"Only listings from sellers with this Vestiaire badge.","on_invalid":"reject","allowed_values":[{"value":"expert","label":"Expert sellers"},{"value":"trusted","label":"Trusted sellers"}],"example":"expert"},{"name":"direct_shipping","type":"boolean","required":false,"description":"Only listings eligible for Direct Shipping (sent by the seller straight to the buyer).","on_invalid":"reject","default":false},{"name":"price_min","type":"number","required":false,"description":"Minimum price in the response currency.","on_invalid":"reject","example":500},{"name":"price_max","type":"number","required":false,"description":"Maximum price in the response currency.","on_invalid":"reject","example":2000},{"name":"listed_after","type":"string","required":false,"description":"Only listings created on or after this date (YYYY-MM-DD, UTC).","on_invalid":"reject","example":"2026-09-01"},{"name":"page","type":"integer","required":false,"description":"1-based page. Vestiaire serves results up to offset 1000.","on_invalid":"reject","default":1,"example":2,"minimum":1,"maximum":201},{"name":"page_size","type":"integer","required":false,"description":"Rows per page (up to 200).","on_invalid":"reject","default":48,"example":48,"minimum":1,"maximum":200},{"name":"include_facets","type":"boolean","required":false,"description":"Also return facet counts (brands, categories, colours, conditions, item countries, seller badges, materials, price ranges, sold) with their ids.","on_invalid":"reject","default":false}],"returns":"results[]{product_id, url, name, brand, brand_id, model, model_id, gender, base_category, base_category_id, category, category_id, condition, condition_id, size, color, colors[], price, currency, original_price, price_drop_percent, sold, likes, listed_at, seller_id, seller_badge, seller_is_official_store, item_country_code, local_delivery, direct_shipping, duty_free, editor_picks[], description, image, images[]}, count, total_results, total_is_capped, page, page_size, has_more, status, sort, country, currency, language, facets (include_facets), query, corrected_query, keyword_matches_on_page, fallback_results_dropped","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"country":"us","query":"chanel bag"}},{"name":"product/detail","description":"One Vestiaire Collective listing in full, by product id or URL, priced for a buyer country: name, brand, model, category path, condition, colour, material, size, measurements, the seller's description, price with seller price vs buyer fee (and whether the fee includes authentication), the flat fees listed apart, original price and price drop, negotiable, sold with sold date, reserved, Direct Shipping, likes, listing date, the seller (username, private or professional, country, badges, items listed and sold, last-6-months sales history) and shipping to that country (ships from, dispatch delay, buyable), plus every image.","required_params":[],"optional_params":["country","currency","language","product_id","url"],"params":[{"name":"country","type":"enum","required":false,"description":"Buyer country (ISO-2; 'uk' accepted for gb). Prices include Vestiaire's buyer fee for delivery to this country, and the currency and language follow it. Default us.","on_invalid":"reject","allowed_values":[{"value":"us","label":"US (USD)"},{"value":"gb","label":"GB (GBP)"},{"value":"fr","label":"FR (EUR)"},{"value":"de","label":"DE (EUR)"},{"value":"it","label":"IT (EUR)"},{"value":"es","label":"ES (EUR)"},{"value":"nl","label":"NL (EUR)"},{"value":"be","label":"BE (EUR)"},{"value":"at","label":"AT (EUR)"},{"value":"ie","label":"IE (EUR)"},{"value":"pt","label":"PT (EUR)"},{"value":"gr","label":"GR (EUR)"},{"value":"fi","label":"FI (EUR)"},{"value":"ch","label":"CH (CHF)"},{"value":"se","label":"SE (SEK)"},{"value":"dk","label":"DK (DKK)"},{"value":"pl","label":"PL (PLN)"},{"value":"hk","label":"HK (HKD)"},{"value":"sg","label":"SG (SGD)"},{"value":"au","label":"AU (AUD)"},{"value":"ca","label":"CA (CAD)"},{"value":"jp","label":"JP (JPY)"},{"value":"kr","label":"KR (KRW)"}],"default":"us","example":"fr"},{"name":"currency","type":"enum","required":false,"description":"Override the country's currency with one of the 13 currencies Vestiaire prices in.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"EUR"},{"value":"USD","label":"USD"},{"value":"GBP","label":"GBP"},{"value":"HKD","label":"HKD"},{"value":"SGD","label":"SGD"},{"value":"AUD","label":"AUD"},{"value":"CAD","label":"CAD"},{"value":"PLN","label":"PLN"},{"value":"CHF","label":"CHF"},{"value":"SEK","label":"SEK"},{"value":"DKK","label":"DKK"},{"value":"JPY","label":"JPY"},{"value":"KRW","label":"KRW"}],"example":"EUR"},{"name":"language","type":"enum","required":false,"description":"Language of names, categories, conditions and URLs; the keyword search follows it. Default: the country's language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"nl","label":"Dutch"},{"value":"sv","label":"Swedish"},{"value":"ko","label":"Korean"},{"value":"zh","label":"Chinese (traditional)"}],"example":"fr"},{"name":"product_id","type":"string","required":false,"description":"Vestiaire product id (the number before .shtml in a product URL; rows return product_id).","on_invalid":"reject","example":"71015602","aliases":["id","listing_id"]},{"name":"url","type":"string","required":false,"description":"A vestiairecollective.com product URL instead of product_id.","on_invalid":"reject","example":"https://us.vestiairecollective.com/women-clothing/jackets/chanel/black-viscose-la-petite-veste-noire-chanel-jacket-71015602.shtml","aliases":["product_url"]}],"returns":"product{product_id, url, name, brand, brand_id, model, model_id, gender, base_category, category, category_id, subcategory, breadcrumb[{name,url}], condition, color, material, size, size_standard, measurements[{name,value}], measurement_unit, watch_mechanism, watch_strap_material, packaging[], description, original_description, original_description_language, price, currency, original_price, price_drop_percent, seller_original_price, price_breakdown{seller_price, buyer_fee, buyer_fee_percent, buyer_fee_includes_authentication}, flat_buyer_fees[{type,amount,currency,description}], duties_and_taxes, negotiable, sold, sold_at, reserved, available, local, direct_shipping, consignment, prohibited, likes, listed_at, tags[], seller{id, username, type, segment, country_code, country, badges[], rating_badge, items_listed, items_sold, on_vacation, sales_history{sold, shipped_within_7_days, cancelled, period_start, period_end}}, shipping{ships_from, destination_country, dispatch_within_days, dispatch_day, buyable, prohibited, prohibited_reason, cost_min, cost_max, cost_currency}, images[], image}, country, currency, language","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"country":"us","product_id":"71015602"}},{"name":"seller/listings","description":"One seller's Vestiaire Collective listings (for sale, sold or both) with the same row fields, sorts and filters as search. Use status=sold for a seller's sales record.","required_params":["seller_id"],"optional_params":["country","currency","language","query","status","sort","gender","condition","brand_id","model_id","category_id","color_id","material_id","seller_badge","direct_shipping","price_min","price_max","listed_after","page","page_size","include_facets"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Vestiaire seller id (search rows and product/detail return it).","on_invalid":"reject","example":"35936252"},{"name":"country","type":"enum","required":false,"description":"Buyer country (ISO-2; 'uk' accepted for gb). Prices include Vestiaire's buyer fee for delivery to this country, and the currency and language follow it. Default us.","on_invalid":"reject","allowed_values":[{"value":"us","label":"US (USD)"},{"value":"gb","label":"GB (GBP)"},{"value":"fr","label":"FR (EUR)"},{"value":"de","label":"DE (EUR)"},{"value":"it","label":"IT (EUR)"},{"value":"es","label":"ES (EUR)"},{"value":"nl","label":"NL (EUR)"},{"value":"be","label":"BE (EUR)"},{"value":"at","label":"AT (EUR)"},{"value":"ie","label":"IE (EUR)"},{"value":"pt","label":"PT (EUR)"},{"value":"gr","label":"GR (EUR)"},{"value":"fi","label":"FI (EUR)"},{"value":"ch","label":"CH (CHF)"},{"value":"se","label":"SE (SEK)"},{"value":"dk","label":"DK (DKK)"},{"value":"pl","label":"PL (PLN)"},{"value":"hk","label":"HK (HKD)"},{"value":"sg","label":"SG (SGD)"},{"value":"au","label":"AU (AUD)"},{"value":"ca","label":"CA (CAD)"},{"value":"jp","label":"JP (JPY)"},{"value":"kr","label":"KR (KRW)"}],"default":"us","example":"fr"},{"name":"currency","type":"enum","required":false,"description":"Override the country's currency with one of the 13 currencies Vestiaire prices in.","on_invalid":"reject","allowed_values":[{"value":"EUR","label":"EUR"},{"value":"USD","label":"USD"},{"value":"GBP","label":"GBP"},{"value":"HKD","label":"HKD"},{"value":"SGD","label":"SGD"},{"value":"AUD","label":"AUD"},{"value":"CAD","label":"CAD"},{"value":"PLN","label":"PLN"},{"value":"CHF","label":"CHF"},{"value":"SEK","label":"SEK"},{"value":"DKK","label":"DKK"},{"value":"JPY","label":"JPY"},{"value":"KRW","label":"KRW"}],"example":"EUR"},{"name":"language","type":"enum","required":false,"description":"Language of names, categories, conditions and URLs; the keyword search follows it. Default: the country's language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"nl","label":"Dutch"},{"value":"sv","label":"Swedish"},{"value":"ko","label":"Korean"},{"value":"zh","label":"Chinese (traditional)"}],"example":"fr"},{"name":"query","type":"string","required":false,"description":"Keyword (brand, model, item). Optional when a brand, model, category or seller filter is given.","on_invalid":"reject","example":"hermes birkin","aliases":["q","keyword"]},{"name":"status","type":"enum","required":false,"description":"For-sale listings, sold listings (price research) or both.","on_invalid":"reject","allowed_values":[{"value":"available","label":"For sale"},{"value":"sold","label":"Sold listings"},{"value":"all","label":"Both"}],"default":"available","example":"sold"},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"newest","label":"Newest"},{"value":"price_asc","label":"Price low→high"},{"value":"price_desc","label":"Price high→low"}],"default":"relevance","example":"price_asc"},{"name":"gender","type":"enum","required":false,"description":"Department.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All"},{"value":"women","label":"Women"},{"value":"men","label":"Men"},{"value":"kids","label":"Kids"}],"default":"all","example":"women"},{"name":"condition","type":"enum","required":false,"description":"Item condition.","on_invalid":"reject","allowed_values":[{"value":"never_worn_with_tag","label":"Never worn, with tag"},{"value":"never_worn","label":"Never worn"},{"value":"very_good","label":"Very good condition"},{"value":"good","label":"Good condition"},{"value":"fair","label":"Fair condition"}],"example":"never_worn"},{"name":"brand_id","type":"string","required":false,"description":"Vestiaire brand id (rows and suggest return brand_id; 50 = Chanel).","on_invalid":"reject","example":"50"},{"name":"model_id","type":"string","required":false,"description":"Vestiaire model id (rows return model_id; 7597 = Chanel Timeless/Classique).","on_invalid":"reject","example":"7597"},{"name":"category_id","type":"string","required":false,"description":"Top category id, per department: women 2 clothing, 3 shoes, 5 bags, 6 accessories, 63 jewellery; men's ids differ (12 clothing, 13 shoes …). Rows return base_category_id; include_facets lists them with their department.","on_invalid":"reject","example":"5"},{"name":"color_id","type":"string","required":false,"description":"Colour id (14 black, 1 white …; include_facets lists them).","on_invalid":"reject","example":"14"},{"name":"material_id","type":"string","required":false,"description":"Material id (3 leather, 2 cotton …; include_facets lists them).","on_invalid":"reject","example":"3"},{"name":"seller_badge","type":"enum","required":false,"description":"Only listings from sellers with this Vestiaire badge.","on_invalid":"reject","allowed_values":[{"value":"expert","label":"Expert sellers"},{"value":"trusted","label":"Trusted sellers"}],"example":"expert"},{"name":"direct_shipping","type":"boolean","required":false,"description":"Only listings eligible for Direct Shipping (sent by the seller straight to the buyer).","on_invalid":"reject","default":false},{"name":"price_min","type":"number","required":false,"description":"Minimum price in the response currency.","on_invalid":"reject","example":500},{"name":"price_max","type":"number","required":false,"description":"Maximum price in the response currency.","on_invalid":"reject","example":2000},{"name":"listed_after","type":"string","required":false,"description":"Only listings created on or after this date (YYYY-MM-DD, UTC).","on_invalid":"reject","example":"2026-09-01"},{"name":"page","type":"integer","required":false,"description":"1-based page. Vestiaire serves results up to offset 1000.","on_invalid":"reject","default":1,"example":2,"minimum":1,"maximum":201},{"name":"page_size","type":"integer","required":false,"description":"Rows per page (up to 200).","on_invalid":"reject","default":48,"example":48,"minimum":1,"maximum":200},{"name":"include_facets","type":"boolean","required":false,"description":"Also return facet counts (brands, categories, colours, conditions, item countries, seller badges, materials, price ranges, sold) with their ids.","on_invalid":"reject","default":false}],"returns":"results[]{product_id, url, name, brand, brand_id, model, model_id, gender, base_category, base_category_id, category, category_id, condition, condition_id, size, color, colors[], price, currency, original_price, price_drop_percent, sold, likes, listed_at, seller_id, seller_badge, seller_is_official_store, item_country_code, local_delivery, direct_shipping, duty_free, editor_picks[], description, image, images[]}, count, total_results, total_is_capped, page, page_size, has_more, status, sort, country, currency, language, facets (include_facets), seller_id","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"suggest","description":"Vestiaire Collective autocomplete for a partial keyword: matching brands with their brand_id and URL, and the phrase suggestions the search box shows.","required_params":["query"],"optional_params":["country","language","limit"],"params":[{"name":"query","type":"string","required":true,"description":"Partial keyword.","on_invalid":"reject","example":"chan","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Buyer country (ISO-2; 'uk' accepted for gb). Prices include Vestiaire's buyer fee for delivery to this country, and the currency and language follow it. Default us.","on_invalid":"reject","allowed_values":[{"value":"us","label":"US (USD)"},{"value":"gb","label":"GB (GBP)"},{"value":"fr","label":"FR (EUR)"},{"value":"de","label":"DE (EUR)"},{"value":"it","label":"IT (EUR)"},{"value":"es","label":"ES (EUR)"},{"value":"nl","label":"NL (EUR)"},{"value":"be","label":"BE (EUR)"},{"value":"at","label":"AT (EUR)"},{"value":"ie","label":"IE (EUR)"},{"value":"pt","label":"PT (EUR)"},{"value":"gr","label":"GR (EUR)"},{"value":"fi","label":"FI (EUR)"},{"value":"ch","label":"CH (CHF)"},{"value":"se","label":"SE (SEK)"},{"value":"dk","label":"DK (DKK)"},{"value":"pl","label":"PL (PLN)"},{"value":"hk","label":"HK (HKD)"},{"value":"sg","label":"SG (SGD)"},{"value":"au","label":"AU (AUD)"},{"value":"ca","label":"CA (CAD)"},{"value":"jp","label":"JP (JPY)"},{"value":"kr","label":"KR (KRW)"}],"default":"us","example":"fr"},{"name":"language","type":"enum","required":false,"description":"Language of names, categories, conditions and URLs; the keyword search follows it. Default: the country's language.","on_invalid":"reject","allowed_values":[{"value":"en","label":"English"},{"value":"fr","label":"French"},{"value":"de","label":"German"},{"value":"it","label":"Italian"},{"value":"es","label":"Spanish"},{"value":"nl","label":"Dutch"},{"value":"sv","label":"Swedish"},{"value":"ko","label":"Korean"},{"value":"zh","label":"Chinese (traditional)"}],"example":"fr"},{"name":"limit","type":"integer","required":false,"description":"Maximum brands and maximum phrase suggestions.","on_invalid":"reject","default":10,"example":10,"minimum":1,"maximum":20}],"returns":"brands[{brand_id, name, url}], suggestions[{text}], count, query, country, language","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"us","query":"chan"}}]},{"name":"vinted","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Vinted API — second-hand fashion listings, item detail & seller profiles across 20 European Vinted sites","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/vinted/v1","spec_available":true,"actions":[{"name":"catalog_search","description":"keyword + filter search (brand/size/condition/category/color/material/price)","required_params":[],"optional_params":["query","search_text","filters","brand_ids","size_ids","status_ids","catalog_ids","color_ids","material_ids","price_from","price_to","currency","order","per_page","page","tld"],"params":[{"name":"query","type":"string","required":false,"description":"What to search for (item keywords). Give query and/or at least one *_ids/price filter.","on_invalid":"reject","example":"nike hoodie","aliases":["search_text"]},{"name":"order","type":"enum","required":false,"description":"Result ordering (the 4 Vinted UI orders, all live-verified; unknown values are ignored upstream).","on_invalid":"ignore","allowed_values":[{"value":"newest_first","label":"Newest first"},{"value":"relevance","label":"Relevance"},{"value":"price_low_to_high","label":"Price: low to high"},{"value":"price_high_to_low","label":"Price: high to low"}],"default":"newest_first"},{"name":"brand_ids","type":"array","required":false,"description":"Only these brands — numeric ids from the brand_search action (e.g. brand_search 'nike' → id).","on_invalid":"ignore","example":[14]},{"name":"catalog_ids","type":"array","required":false,"description":"Only these categories — ids from the categories action.","on_invalid":"ignore","example":[2050]},{"name":"size_ids","type":"array","required":false,"description":"Only these sizes — ids from the sizes action.","on_invalid":"ignore","example":[207]},{"name":"status_ids","type":"array","required":false,"description":"Only these conditions — ids from the conditions action.","on_invalid":"ignore","example":[6]},{"name":"color_ids","type":"array","required":false,"description":"Only these colors — ids from the colors action.","on_invalid":"ignore","example":[1]},{"name":"material_ids","type":"array","required":false,"description":"Only these materials — ids from the catalog_filters action.","on_invalid":"ignore"},{"name":"price_from","type":"number","required":false,"description":"Only items at or above this price.","on_invalid":"ignore","example":10,"minimum":0},{"name":"price_to","type":"number","required":false,"description":"Only items at or below this price.","on_invalid":"ignore","example":20,"minimum":0},{"name":"currency","type":"string","required":false,"description":"Currency code for price_from/price_to (defaults to the site's own currency).","on_invalid":"ignore","example":"EUR"},{"name":"filters","type":"object","required":false,"description":"Raw Vinted filter object (advanced — overrides all the individual *_ids/price params).","on_invalid":"ignore"},{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"},{"name":"page","type":"integer","required":false,"description":"Page number (1, 2, 3… — Vinted serves at most ~960 results per filter combination; narrow filters to go deeper).","on_invalid":"ignore","default":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1–96; Vinted caps larger values at 96).","on_invalid":"ignore","default":20,"minimum":1,"maximum":96}],"returns":"items[]{id, title, brand, brand_id, size, price{amount, currency}, url, photos, condition, seller{id}} + pagination{current_page, total_pages, total_entries} (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"nike","tld":"fr","per_page":20}},{"name":"item_detail","description":"Full Vinted item detail — title, price, photos, description, size, color, condition, material, category and a seller summary.","required_params":[],"optional_params":["id","item_id","url","path","tld"],"params":[{"name":"id","type":"string","required":false,"description":"Vinted item ID — the digits in the item URL (…/items/<id>-slug). Provide id OR url (one of the two is required).","on_invalid":"reject","example":"9134483984","aliases":["item_id"]},{"name":"url","type":"string","required":false,"description":"Full item URL — alternative to id.","on_invalid":"reject","example":"https://www.vinted.fr/items/9134483984","aliases":["path"]},{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"item{id, url, title, description, brand, brand_id, category, catalog_id, color, size, material, price, availability, condition, photos[], breadcrumbs[], attributes[]{key, label, value}, seller{id, login*, rating, feedback_count, item_count, profile_url*}} (* redacted unless include_pii)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"id":"9801094900"}},{"name":"seller","description":"seller profile (login/rating/item_count/feedback breakdown) — PII redactable","required_params":["id"],"optional_params":["user_id","seller_id","tld"],"params":[{"name":"id","type":"string","required":true,"description":"Vinted user ID — take it from catalog_search items[].seller.id or from a member URL (vinted.fr/member/<id>).","on_invalid":"reject","example":"52590768","aliases":["user_id","seller_id"]},{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"seller{id, login*, rating, feedback_count, item_count, city*, country} (* redacted unless include_pii)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"52590768"}},{"name":"seller_items","description":"a seller's wardrobe items","required_params":["id"],"optional_params":["user_id","seller_id","page","per_page","tld"],"params":[{"name":"id","type":"string","required":true,"description":"Vinted user ID — take it from catalog_search items[].seller.id or from a member URL (vinted.fr/member/<id>).","on_invalid":"reject","example":"52590768","aliases":["user_id","seller_id"]},{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"},{"name":"page","type":"integer","required":false,"description":"Page number (1, 2, 3… — Vinted serves at most ~960 results per filter combination; narrow filters to go deeper).","on_invalid":"ignore","default":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1–96; Vinted caps larger values at 96).","on_invalid":"ignore","default":20,"minimum":1,"maximum":96}],"returns":"items[] (catalog item shape) + pagination (meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"52590768"}},{"name":"seller_feedback","description":"feedback left for a seller (text/rating/reviewer)","required_params":["id"],"optional_params":["user_id","seller_id","page","per_page","tld"],"params":[{"name":"id","type":"string","required":true,"description":"Vinted user ID — take it from catalog_search items[].seller.id or from a member URL (vinted.fr/member/<id>).","on_invalid":"reject","example":"52590768","aliases":["user_id","seller_id"]},{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"},{"name":"page","type":"integer","required":false,"description":"Page number (1, 2, 3… — Vinted serves at most ~960 results per filter combination; narrow filters to go deeper).","on_invalid":"ignore","default":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1–96; Vinted caps larger values at 96).","on_invalid":"ignore","default":20,"minimum":1,"maximum":96}],"returns":"feedback[]{text, rating, reviewer*, created_at} + pagination (* redacted unless include_pii; meta.pagination for paging)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"52590768"}},{"name":"brand_search","description":"resolve a brand name -> brand_id (+ item/favourite counts)","required_params":[],"optional_params":["query","search_text","page","per_page","tld"],"params":[{"name":"query","type":"string","required":false,"description":"Brand name (or part of it) to look up (empty = the default brand list).","on_invalid":"reject","example":"nike","aliases":["search_text"]},{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"},{"name":"page","type":"integer","required":false,"description":"Page number (1, 2, 3… — Vinted serves at most ~960 results per filter combination; narrow filters to go deeper).","on_invalid":"ignore","default":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1–96; Vinted caps larger values at 96).","on_invalid":"ignore","default":20,"minimum":1,"maximum":96}],"returns":"brands[]{id, title, item_count, favourite_count} + pagination — feed the id into catalog_search brand_ids","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike","tld":"fr"}},{"name":"autocomplete","description":"search typeahead — partial query -> ranked Vinted search suggestions (localized per site)","required_params":["query"],"optional_params":["search_text","q","tld"],"params":[{"name":"query","type":"string","required":true,"description":"Partial search text to complete (e.g. 'nik' -> 'nike homme', 'nike enfant'). Returns the localized suggestions for the chosen tld.","on_invalid":"reject","example":"nik","aliases":["search_text","q"]},{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"suggestions[]{title, score} — feed a title back into catalog_search query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"nike","tld":"fr"}},{"name":"similar","description":"items similar to a given item (items/{id}/more)","required_params":["id"],"optional_params":["item_id","content_source","tld"],"params":[{"name":"id","type":"string","required":true,"description":"Vinted item ID to find lookalikes for.","on_invalid":"reject","example":"9134483984","aliases":["item_id"]},{"name":"content_source","type":"string","required":false,"description":"Upstream recommendation source (advanced) — leave at the default.","on_invalid":"ignore","default":"similar_items"},{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"items[] (catalog item shape) similar to the given item","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"9801094900"}},{"name":"catalog_filters","description":"dynamic facets (size/brand/status/color/price/material + option ids) for a query/category","required_params":[],"optional_params":["query","search_text","catalog_ids","tld"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword whose facets you want (optional — empty = global).","on_invalid":"reject","example":"hoodie","aliases":["search_text"]},{"name":"catalog_ids","type":"array","required":false,"description":"Narrow facets to these category ids (from the categories action).","on_invalid":"ignore"},{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"filters[] — every facet (size/brand/condition/color/price/material) with its selectable option ids for the given query/category","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"categories","description":"Full Vinted category tree — id, title, code, URL and child categories for the selected country site.","required_params":[],"optional_params":["tld"],"params":[{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"categories[]{id, title, code, url, children[]} — ids feed catalog_search catalog_ids","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"tld":"fr"}},{"name":"colors","description":"color enum (id/title/hex/code)","required_params":[],"optional_params":["tld"],"params":[{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"colors[]{id, title, hex, code} — ids feed catalog_search color_ids","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{"tld":"fr"}},{"name":"conditions","description":"item-condition enum (status id/title)","required_params":[],"optional_params":["tld"],"params":[{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"conditions[]{id, title} — ids feed catalog_search status_ids","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"countries","description":"country enum (id/iso/currency)","required_params":[],"optional_params":["tld"],"params":[{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"countries[]{id, iso, currency}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"sizes","description":"size groups + size ids","required_params":[],"optional_params":["tld"],"params":[{"name":"tld","type":"enum","required":false,"description":"Which Vinted site to query (sets currency and local listings).","on_invalid":"reject","allowed_values":[{"value":"fr","label":"vinted.fr — France (EUR)"},{"value":"de","label":"vinted.de — Germany (EUR)"},{"value":"es","label":"vinted.es — Spain (EUR)"},{"value":"it","label":"vinted.it — Italy (EUR)"},{"value":"nl","label":"vinted.nl — Netherlands (EUR)"},{"value":"be","label":"vinted.be — Belgium (EUR)"},{"value":"lt","label":"vinted.lt — Lithuania (EUR)"},{"value":"lu","label":"vinted.lu — Luxembourg (EUR)"},{"value":"at","label":"vinted.at — Austria (EUR)"},{"value":"pt","label":"vinted.pt — Portugal (EUR)"},{"value":"sk","label":"vinted.sk — Slovakia (EUR)"},{"value":"fi","label":"vinted.fi — Finland (EUR)"},{"value":"co.uk","label":"vinted.co.uk — United Kingdom (GBP)"},{"value":"pl","label":"vinted.pl — Poland (PLN)"},{"value":"cz","label":"vinted.cz — Czechia (CZK)"},{"value":"se","label":"vinted.se — Sweden (SEK)"},{"value":"ro","label":"vinted.ro — Romania (RON)"},{"value":"hu","label":"vinted.hu — Hungary (HUF)"},{"value":"dk","label":"vinted.dk — Denmark (DKK)"},{"value":"com","label":"vinted.com — International (EUR)"}],"default":"fr"}],"returns":"size_groups[]{id, title, sizes[]{id, title}} — ids feed catalog_search size_ids","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}}]},{"name":"vivino","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Vivino API — live wine data scraper for the world's largest wine database and marketplace: wine search by grape, region, country, vintage, price and rating band; the wine record with its rating, rating count, per-vintage ratings, grape composition, food pairings and taste structure; the merchants selling it and their prices; and the published reviews — no API key, no login","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/vivino/v1","spec_available":true,"actions":[{"name":"search","description":"Search Vivino's wine database. Filters by free text, grape, region, country of origin, wine type, vintage year, price band and rating band, and every filter here was measured to change the result count. Returns the vintage id and the wine id, the rating Vivino prints on the card AND the all-vintages pool beside it, the region/winery/style, and the cheapest live merchant offer.","required_params":[],"optional_params":["query","market","currency","wine_type","country_codes","grape_ids","region_ids","wine_style_ids","winery_ids","food_ids","years","min_rating","min_ratings_count","price_min","price_max","natural_only","discount_only","order_by","order","page","per_page"],"params":[{"name":"query","type":"string","required":false,"description":"Free text: a wine name, a producer, a grape or a region ('catena zapata', 'barolo', 'malbec', 'grower champagne').","on_invalid":"reject","example":"malbec","aliases":["q","search_term"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"},{"name":"currency","type":"string","required":false,"description":"ISO currency for the prices, e.g. USD, EUR, GBP, JPY. Defaults to the market's own currency (us -> USD, de -> EUR).","on_invalid":"ignore","example":"USD"},{"name":"wine_type","type":"enum","required":false,"description":"Wine type. Repeatable (comma-separated).","on_invalid":"reject","allowed_values":[{"value":"red","label":"Red"},{"value":"white","label":"White"},{"value":"sparkling","label":"Sparkling"},{"value":"rose","label":"Rose"},{"value":"dessert","label":"Dessert"},{"value":"fortified","label":"Fortified"}],"example":"red"},{"name":"country_codes","type":"array","required":false,"description":"Country of ORIGIN of the wine, ISO-2 (ar, fr, it, es). This is the wine's origin, not the storefront — use `market` for the storefront.","on_invalid":"ignore","example":"ar","aliases":["country","countries"]},{"name":"grape_ids","type":"array","required":false,"description":"Grape ids from the `grapes` action (9 = Malbec).","on_invalid":"ignore","example":"9"},{"name":"region_ids","type":"array","required":false,"description":"Region ids (454 = Mendoza). From a search result's region.id or the `region/detail` action.","on_invalid":"ignore","example":"454"},{"name":"wine_style_ids","type":"array","required":false,"description":"Style ids from the `wine_styles` action.","on_invalid":"ignore","example":"895"},{"name":"winery_ids","type":"array","required":false,"description":"Winery ids. REFINES a search — the source rejects it as the only filter, so pass it with a query or another filter.","on_invalid":"ignore","example":"1437"},{"name":"food_ids","type":"array","required":false,"description":"Food-pairing ids from the `foods` action (4 = Beef).","on_invalid":"ignore","example":"4"},{"name":"years","type":"array","required":false,"description":"Vintage year(s), e.g. 2019.","on_invalid":"ignore","example":"2019","aliases":["vintage_years"]},{"name":"min_rating","type":"number","required":false,"description":"Lowest acceptable rating, 1-5.","on_invalid":"ignore","example":4.2,"minimum":1,"maximum":5},{"name":"min_ratings_count","type":"integer","required":false,"description":"Only wines with at least this many ratings. REFINES only.","on_invalid":"ignore","example":1000,"minimum":1},{"name":"price_min","type":"number","required":false,"description":"Lowest price, in the requested currency.","on_invalid":"ignore","example":20,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, in the requested currency.","on_invalid":"ignore","example":80,"minimum":0},{"name":"natural_only","type":"boolean","required":false,"description":"Only natural wines.","on_invalid":"ignore","default":false},{"name":"discount_only","type":"boolean","required":false,"description":"Only wines currently discounted.","on_invalid":"ignore","default":false},{"name":"order_by","type":"enum","required":false,"description":"Sort order. Measured to reorder the result set, not merely be echoed back.","on_invalid":"reject","allowed_values":[{"value":"ratings_average","label":"Rating, high to low"},{"value":"ratings_count","label":"Number of ratings, high to low"},{"value":"price","label":"Price, low to high"},{"value":"discount_percent","label":"Biggest discount first"},{"value":"relevance","label":"Relevance to the query"},{"value":"best_picks","label":"Vivino's own pick order"}],"example":"ratings_average"},{"name":"order","type":"enum","required":false,"description":"Sort direction. Defaults to desc, except order_by=price which defaults to asc.","on_invalid":"reject","allowed_values":[{"value":"desc","label":"Descending"},{"value":"asc","label":"Ascending"}]},{"name":"page","type":"integer","required":false,"description":"1-based page number.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-50. The source refuses more than 50 (HTTP 400).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":50,"aliases":["limit"]}],"returns":"records_matched, wines[]{vintage_id, wine_id, name, year, url, wine_type, rating, ratings_count, wine_rating, wine_ratings_count, region, country, winery, style, taste, best_price, prices[]}. NOTE: `rating`/`ratings_count` are the figures Vivino prints on the card, which for a vintage it has not yet rated on its own are the WINE-level pool (measured on 16 of 18 rows). `wine/detail` returns the vintage's own numbers.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{}},{"name":"wine/detail","description":"One VINTAGE in full: the vintage's own rating, rating count and review count (and the flag saying whether Vivino rates this vintage on its own), the wine-level pool beside it, the ratings histogram, the global/country/region/winery ranks, the grape composition in percent, food pairings, the crowd taste structure, both published alcohol figures, the drinking window and the critic scores.","required_params":["vintage_id"],"optional_params":["market","include_taste"],"params":[{"name":"vintage_id","type":"integer","required":false,"description":"The VINTAGE to read — one specific year of one wine. Accepts the numeric vintage id from search, or a vivino.com wine URL. Vintage, not wine: the same wine rates and prices differently per year.","on_invalid":"reject","example":150304508,"aliases":["id","url"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"},{"name":"include_taste","type":"boolean","required":false,"description":"Fetch the crowd taste structure and flavour groups. Vivino serves these on a separate route, so this costs one extra upstream request; set false to skip it.","on_invalid":"ignore","default":true}],"returns":"A vintage record: vintage_rating, vintage_ratings_count, vintage_reviews_count, vintage_rating_status, wine_rating, wine_ratings_count, ratings_distribution, ranking, grapes, grape_composition[]{grape_id,name,percent}, food_pairings, taste{structure,flavors}, alcohol_percent_wine, alcohol_percent_vintage, closure, drinking_window, critic_reviews[], region, country, winery, style.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"wine/vintages","description":"Every year of the same wine with that year's OWN rating, rating count and review count. This is the row a collector compares, and it is the honest answer to 'is the 2019 better than the 2018' — the search card cannot answer it.","required_params":["vintage_id"],"optional_params":["market"],"params":[{"name":"vintage_id","type":"integer","required":false,"description":"The VINTAGE to read — one specific year of one wine. Accepts the numeric vintage id from search, or a vivino.com wine URL. Vintage, not wine: the same wine rates and prices differently per year.","on_invalid":"reject","example":150304508,"aliases":["id","url"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"}],"returns":"wine_id, wine_name, wine_rating, wine_ratings_count, vintages[]{vintage_id, year, rating, ratings_count, reviews_count, rating_status, url} newest year first.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"wine/prices","description":"The marketplace half: every merchant Vivino lists for one vintage, with its price, bottle size, discount and link. Also the median, cheapest and dearest offer. The merchant set is per storefront — the US and DE markets share none.","required_params":["vintage_id"],"optional_params":["market","currency"],"params":[{"name":"vintage_id","type":"integer","required":false,"description":"The VINTAGE to read — one specific year of one wine. Accepts the numeric vintage id from search, or a vivino.com wine URL. Vintage, not wine: the same wine rates and prices differently per year.","on_invalid":"reject","example":150304508,"aliases":["id","url"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"},{"name":"currency","type":"string","required":false,"description":"ISO currency for the prices, e.g. USD, EUR, GBP, JPY. Defaults to the market's own currency (us -> USD, de -> EUR).","on_invalid":"ignore","example":"USD"}],"returns":"vintage_id, market_country, market_state, currency, median_price, min_price, max_price, best_price, offers[]{merchant{id,name,country,state,shipping_note}, price{amount,currency,discounted_from,discount_percent_source,discount_percent_computed,bottle_volume_ml,bottle_type,url}}. Current prices only — Vivino does not publish price history on the logged-out surface.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"wine/reviews","description":"The published reviews for a wine, newest first, with the star rating, the note and the reviewer Vivino shows on the page. Pass `year` to read one vintage's reviews.","required_params":["wine_id"],"optional_params":["year","market","page","per_page"],"params":[{"name":"wine_id","type":"integer","required":false,"description":"The WINE (all vintages pooled). Accepts the numeric wine id from search or a vivino.com wine URL.","on_invalid":"reject","example":1869,"aliases":["id","url"]},{"name":"year","type":"integer","required":false,"description":"Restrict to one vintage year.","on_invalid":"ignore","example":2017},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"},{"name":"page","type":"integer","required":false,"description":"1-based page number.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Reviews per page, 1-50. Asking for more returns 50.","on_invalid":"ignore","default":25,"minimum":1,"maximum":50,"aliases":["limit"]}],"returns":"wine_id, reviews[]{review_id, rating, note, language, created_at, reviewer{id,alias,handle,profile_url,is_featured,is_premium}, vintage_id, vintage_year}.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"wine/highlights","description":"The badges and ranks Vivino awards a vintage: global rank, rank within its country, its region and its winery, plus the critic scores behind them.","required_params":["vintage_id"],"optional_params":["market"],"params":[{"name":"vintage_id","type":"integer","required":false,"description":"The VINTAGE to read — one specific year of one wine. Accepts the numeric vintage id from search, or a vivino.com wine URL. Vintage, not wine: the same wine rates and prices differently per year.","on_invalid":"reject","example":150304508,"aliases":["id","url"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"}],"returns":"vintage_id, ranking{global,country,region,winery}{rank,out_of,description}, highlights[]{type,message}.","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"wines/batch","description":"Up to 50 vintages in ONE call — how a catalogue of thousands is refreshed without spending a call per wine. `full=false` returns the identity and rating block at about a fifth of the bytes.","required_params":["vintage_ids"],"optional_params":["market","full"],"params":[{"name":"vintage_ids","type":"array","required":true,"description":"Vintage ids, up to 50 per call.","on_invalid":"reject","example":"150304508,164942636","aliases":["ids"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"},{"name":"full","type":"boolean","required":false,"description":"true = the complete vintage record; false = identity, year and ratings only, about 5x smaller.","on_invalid":"ignore","default":true}],"returns":"wines[] in the same shape as wine/detail (full=true) or an identity+rating row (full=false), plus requested/returned counts and missing_ids[].","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"winery/wines","description":"A winery's catalogue: every wine it makes, with the wine-level rating and the best-rated vintage of each.","required_params":["winery_id"],"optional_params":["market"],"params":[{"name":"winery_id","type":"integer","required":true,"description":"Winery id, from any search result's winery.id.","on_invalid":"reject","example":1437,"aliases":["id"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"}],"returns":"winery_id, wines[]{wine_id, name, url, wine_type, wine_rating, wine_ratings_count, region, country, style, best_vintage_id, best_vintage_year}.","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":null},{"name":"region/detail","description":"One wine region: its country, parent and sub-regions, its top grapes and how many wines and wineries Vivino holds for it.","required_params":["region_id"],"optional_params":["market"],"params":[{"name":"region_id","type":"integer","required":true,"description":"Region id (454 = Mendoza).","on_invalid":"reject","example":454,"aliases":["id"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"}],"returns":"region_id, name, country, parent_region_id, description, wines_count, wineries_count, ratings_count, ratings_average, sub_regions[], top_grapes[].","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"grapes","description":"The grape enum behind `grape_ids` — 2229 grape varieties with the id, the name and how many wines Vivino holds for each.","required_params":[],"optional_params":["query","market","per_page"],"params":[{"name":"query","type":"string","required":false,"description":"Filter the list by name, case-insensitive.","on_invalid":"ignore","example":"malbec","aliases":["q"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-50. The source refuses more than 50 (HTTP 400).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":50,"aliases":["limit"]}],"returns":"grapes[]{id, name, seo_name, wines_count, parent_grape_id}.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"foods","description":"The food-pairing enum behind `food_ids` — the 23 pairings Vivino uses.","required_params":[],"optional_params":["market"],"params":[{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"}],"returns":"foods[]{id, name, seo_name}.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":0},"example_params":{}},{"name":"wine_styles","description":"The style enum behind `wine_style_ids` — 747 regional styles such as 'Argentinian Mendoza Malbec'.","required_params":[],"optional_params":["query","market","per_page"],"params":[{"name":"query","type":"string","required":false,"description":"Filter the list by name, case-insensitive.","on_invalid":"ignore","example":"barolo","aliases":["q"]},{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"},{"name":"per_page","type":"integer","required":false,"description":"Results per page, 1-50. The source refuses more than 50 (HTTP 400).","on_invalid":"ignore","default":25,"example":25,"minimum":1,"maximum":50,"aliases":["limit"]}],"returns":"wine_styles[]{id, name, regional_name, varietal_name, seo_name}.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"countries","description":"The country enum behind `country_codes` — 253 countries with how many wines and wineries Vivino holds for each, and their most used grapes.","required_params":[],"optional_params":["market"],"params":[{"name":"market","type":"enum","required":false,"description":"Which Vivino storefront to read. This changes the answer: the US and DE storefronts returned 1740 vs 740 matches for the same search and share ZERO merchants (measured 2026-09-23). Prices and availability are per storefront.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States storefront"},{"value":"de","label":"Germany / EU storefront"}],"default":"us","example":"us"}],"returns":"countries[]{code, name, wines_count, wineries_count, regions_count, top_grapes[]}.","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{}}]},{"name":"vuln-intel","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Vulnerability & Dependency Intelligence API — OSV.dev package vulnerability lookup, GitHub Advisory (GHSA) search, CVE/GHSA detail with CVSS and EPSS scores, CISA Known Exploited Vulnerabilities (KEV) catalog, and batch scanning","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/vuln-intel/v1","spec_available":true,"actions":[{"name":"package_vulns","description":"All known vulnerabilities affecting a package (by name+ecosystem, optionally pinned to an installed version) OR a git commit — via OSV.dev. The dependency-audit core.","required_params":["package","ecosystem"],"optional_params":["version","commit"],"params":[{"name":"package","type":"string","required":true,"description":"Package name as published in its registry (npm 'lodash', PyPI 'django', Maven 'group:artifact' e.g. 'org.apache.logging.log4j:log4j-core', Go import path). Required unless you pass `commit` instead.","on_invalid":"reject","example":"org.apache.logging.log4j:log4j-core","aliases":["name","pkg"]},{"name":"ecosystem","type":"enum","required":true,"description":"Package ecosystem / registry. Case-insensitive; common aliases map (cargo->crates.io, pip/python->PyPI is via the 'pypi' key, composer->Packagist). Required with `package` (omit when querying by `commit`).","on_invalid":"reject","allowed_values":[{"value":"alpine","label":"-> OSV 'Alpine'"},{"value":"android","label":"-> OSV 'Android'"},{"value":"bitnami","label":"-> OSV 'Bitnami'"},{"value":"cargo","label":"-> OSV 'crates.io'"},{"value":"composer","label":"-> OSV 'Packagist'"},{"value":"crates.io","label":"-> OSV 'crates.io'"},{"value":"debian","label":"-> OSV 'Debian'"},{"value":"githubactions","label":"-> OSV 'GitHub Actions'"},{"value":"go","label":"-> OSV 'Go'"},{"value":"hex","label":"-> OSV 'Hex'"},{"value":"maven","label":"-> OSV 'Maven'"},{"value":"npm","label":"-> OSV 'npm'"},{"value":"nuget","label":"-> OSV 'NuGet'"},{"value":"packagist","label":"-> OSV 'Packagist'"},{"value":"pub","label":"-> OSV 'Pub'"},{"value":"pypi","label":"-> OSV 'PyPI'"},{"value":"rubygems","label":"-> OSV 'RubyGems'"},{"value":"swifturl","label":"-> OSV 'SwiftURL'"},{"value":"ubuntu","label":"-> OSV 'Ubuntu'"}],"example":"Maven"},{"name":"version","type":"string","required":false,"description":"Exact installed version to test (e.g. '2.14.1', '4.17.15'). Omit to return ALL known vulnerabilities for the package across every version.","on_invalid":"ignore","example":"2.14.1"},{"name":"commit","type":"string","required":false,"description":"Git commit hash to query instead of package+version+ecosystem (OSV resolves which vulns affect that exact source revision).","on_invalid":"ignore","example":"6879efc2c1596d11a6a6ad296f80063b558d5e0f"}],"returns":"package, ecosystem, version, vuln_count, severity_summary{by_severity:{critical,high,moderate,low,unknown}, highest_severity, total} (per-package rollup, no extra hop), vulnerabilities[] (id, aliases, cve_ids, summary, severity_label, cvss_vector/score, fixed_versions, affected[] ranges, references); meta.record_count = vuln_count, meta.highest_severity","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"package":"org.apache.logging.log4j:log4j-core","ecosystem":"Maven","version":"2.14.1"}},{"name":"vuln_detail","description":"Full detail for one vulnerability by OSV id, GHSA id, or CVE id. OSV is the base record; if it resolves to a GHSA the response is enriched with GitHub's numeric CVSS base score, EPSS exploitation probability, and CWEs.","required_params":["id"],"optional_params":[],"params":[{"name":"id","type":"string","required":true,"description":"A vulnerability id: OSV id (GHSA-…, PYSEC-…, GO-…, RUSTSEC-…) or a CVE (CVE-2021-44228). CVE ids are resolved via OSV's alias index. Case-insensitive.","on_invalid":"reject","example":"GHSA-jfh8-c2jp-5v3q","aliases":["vuln_id","cve","cve_id","ghsa","ghsa_id"]}],"returns":"vulnerability{} — normalized OSV record (id, aliases, cve_ids, summary, details, cvss_*, affected[], fixed_versions, references, exploit_references[] (PoC/exploit links from refs: exploit-db/packetstorm/metasploit)) plus ghsa{} enrichment (cvss_score, epss_percentage/percentile, cwes) when available","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"id":"GHSA-jfh8-c2jp-5v3q"}},{"name":"advisory_search","description":"Search the GitHub Advisory Database (GHSA) by ecosystem, severity, CVE, free text, type. Cursor-paginated (meta.next_cursor).","required_params":[],"optional_params":["ecosystem","severity","cve_id","query","type","sort","direction","per_page","cursor"],"params":[{"name":"ecosystem","type":"enum","required":false,"description":"Filter advisories by GitHub ecosystem token (note GitHub's spelling: 'pip' for Python, 'rust' for crates, 'actions' for GitHub Actions).","on_invalid":"reject","allowed_values":[{"value":"actions","label":"actions"},{"value":"composer","label":"composer"},{"value":"erlang","label":"erlang"},{"value":"go","label":"go"},{"value":"maven","label":"maven"},{"value":"npm","label":"npm"},{"value":"nuget","label":"nuget"},{"value":"other","label":"other"},{"value":"pip","label":"pip"},{"value":"pub","label":"pub"},{"value":"rubygems","label":"rubygems"},{"value":"rust","label":"rust"},{"value":"swift","label":"swift"}],"example":"pip"},{"name":"severity","type":"enum","required":false,"description":"Filter advisories by qualitative severity.","on_invalid":"reject","allowed_values":[{"value":"low","label":"Low"},{"value":"medium","label":"Medium"},{"value":"high","label":"High"},{"value":"critical","label":"Critical"}],"example":"critical"},{"name":"cve_id","type":"string","required":false,"description":"Return only the advisory(ies) for this exact CVE id.","on_invalid":"ignore","example":"CVE-2021-44228","aliases":["cve"]},{"name":"query","type":"string","required":false,"description":"Free-text search across advisory summary/description.","on_invalid":"ignore","example":"log4j","aliases":["q"]},{"name":"type","type":"enum","required":false,"description":"Advisory review state. 'reviewed' (default) = GitHub-curated; 'malware' = malicious-package advisories.","on_invalid":"reject","allowed_values":[{"value":"reviewed","label":"GitHub-reviewed (default)"},{"value":"unreviewed","label":"Not yet reviewed"},{"value":"malware","label":"Malware advisories"}],"example":"reviewed"},{"name":"sort","type":"enum","required":false,"description":"Sort field for the advisory list.","on_invalid":"reject","allowed_values":[{"value":"published","label":"Publish date (default)"},{"value":"updated","label":"Last update"}],"example":"published"},{"name":"direction","type":"enum","required":false,"description":"Sort direction.","on_invalid":"reject","allowed_values":[{"value":"desc","label":"Descending (default)"},{"value":"asc","label":"Ascending"}],"example":"desc"},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 30). Larger values are clamped.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100,"aliases":["page_size"]},{"name":"cursor","type":"string","required":false,"description":"Opaque pagination cursor for the next page of advisories — pass the value from meta.next_cursor. (GHSA paginates by cursor, not page number.)","on_invalid":"ignore","example":"Y3Vyc29yOnYyOpK0…","aliases":["after"]}],"returns":"advisories[] (ghsa_id, cve_id, summary, severity, cvss_score, cwes, vulnerabilities[] affected pkgs, references, published_at); meta has record_count, has_more, next_cursor, rate_limit_remaining","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"ecosystem":"pip","severity":"critical","per_page":5}},{"name":"kev_check","description":"Is a CVE in the CISA Known-Exploited-Vulnerabilities catalog (actively exploited in the wild)? Returns the KEV entry when listed.","required_params":["cve_id"],"optional_params":[],"params":[{"name":"cve_id","type":"string","required":true,"description":"The CVE id to look up in the CISA Known-Exploited-Vulnerabilities catalog. Case-insensitive.","on_invalid":"reject","example":"CVE-2021-44228","aliases":["cve","id"]}],"returns":"cve_id, in_kev (bool), entry{} (vendor_project, product, vulnerability_name, date_added, due_date, required_action, known_ransomware_campaign_use) when listed; catalog_version, catalog_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"cve_id":"CVE-2021-44228"}},{"name":"kev_list","description":"Browse / filter the full CISA KEV catalog by vendor, product, or ransomware flag, with page pagination.","required_params":[],"optional_params":["vendor","product","ransomware","page","per_page"],"params":[{"name":"vendor","type":"string","required":false,"description":"Filter KEV entries by vendor/project (substring, case-insensitive).","on_invalid":"ignore","example":"Microsoft","aliases":["vendor_project"]},{"name":"product","type":"string","required":false,"description":"Filter KEV entries by product (substring, case-insensitive).","on_invalid":"ignore","example":"Windows"},{"name":"ransomware","type":"enum","required":false,"description":"Filter KEV entries by whether the CVE is known-used in ransomware campaigns (CISA's knownRansomwareCampaignUse field).","on_invalid":"reject","allowed_values":[{"value":"Known","label":"Used in ransomware campaigns"},{"value":"Unknown","label":"No known ransomware use"}],"example":"Known"},{"name":"page","type":"integer","required":false,"description":"1-based page number for the KEV list. Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"per_page","type":"integer","required":false,"description":"Results per page (1-100, default 30). Larger values are clamped.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100,"aliases":["page_size"]}],"returns":"entries[] (normalized KEV records), catalog_version, total (after filters), catalog_count (full); meta has record_count, page, per_page, has_more, next_page","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"vendor":"Microsoft","per_page":5}},{"name":"exploits","description":"Public exploit / PoC lookup for a CVE via the Exploit-DB (Offensive Security) database (keyless, CVE-indexed). Answers 'is there a weaponized public exploit?' — has_public_exploit + each entry's edb_id, type (remote/local/webapps/dos), platform, verified flag, date_published, and deep links (exploit_db_url + upstream source_url).","required_params":["cve_id"],"optional_params":["verified_only"],"params":[{"name":"cve_id","type":"string","required":true,"description":"The CVE id to look up in the Exploit-DB (Offensive Security) public exploit/PoC database. Case-insensitive. Returns every exploit row whose 'codes' column references this CVE.","on_invalid":"reject","example":"CVE-2021-44228","aliases":["cve","id"]},{"name":"verified_only","type":"boolean","required":false,"description":"If true, return only Exploit-DB entries marked verified (reproduced by the Exploit-DB team). Default false = all entries.","on_invalid":"ignore","default":false,"example":false}],"returns":"cve_id, has_public_exploit (bool), exploit_count, exploits[] (edb_id, description, type, platform, author, date_published, verified, codes[], exploit_db_url, source_url); meta.has_public_exploit, meta.exploitdb_rows","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"cve_id":"CVE-2021-44228"}},{"name":"batch","description":"Bulk-scan up to 100 package/commit queries in one call (OSV querybatch), each hydrated to full vulnerability detail by default.","required_params":["queries"],"optional_params":["hydrate"],"params":[{"name":"queries","type":"array","required":true,"description":"Array of up to 100 query objects. Each is either {package, ecosystem, version?} or {commit}. Returns one result group per query (order preserved), each hydrated to full vulnerability detail.","on_invalid":"reject","example":[{"package":"lodash","ecosystem":"npm","version":"4.17.15"},{"commit":"6879efc2c1596d11a6a6ad296f80063b558d5e0f"}]},{"name":"hydrate","type":"boolean","required":false,"description":"If true (default) each batch hit is expanded to the full normalized vulnerability via OSV /vulns/{id}. Set false for a faster id-only response (returns {id, modified} per hit).","on_invalid":"ignore","default":true,"example":true}],"returns":"results[] (one per input query, order preserved: query, vuln_count, vulnerabilities[]); meta.record_count = total vulns across all queries","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"queries":[{"package":"lodash","ecosystem":"npm","version":"4.17.15"},{"package":"django","ecosystem":"PyPI","version":"3.0.0"}]}}]},{"name":"wallapop","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Wallapop API — second-hand listings from Wallapop Spain, Italy and Portugal: search by keyword, place and radius, full listings with reserved/sold status, shipping prices and seller rating, cars search, seller listings, categories and suggestions. No account, no browser.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/wallapop/v1","spec_available":true,"actions":[{"name":"search","description":"Search Wallapop listings in Spain, Italy or Portugal by keyword or category around a point: listing id, title, description, price in EUR (null when the site shows 0), previous price and discount, category path, city and postal code, distance from the search point, created and modified time, reserved flag, whether the seller ships, refurbished/warranty flags, car and real-estate facts, photos. Filter by radius, price, condition, shipping, category, refurbished and warranty; sort by relevance, newest, closest or price. Paid bumped rows are dropped and counted unless include_sponsored.","required_params":[],"optional_params":["query","country","latitude","longitude","distance_km","category","subcategory","price_min","price_max","condition","shipping_only","refurbished_only","warranty_only","sort","cursor","include_sponsored","country_only","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword. Optional when `category` is given.","on_invalid":"reject","example":"bicicleta","aliases":["q","keywords","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Wallapop country: es (Spain), it (Italy) or pt (Portugal). Sets the language of labels and the default search point (Madrid, Rome, Lisbon). Prices are in EUR everywhere.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spain — es.wallapop.com"},{"value":"it","label":"Italy — it.wallapop.com"},{"value":"pt","label":"Portugal — pt.wallapop.com"}],"default":"es","example":"es","aliases":["market"]},{"name":"latitude","type":"number","required":false,"description":"Search point latitude (with longitude). Wallapop ranks and filters by distance from this point; default is the country's capital.","on_invalid":"reject","example":40.4168,"minimum":-90,"maximum":90,"aliases":["lat"]},{"name":"longitude","type":"number","required":false,"description":"Search point longitude (with latitude).","on_invalid":"reject","example":-3.7038,"minimum":-180,"maximum":180,"aliases":["lon","lng"]},{"name":"distance_km","type":"integer","required":false,"description":"Only listings within this many km of the search point (1-500).","on_invalid":"reject","minimum":1,"maximum":500,"aliases":["radius_km"]},{"name":"category","type":"integer","required":false,"description":"Top-level category id from `categories` (e.g. 17000 bicycles, 24200 electronics, 12465 fashion).","on_invalid":"reject","example":17000,"aliases":["category_id"]},{"name":"subcategory","type":"integer","required":false,"description":"A deeper category id from `categories` (children of `category`); needs `category`.","on_invalid":"reject","example":10213,"aliases":["subcategory_id"]},{"name":"price_min","type":"number","required":false,"description":"Lowest price, EUR.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, EUR.","on_invalid":"reject","minimum":0},{"name":"condition","type":"enum","required":false,"description":"Item condition. un_opened / in_box exist for electronics, un_worn for fashion.","on_invalid":"reject","allowed_values":[{"value":"new","label":"New, never used"},{"value":"as_good_as_new","label":"As good as new"},{"value":"good","label":"Good"},{"value":"fair","label":"Fair"},{"value":"has_given_it_all","label":"Has given it all"},{"value":"un_opened","label":"Unopened (electronics)"},{"value":"in_box","label":"In its box (electronics)"},{"value":"un_worn","label":"Unworn, with tags (fashion)"}]},{"name":"shipping_only","type":"boolean","required":false,"description":"Only listings whose seller offers shipping.","on_invalid":"reject","aliases":["is_shippable"]},{"name":"refurbished_only","type":"boolean","required":false,"description":"Only refurbished listings (professional refurbishers).","on_invalid":"reject"},{"name":"warranty_only","type":"boolean","required":false,"description":"Only listings with at least one year of warranty.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"Order of results.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Most relevant (default with a keyword)"},{"value":"newest","label":"Newest first"},{"value":"closest","label":"Closest to the search point (default without a keyword)"},{"value":"price_asc","label":"Lowest price first — zero and placeholder prices come first"},{"value":"price_desc","label":"Highest price first — placeholder prices come first"}]},{"name":"cursor","type":"string","required":false,"description":"`next_cursor` from the previous page. When given, the other search parameters are taken from the cursor and ignored.","on_invalid":"reject","aliases":["next_cursor","next_page"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return the paid bumped ('destacado') rows the site mixes into relevance results, flagged sponsored:true. Off by default.","on_invalid":"reject","default":false},{"name":"country_only","type":"boolean","required":false,"description":"Drop listings located in another Wallapop country. The site's search is cross-border: from Italy or Portugal, newest and price orders are mostly Spanish listings. Off by default (the site shows them, flagged cross_border); dropped rows are counted in other_country_dropped.","on_invalid":"reject","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no listing mentions the query (the site sometimes answers nonsense with unrelated rows), the page comes back empty with fallback_results_dropped; true also returns those rows in fallback_results.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, description, url, slug, price (null when 0), currency, price_is_zero, was_price, discount_percent, category_id, category_path[]{id, name}, location{city, postal_code, region, country_code, lat, lon (include_pii only)}, distance_km (from the search point), cross_border (listed in another Wallapop country), text_is_translated (title/description are the site's translation; listing has the original), created_at, modified_at, reserved, shipping_available (seller ships), shipping_eligible_category, is_refurbished, has_warranty, seller_id, seller_is_top_profile, sponsored (injected paid slot), is_bumped, bump_type, vehicle{brand, model, year, version, km, engine, horsepower}, real_estate{operation, type, surface, rooms, bathrooms}, attributes, image, images[], image_count}, count (organic rows), sponsored_dropped, sponsored_count, other_country_count, other_country_dropped, fallback_results_dropped, fallback_results[] (include_fallback_results only), total_results (null: not published), has_more, next_cursor, sort_applied, filters_applied_count, location_country, country, currency, query","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"bici","country":"es"}},{"name":"cars/search","description":"Search used cars on Wallapop (Spain, Italy, Portugal) around a point: the listing rows of search plus vehicle{brand, model, year, version, km, engine, horsepower}. Filter by brand, model, year, mileage, fuel, gearbox, body type, private or professional seller, price and radius.","required_params":[],"optional_params":["query","country","latitude","longitude","distance_km","brand","model","year_min","year_max","km_min","km_max","engine","gearbox","body_type","seller_type","price_min","price_max","warranty_only","sort","cursor","include_sponsored","country_only","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Keyword. Optional when `category` is given.","on_invalid":"reject","example":"bicicleta","aliases":["q","keywords","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Wallapop country: es (Spain), it (Italy) or pt (Portugal). Sets the language of labels and the default search point (Madrid, Rome, Lisbon). Prices are in EUR everywhere.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spain — es.wallapop.com"},{"value":"it","label":"Italy — it.wallapop.com"},{"value":"pt","label":"Portugal — pt.wallapop.com"}],"default":"es","example":"es","aliases":["market"]},{"name":"latitude","type":"number","required":false,"description":"Search point latitude (with longitude). Wallapop ranks and filters by distance from this point; default is the country's capital.","on_invalid":"reject","example":40.4168,"minimum":-90,"maximum":90,"aliases":["lat"]},{"name":"longitude","type":"number","required":false,"description":"Search point longitude (with latitude).","on_invalid":"reject","example":-3.7038,"minimum":-180,"maximum":180,"aliases":["lon","lng"]},{"name":"distance_km","type":"integer","required":false,"description":"Only listings within this many km of the search point (1-500).","on_invalid":"reject","minimum":1,"maximum":500,"aliases":["radius_km"]},{"name":"brand","type":"string","required":false,"description":"Car brand as Wallapop lists it (case-insensitive), e.g. Seat, BMW.","on_invalid":"reject","example":"Seat","aliases":["make"]},{"name":"model","type":"string","required":false,"description":"Model of that brand (needs brand).","on_invalid":"reject","example":"Ibiza"},{"name":"year_min","type":"integer","required":false,"description":"Oldest registration year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Newest registration year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"km_min","type":"integer","required":false,"description":"Lowest mileage.","on_invalid":"reject","minimum":0},{"name":"km_max","type":"integer","required":false,"description":"Highest mileage.","on_invalid":"reject","minimum":0},{"name":"engine","type":"enum","required":false,"description":"Fuel / drive.","on_invalid":"reject","allowed_values":[{"value":"gasoline","label":"gasoline"},{"value":"diesel","label":"diesel"},{"value":"electric","label":"electric"},{"value":"hybrid","label":"hybrid"},{"value":"plug_in_hybrid","label":"plug in hybrid"},{"value":"lpg","label":"lpg"},{"value":"cng","label":"cng"},{"value":"other","label":"other"}]},{"name":"gearbox","type":"enum","required":false,"description":"Gearbox.","on_invalid":"reject","allowed_values":[{"value":"manual","label":"manual"},{"value":"automatic","label":"automatic"},{"value":"semiautomatic","label":"semiautomatic"}]},{"name":"body_type","type":"enum","required":false,"description":"Body type.","on_invalid":"reject","allowed_values":[{"value":"small","label":"small"},{"value":"coupe","label":"coupe"},{"value":"sedan","label":"sedan"},{"value":"estate","label":"estate"},{"value":"minivan","label":"minivan"},{"value":"suv","label":"suv"},{"value":"van","label":"van"},{"value":"convertible","label":"convertible"},{"value":"pickup","label":"pickup"},{"value":"other","label":"other"}]},{"name":"seller_type","type":"enum","required":false,"description":"Private sellers or professionals.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private seller"},{"value":"professional","label":"Dealer / professional"}]},{"name":"price_min","type":"number","required":false,"description":"Lowest price, EUR.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, EUR.","on_invalid":"reject","minimum":0},{"name":"warranty_only","type":"boolean","required":false,"description":"Only listings with at least one year of warranty.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"Order of results.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Most relevant (default with a keyword)"},{"value":"newest","label":"Newest first"},{"value":"closest","label":"Closest to the search point (default without a keyword)"},{"value":"price_asc","label":"Lowest price first — zero and placeholder prices come first"},{"value":"price_desc","label":"Highest price first — placeholder prices come first"}]},{"name":"cursor","type":"string","required":false,"description":"`next_cursor` from the previous page. When given, the other search parameters are taken from the cursor and ignored.","on_invalid":"reject","aliases":["next_cursor","next_page"]},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return the paid bumped ('destacado') rows the site mixes into relevance results, flagged sponsored:true. Off by default.","on_invalid":"reject","default":false},{"name":"country_only","type":"boolean","required":false,"description":"Drop listings located in another Wallapop country. The site's search is cross-border: from Italy or Portugal, newest and price orders are mostly Spanish listings. Off by default (the site shows them, flagged cross_border); dropped rows are counted in other_country_dropped.","on_invalid":"reject","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When no listing mentions the query (the site sometimes answers nonsense with unrelated rows), the page comes back empty with fallback_results_dropped; true also returns those rows in fallback_results.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"results[]{listing_id, title, description, url, slug, price (null when 0), currency, price_is_zero, was_price, discount_percent, category_id, category_path[]{id, name}, location{city, postal_code, region, country_code, lat, lon (include_pii only)}, distance_km (from the search point), cross_border (listed in another Wallapop country), text_is_translated (title/description are the site's translation; listing has the original), created_at, modified_at, reserved, shipping_available (seller ships), shipping_eligible_category, is_refurbished, has_warranty, seller_id, seller_is_top_profile, sponsored (injected paid slot), is_bumped, bump_type, vehicle{brand, model, year, version, km, engine, horsepower}, real_estate{operation, type, surface, rooms, bathrooms}, attributes, image, images[], image_count}, count (organic rows), sponsored_dropped, sponsored_count, other_country_count, other_country_dropped, fallback_results_dropped, fallback_results[] (include_fallback_results only), total_results (null: not published), has_more, next_cursor, sort_applied, filters_applied_count, location_country, country, currency, query","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"listing","description":"The full Wallapop listing by id, slug or URL: title and description as written, status (active, reserved, sold, expired), price, previous price and discount, condition, brand and model, category path, attributes, car or property facts, every photo, city and postal code, last modified, views, favourites and chats, bump flag, shipping availability with each delivery option's price and delivery days, and the seller: type (private, pro, shop), rating on a 5-point scale, review count, sold count, member since, verified; name and business address for PRO and shop sellers.","required_params":["listing_id"],"optional_params":["country","max_rotations"],"params":[{"name":"listing_id","type":"string","required":true,"description":"The listing id from a search row (e.g. pzpk03moy9j3), the slug (bicicletas-btwin-paseo-1302091802) or the full listing URL.","on_invalid":"reject","example":"pzpk03moy9j3","aliases":["id","item_id","slug","url"]},{"name":"country","type":"enum","required":false,"description":"Which Wallapop country: es (Spain), it (Italy) or pt (Portugal). Sets the language of labels and the default search point (Madrid, Rome, Lisbon). Prices are in EUR everywhere.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spain — es.wallapop.com"},{"value":"it","label":"Italy — it.wallapop.com"},{"value":"pt","label":"Portugal — pt.wallapop.com"}],"default":"es","example":"es","aliases":["market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{listing_id, slug, title, description, url, status (active|reserved|on_hold|sold|expired), reserved, sold, expired, price (null when 0), currency, price_is_zero, was_price, discount_percent, condition{code, label}, brand, model, size, color, isbn, category_path[]{id, name}, item_type, attributes[]{id, label, value, code}, vehicle{km, year, version, gear_box, engine, horse_power, body_type, doors, seats, …}, real_estate{…}, images[]{url, medium_url, small_url}, image_count, location{city, postal_code, country_code, approximate, lat, lon (PRO/shop or include_pii)}, modified_at, views, favorites, conversations, is_bumped, bump_type, is_refurbished, stock, shipping{shipping_available, shipping_eligible_category, cheapest_shipping_price, delivery_options[]{carrier, method, price, currency, discounted_price}, delivery_days_min, delivery_days_max, is_bulky}, seller{id, type (private|pro|shop), name, profile_url, avatar_url (PRO/shop or include_pii), rating, rating_scale, review_count, sold_count, sales_count, purchases_count, published_count, member_since, verified, is_top_profile, vacation_mode, city, postal_code, shipping_on_time_days, official_store_url, business{description, address, opening_hours, website, lat, lon, has_phone, phone (include_pii)}}, country, detail_source}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller_listings","description":"One Wallapop seller's profile and current listings: rating on a 5-point scale with the star breakdown, review, sold, sales and purchase counts, member since, city — and 40 listings per page with id, title, price, previous price, reserved flag, shipping, condition and photos.","required_params":["seller_id"],"optional_params":["country","cursor","max_rotations"],"params":[{"name":"seller_id","type":"string","required":true,"description":"The seller id from a search row (seller_id) or a listing (seller.id).","on_invalid":"reject","example":"p8j3ew34x1z9","aliases":["user_id"]},{"name":"country","type":"enum","required":false,"description":"Which Wallapop country: es (Spain), it (Italy) or pt (Portugal). Sets the language of labels and the default search point (Madrid, Rome, Lisbon). Prices are in EUR everywhere.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spain — es.wallapop.com"},{"value":"it","label":"Italy — it.wallapop.com"},{"value":"pt","label":"Portugal — pt.wallapop.com"}],"default":"es","example":"es","aliases":["market"]},{"name":"cursor","type":"string","required":false,"description":"`next_cursor` from the previous page of this seller.","on_invalid":"reject","aliases":["next_cursor"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"seller{id, type (private|professional), name, profile_url, avatar_url (professional or include_pii), rating, rating_scale, review_count, review_breakdown_percent{1..5}, sold_count, sales_count, purchases_count, published_count, member_since, is_top_profile, city, postal_code, country_code}, results[]{listing_id, title, description, url, slug, price, currency, price_is_zero, was_price, discount_percent, category_id, reserved, shipping_available, is_refurbished, has_warranty, is_bumped, bump_type, vehicle, real_estate, attributes, image, images[], image_count}, count, has_more, next_cursor","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"Wallapop's category tree for one country in its language: up to four levels, every node with the id to pass as `category` (top level) or `subcategory` to search.","required_params":[],"optional_params":["country","max_rotations"],"params":[{"name":"country","type":"enum","required":false,"description":"Which Wallapop country: es (Spain), it (Italy) or pt (Portugal). Sets the language of labels and the default search point (Madrid, Rome, Lisbon). Prices are in EUR everywhere.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spain — es.wallapop.com"},{"value":"it","label":"Italy — it.wallapop.com"},{"value":"pt","label":"Portugal — pt.wallapop.com"}],"default":"es","example":"es","aliases":["market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"categories[]{id, name, level, search_param (category|subcategory), vertical (top level: cars|real_estate|consumer_goods), children[]}, count (top level), node_count, country","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"Wallapop search autocomplete in the country's language: completed keywords for a partial term.","required_params":["query"],"optional_params":["country","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The partial keyword.","on_invalid":"reject","example":"bici","aliases":["q","prefix","keyword"]},{"name":"country","type":"enum","required":false,"description":"Which Wallapop country: es (Spain), it (Italy) or pt (Portugal). Sets the language of labels and the default search point (Madrid, Rome, Lisbon). Prices are in EUR everywhere.","on_invalid":"reject","allowed_values":[{"value":"es","label":"Spain — es.wallapop.com"},{"value":"it","label":"Italy — it.wallapop.com"},{"value":"pt","label":"Portugal — pt.wallapop.com"}],"default":"es","example":"es","aliases":["market"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"suggestions[]{keyword, subtitle, kind}, count, query, country","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"bici"}}]},{"name":"walmart","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Walmart API scraper — search Walmart.com products with filters, sort & pagination, full product detail (price, specifications, variants, seller, availability), customer reviews (rating breakdown + review texts), and category/department browse. No account required.","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/walmart/v1","spec_available":true,"actions":[{"name":"search","description":"Search Walmart.com by keyword → a paginated, sortable list of products with item id, name, current & list price, savings, star rating + review count, availability, seller, category, fulfillment, image and the product link. Narrow with min_price/max_price and sort. 🔴 `brand` IS ALL-OR-NOTHING PER SEARCH, because Walmart publishes it that way: a clothing/shoes/bags/watches grid carries it on every row (measured 549 of 549 rows over 9 such searches — t-shirt 62/62, backpack 72/72, jeans 71/71, sneakers 65/65…), and every other kind of search carries it on no row at all (0 of ~880 rows over 12 searches — laptop, tv, headphones, printer, coffee maker, sofa, dog food, milk, toothpaste, vitamins, lipstick, office chair). On those searches Walmart simply does not put the brand in the listing it publishes, so this API returns null rather than guessing it out of the product name. Read `meta.field_coverage.brand` to see how many rows of YOUR call carried one, and use product_detail when you need brand guaranteed — it carries it for every product, in every category.","required_params":["query"],"optional_params":["sort","page","max_results","min_price","max_price","facet"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for on Walmart.com (product keywords, brand, or model).","on_invalid":"reject","example":"laptop","aliases":["q","keyword","search"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"best_match","label":"Best match (default)"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"best_seller","label":"Best selling"},{"value":"rating_high","label":"Top rated"},{"value":"new","label":"New arrivals"}],"default":"best_match","example":"price_low"},{"name":"page","type":"integer","required":false,"description":"Result page (~40-55 products per page; paginate with page += 1). The response's `max_page` is the last page Walmart will serve for the query. Walmart repeats SPONSORED tiles across pages (measured: 12 repeats page1↔page2, 11 of them sponsored); filter on `sponsored == false` for a duplicate-free paginated set.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_results","type":"integer","required":false,"description":"How many products to return (1-400). Walmart serves about 40-55 per page, so asking for more than that fetches the further pages automatically — they are fetched TOGETHER, so 200 results cost roughly the time of one page rather than five. 400 is Walmart's real ceiling: it stops serving products after page 10, measured — note that Walmart's own `max_page` claims 13-14 and is wrong, so do not size a job from it. OMIT IT to get exactly one page, exactly as this action behaves today — `page` on its own is completely unchanged.","on_invalid":"ignore","example":100,"minimum":1,"maximum":400,"aliases":["limit","max"]},{"name":"min_price","type":"number","required":false,"description":"Lowest price to include (USD).","on_invalid":"ignore","example":100,"minimum":0,"aliases":["price_min"]},{"name":"max_price","type":"number","required":false,"description":"Highest price to include (USD).","on_invalid":"ignore","example":1000,"minimum":0,"aliases":["price_max"]},{"name":"facet","type":"string","required":false,"description":"Advanced: a raw Walmart facet token (e.g. a brand/department filter from a category page) appended to the search as &facet=. Escape hatch for power users; omit for a plain keyword search.","on_invalid":"ignore","example":"brand%3AHP"}],"returns":"results[]{item_id, name, brand, price, list_price, savings_amount, currency, rating, review_count, availability, availability_display, in_stock, seller, seller_id, category, badge, fulfillment{methods,earliest_date}, price_range, min_price, image, url, sponsored} + total + count + page + max_page + related_searches. meta.field_coverage{rows, brand, note} reports how many rows of THIS call carried a brand — Walmart publishes it on a whole search grid or on none of it, so 0 there means Walmart omitted it, not that this API dropped it.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":2,"per":1,"min":2},"example_params":{"query":"laptop"}},{"name":"product_detail","description":"Full product record by Walmart item id (or product URL): name, brand, model, UPC, manufacturer part number, current & list price, availability, seller, average rating + review count, short & long descriptions, the full specification table, product highlights, every variant with its resolved attributes (colour/size/…), the category breadcrumb, return policy, fulfillment and the gallery images.","required_params":[],"optional_params":["item_id","url"],"params":[{"name":"item_id","type":"string","required":false,"description":"Walmart item id — the number in a walmart.com/ip/<id> URL, or a search result's `item_id`. Provide item_id OR url.","on_invalid":"reject","example":"20122959141","aliases":["id","product_id","us_item_id"]},{"name":"url","type":"string","required":false,"description":"Full walmart.com product page URL (alternative to item_id; the id is parsed from /ip/<id>).","on_invalid":"ignore","example":"https://www.walmart.com/ip/20122959141","aliases":["product_url"]}],"returns":"product{item_id, name, brand, model, upc, manufacturer_part_number, type, price, list_price, currency, availability, seller, seller_id, condition, rating, review_count, short_description, long_description, specifications[], highlights[], variants[]{id,usItemId,attributes[],price,availability,url,image}, variant_options[], category_path[], return_policy{}, fulfillment{}, warnings[], images[], url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"item_id":"709326941"}},{"name":"reviews","description":"Customer reviews for a Walmart product by item id (or product URL): the average rating, total review count, recommended-percentage, the 5★→1★ rating distribution and percentages, the most-mentioned aspects, and the review texts (rating, title, body, date, helpful counts, verified-purchase, purchased variant, photos).","required_params":[],"optional_params":["item_id","url","max_results"],"params":[{"name":"item_id","type":"string","required":false,"description":"Walmart item id — the number in a walmart.com/ip/<id> URL, or a search result's `item_id`. Provide item_id OR url.","on_invalid":"reject","example":"20122959141","aliases":["id","product_id","us_item_id"]},{"name":"url","type":"string","required":false,"description":"Full walmart.com product page URL (alternative to item_id; the id is parsed from /ip/<id>).","on_invalid":"ignore","example":"https://www.walmart.com/ip/20122959141","aliases":["product_url"]},{"name":"max_results","type":"integer","required":false,"description":"How many review texts to return (10 per Walmart page, fetched concurrently). The rating distribution is always the full-catalog total. Only `reviews_with_text_count` of the total ratings actually carry text.","on_invalid":"ignore","default":20,"minimum":1,"maximum":100}],"returns":"average_rating + total_review_count + reviews_with_text_count + recommended_percentage + rating_distribution{5,4,3,2,1} + rating_percentages + aspects[] + reviews[]{review_id, rating, title, text, date, helpful_positive, helpful_negative, verified_purchase, recommended, variant[], photos[]}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"per_unit","credits":1,"per":20,"min":2},"example_params":{"item_id":"20122959141"}},{"name":"category","description":"Browse a Walmart category / department by its query term (e.g. 'coffee maker', '4k tv') → the same product grid as search, framed as a category browse with the related category searches surfaced. Paginated and sortable.","required_params":["query"],"optional_params":["sort","page","max_results","min_price","max_price"],"params":[{"name":"query","type":"string","required":true,"description":"The category/department to browse (a Walmart department name or product-class keyword).","on_invalid":"reject","example":"coffee maker","aliases":["q","category","department"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering.","on_invalid":"ignore","allowed_values":[{"value":"best_match","label":"Best match (default)"},{"value":"price_low","label":"Price: low to high"},{"value":"price_high","label":"Price: high to low"},{"value":"best_seller","label":"Best selling"},{"value":"rating_high","label":"Top rated"},{"value":"new","label":"New arrivals"}],"default":"best_match","example":"price_low"},{"name":"page","type":"integer","required":false,"description":"Result page (~40-55 products per page; paginate with page += 1). The response's `max_page` is the last page Walmart will serve for the query. Walmart repeats SPONSORED tiles across pages (measured: 12 repeats page1↔page2, 11 of them sponsored); filter on `sponsored == false` for a duplicate-free paginated set.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_results","type":"integer","required":false,"description":"How many products to return (1-400). Walmart serves about 40-55 per page, so asking for more than that fetches the further pages automatically — they are fetched TOGETHER, so 200 results cost roughly the time of one page rather than five. 400 is Walmart's real ceiling: it stops serving products after page 10, measured — note that Walmart's own `max_page` claims 13-14 and is wrong, so do not size a job from it. OMIT IT to get exactly one page, exactly as this action behaves today — `page` on its own is completely unchanged.","on_invalid":"ignore","example":100,"minimum":1,"maximum":400,"aliases":["limit","max"]},{"name":"min_price","type":"number","required":false,"description":"Lowest price to include (USD).","on_invalid":"ignore","example":100,"minimum":0,"aliases":["price_min"]},{"name":"max_price","type":"number","required":false,"description":"Highest price to include (USD).","on_invalid":"ignore","example":1000,"minimum":0,"aliases":["price_max"]}],"returns":"results[]{item_id, name, price, rating, review_count, availability, seller, image, url} + total + count + page + max_page + category + related_searches","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"4k tv"}}]},{"name":"watsons-tr","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Watsons Türkiye API scraper — search watsons.com.tr's beauty and personal-care catalogue and read full product records: TRY price, Watsons Club member price and was-price when published, stock level, rating and review breakdown, EAN barcodes, images, breadcrumb, description and reviews. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/watsons-tr/v1","spec_available":true,"actions":[{"name":"search","description":"Search watsons.com.tr by keyword, or browse a category, and get one row per product: product code, title, brand, image, price in TRY, Watsons Club member price and was-price when Watsons publishes them, stock status and unit count, rating and review count, EAN barcodes and category path. Filter by brand, price range and in-stock, sort the way the site does, and page through the results. The response also lists the brands, categories and price bands available for the query.","required_params":[],"optional_params":["query","category","page","page_size","sort","brand","in_stock","min_price","max_price","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"What to look for on watsons.com.tr — a Turkish keyword ('şampuan', 'ruj'), a brand ('elseve') or a product name. Optional when `category` is given (then the category is browsed).","on_invalid":"reject","example":"şampuan","aliases":["q","keyword","text"]},{"name":"category","type":"string","required":false,"description":"Watsons category code — the number after /c/ in a category URL (https://www.watsons.com.tr/sac-bakim/sampuanlar/c/212 → 212). A full category URL is also accepted. Every search returns the matching categories with their codes in `filters.categories`.","on_invalid":"reject","example":"212","aliases":["category_code","category_id"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Products per page, 1-100 (the site's default is 28).","on_invalid":"ignore","default":28,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result order — only the orderings watsons.com.tr itself offers.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Watsons' recommended order"},{"value":"price_asc","label":"Price, lowest first"},{"value":"price_desc","label":"Price, highest first"},{"value":"newest","label":"Newest products first"},{"value":"rating","label":"Highest rated first"},{"value":"most_reviewed","label":"Most reviewed first"},{"value":"name_asc","label":"Name A-Z"},{"value":"name_desc","label":"Name Z-A"},{"value":"stock","label":"In-stock products first"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Only these brands. One brand or several separated by commas (several = any of them). Use the names returned in `filters.brands`; case does not matter.","on_invalid":"reject","example":"ELSEVE","aliases":["brands"]},{"name":"in_stock","type":"boolean","required":false,"description":"true = only products Watsons shows as in stock.","on_invalid":"ignore","default":false},{"name":"min_price","type":"number","required":false,"description":"Lowest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"max_price","type":"number","required":false,"description":"Highest price in TRY (inclusive).","on_invalid":"reject","minimum":0},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"results[]{position, product_id (BP_… code), sku, title, brand, range_name, url, image, price (number, TRY; null when Watsons shows no price), price_display, price_type, currency=TRY, was_price (struck-through price, null when none), discount_amount, discount_percent, member_price (Watsons Club price, null when none), member_price_display, prior_price (published 30-day prior price, null when none), stock_status (inStock | lowStock | outOfStock), stock_level (units), in_stock, purchasable, rating (1-5, null with no reviews), review_count, rating_scale (5), category_path[], barcodes[] (EAN), badges[], new_in, promotion, multibuy}, count, page, page_size, total_results, total_pages, sort, redirect_url (set when Watsons sends the keyword to a landing page instead), filters{brands[]{name, value, count}, categories[]{name, code, count}, subcategories[]{name, code, count}, price_bands[]{label, min, max, count}}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"şampuan"}},{"name":"product/detail","description":"The full Watsons Türkiye product record by product code or URL: title, brand, price in TRY with was-price, discount and Watsons Club member price when published, the basket-promotion message, stock status with unit count, rating with review count and per-star breakdown, every image, the category breadcrumb, the description as clean text with its sections, ingredients and usage when the description publishes them, EAN barcodes, supplier, package dimensions and shade/size variants.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Watsons product code as returned in `product_id` by `search` (BP_153319). The bare number (153319) or a full watsons.com.tr product URL is also accepted.","on_invalid":"reject","example":"BP_153319","aliases":["id","code","sku","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"product{product_id, sku, title, brand, brand_id, brand_url, range_name, url, price, price_display, price_type, currency=TRY, was_price, discount_amount, discount_percent, member_price, member_price_display, prior_price, promotion_message (basket-level offer text — NOT applied to price), promotions[]{code, title, description}, multibuy, stock_status, stock_level, in_stock, purchasable, available_for_pickup, max_order_quantity, rating, review_count, rating_scale (5), rating_breakdown{'1'..'5': count}, images[], breadcrumb[]{code, name, url}, category_path[], description, description_sections[]{heading, text}, ingredients (null unless the description has an ingredients section), how_to_use, barcodes[], supplier, dimensions{width, height, depth, unit (null — Watsons publishes no unit)}, variants[]{sku, name, variant_type, price, price_display, price_type, member_price, stock_status, stock_level, in_stock, purchasable, url, barcodes[]}, variant_count, badges[], new_in, age_restricted, updated_at}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"BP_153319"}},{"name":"product/reviews","description":"Written customer reviews of one Watsons Türkiye product, newest first: star rating (1-5), headline, review text and date. Watsons publishes the text of written reviews only, so this can be far fewer than the product's review_count, which counts every star rating (and can be 0 while the product has ratings).","required_params":["product_id"],"optional_params":["limit","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Watsons product code as returned in `product_id` by `search` (BP_153319). The bare number (153319) or a full watsons.com.tr product URL is also accepted.","on_invalid":"reject","example":"BP_153319","aliases":["id","code","sku","url"]},{"name":"limit","type":"integer","required":false,"description":"How many reviews to return, newest first (1-200, default 20).","on_invalid":"ignore","default":20,"minimum":1,"maximum":200},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"reviews[]{rating, headline, comment, date}, count, total_written_reviews (written reviews Watsons publishes — not the star-rating count), rating_scale (5), order ('newest_first')","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"BP_153319","limit":5}},{"name":"search/suggest","description":"Watsons Türkiye's own search-box suggestions for a partial keyword: the suggested search terms and the top matching products with price.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What the shopper has typed so far (at least 2 characters).","on_invalid":"reject","example":"şamp","aliases":["q","term","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-8, default 4 — leave unchanged for typical use).","on_invalid":"ignore","default":4,"minimum":1,"maximum":8}],"returns":"suggestions[] (search terms), products[]{product_id, title, brand (often null here), url, image, price, price_display, currency}, products_total","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"şamp"}}]},{"name":"weather-intel","category":{"id":"utilities","title":"Utilities & AI"},"title":"Weather & Hazards API — global weather forecasts (MET Norway, US NWS), historical weather (ERA5), marine/wave forecasts, geocoding, air quality + pollen (OpenAQ, Open-Meteo CAMS), official weather alerts (MeteoAlarm, NWS), natural disasters (GDACS), earthquakes (USGS) and natural events (NASA EONET)","version":"1.2.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/weather-intel/v1","spec_available":true,"actions":[{"name":"environment_current","description":"premium combined snapshot: current weather + AQ + active alerts + nearby hazards + risk_summary{level,reasons,confidence} for a coordinate","required_params":["lat","lon"],"optional_params":["units","include","radius_km"],"params":[{"name":"lat","type":"number","required":true,"description":"Latitude in decimal degrees (WGS84), -90..90.","on_invalid":"reject","example":41.0082,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":true,"description":"Longitude in decimal degrees (WGS84), -180..180.","on_invalid":"reject","example":28.9784,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"units","type":"enum","required":false,"description":"Unit system for temperatures, wind speeds and precipitation.","on_invalid":"ignore","allowed_values":[{"value":"metric","label":"Celsius, m/s, mm"},{"value":"imperial","label":"Fahrenheit, mph, inches"}],"default":"metric","example":"metric"},{"name":"include","type":"string","required":false,"description":"Comma-separated blocks to include: weather, air_quality, alerts, hazards. Default: all.","on_invalid":"ignore","example":"weather,air_quality,alerts,hazards"},{"name":"radius_km","type":"number","required":false,"description":"Search radius in km around the point for nearby hazards (1..2000).","on_invalid":"ignore","default":300,"example":300,"minimum":1,"maximum":2000,"aliases":["radius"]}],"returns":"location{lat,lon,country?}, weather{temperature,feels_like,wind,symbol,…}, air_quality{pollutants,aqi_us,aqi_eu,nearest_station_km} | unavailable-with-reason, alerts{active[],coverage_note}, hazards{events[],…}, risk_summary{level,score,reasons[],confidence}, sources{per-source honesty blocks}, attribution[], disclaimer","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":3},"example_params":{"lat":52.52,"lon":13.405}},{"name":"forecast","description":"global point forecast (MET Norway, ~9 days): hourly steps + daily aggregates with normalized weather-code, feels-like, sunrise/sunset/moon. Optional source=us_nws returns the US-official National Weather Service forecast for US coordinates (api.weather.gov, public domain)","required_params":["lat","lon"],"optional_params":["units","hours","days","source"],"params":[{"name":"lat","type":"number","required":true,"description":"Latitude in decimal degrees (WGS84), -90..90.","on_invalid":"reject","example":41.0082,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":true,"description":"Longitude in decimal degrees (WGS84), -180..180.","on_invalid":"reject","example":28.9784,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"units","type":"enum","required":false,"description":"Unit system for temperatures, wind speeds and precipitation.","on_invalid":"ignore","allowed_values":[{"value":"metric","label":"Celsius, m/s, mm"},{"value":"imperial","label":"Fahrenheit, mph, inches"}],"default":"metric","example":"metric"},{"name":"hours","type":"integer","required":false,"description":"Number of forecast steps to return (hourly for ~2.5 days, then 6-hourly to ~day 9 — each step carries its timestamp).","on_invalid":"ignore","default":24,"example":24,"minimum":1,"maximum":90},{"name":"days","type":"integer","required":false,"description":"Number of days (1..10).","on_invalid":"ignore","default":7,"example":7,"minimum":1,"maximum":10},{"name":"source","type":"enum","required":false,"description":"Forecast source. 'us_nws' returns the US-official NWS gridpoint forecast (US coordinates only); 'met'/'auto' use MET Norway global.","on_invalid":"ignore","allowed_values":[{"value":"auto","label":"MET-Norway global; US coords may add the NWS option"},{"value":"met","label":"MET Norway global (default everywhere)"},{"value":"us_nws","label":"US National Weather Service official (api.weather.gov; US coordinates only)"}],"default":"auto","example":"us_nws"}],"returns":"current{...}, hourly[]{time,temperature,feels_like,wind,humidity,pressure,cloud,uv,precipitation,symbol{code,condition,intensity}}, daily[]{date,temperature_min/max,precipitation_total,wind_speed_max,symbol,sunrise,sunset,moon}, source{...honesty}, attribution, disclaimer — or us_official{periods[],location,...} + source.name=NWS when source=us_nws","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"lat":41.0082,"lon":28.9784,"days":3}},{"name":"air_quality","description":"nearest-station air quality (OpenAQ v3): pollutants + computed AQI-US/EAQI-EU + station distance + measurement freshness; honest insufficient_data when no station","required_params":["lat","lon"],"optional_params":["radius_km"],"params":[{"name":"lat","type":"number","required":true,"description":"Latitude in decimal degrees (WGS84), -90..90.","on_invalid":"reject","example":41.0082,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":true,"description":"Longitude in decimal degrees (WGS84), -180..180.","on_invalid":"reject","example":28.9784,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"radius_km","type":"number","required":false,"description":"Search radius in km around the point for monitoring stations (1..25).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":25,"aliases":["radius"]}],"returns":"pollutants{pm25,pm10,o3,no2,so2,co:{value,unit,measured_at,age_hours,station,station_distance_km,provider}}, aqi_us{value,category,dominant_pollutant}, aqi_eu{index,category}, nearest_station_km, stations[], stale_readings_skipped, insufficient_data?, source{...honesty}, attribution, disclaimer","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"lat":51.5072,"lon":-0.1276,"radius_km":25}},{"name":"alerts","description":"official severe-weather warnings by country/US-state or coordinate: EU MeteoAlarm (39 countries) AND US NWS (api.weather.gov, all 50 states + territories + marine zones, via Webshare). The source is chosen automatically from the location; coverage/coverage_note name exactly which authority answered","required_params":[],"optional_params":["country","lat","lon","severity_min","active_only","limit"],"params":[{"name":"country","type":"string","required":false,"description":"MeteoAlarm member country (EU) — slug or ISO2 — OR a US state/marine code (e.g. CA, TX, NY) which routes to NWS api.weather.gov. Alternative to lat/lon.","on_invalid":"reject","example":"germany"},{"name":"lat","type":"number","required":false,"description":"Latitude (alternative to country) — resolved to a MeteoAlarm country (EU) or NWS coverage (US).","on_invalid":"reject","example":48.2082,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":false,"description":"Longitude (alternative to country).","on_invalid":"reject","example":16.3738,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"severity_min","type":"enum","required":false,"description":"Minimum awareness color (MeteoAlarm yellow/orange/red).","on_invalid":"ignore","allowed_values":[{"value":"yellow","label":"include all warnings"},{"value":"orange","label":"orange + red only"},{"value":"red","label":"red only"}],"example":"orange"},{"name":"active_only","type":"boolean","required":false,"description":"Only warnings active NOW (onset<=now<expires). false = full feed.","on_invalid":"ignore","default":true,"example":true},{"name":"limit","type":"integer","required":false,"description":"Maximum records to return (1..200).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":200}],"returns":"alert_source{authority,scope}, country{slug,name}? | us_area{code}?, alerts[]{event,severity,urgency,certainty,area,onset,expires,headline,instruction,…}, count, coverage, coverage_note, source{...honesty}, attribution, disclaimer","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"germany","active_only":false}},{"name":"hazards_nearby","description":"GDACS multi-hazard events (earthquake/cyclone/flood/volcano/wildfire/drought) within a radius of a coordinate, distance-sorted","required_params":["lat","lon"],"optional_params":["radius_km","days","types","min_alert_level","limit"],"params":[{"name":"lat","type":"number","required":true,"description":"Latitude in decimal degrees (WGS84), -90..90.","on_invalid":"reject","example":41.0082,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":true,"description":"Longitude in decimal degrees (WGS84), -180..180.","on_invalid":"reject","example":28.9784,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"radius_km","type":"number","required":false,"description":"Search radius in km around the point for hazard events (1..5000).","on_invalid":"ignore","default":500,"example":500,"minimum":1,"maximum":5000,"aliases":["radius"]},{"name":"days","type":"integer","required":false,"description":"Number of days (1..365).","on_invalid":"ignore","default":14,"example":14,"minimum":1,"maximum":365},{"name":"types","type":"string","required":false,"description":"Comma-separated disaster types: earthquake, tropical_cyclone, flood, volcano, wildfire, drought (or GDACS codes EQ/TC/FL/VO/WF/DR). Default: all.","on_invalid":"ignore","example":"earthquake,flood","aliases":["type","event_types"]},{"name":"min_alert_level","type":"enum","required":false,"description":"Minimum GDACS alert level to include.","on_invalid":"ignore","allowed_values":[{"value":"green","label":"all events"},{"value":"orange","label":"medium+ severity"},{"value":"red","label":"severe only"}],"default":"green","example":"orange"},{"name":"limit","type":"integer","required":false,"description":"Maximum records to return (1..200).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":200}],"returns":"events[]{type,name,alert_level,severity,severity_text,distance_km,coordinates,from,to,is_current,country,report_url}, count, window_truncated{per-type honesty when the newest-100 cap was hit}, source{...honesty}, attribution, disclaimer","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"lat":36.2,"lon":140.5,"radius_km":2000,"days":30}},{"name":"disasters","description":"global GDACS disaster events with type/alert-level/date/bbox filters, or a single-event detail via event_id+event_type","required_params":[],"optional_params":["types","min_alert_level","days","bbox","country","limit","event_id","event_type"],"params":[{"name":"types","type":"string","required":false,"description":"Comma-separated disaster types: earthquake, tropical_cyclone, flood, volcano, wildfire, drought (or GDACS codes EQ/TC/FL/VO/WF/DR). Default: all.","on_invalid":"ignore","example":"earthquake,flood","aliases":["type","event_types"]},{"name":"min_alert_level","type":"enum","required":false,"description":"Minimum GDACS alert level to include.","on_invalid":"ignore","allowed_values":[{"value":"green","label":"all events"},{"value":"orange","label":"medium+ severity"},{"value":"red","label":"severe only"}],"default":"green","example":"orange"},{"name":"days","type":"integer","required":false,"description":"Number of days (1..365).","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":365},{"name":"bbox","type":"string","required":false,"description":"Bounding-box filter 'min_lon,min_lat,max_lon,max_lat' applied to event coordinates. Narrows the result set, so a small box over a quiet region legitimately returns zero events - that is an empty answer, not an error. Omit it to see everything the category has.","on_invalid":"ignore","example":"-130,24,-65,50"},{"name":"country","type":"string","required":false,"description":"Filter by GDACS country name or ISO3 (case-insensitive substring).","on_invalid":"reject","example":"Indonesia"},{"name":"limit","type":"integer","required":false,"description":"Maximum records to return (1..300).","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":300},{"name":"event_id","type":"integer","required":false,"description":"GDACS event id — returns the single-event detail (use with event_type code, e.g. EQ).","on_invalid":"ignore","example":1545450},{"name":"event_type","type":"enum","required":false,"description":"GDACS event type code for event_id detail lookups.","on_invalid":"reject","allowed_values":[{"value":"EQ","label":"earthquake"},{"value":"TC","label":"tropical_cyclone"},{"value":"FL","label":"flood"},{"value":"VO","label":"volcano"},{"value":"WF","label":"wildfire"},{"value":"DR","label":"drought"}],"example":"EQ"}],"returns":"events[]{type,name,alert_level,severity,country,coordinates,from,to,is_current,report_url}, count, window_truncated, source{...honesty}, attribution, disclaimer — or event{...full GDACS detail} when event_id","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"days":30}},{"name":"earthquakes","description":"USGS earthquake catalog (earthquake.usgs.gov, public domain): filter by magnitude, radius, time window, depth, and PAGER alert — includes small and medium-magnitude events that disaster aggregators like GDACS omit. Results are distance-sorted around a coordinate. Pass event_id for a single-event detail.","required_params":[],"optional_params":["lat","lon","radius_km","min_magnitude","max_magnitude","days","start","end","min_depth_km","max_depth_km","order","pager_alert","limit","event_id"],"params":[{"name":"lat","type":"number","required":false,"description":"Latitude for a radius search (with lon + radius_km).","on_invalid":"reject","example":35.0,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":false,"description":"Longitude for a radius search.","on_invalid":"reject","example":139.0,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"radius_km","type":"number","required":false,"description":"Search radius in km around the point for earthquake epicentres (1..20000).","on_invalid":"ignore","default":500,"example":500,"minimum":1,"maximum":20000,"aliases":["radius"]},{"name":"min_magnitude","type":"number","required":false,"description":"Minimum earthquake magnitude (USGS). Omit for the full catalog (includes micro-quakes M<2.5 that GDACS never lists).","on_invalid":"ignore","example":4.5,"minimum":-1,"maximum":10,"aliases":["min_mag","minmagnitude"]},{"name":"max_magnitude","type":"number","required":false,"description":"Maximum earthquake magnitude (USGS).","on_invalid":"ignore","example":9.5,"minimum":-1,"maximum":10,"aliases":["max_mag","maxmagnitude"]},{"name":"days","type":"integer","required":false,"description":"Number of days (1..365).","on_invalid":"ignore","default":7,"example":7,"minimum":1,"maximum":365},{"name":"start","type":"string","required":false,"description":"ISO start time (overrides days), e.g. 2026-06-01.","on_invalid":"ignore","example":"2026-06-01"},{"name":"end","type":"string","required":false,"description":"ISO end time.","on_invalid":"ignore","example":"2026-06-11"},{"name":"min_depth_km","type":"number","required":false,"description":"Minimum hypocenter depth (km).","on_invalid":"ignore","example":0,"minimum":-100,"maximum":1000},{"name":"max_depth_km","type":"number","required":false,"description":"Maximum hypocenter depth (km).","on_invalid":"ignore","example":700,"minimum":-100,"maximum":1000},{"name":"order","type":"enum","required":false,"description":"Sort order for the USGS earthquake catalog.","on_invalid":"ignore","allowed_values":[{"value":"time","label":"newest first"},{"value":"time-asc","label":"oldest first"},{"value":"magnitude","label":"largest first"},{"value":"magnitude-asc","label":"smallest first"}],"default":"time","example":"magnitude"},{"name":"pager_alert","type":"enum","required":false,"description":"Filter to quakes with at least this USGS PAGER impact alert.","on_invalid":"ignore","allowed_values":[{"value":"green","label":"minimal impact"},{"value":"yellow","label":"local/regional"},{"value":"orange","label":"regional/national"},{"value":"red","label":"national/international"}],"example":"orange","aliases":["alertlevel"]},{"name":"limit","type":"integer","required":false,"description":"Maximum records to return (1..1000).","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":1000},{"name":"event_id","type":"string","required":false,"description":"USGS event id — returns the single-event detail.","on_invalid":"ignore","example":"us7000ss5x"}],"returns":"earthquakes[]{event_id,magnitude,magnitude_type,place,time,coordinates{lat,lon,depth_km},pager_alert,tsunami,felt_reports,mmi,cdi,significance,status,distance_km?,detail_url}, count, source{...honesty}, attribution, disclaimer — or earthquake{...full detail} when event_id","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{"min_magnitude":5.0,"days":30,"limit":20}},{"name":"natural_events","description":"NASA EONET natural-event catalog (eonet.gsfc.nasa.gov, NASA open data): wildfires, severe storms, volcanoes, floods, icebergs, dust/haze — a second independent hazard source alongside GDACS. Filter by category, status, and date range; optionally list the full EONET category taxonomy.","required_params":[],"optional_params":["category","status","days","bbox","limit","list_categories"],"params":[{"name":"category","type":"enum","required":false,"description":"NASA EONET natural-event category filter.","on_invalid":"ignore","allowed_values":[{"value":"drought","label":"Drought"},{"value":"dustHaze","label":"Dust & Haze"},{"value":"earthquakes","label":"Earthquakes"},{"value":"floods","label":"Floods"},{"value":"landslides","label":"Landslides"},{"value":"manmade","label":"Manmade"},{"value":"seaLakeIce","label":"Sea & Lake Ice"},{"value":"severeStorms","label":"Severe Storms"},{"value":"snow","label":"Snow"},{"value":"tempExtremes","label":"Temperature Extremes"},{"value":"volcanoes","label":"Volcanoes"},{"value":"waterColor","label":"Water Color"},{"value":"wildfires","label":"Wildfires"}],"example":"wildfires"},{"name":"status","type":"enum","required":false,"description":"EONET event status: open (ongoing), closed, or all.","on_invalid":"ignore","allowed_values":[{"value":"open","label":"ongoing events"},{"value":"closed","label":"resolved events"},{"value":"all","label":"both"}],"default":"open","example":"open"},{"name":"days","type":"integer","required":false,"description":"Number of days (1..365).","on_invalid":"ignore","default":60,"example":60,"minimum":1,"maximum":365},{"name":"bbox","type":"string","required":false,"description":"Bounding-box filter 'min_lon,min_lat,max_lon,max_lat' applied to event coordinates. Narrows the result set, so a small box over a quiet region legitimately returns zero events - that is an empty answer, not an error. Omit it to see everything the category has.","on_invalid":"ignore","example":"-130,24,-65,50"},{"name":"limit","type":"integer","required":false,"description":"Maximum records to return (1..200).","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":200},{"name":"list_categories","type":"boolean","required":false,"description":"Return the EONET category taxonomy instead of events.","on_invalid":"ignore","default":false,"example":false}],"returns":"events[]{event_id,title,type,category_ids,is_open,last_observed,coordinates,magnitude_value,sources[],link}, count, categories[]?{id,title} when list_categories, source{...honesty}, attribution, disclaimer","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"status":"open","limit":20}},{"name":"fires","description":"Live wildfire and thermal-anomaly hotspots from NASA FIRMS (firms.modaps.eosdis.nasa.gov, NASA open data): pixel-level VIIRS (375 m) and MODIS (1 km) near-real-time detections — the raw sensor data that disaster aggregators like GDACS and EONET do not include. Query by a coordinate radius or a bounding box; each hotspot includes brightness, Fire Radiative Power (FRP), confidence, day/night flag, and the exact acquisition timestamp.","required_params":[],"optional_params":["lat","lon","radius_km","bbox","sensor","days","min_confidence","min_frp","limit"],"params":[{"name":"lat","type":"number","required":false,"description":"Latitude for a radius search (with lon + radius_km); alternative to bbox.","on_invalid":"reject","example":-42.4,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":false,"description":"Longitude for a radius search; alternative to bbox.","on_invalid":"reject","example":147.4,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"radius_km","type":"number","required":false,"description":"Search radius in km around the point for active-fire hotspots (1..1000).","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":1000,"aliases":["radius"]},{"name":"bbox","type":"string","required":false,"description":"Bounding box 'min_lon,min_lat,max_lon,max_lat' — alternative to lat/lon/radius_km (FIRMS area query).","on_invalid":"ignore","example":"-125,32,-114,42"},{"name":"sensor","type":"enum","required":false,"description":"Satellite sensor for fire detection. VIIRS (375 m resolution) gives the finest detail; MODIS (1 km) covers the longest historical record. All feeds are near-real-time (NRT) from NASA FIRMS.","on_invalid":"ignore","allowed_values":[{"value":"viirs_snpp","label":"VIIRS S-NPP 375 m (default)"},{"value":"viirs_noaa20","label":"VIIRS NOAA-20 375 m"},{"value":"viirs_noaa21","label":"VIIRS NOAA-21 375 m"},{"value":"modis","label":"MODIS Terra/Aqua 1 km"}],"default":"viirs_snpp","example":"viirs_snpp","aliases":["source","satellite"]},{"name":"days","type":"integer","required":false,"description":"Look-back window in days (1..10) for NRT detections.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":10},{"name":"min_confidence","type":"enum","required":false,"description":"Minimum detection confidence (VIIRS low/nominal/high; MODIS percent mapped to the same bands at 30/80).","on_invalid":"ignore","allowed_values":[{"value":"low","label":"all detections"},{"value":"nominal","label":"nominal + high only"},{"value":"high","label":"high-confidence only"}],"example":"nominal","aliases":["confidence"]},{"name":"min_frp","type":"number","required":false,"description":"Minimum Fire Radiative Power in megawatts — filters out the smallest thermal anomalies.","on_invalid":"ignore","example":1.0,"minimum":0,"maximum":100000},{"name":"limit","type":"integer","required":false,"description":"Maximum records to return (1..1000).","on_invalid":"ignore","default":200,"example":200,"minimum":1,"maximum":1000}],"returns":"hotspots[]{latitude,longitude,brightness_kelvin,frp_mw,confidence{raw,label,percent},acquired_at,acq_date,acq_time,satellite,instrument,resolution_m,daynight,distance_km?}, count, area{bbox|center+radius_km}, sensor, source{...honesty}, attribution, disclaimer","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"bbox":"-20,-35,55,20","days":1,"limit":50}},{"name":"geocode","description":"Place name → coordinates (Open-Meteo Geocoding, GeoNames-backed, free/keyless): turns a city/town/region name into the lat/lon every other weather-intel action needs, with country, region (admin1/2), population, timezone and elevation. Pass 'id' (a GeoNames id from a prior result) for the single canonical record instead of a name search.","required_params":[],"optional_params":["name","id","language","count"],"params":[{"name":"name","type":"string","required":false,"description":"Place name to search for (city, town, region) — at least 2 characters. Returns matching locations with coordinates. Pass 'id' instead to look up a specific GeoNames id.","on_invalid":"ignore","example":"Istanbul","aliases":["q","query","place"]},{"name":"id","type":"integer","required":false,"description":"GeoNames id (from a prior search result's 'id') to fetch the single canonical place record. Alternative to 'name'.","on_invalid":"ignore","example":745044,"aliases":["geoname_id"]},{"name":"language","type":"string","required":false,"description":"Result language (ISO-639-1, e.g. en, de, fr, tr, es). Affects the localized place/country/region names.","on_invalid":"ignore","default":"en","example":"en"},{"name":"count","type":"integer","required":false,"description":"Maximum number of place matches to return (1..100).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":100,"aliases":["limit"]}],"returns":"results[]{id,name,lat,lon,country,country_code,admin1,admin2,population,elevation_m,timezone,feature_code,postcodes}, count, query, source{...honesty}, attribution, disclaimer — or result{...} for an id lookup; empty results[] (count 0) when nothing matches (honest, no guess)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"Istanbul","count":3}},{"name":"historical","description":"Historical weather (Open-Meteo Archive / ERA5 reanalysis, 1940→present, free/keyless) for a coordinate and date range: daily aggregates (min/max temp, precipitation, wind, weather-code, sunrise/sunset) and/or hourly variables. The live forecast actions exclude history — this is the long-record companion. Default daily set is returned when neither 'daily' nor 'hourly' is specified.","required_params":["lat","lon","start_date","end_date"],"optional_params":["units","daily","hourly"],"params":[{"name":"lat","type":"number","required":true,"description":"Latitude in decimal degrees (WGS84), -90..90.","on_invalid":"reject","example":41.0082,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":true,"description":"Longitude in decimal degrees (WGS84), -180..180.","on_invalid":"reject","example":28.9784,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"start_date","type":"string","required":true,"description":"Start date (ISO YYYY-MM-DD), 1940-01-01 or later.","on_invalid":"reject","example":"2024-01-01"},{"name":"end_date","type":"string","required":true,"description":"End date (ISO YYYY-MM-DD), on/after start_date. ERA5 archive lags the present by ~5 days.","on_invalid":"reject","example":"2024-01-07"},{"name":"units","type":"enum","required":false,"description":"Unit system for temperatures, wind speeds and precipitation.","on_invalid":"ignore","allowed_values":[{"value":"metric","label":"Celsius, m/s, mm"},{"value":"imperial","label":"Fahrenheit, mph, inches"}],"default":"metric","example":"metric"},{"name":"daily","type":"string","required":false,"description":"Comma-separated DAILY variables (Open-Meteo names), e.g. temperature_2m_max, temperature_2m_min, precipitation_sum, rain_sum, snowfall_sum, weather_code, apparent_temperature_max, wind_speed_10m_max, sunrise, sunset. Default set used if both daily+hourly omitted.","on_invalid":"ignore","example":"temperature_2m_max,temperature_2m_min,precipitation_sum,weather_code,wind_speed_10m_max"},{"name":"hourly","type":"string","required":false,"description":"Comma-separated HOURLY variables (Open-Meteo names), e.g. temperature_2m, relative_humidity_2m, precipitation, wind_speed_10m, pressure_msl, cloud_cover, weather_code. Optional — omit for daily-only.","on_invalid":"ignore","example":"temperature_2m,relative_humidity_2m,precipitation,wind_speed_10m"}],"returns":"location{lat,lon,elevation_m}, range{start_date,end_date}, units, daily[]{time,...requested vars + normalized symbol from weather_code}, daily_units{}, hourly[]{time,...}?, hourly_units{}?, source{...honesty}, attribution, disclaimer","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"lat":41.0082,"lon":28.9784,"start_date":"2024-01-01","end_date":"2024-01-07"}},{"name":"marine","description":"Marine / ocean-wave forecast (Open-Meteo Marine, free/keyless) for a coordinate: significant wave height, period and direction plus swell and wind-wave components — hourly out to several days, plus daily maxima and the current sea state. On land (no marine grid cell) values are honestly null (never fabricated).","required_params":["lat","lon"],"optional_params":["units","forecast_days","hourly","daily","current"],"params":[{"name":"lat","type":"number","required":true,"description":"Latitude in decimal degrees (WGS84), -90..90.","on_invalid":"reject","example":41.0082,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":true,"description":"Longitude in decimal degrees (WGS84), -180..180.","on_invalid":"reject","example":28.9784,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"units","type":"enum","required":false,"description":"Unit system for temperatures, wind speeds and precipitation.","on_invalid":"ignore","allowed_values":[{"value":"metric","label":"Celsius, m/s, mm"},{"value":"imperial","label":"Fahrenheit, mph, inches"}],"default":"metric","example":"metric"},{"name":"forecast_days","type":"integer","required":false,"description":"Number of forecast days for wave data (1..8).","on_invalid":"ignore","default":3,"example":3,"minimum":1,"maximum":8,"aliases":["days"]},{"name":"hourly","type":"string","required":false,"description":"Comma-separated HOURLY wave variables, e.g. wave_height, wave_direction, wave_period, swell_wave_height, swell_wave_direction, swell_wave_period, wind_wave_height, wind_wave_direction. Default set used if omitted.","on_invalid":"ignore","example":"wave_height,wave_direction,wave_period,swell_wave_height"},{"name":"daily","type":"string","required":false,"description":"Comma-separated DAILY wave variables, e.g. wave_height_max, wave_direction_dominant, wave_period_max, swell_wave_height_max.","on_invalid":"ignore","example":"wave_height_max,wave_direction_dominant,wave_period_max"},{"name":"current","type":"boolean","required":false,"description":"Include the current sea state (wave_height, direction, period, swell, wind-wave).","on_invalid":"ignore","default":true,"example":true}],"returns":"location{lat,lon}, units, current{time,wave_height,wave_direction,wave_period,swell_wave_height,wind_wave_height}?, hourly[]{time,...}, hourly_units{}, daily[]{time,...}?, daily_units{}?, on_land_note?, source{...honesty}, attribution, disclaimer","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"lat":54.544,"lon":10.402,"forecast_days":2}},{"name":"air_quality_forecast","description":"Air-quality FORECAST + pollen (Open-Meteo Air-Quality, CAMS-backed, free/keyless) for a coordinate: hourly forecast of PM2.5/PM10/O3/NO2/SO2/CO, the European AQI and US AQI, plus European pollen (alder/birch/grass/olive/ragweed/mugwort). Complements the OpenAQ nearest-station `air_quality` (which is measured, current only) with a forward forecast and pollen — and needs NO API key. Pollen is European-domain only; outside Europe it is honestly null.","required_params":["lat","lon"],"optional_params":["forecast_days","hourly","current"],"params":[{"name":"lat","type":"number","required":true,"description":"Latitude in decimal degrees (WGS84), -90..90.","on_invalid":"reject","example":41.0082,"minimum":-90,"maximum":90,"aliases":["latitude"]},{"name":"lon","type":"number","required":true,"description":"Longitude in decimal degrees (WGS84), -180..180.","on_invalid":"reject","example":28.9784,"minimum":-180,"maximum":180,"aliases":["longitude","lng"]},{"name":"forecast_days","type":"integer","required":false,"description":"Number of forecast days for air quality (1..7).","on_invalid":"ignore","default":3,"example":3,"minimum":1,"maximum":7,"aliases":["days"]},{"name":"hourly","type":"string","required":false,"description":"Comma-separated HOURLY variables, e.g. pm2_5, pm10, ozone, nitrogen_dioxide, sulphur_dioxide, carbon_monoxide, european_aqi, us_aqi, uv_index, alder_pollen, birch_pollen, grass_pollen, olive_pollen, ragweed_pollen, mugwort_pollen. Default set used if omitted.","on_invalid":"ignore","example":"pm2_5,pm10,ozone,nitrogen_dioxide,european_aqi,us_aqi,grass_pollen,birch_pollen"},{"name":"current","type":"boolean","required":false,"description":"Include the current-hour AQ + pollen snapshot.","on_invalid":"ignore","default":true,"example":true}],"returns":"location{lat,lon}, current{time,pm2_5,pm10,european_aqi,us_aqi,...pollen}?, hourly[]{time,...}, hourly_units{}, pollen_note, source{...honesty}, attribution, disclaimer","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"lat":52.52,"lon":13.405,"forecast_days":2}}]},{"name":"web-archive","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Web Archive API — historical website snapshots from the Wayback Machine and Common Crawl: capture index, closest snapshot, first/last-seen history and domain-wide captures","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/web-archive/v1","spec_available":true,"actions":[{"name":"snapshots","description":"All Wayback captures for a URL (timestamp, status, mimetype, digest, archival size, snapshot_url), date/status/mime filtered, collapsible, RESUME-KEY PAGINATED.","required_params":["url"],"optional_params":["from","to","limit","collapse","match","status","mime","filter","resume_key"],"params":[{"name":"url","type":"string","required":true,"description":"The URL, host, or path to look up in the archive (e.g. 'github.com', 'github.com/torvalds', 'https://example.com/page'). Scheme optional. Use with match=prefix/domain/host to widen.","on_invalid":"reject","example":"github.com","aliases":["u","domain","site"]},{"name":"from","type":"string","required":false,"description":"Earliest capture to include. ISO date (YYYY-MM-DD) or a Wayback timestamp (YYYYMMDDhhmmss, any 4-14 digit prefix). Inclusive.","on_invalid":"ignore","example":"2010-01-01","aliases":["from_date","since","start"]},{"name":"to","type":"string","required":false,"description":"Latest capture to include. ISO date or Wayback timestamp prefix. Inclusive.","on_invalid":"ignore","example":"2015-12-31","aliases":["to_date","until","end"]},{"name":"limit","type":"integer","required":false,"description":"Max captures to return (1-1000, default 100). Page further with meta.resume_key on the snapshots action.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":1000},{"name":"collapse","type":"enum","required":false,"description":"Deduplicate consecutive captures on a field (CDX 'collapse'). collapse=digest is the change-detection workhorse.","on_invalid":"reject","allowed_values":[{"value":"digest","label":"One row per unique content hash — drops consecutive identical captures (best for 'when did the page actually change?')"},{"value":"timestamp:4","label":"One capture per year (timestamp:6=month, :8=day, :10=hour)"},{"value":"timestamp:6","label":"One capture per month"},{"value":"timestamp:8","label":"One capture per day"},{"value":"timestamp:10","label":"One capture per hour"},{"value":"urlkey","label":"One row per unique URL (best with match=domain/prefix)"},{"value":"original","label":"One row per unique original URL"},{"value":"statuscode","label":"Collapse consecutive identical status codes"},{"value":"mimetype","label":"Collapse consecutive identical mime types"}],"example":"digest"},{"name":"match","type":"enum","required":false,"description":"How to match url: exact | prefix | host | domain. domain_captures forces 'domain'.","on_invalid":"ignore","allowed_values":[{"value":"exact","label":"Only this exact URL (default)"},{"value":"prefix","label":"All URLs under this path prefix (url/path*)"},{"value":"host","label":"All URLs on this exact host"},{"value":"domain","label":"All URLs on this domain AND its subdomains"}],"default":"exact","example":"exact","aliases":["matchType","match_type"]},{"name":"status","type":"string","required":false,"description":"Keep only captures with this HTTP status (e.g. 200, 404, 301). Prefix with '!' to exclude (e.g. '!200').","on_invalid":"ignore","example":"200","aliases":["statuscode","status_code"]},{"name":"mime","type":"string","required":false,"description":"Keep only captures of this MIME type (e.g. text/html, application/pdf, image/png). Prefix with '!' to exclude.","on_invalid":"ignore","example":"text/html","aliases":["mimetype"]},{"name":"filter","type":"string","required":false,"description":"Advanced raw CDX filter expression(s), comma-separated. Format [!]field:regex over urlkey/timestamp/original/mimetype/statuscode/digest/length (e.g. 'original:.*\\.pdf$'). Power-user escape hatch.","on_invalid":"ignore","example":"statuscode:200"},{"name":"resume_key","type":"string","required":false,"description":"Opaque pagination token from meta.resume_key of the previous page; returns the next page of captures.","on_invalid":"ignore"}],"returns":"snapshots[] (timestamp, datetime, original, mimetype, statuscode, digest, length, snapshot_url); meta.record_count + meta.resume_key/has_more","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"github.com","limit":10,"collapse":"digest"}},{"name":"available","description":"Closest single Wayback snapshot to a given date (or the latest). Fast existence check.","required_params":["url"],"optional_params":["timestamp"],"params":[{"name":"url","type":"string","required":true,"description":"The URL, host, or path to look up in the archive (e.g. 'github.com', 'github.com/torvalds', 'https://example.com/page'). Scheme optional. Use with match=prefix/domain/host to widen.","on_invalid":"reject","example":"github.com","aliases":["u","domain","site"]},{"name":"timestamp","type":"string","required":false,"description":"Target date for the closest snapshot. ISO date or Wayback timestamp prefix. Omitted → the most recent capture.","on_invalid":"ignore","example":"20120601","aliases":["ts","date"]}],"returns":"available (bool), closest{timestamp, datetime, status, snapshot_url}, url","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"github.com","timestamp":"20120601"}},{"name":"history","description":"Lifespan + capture cadence for a URL: EXACT first_seen/last_seen + span, plus per-year capture counts and status/mime breakdown — the SEO/due-diligence summary.","required_params":["url"],"optional_params":["from","to","match"],"params":[{"name":"url","type":"string","required":true,"description":"The URL, host, or path to look up in the archive (e.g. 'github.com', 'github.com/torvalds', 'https://example.com/page'). Scheme optional. Use with match=prefix/domain/host to widen.","on_invalid":"reject","example":"github.com","aliases":["u","domain","site"]},{"name":"from","type":"string","required":false,"description":"Earliest capture to include. ISO date (YYYY-MM-DD) or a Wayback timestamp (YYYYMMDDhhmmss, any 4-14 digit prefix). Inclusive.","on_invalid":"ignore","example":"2010-01-01","aliases":["from_date","since","start"]},{"name":"to","type":"string","required":false,"description":"Latest capture to include. ISO date or Wayback timestamp prefix. Inclusive.","on_invalid":"ignore","example":"2015-12-31","aliases":["to_date","until","end"]},{"name":"match","type":"enum","required":false,"description":"How to match url: exact | prefix | host | domain. domain_captures forces 'domain'.","on_invalid":"ignore","allowed_values":[{"value":"exact","label":"Only this exact URL (default)"},{"value":"prefix","label":"All URLs under this path prefix (url/path*)"},{"value":"host","label":"All URLs on this exact host"},{"value":"domain","label":"All URLs on this domain AND its subdomains"}],"default":"exact","example":"exact","aliases":["matchType","match_type"]}],"returns":"first_seen + last_seen (EXACT, pinpoint), first/last_snapshot_url, span_days, years{year:count}, status_codes{code:count}, mime_types{type:count}, sampled_capture_days + sample_capped (years/breakdown are a capture-per-day sample capped at 1000 — first/last_seen are NOT sampled)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"github.com"}},{"name":"domain_captures","description":"All archived URLs under a domain (the domain + its subdomains), one row per unique URL — the 'every page this site ever had' view. Resume-key paginated.","required_params":["url"],"optional_params":["from","to","limit","status","mime","filter","resume_key"],"params":[{"name":"url","type":"string","required":true,"description":"The URL, host, or path to look up in the archive (e.g. 'github.com', 'github.com/torvalds', 'https://example.com/page'). Scheme optional. Use with match=prefix/domain/host to widen.","on_invalid":"reject","example":"github.com","aliases":["u","domain","site"]},{"name":"from","type":"string","required":false,"description":"Earliest capture to include. ISO date (YYYY-MM-DD) or a Wayback timestamp (YYYYMMDDhhmmss, any 4-14 digit prefix). Inclusive.","on_invalid":"ignore","example":"2010-01-01","aliases":["from_date","since","start"]},{"name":"to","type":"string","required":false,"description":"Latest capture to include. ISO date or Wayback timestamp prefix. Inclusive.","on_invalid":"ignore","example":"2015-12-31","aliases":["to_date","until","end"]},{"name":"limit","type":"integer","required":false,"description":"Max captures to return (1-1000, default 100). Page further with meta.resume_key on the snapshots action.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":1000},{"name":"status","type":"string","required":false,"description":"Keep only captures with this HTTP status (e.g. 200, 404, 301). Prefix with '!' to exclude (e.g. '!200').","on_invalid":"ignore","example":"200","aliases":["statuscode","status_code"]},{"name":"mime","type":"string","required":false,"description":"Keep only captures of this MIME type (e.g. text/html, application/pdf, image/png). Prefix with '!' to exclude.","on_invalid":"ignore","example":"text/html","aliases":["mimetype"]},{"name":"filter","type":"string","required":false,"description":"Advanced raw CDX filter expression(s), comma-separated. Format [!]field:regex over urlkey/timestamp/original/mimetype/statuscode/digest/length (e.g. 'original:.*\\.pdf$'). Power-user escape hatch.","on_invalid":"ignore","example":"statuscode:200"},{"name":"resume_key","type":"string","required":false,"description":"Pagination token from the previous page's meta.resume_key.","on_invalid":"ignore"}],"returns":"urls[] (original, urlkey, first/last timestamp+datetime, captures, statuscode, mimetype, snapshot_url); meta.record_count + resume_key/has_more","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"github.com","limit":20}},{"name":"batch","description":"Closest-snapshot existence + capture-count for up to 20 URLs in one call (bulk archival presence — competitor/portfolio sweeps).","required_params":["urls"],"optional_params":["timestamp"],"params":[{"name":"urls","type":"array","required":true,"description":"Up to 20 URLs/hosts to look up at once (JSON array or comma/newline-separated string).","on_invalid":"reject","example":["github.com","python.org"],"aliases":["targets"]},{"name":"timestamp","type":"string","required":false,"description":"Target date for the closest snapshot. ISO date or Wayback timestamp prefix. Omitted → the most recent capture.","on_invalid":"ignore","example":"20120601","aliases":["ts","date"]}],"returns":"results[] (url, archived(bool), closest{timestamp,datetime,snapshot_url,status}); meta.record_count = URLs processed","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"urls":["github.com","python.org"]}},{"name":"cc_search","description":"Common Crawl index lookup for a URL — alternate/broader coverage with richer fields (detected language, encoding, WARC offset/filename). Cross-source corroboration.","required_params":["url"],"optional_params":["collection","match","limit","from","to","filter"],"params":[{"name":"url","type":"string","required":true,"description":"The URL, host, or path to look up in the archive (e.g. 'github.com', 'github.com/torvalds', 'https://example.com/page'). Scheme optional. Use with match=prefix/domain/host to widen.","on_invalid":"reject","example":"github.com","aliases":["u","domain","site"]},{"name":"collection","type":"string","required":false,"description":"Common Crawl index id (e.g. 'CC-MAIN-2026-21'). Omit to use the newest index. List ids via action='cc_indexes'.","on_invalid":"ignore","example":"CC-MAIN-2026-21","aliases":["index","crawl"]},{"name":"match","type":"enum","required":false,"description":"URL match mode for the Common Crawl index query.","on_invalid":"ignore","allowed_values":[{"value":"exact","label":"Only this exact URL (default)"},{"value":"prefix","label":"All URLs under this path prefix"},{"value":"host","label":"All URLs on this exact host"},{"value":"domain","label":"This domain and subdomains"}],"default":"exact","example":"exact","aliases":["matchType","match_type"]},{"name":"limit","type":"integer","required":false,"description":"Max captures to return (1-1000, default 100). Page further with meta.resume_key on the snapshots action.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":1000},{"name":"from","type":"string","required":false,"description":"Earliest capture to include. ISO date (YYYY-MM-DD) or a Wayback timestamp (YYYYMMDDhhmmss, any 4-14 digit prefix). Inclusive.","on_invalid":"ignore","example":"2010-01-01","aliases":["from_date","since","start"]},{"name":"to","type":"string","required":false,"description":"Latest capture to include. ISO date or Wayback timestamp prefix. Inclusive.","on_invalid":"ignore","example":"2015-12-31","aliases":["to_date","until","end"]},{"name":"filter","type":"string","required":false,"description":"Advanced raw CDX filter expression(s), comma-separated. Format [!]field:regex over urlkey/timestamp/original/mimetype/statuscode/digest/length (e.g. 'original:.*\\.pdf$'). Power-user escape hatch.","on_invalid":"ignore","example":"statuscode:200"}],"returns":"records[] (timestamp, datetime, original, mimetype, statuscode, digest, length, languages, encoding, warc_filename, warc_offset); meta.collection","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"github.com","limit":5}},{"name":"cc_indexes","description":"List the available Common Crawl monthly indexes (id, name, date range) — pick a collection for cc_search.","required_params":[],"optional_params":[],"params":[],"returns":"indexes[] (id, name, from, to, cdx_api); meta.record_count = index count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"web-extract","category":{"id":"developer-tools","title":"Developer Tools"},"title":"Web Extract API — any URL to markdown, text, HTML, metadata, links, structured data (JSON-LD), site map, crawl, and deterministic extract. Security-guarded, no-key.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/web-extract/v1","spec_available":true,"actions":[{"name":"scrape","description":"Fetch one URL and return its content in the formats you choose (markdown, plain text, cleaned HTML, raw HTML, metadata, links, images, or structured JSON-LD data). Automatically upgrades thin single-page-app pages to a full browser render when needed. Works on any public page — news articles, product pages, documentation, blogs.","required_params":["url"],"optional_params":["formats","render","only_main_content","include_tags","exclude_tags","target_selector"],"params":[{"name":"url","type":"string","required":true,"description":"The page URL to extract. Full URL or bare domain (https:// assumed). Only http/https; private/internal/metadata targets are SSRF-blocked.","on_invalid":"reject","example":"https://en.wikipedia.org/wiki/Web_scraping","aliases":["link","page"]},{"name":"formats","type":"array","required":false,"description":"Which outputs to return (array or comma-string). Any of: markdown, text, html (cleaned main-content), rawHtml, metadata, links, images, jsonld. Default: markdown+metadata. Unknown values are ignored. For screenshots use the web-capture engine.","on_invalid":"ignore","allowed_values":[{"value":"markdown","label":"markdown"},{"value":"text","label":"text"},{"value":"html","label":"html"},{"value":"rawHtml","label":"rawHtml"},{"value":"metadata","label":"metadata"},{"value":"links","label":"links"},{"value":"images","label":"images"},{"value":"jsonld","label":"jsonld"}],"default":["markdown","metadata"],"example":["markdown","metadata","links"]},{"name":"render","type":"enum","required":false,"description":"When to activate browser rendering for JavaScript-heavy pages. 'auto' (default) detects thin/client-rendered pages and re-fetches them with a real browser automatically — rich server-rendered pages are served instantly without a browser. 'force' always uses a browser; 'never' skips rendering for maximum speed.","on_invalid":"ignore","allowed_values":[{"value":"auto","label":"Render only when the bare body is thin/JS-hydrated (default)"},{"value":"never","label":"Bare fetch only — never render"},{"value":"force","label":"Always render with a browser"}],"default":"auto","example":"auto"},{"name":"only_main_content","type":"boolean","required":false,"description":"Remove navigation bars, headers, footers, and boilerplate — keep only the main article or content body (default true). Turn off to get the full raw page content.","on_invalid":"ignore","default":true,"example":true,"aliases":["onlyMainContent"]},{"name":"include_tags","type":"array","required":false,"description":"CSS selectors to include — only elements matching these selectors are kept in the extracted content, e.g. ['article', 'main', '.post-body'].","on_invalid":"ignore","example":["article","main"],"aliases":["includeTags"]},{"name":"exclude_tags","type":"array","required":false,"description":"CSS selectors to remove before extraction — useful for stripping ads, cookie banners, or sidebar widgets, e.g. ['nav', 'footer', '.ads'].","on_invalid":"ignore","example":["nav","footer",".ads"],"aliases":["excludeTags"]},{"name":"target_selector","type":"string","required":false,"description":"Return only the content inside this CSS selector — e.g. 'article.post' to extract a specific section of the page and ignore everything else.","on_invalid":"ignore","example":"article.post","aliases":["targetSelector"]}],"returns":"final_url, title, metadata{canonical,lang,site_name,author,published_at,og,...}, extraction{method,rendered,confidence,content_chars,render_source}, + each requested format (markdown/text/html/rawHtml/links[]/images[]/jsonld{}). render=auto transparently upgrades thin/SPA pages to a browser render.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://en.wikipedia.org/wiki/Web_scraping","formats":["markdown","metadata"]}},{"name":"map","description":"Discover a site's complete URL surface: reads robots.txt, sitemap.xml (and sitemap indexes), and the homepage's internal links — returns a deduplicated URL list with a page-type label for each (home, pricing, docs, blog, product, legal, contact, about). Use this to index any site or audit its structure.","required_params":["url"],"optional_params":["search","limit","include_subdomains"],"params":[{"name":"url","type":"string","required":true,"description":"The page URL to extract. Full URL or bare domain (https:// assumed). Only http/https; private/internal/metadata targets are SSRF-blocked.","on_invalid":"reject","example":"https://en.wikipedia.org/wiki/Web_scraping","aliases":["link","page"]},{"name":"search","type":"string","required":false,"description":"Filter discovered links by a URL substring — matched URLs are returned first, e.g. '/blog' to prioritize blog pages or '/docs' for documentation.","on_invalid":"ignore","example":"pricing"},{"name":"limit","type":"integer","required":false,"description":"Max links to return (1-1000, default 200).","on_invalid":"ignore","default":200,"example":100,"minimum":1,"maximum":1000},{"name":"include_subdomains","type":"boolean","required":false,"description":"Include subdomain URLs found in sitemaps (default false).","on_invalid":"ignore","default":false,"example":false,"aliases":["includeSubdomains"]}],"returns":"origin, links[]{url,page_type}, count, page_types{type:count}, sitemaps[], robots_present, sources{sitemap,homepage}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://stripe.com","limit":50}},{"name":"crawl","description":"Crawl a site starting from a seed URL (up to 25 pages): follows internal links breadth-first with configurable depth, include/exclude URL patterns, and returns every visited page in the formats you choose. Ideal for content indexing, site audits, and building knowledge bases from documentation or blog sites.","required_params":["url"],"optional_params":["max_pages","max_depth","same_domain_only","include_patterns","exclude_patterns","formats"],"params":[{"name":"url","type":"string","required":true,"description":"The page URL to extract. Full URL or bare domain (https:// assumed). Only http/https; private/internal/metadata targets are SSRF-blocked.","on_invalid":"reject","example":"https://en.wikipedia.org/wiki/Web_scraping","aliases":["link","page"]},{"name":"max_pages","type":"integer","required":false,"description":"Maximum number of pages to crawl in one call (1–25, default 10). Increase for deeper site coverage.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":25,"aliases":["limit"]},{"name":"max_depth","type":"integer","required":false,"description":"Max link depth from the seed URL (0-5, default 2).","on_invalid":"ignore","default":2,"example":2,"minimum":0,"maximum":5,"aliases":["maxDepth"]},{"name":"same_domain_only","type":"boolean","required":false,"description":"Only follow links on the seed's registrable domain (default true).","on_invalid":"ignore","default":true,"example":true,"aliases":["sameDomainOnly"]},{"name":"include_patterns","type":"array","required":false,"description":"Regex patterns; only URLs whose path matches are crawled.","on_invalid":"ignore","example":["/blog/.*"],"aliases":["includePaths"]},{"name":"exclude_patterns","type":"array","required":false,"description":"Regex patterns; URLs whose path matches are skipped.","on_invalid":"ignore","example":["/tag/.*"],"aliases":["excludePaths"]},{"name":"formats","type":"array","required":false,"description":"Which outputs to return (array or comma-string). Any of: markdown, text, html (cleaned main-content), rawHtml, metadata, links, images, jsonld. Default: markdown+metadata. Unknown values are ignored. For screenshots use the web-capture engine.","on_invalid":"ignore","allowed_values":[{"value":"markdown","label":"markdown"},{"value":"text","label":"text"},{"value":"html","label":"html"},{"value":"rawHtml","label":"rawHtml"},{"value":"metadata","label":"metadata"},{"value":"links","label":"links"},{"value":"images","label":"images"},{"value":"jsonld","label":"jsonld"}],"default":["markdown","metadata"],"example":["markdown","metadata","links"]}],"returns":"pages[]{url,page_type,...requested formats}, count, stop_reason (complete|max_pages|max_depth), pages_visited","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://example.com","max_pages":2,"max_depth":1}},{"name":"extract","description":"Pull structured data from any public page: returns JSON-LD objects (Product, Article, Organization, etc.), microdata presence, parsed table rows, heading outline, prices, emails, and phone numbers. Supply an optional field-to-path schema to extract specific values directly — great for e-commerce pricing, article metadata, and business listings.","required_params":["url"],"optional_params":["schema","deterministic_only"],"params":[{"name":"url","type":"string","required":true,"description":"The page URL to extract. Full URL or bare domain (https:// assumed). Only http/https; private/internal/metadata targets are SSRF-blocked.","on_invalid":"reject","example":"https://en.wikipedia.org/wiki/Web_scraping","aliases":["link","page"]},{"name":"schema","type":"object","required":false,"description":"Optional field extraction map — a JSON object where each key is your output field name and the value is a dot-path into the page's structured data, e.g. {'price': 'offers.price', 'name': 'name'}.","on_invalid":"ignore","example":{"price":"offers.price","name":"name"}},{"name":"deterministic_only","type":"boolean","required":false,"description":"Use only rule-based extraction (structured data, microdata, tables, headings, prices) — always-on and fully predictable. Default true; set false to opt into AI-assisted free-form extraction when available.","on_invalid":"ignore","default":true,"example":true}],"returns":"final_url, jsonld{objects,types}, has_microdata, has_rdfa, tables[], headings[], prices[], emails[], phones[], schema_result{} (if schema given)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"url":"https://en.wikipedia.org/wiki/Python_(programming_language)"}},{"name":"batch","description":"Scrape up to 10 URLs concurrently in one call (each SSRF-guarded). Shared formats. Firecrawl /batch-scrape parity (bounded).","required_params":["urls"],"optional_params":["formats","only_main_content","timeout"],"params":[{"name":"urls","type":"array","required":true,"description":"List of page URLs to scrape in one call (max 10); each is independently SSRF-guarded and fetched concurrently.","on_invalid":"reject","example":["https://stripe.com","https://github.com"]},{"name":"formats","type":"array","required":false,"description":"Which outputs to return (array or comma-string). Any of: markdown, text, html (cleaned main-content), rawHtml, metadata, links, images, jsonld. Default: markdown+metadata. Unknown values are ignored. For screenshots use the web-capture engine.","on_invalid":"ignore","allowed_values":[{"value":"markdown","label":"markdown"},{"value":"text","label":"text"},{"value":"html","label":"html"},{"value":"rawHtml","label":"rawHtml"},{"value":"metadata","label":"metadata"},{"value":"links","label":"links"},{"value":"images","label":"images"},{"value":"jsonld","label":"jsonld"}],"default":["markdown","metadata"],"example":["markdown","metadata","links"]},{"name":"only_main_content","type":"boolean","required":false,"description":"Remove navigation bars, headers, footers, and boilerplate — keep only the main article or content body (default true). Turn off to get the full raw page content.","on_invalid":"ignore","default":true,"example":true,"aliases":["onlyMainContent"]},{"name":"timeout","type":"integer","required":false,"description":"Per-URL fetch timeout in seconds (5–60, default 25). Raise it for slow origins; lower it to fail fast on a large batch.","on_invalid":"ignore","default":25,"example":25,"minimum":5,"maximum":60,"aliases":["timeout_seconds"]}],"returns":"results[]{ok,url,final_url,...formats | error}, count, ok_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"urls":["https://example.com","https://en.wikipedia.org/wiki/HTML"]}}]},{"name":"webmotors","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Webmotors API — Brazil's largest car and motorbike marketplace: used-car search with the filters dealers actually use, full listing records with BOTH Brazilian years (ano de fabricação and ano do modelo), the FIPE reference price next to the asking price, the seller, and every photo.","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/webmotors/v1","spec_available":true,"actions":[{"name":"search","description":"Search live Webmotors stock (carros and motos) by make, model, version, model-year range, price range, mileage range, transmission, fuel, body type, colour, doors, equipment, seller type or location. Returns the full listing row for every hit plus webmotors' own total for the query.","required_params":[],"optional_params":["vehicle_type","make","model","trim","year_min","year_max","price_min","price_max","mileage_min","mileage_max","transmission","fuel","body_type","exterior_color","doors","seller_type","condition","armored","optionals","attributes","final_plate","lifestyle","location","engine_cc_min","engine_cc_max","dealer_id","sort","page","page_size"],"params":[{"name":"vehicle_type","type":"enum","required":false,"description":"car = carros, bike = motos. Both live in the same index.","on_invalid":"reject","allowed_values":[{"value":"car","label":"car"},{"value":"bike","label":"bike"}],"default":"car","example":"car"},{"name":"make","type":"string","required":false,"description":"Manufacturer exactly as webmotors spells it (see `makes_models`). Case-insensitive.","on_invalid":"reject","example":"TOYOTA"},{"name":"model","type":"string","required":false,"description":"Model name as webmotors spells it.","on_invalid":"reject","example":"COROLLA"},{"name":"trim","type":"string","required":false,"description":"Version (`versão`) name as webmotors spells it.","on_invalid":"reject","example":"2.0 XEI","aliases":["version"]},{"name":"year_min","type":"integer","required":false,"description":"Lowest ANO DO MODELO (model year) to include.","on_invalid":"reject","example":2018,"minimum":1900,"maximum":2100,"aliases":["min_year"]},{"name":"year_max","type":"integer","required":false,"description":"Highest ANO DO MODELO (model year) to include.","on_invalid":"reject","example":2024,"minimum":1900,"maximum":2100,"aliases":["max_year"]},{"name":"price_min","type":"integer","required":false,"description":"Lowest asking price in BRL.","on_invalid":"reject","example":50000,"minimum":0,"aliases":["min_price"]},{"name":"price_max","type":"integer","required":false,"description":"Highest asking price in BRL.","on_invalid":"reject","example":150000,"minimum":0,"aliases":["max_price"]},{"name":"mileage_min","type":"integer","required":false,"description":"Lowest odometer reading in km.","on_invalid":"reject","example":0,"minimum":0,"aliases":["min_mileage"]},{"name":"mileage_max","type":"integer","required":false,"description":"Highest odometer reading in km.","on_invalid":"reject","example":60000,"minimum":0,"aliases":["max_mileage"]},{"name":"transmission","type":"array","required":false,"description":"One or more gearbox types, webmotors' own labels.","on_invalid":"ignore","allowed_values":[{"value":"Automática","label":"Automática"},{"value":"Manual","label":"Manual"},{"value":"CVT","label":"CVT"},{"value":"Semi-automática","label":"Semi-automática"},{"value":"Automatizada","label":"Automatizada"},{"value":"Automatizada DCT","label":"Automatizada DCT"},{"value":"Automático sequencial","label":"Automático sequencial"},{"value":"Variável","label":"Variável"}],"example":"Automática"},{"name":"fuel","type":"array","required":false,"description":"One or more fuel types, webmotors' own labels (flex = 'Gasolina e álcool').","on_invalid":"ignore","allowed_values":[{"value":"Gasolina e álcool","label":"Gasolina e álcool"},{"value":"Gasolina","label":"Gasolina"},{"value":"Diesel","label":"Diesel"},{"value":"Gasolina e elétrico","label":"Gasolina e elétrico"},{"value":"Álcool","label":"Álcool"},{"value":"Elétrico","label":"Elétrico"},{"value":"Diesel e elétrico","label":"Diesel e elétrico"},{"value":"Gasolina, álcool e gás natural","label":"Gasolina, álcool e gás natural"},{"value":"Gasolina e gás natural","label":"Gasolina e gás natural"},{"value":"Álcool e elétrico","label":"Álcool e elétrico"},{"value":"Gás natural","label":"Gás natural"}],"example":"Gasolina e álcool"},{"name":"body_type","type":"array","required":false,"description":"One or more body styles.","on_invalid":"ignore","allowed_values":[{"value":"Utilitário esportivo","label":"Utilitário esportivo"},{"value":"Hatchback","label":"Hatchback"},{"value":"Sedã","label":"Sedã"},{"value":"Picape","label":"Picape"},{"value":"Minivan","label":"Minivan"},{"value":"Perua/SW","label":"Perua/SW"},{"value":"Cupê","label":"Cupê"},{"value":"Conversível","label":"Conversível"},{"value":"Utilitário","label":"Utilitário"},{"value":"Van/Utilitário","label":"Van/Utilitário"}],"example":"Utilitário esportivo"},{"name":"exterior_color","type":"array","required":false,"description":"One or more exterior colours, webmotors' own labels.","on_invalid":"ignore","example":"Branco","aliases":["color","colour"]},{"name":"doors","type":"array","required":false,"description":"Door counts to include (2, 3, 4).","on_invalid":"ignore","example":"4"},{"name":"seller_type","type":"array","required":false,"description":"dealer = Loja, dealership = Concessionária, private = Pessoa Física.","on_invalid":"ignore","allowed_values":[{"value":"dealer","label":"dealer"},{"value":"dealership","label":"dealership"},{"value":"private","label":"private"}],"example":"dealer"},{"name":"condition","type":"enum","required":false,"description":"new = 0 km, used = seminovos/usados. Omit for both.","on_invalid":"ignore","allowed_values":[{"value":"new","label":"new"},{"value":"used","label":"used"}],"example":"used"},{"name":"armored","type":"boolean","required":false,"description":"true = only armoured (blindado), false = only non-armoured.","on_invalid":"reject","example":false},{"name":"optionals","type":"array","required":false,"description":"Equipment the car must have, webmotors' own labels.","on_invalid":"ignore","example":"Ar condicionado"},{"name":"attributes","type":"array","required":false,"description":"Listing attributes: 'Aceita troca', 'IPVA pago', 'Licenciado', 'Único dono', 'Garantia de fábrica'.","on_invalid":"ignore","example":"Único dono"},{"name":"final_plate","type":"array","required":false,"description":"Licence-plate last-digit groups, used for São Paulo's rodízio rule.","on_invalid":"ignore","example":"1 e 2"},{"name":"lifestyle","type":"string","required":false,"description":"Webmotors' own use-case buckets ('Carros para família', 'SUVs', 'Carros para aplicativos', 'Carros econômicos').","on_invalid":"ignore","example":"SUVs"},{"name":"location","type":"string","required":false,"description":"Webmotors' own state/city slug ('sp', 'sp-sao-paulo', 'pr-curitiba').","on_invalid":"reject","example":"sp-sao-paulo"},{"name":"engine_cc_min","type":"integer","required":false,"description":"Motorbikes only: smallest engine displacement in cc.","on_invalid":"reject","example":300,"minimum":0},{"name":"engine_cc_max","type":"integer","required":false,"description":"Motorbikes only: largest engine displacement in cc.","on_invalid":"reject","example":1000,"minimum":0},{"name":"dealer_id","type":"integer","required":false,"description":"Return only this dealer's stock (`seller.seller_id` from any row).","on_invalid":"reject","example":3848346},{"name":"sort","type":"enum","required":false,"description":"Result order. These five are the only orders webmotors publishes. Note that price_desc opens on unvalidated seller typos in the hundreds of millions of BRL — pair it with price_max.","on_invalid":"ignore","allowed_values":[{"value":"relevance","label":"relevance"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"year_desc","label":"year_desc"},{"value":"mileage_asc","label":"mileage_asc"}],"default":"relevance","example":"price_asc"},{"name":"page","type":"integer","required":false,"description":"1-based page. `page_total` in the response is the source's own ceiling: it stops serving rows past ~10 000 per query however large `total_results` is, so narrow the filters to reach the rest.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":417},{"name":"page_size","type":"integer","required":false,"description":"Rows per page.","on_invalid":"reject","default":24,"example":24,"minimum":1,"maximum":100,"aliases":["size"]}],"returns":"listings[]{listing_id, url, title, make, model, trim, year_manufacture, year_model, mileage_km, price, currency, fipe_percent, transmission, body_type, doors, exterior_color, engine_litres, power_hp, traction, armored, has_auction_record, condition, condition_new, attributes, description, images, image_count, seller{seller_id,name,type,type_label,is_dealer,city,state,state_code,neighborhood,street,zip,score}} + total_results, page, page_size, has_more","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"make":"TOYOTA","page_size":24}},{"name":"listing","description":"The complete record for one listing, from the URL `search` returns: every specification, all equipment, the full description, every photo, the seller with their CNPJ, address and opening hours, and — unlike the search row — the fuel type and the FIPE reference price alongside the asking price.","required_params":["url"],"optional_params":["include_reference_price","include_phones"],"params":[{"name":"url","type":"string","required":true,"description":"The listing URL, exactly as `search` returns it in `url`. A bare id cannot be resolved: webmotors validates the whole slug against the id.","on_invalid":"reject","example":"https://www.webmotors.com.br/comprar/bmw/x1/20-16v-turbo-activeflex-sdrive20i-4p-automatico/4-portas/2016/70796294","aliases":["listing_url","link"]},{"name":"include_reference_price","type":"boolean","required":false,"description":"Also fetch the FIPE reference price and webmotors' market band (one extra upstream call, ~330 bytes).","on_invalid":"reject","default":true,"example":true},{"name":"include_phones","type":"boolean","required":false,"description":"Also fetch the seller's published phone numbers — the same ones the site's 'ver telefone' control reveals without a login (one extra upstream call, ~110 bytes).","on_invalid":"reject","default":true,"example":true}],"returns":"listing{listing_id, url, title, make, model, trim, year_manufacture, year_model, mileage_km, price, currency, fipe_percent, transmission, body_type, doors, exterior_color, engine_litres, power_hp, traction, armored, has_auction_record, condition, condition_new, attributes, description, images, image_count, seller{seller_id,name,type,type_label,is_dealer,city,state,state_code,neighborhood,street,zip,score}, fuel, optionals, lifestyle, promotions, fipe_code, fipe_price, created_at, seller{cnpj,member_since,opening_hours,phones}, reference_price{...}}","cacheable":true,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"reference_price","description":"The FIPE reference price for one listing (the Brazilian used-car price index) plus Webmotors' own lowest / average / highest asking price for the same vehicle in that state, each with its own update date. Takes the bare listing id.","required_params":["listing_id"],"optional_params":["vehicle_type"],"params":[{"name":"listing_id","type":"integer","required":true,"description":"Listing id (`listing_id` from `search`). This surface takes the bare id.","on_invalid":"reject","example":70796294,"aliases":["id","unique_id"]},{"name":"vehicle_type","type":"enum","required":false,"description":"car = carros, bike = motos.","on_invalid":"reject","allowed_values":[{"value":"car","label":"car"},{"value":"bike","label":"bike"}],"default":"car","example":"car"}],"returns":"reference_price{make, model, trim, year, fipe_code, fipe_price, fipe_updated_at, market_state, market_lowest_price, market_average_price, market_highest_price, market_updated_at, currency}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"makes_models","description":"Webmotors' own make → model tree for cars or motorbikes — the exact spellings the `make` and `model` search filters expect.","required_params":[],"optional_params":["vehicle_type","make"],"params":[{"name":"vehicle_type","type":"enum","required":false,"description":"car = carros, bike = motos.","on_invalid":"reject","allowed_values":[{"value":"car","label":"car"},{"value":"bike","label":"bike"}],"default":"car","example":"car"},{"name":"make","type":"string","required":false,"description":"Return only this manufacturer's models instead of the whole tree.","on_invalid":"reject","example":"TOYOTA"}],"returns":"makes[]{make, models[]}, make_count, model_count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"wikipedia","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"Wikipedia & Wikidata API — encyclopedia content, knowledge-graph facts and pageview traffic across 360+ languages: summaries, full articles, rendered HTML/wikitext, full-text search, entity facts, category members, cross-language links, edit history, random pages, geosearch, on-this-day and featured-content feed","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/wikipedia/v1","spec_available":true,"actions":[{"name":"summary","description":"page summary: extract, description, thumbnail, coordinates, wikibase QID, urls (lang= any of 360+ editions)","required_params":["title"],"optional_params":["lang"],"params":[{"name":"title","type":"string","required":true,"description":"Exact article title (case-sensitive first letter aside).","on_invalid":"reject","example":"Albert Einstein","aliases":["q","query"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]}],"returns":"summary{} — title, extract, description, thumbnail, coordinates, wikibase_item (QID), content_urls; + attribution","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"title":"Albert Einstein"}},{"name":"page","description":"full article: plain-text body + internal links + image list + categories + external links (content=false → structure only)","required_params":["title"],"optional_params":["lang","content","links_limit","images_limit"],"params":[{"name":"title","type":"string","required":true,"description":"Exact article title (case-sensitive first letter aside).","on_invalid":"reject","example":"Albert Einstein","aliases":["q","query"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"content","type":"boolean","required":false,"description":"false (or 0/no) → return article STRUCTURE only (links/images/categories), skip the plain-text body.","on_invalid":"ignore","default":true,"example":true},{"name":"links_limit","type":"integer","required":false,"description":"Max internal links to return (1-500); clamped.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":500},{"name":"images_limit","type":"integer","required":false,"description":"Max images to return (1-200); clamped.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":200}],"returns":"page{} — title, content (plain text), links[], images[], categories[], external_links[]; + attribution","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"title":"Albert Einstein"}},{"name":"search","description":"full-text search → ranked pages (snippet/pageid/wordcount) + totalhits; enrich= adds extract/thumbnail/QID","required_params":["query"],"optional_params":["lang","limit","offset","enrich"],"params":[{"name":"query","type":"string","required":true,"description":"Full-text search query.","on_invalid":"reject","example":"quantum computing","aliases":["q","title"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"limit","type":"integer","required":false,"description":"Max results (1-50, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"offset","type":"integer","required":false,"description":"Result offset for pagination (0-10000); page with meta/next_offset.","on_invalid":"ignore","default":0,"example":0,"minimum":0,"maximum":10000},{"name":"enrich","type":"boolean","required":false,"description":"If true, hydrate each result with extract + thumbnail + Wikidata QID (extra requests).","on_invalid":"ignore","default":false,"example":true}],"returns":"results[] (title, pageid, snippet, wordcount [+extract/thumbnail/QID if enrich]), total, suggestion, next_offset; + attribution","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"quantum computing"}},{"name":"entity_facts","description":"Wikidata facts for a QID or title: label/description/aliases + resolved human-readable facts{prop:value} + key_facts + identifiers + image/coords","required_params":[],"optional_params":["id","qid","title","query","lang","value_cap"],"params":[{"name":"id","type":"string","required":false,"description":"Wikidata QID (e.g. Q937). Supply this OR `title`/`query` to resolve one.","on_invalid":"reject","example":"Q937","aliases":["qid"]},{"name":"title","type":"string","required":false,"description":"Article/entity title to resolve to a Wikidata QID. Supply this OR `id`.","on_invalid":"reject","example":"Tesla, Inc.","aliases":["query","q"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"value_cap","type":"integer","required":false,"description":"Max values kept per multi-valued Wikidata property (1-200); clamped.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":200}],"returns":"entity{} — label, description, aliases, facts{prop:value}, key_facts, identifiers, image, coords, qid, wikipedia_url; + attribution","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":2},"example_params":{"id":"Q937"}},{"name":"pageviews","description":"daily/monthly traffic for an article over a date range → series + total + average","required_params":["title"],"optional_params":["lang","start","end","days","granularity","access","agent"],"params":[{"name":"title","type":"string","required":true,"description":"Article title to pull traffic for.","on_invalid":"reject","example":"Albert Einstein","aliases":["article","q","query"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"start","type":"string","required":false,"description":"Range start date, YYYYMMDD or YYYY-MM-DD. Supply both start AND end, or use `days` instead.","on_invalid":"reject","example":"20240101"},{"name":"end","type":"string","required":false,"description":"Range end date, YYYYMMDD or YYYY-MM-DD. Supply both start AND end, or use `days` instead.","on_invalid":"reject","example":"20240131"},{"name":"days","type":"integer","required":false,"description":"Look-back window ending today, used when start/end are omitted (1-1000).","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":1000},{"name":"granularity","type":"enum","required":false,"description":"Bucket size. Anything not starting with 'month' is treated as daily.","on_invalid":"ignore","allowed_values":[{"value":"daily","label":"One point per day (default)"},{"value":"monthly","label":"One point per month"}],"default":"daily","example":"daily"},{"name":"access","type":"enum","required":false,"description":"Wikimedia Pageviews access channel (passed through to the REST API).","on_invalid":"ignore","allowed_values":[{"value":"all-access","label":"All access (default)"},{"value":"desktop","label":"Desktop"},{"value":"mobile-app","label":"Mobile app"},{"value":"mobile-web","label":"Mobile web"}],"default":"all-access","example":"all-access"},{"name":"agent","type":"enum","required":false,"description":"Wikimedia Pageviews agent class (passed through to the REST API).","on_invalid":"ignore","allowed_values":[{"value":"all-agents","label":"All agents (default)"},{"value":"user","label":"Human users"},{"value":"spider","label":"Spiders"},{"value":"automated","label":"Automated"}],"default":"all-agents","example":"user"}],"returns":"article, daily[] (date, views), total, average, granularity/start/end; + attribution","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{"title":"Albert Einstein","start":"20240101","end":"20240131"}},{"name":"related","description":"pages related to a title; enrich= adds extract/thumbnail","required_params":["title"],"optional_params":["lang","limit","enrich"],"params":[{"name":"title","type":"string","required":true,"description":"Exact article title (case-sensitive first letter aside).","on_invalid":"reject","example":"Albert Einstein","aliases":["q","query"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"limit","type":"integer","required":false,"description":"Max results (1-50, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"enrich","type":"boolean","required":false,"description":"If true, hydrate each result with extract + thumbnail + Wikidata QID (extra requests).","on_invalid":"ignore","default":false,"example":true}],"returns":"source_title, related[] (title, pageid [+extract/thumbnail if enrich]), count; + attribution","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"title":"Albert Einstein"}},{"name":"autocomplete","description":"typeahead title suggestions","required_params":["q"],"optional_params":["lang","limit"],"params":[{"name":"q","type":"string","required":true,"description":"Typeahead prefix to autocomplete.","on_invalid":"reject","example":"Einst","aliases":["query","title"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"limit","type":"integer","required":false,"description":"Max results (1-50, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50}],"returns":"query, suggestions[] (title, description, url), count; + attribution","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":0},"example_params":{"q":"Einst"}},{"name":"geosearch","description":"Wikipedia pages near a coordinate or around a title","required_params":[],"optional_params":["lat","lon","coord","title","radius","limit","lang"],"params":[{"name":"lat","type":"number","required":false,"description":"Latitude. Provide lat+lon, OR `coord`, OR `title` for geosearch.","on_invalid":"ignore","example":48.8584,"minimum":-90,"maximum":90},{"name":"lon","type":"number","required":false,"description":"Longitude (pairs with lat).","on_invalid":"ignore","example":2.2945,"minimum":-180,"maximum":180,"aliases":["lng"]},{"name":"coord","type":"string","required":false,"description":"'lat,lon' string — alternative to separate lat/lon params.","on_invalid":"reject","example":"48.8584,2.2945"},{"name":"title","type":"string","required":false,"description":"Find pages near THIS article's coordinates (alternative to lat/lon/coord).","on_invalid":"reject","example":"Eiffel Tower","aliases":["page"]},{"name":"radius","type":"integer","required":false,"description":"Search radius in metres (10-10000); clamped.","on_invalid":"ignore","default":1000,"example":1000,"minimum":10,"maximum":10000},{"name":"limit","type":"integer","required":false,"description":"Max results (1-50, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]}],"returns":"results[] (title, pageid, lat, lon, dist_m), count; + attribution","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"lat":48.8584,"lon":2.2945,"radius":1000}},{"name":"on_this_day","description":"historical events/births/deaths/holidays for a month-day (kind=all|selected|events|births|deaths|holidays)","required_params":[],"optional_params":["month","day","date","kind","limit","lang"],"params":[{"name":"month","type":"integer","required":false,"description":"Month 1-12 (pair with `day`), OR supply `date` instead. Defaults to today.","on_invalid":"ignore","example":3,"minimum":1,"maximum":12},{"name":"day","type":"integer","required":false,"description":"Day-of-month 1-31 (pairs with `month`).","on_invalid":"ignore","example":14,"minimum":1,"maximum":31},{"name":"date","type":"string","required":false,"description":"Date whose month-day is used (MM-DD or YYYY-MM-DD). Alternative to month/day.","on_invalid":"reject","example":"2024-03-14"},{"name":"kind","type":"enum","required":false,"description":"Which on-this-day category. An unknown value falls back to 'all'.","on_invalid":"ignore","allowed_values":[{"value":"all","label":"All categories (default)"},{"value":"selected","label":"Curated selection"},{"value":"events","label":"Events"},{"value":"births","label":"Births"},{"value":"deaths","label":"Deaths"},{"value":"holidays","label":"Holidays"}],"default":"all","example":"selected","aliases":["type"]},{"name":"limit","type":"integer","required":false,"description":"Max results (1-100, default 30); clamped.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":100},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]}],"returns":"date, kind, and the requested blocks (events/births/deaths/holidays/selected)[]; + attribution","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"month":3,"day":14,"kind":"selected"}},{"name":"top_articles","description":"most-viewed articles for a given date (trending)","required_params":[],"optional_params":["date","limit","access","include_special","lang"],"params":[{"name":"date","type":"string","required":false,"description":"Day to rank, YYYY-MM-DD or YYYYMMDD. Defaults to yesterday (today lags).","on_invalid":"reject","example":"2024-01-15"},{"name":"limit","type":"integer","required":false,"description":"Max results (1-1000, default 50); clamped.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":1000},{"name":"access","type":"enum","required":false,"description":"Wikimedia Pageviews access channel (passed through to the REST API).","on_invalid":"ignore","allowed_values":[{"value":"all-access","label":"All access (default)"},{"value":"desktop","label":"Desktop"},{"value":"mobile-app","label":"Mobile app"},{"value":"mobile-web","label":"Mobile web"}],"default":"all-access","example":"all-access"},{"name":"include_special","type":"boolean","required":false,"description":"Keep special pages (Main_Page, Special:Search) in the ranking; default drops them.","on_invalid":"ignore","default":false,"example":false},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]}],"returns":"articles[] (article, rank, views), date; + attribution","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":1},"example_params":{"date":"2024-01-15"}},{"name":"category_members","description":"list the pages, sub-categories or files that belong to a Wikipedia category (cmtype=page|subcat|file); paginate with meta.next/cmcontinue","required_params":["category"],"optional_params":["lang","limit","cmtype","cmcontinue"],"params":[{"name":"category","type":"string","required":true,"description":"Category name, with or without the 'Category:' prefix (e.g. 'Physicists' or 'Category:1879 births').","on_invalid":"reject","example":"Physicists","aliases":["title","q","query"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"limit","type":"integer","required":false,"description":"Max results (1-500, default 20); clamped.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":500},{"name":"cmtype","type":"enum","required":false,"description":"Which kind of category member to list. Unknown values fall back to 'page'.","on_invalid":"ignore","allowed_values":[{"value":"page","label":"Article pages (default)"},{"value":"subcat","label":"Sub-categories"},{"value":"file","label":"Files / media"}],"default":"page","example":"page","aliases":["type"]},{"name":"cmcontinue","type":"string","required":false,"description":"Pagination token from a previous response's meta.next — fetch the next batch.","on_invalid":"reject","example":"page|...|82899850"}],"returns":"category, members[] (title, pageid, ns, type, timestamp), count, next; + attribution","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"Physicists"}},{"name":"langlinks","description":"full cross-language map for a title: every edition's {lang, title, url, langname, autonym} plus a langmap{lang:title} lookup (the page action only returns the count)","required_params":["title"],"optional_params":["lang","limit"],"params":[{"name":"title","type":"string","required":true,"description":"Exact article title to resolve into its full cross-language map.","on_invalid":"reject","example":"Albert Einstein","aliases":["q","query"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"limit","type":"integer","required":false,"description":"Max results (1-500, default 500); clamped.","on_invalid":"ignore","default":500,"example":500,"minimum":1,"maximum":500}],"returns":"title, pageid, langlinks[] (lang, title, url, langname, autonym), langmap{lang:title}, count; + attribution","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"title":"Albert Einstein"}},{"name":"random","description":"one or more random articles; enrich= adds extract/thumbnail/QID","required_params":[],"optional_params":["lang","limit","enrich"],"params":[{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"limit","type":"integer","required":false,"description":"Max results (1-50, default 1); clamped.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":50},{"name":"enrich","type":"boolean","required":false,"description":"If true, hydrate each result with extract + thumbnail + Wikidata QID (extra requests).","on_invalid":"ignore","default":false,"example":true}],"returns":"results[] (title, pageid, ns [+extract/thumbnail/QID if enrich]), count; + attribution","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"revisions","description":"edit history of an article: revid, parentid, timestamp, user, comment, size, tags; from/to window the range","required_params":["title"],"optional_params":["lang","limit","from","to"],"params":[{"name":"title","type":"string","required":true,"description":"Exact article title (case-sensitive first letter aside).","on_invalid":"reject","example":"Albert Einstein","aliases":["q","query"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"limit","type":"integer","required":false,"description":"Max results (1-500, default 10); clamped.","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":500},{"name":"from","type":"string","required":false,"description":"Window start (ISO timestamp). Returns revisions at/after this point (newest-first). Optional.","on_invalid":"reject","example":"2024-01-01T00:00:00Z"},{"name":"to","type":"string","required":false,"description":"Window end (ISO timestamp). Returns revisions at/before this point. Optional.","on_invalid":"reject","example":"2023-01-01T00:00:00Z"}],"returns":"title, pageid, revisions[] (revid, parentid, timestamp, user, comment, size, minor, tags), count, next; + attribution","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"title":"Albert Einstein"}},{"name":"html","description":"rendered article HTML (REST Parsoid) — or raw wiki markup with format=wikitext","required_params":["title"],"optional_params":["lang","format"],"params":[{"name":"title","type":"string","required":true,"description":"Exact article title (case-sensitive first letter aside).","on_invalid":"reject","example":"Albert Einstein","aliases":["q","query"]},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]},{"name":"format","type":"enum","required":false,"description":"Output flavour: rendered 'html' (default) or raw 'wikitext' source.","on_invalid":"ignore","allowed_values":[{"value":"html","label":"Rendered article HTML via REST Parsoid (default)"},{"value":"wikitext","label":"Raw wiki markup source via Action parse"}],"default":"html","example":"html"}],"returns":"page{} — title, pageid, lang, format (html|wikitext), html|wikitext, length, etag; + attribution","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"title":"Albert Einstein"}},{"name":"featured","description":"Wikimedia featured-content feed for a date: tfa (today's featured article), image-of-the-day, in-the-news, most-read and on-this-day (blocks vary by language/date)","required_params":[],"optional_params":["date","lang"],"params":[{"name":"date","type":"string","required":false,"description":"Day to rank, YYYY-MM-DD or YYYYMMDD. Defaults to yesterday (today lags).","on_invalid":"reject","example":"2024-01-15"},{"name":"lang","type":"string","required":false,"description":"Wikipedia language edition code (en, de, fr, ja, … 360+ editions). Default en.","on_invalid":"reject","default":"en","example":"en","aliases":["language"]}],"returns":"date + present blocks: tfa{}, image{}, news[], mostread{articles[]}, onthisday[]; + attribution","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"date":"2024-03-14"}}]},{"name":"wildberries","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Wildberries API scraper — Russia's largest marketplace plus Kazakhstan, Belarus, Armenia, Kyrgyzstan, Uzbekistan, Tajikistan and Georgia: keyword search, category listings with sorts and filters, full product records with every size's price and stock, price history, reviews, seller records and search suggestions, priced in each country's currency. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/wildberries/v1","spec_available":true,"actions":[{"name":"search","description":"Search Wildberries by keyword in one country: 100 products a page with price and struck price, stock, rating and review count, brand, seller and delivery time, priced for that country. Filter by brand, seller and price; page 1 can also return the site's filter list.","required_params":["query"],"optional_params":["country","page","sort","price_min","price_max","brand_ids","seller_ids","include_filters","include_fallback_results","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Search words, as typed on wildberries.ru (Russian or Latin).","on_invalid":"reject","example":"кроссовки","aliases":["q","keyword"]},{"name":"country","type":"enum","required":false,"description":"Wildberries market. Offers, stock and prices are those for delivery to the country's capital (Moscow, Almaty, Minsk, Yerevan, Bishkek, Tashkent, Dushanbe, Tbilisi), in its currency. Azerbaijan is not available.","on_invalid":"reject","allowed_values":[{"value":"ru","label":"Russia (RUB)"},{"value":"kz","label":"Kazakhstan (KZT)"},{"value":"by","label":"Belarus (BYN)"},{"value":"am","label":"Armenia (AMD)"},{"value":"kg","label":"Kyrgyzstan (KGS)"},{"value":"uz","label":"Uzbekistan (UZS)"},{"value":"tj","label":"Tajikistan (TJS)"},{"value":"ge","label":"Georgia (GEL)"}],"default":"ru","example":"ru"},{"name":"page","type":"integer","required":false,"description":"Result page, 100 products per page. Wildberries serves 3 pages of a keyword search.","on_invalid":"reject","default":1,"minimum":1,"maximum":3},{"name":"sort","type":"enum","required":false,"description":"Wildberries' own sort orders. On broad keywords Wildberries applies a sort only together with a brand or seller filter; otherwise the answer lists it in ignored_params.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"Popular (site default)"},{"value":"rating","label":"By rating"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"newest","label":"Newest"},{"value":"best_value","label":"Best value"}],"default":"popular"},{"name":"price_min","type":"number","required":false,"description":"Lowest price, in the country's currency.","on_invalid":"reject","example":1000,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, in the country's currency.","on_invalid":"reject","example":5000,"minimum":0},{"name":"brand_ids","type":"array","required":false,"description":"Brand ids (up to 20), from `available_filters` or a result row's brand_id.","on_invalid":"reject","example":"671,21","aliases":["brand_id","brands"]},{"name":"seller_ids","type":"array","required":false,"description":"Seller ids to keep (up to 20); -100 is Wildberries itself.","on_invalid":"reject","example":"-100","aliases":["seller_id_filter"]},{"name":"include_filters","type":"boolean","required":false,"description":"Also return the site's filter list (brands, sellers, categories with ids) — one extra request.","on_invalid":"ignore","default":false},{"name":"include_fallback_results","type":"boolean","required":false,"description":"When Wildberries answers a query it cannot match with unrelated products, return them separately in `fallback_results` instead of dropping them.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how hard to retry a request Wildberries rate-limits (1-12; category and seller listings use twice this number). Attempts run in parallel rounds over fresh exits — one while the route answers, widening only while it refuses — and stop after 18 seconds either way.","on_invalid":"ignore","default":10,"minimum":1,"maximum":12}],"returns":"results[{position, product_id, root_id (the product family shared by colour variants), title, brand, brand_id, seller{id, name, rating}, url, image, image_count, price (cheapest size, what the buyer pays: goods price + WB logistics fee), was_price (struck price on the same footing, only when discounted), discount_percent (goods price vs struck goods price), price_max (dearest size, when sizes differ), currency, price_before_logistics, logistics_fee, available, stock_quantity, size_count, colours[], rating, rating_scale, review_count, category_id, parent_category_id, delivery_hours, is_new, review_reward_points, price_source (live: read from the product card; search_index: the product card did not answer, figures from the search index)}], count, page, page_size, total_results, total_pages, has_more, query, query_corrected_to, ranking_source (site|ru_index), unavailable_in_country_dropped, index_only_rows, sort_applied, ignored_params[], applied_filters{}, available_filters[{key, name, values[{id, name}]}] (include_filters), fallback_results_dropped, fallback_results[], sponsored_dropped, page_notice, country{code, name, currency, delivery_city, delivery_zone}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"кроссовки"}},{"name":"category/products","description":"List one Wildberries category in one country with the site's six sort orders and its price and brand filters: 100 products a page with the same fields as search.","required_params":["category"],"optional_params":["country","page","sort","price_min","price_max","brand_ids","seller_ids","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"Category id from `categories`, or a wildberries.ru category URL (https://www.wildberries.ru/catalog/…).","on_invalid":"reject","example":"130017","aliases":["category_id","category_url"]},{"name":"country","type":"enum","required":false,"description":"Wildberries market. Offers, stock and prices are those for delivery to the country's capital (Moscow, Almaty, Minsk, Yerevan, Bishkek, Tashkent, Dushanbe, Tbilisi), in its currency. Azerbaijan is not available.","on_invalid":"reject","allowed_values":[{"value":"ru","label":"Russia (RUB)"},{"value":"kz","label":"Kazakhstan (KZT)"},{"value":"by","label":"Belarus (BYN)"},{"value":"am","label":"Armenia (AMD)"},{"value":"kg","label":"Kyrgyzstan (KGS)"},{"value":"uz","label":"Uzbekistan (UZS)"},{"value":"tj","label":"Tajikistan (TJS)"},{"value":"ge","label":"Georgia (GEL)"}],"default":"ru","example":"ru"},{"name":"page","type":"integer","required":false,"description":"Result page, 100 products per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Wildberries' own sort orders.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"Popular (site default)"},{"value":"rating","label":"By rating"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"newest","label":"Newest"},{"value":"best_value","label":"Best value"}],"default":"popular"},{"name":"price_min","type":"number","required":false,"description":"Lowest price, in the country's currency.","on_invalid":"reject","example":1000,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, in the country's currency.","on_invalid":"reject","example":5000,"minimum":0},{"name":"brand_ids","type":"array","required":false,"description":"Brand ids (up to 20), from `available_filters` or a result row's brand_id.","on_invalid":"reject","example":"671,21","aliases":["brand_id","brands"]},{"name":"seller_ids","type":"array","required":false,"description":"Seller ids to keep (up to 20); -100 is Wildberries itself.","on_invalid":"reject","example":"-100","aliases":["seller_id_filter"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how hard to retry a request Wildberries rate-limits (1-12; category and seller listings use twice this number). Attempts run in parallel rounds over fresh exits — one while the route answers, widening only while it refuses — and stop after 18 seconds either way.","on_invalid":"ignore","default":10,"minimum":1,"maximum":12}],"returns":"results[{position, product_id, root_id (the product family shared by colour variants), title, brand, brand_id, seller{id, name, rating}, url, image, image_count, price (cheapest size, what the buyer pays: goods price + WB logistics fee), was_price (struck price on the same footing, only when discounted), discount_percent (goods price vs struck goods price), price_max (dearest size, when sizes differ), currency, price_before_logistics, logistics_fee, available, stock_quantity, size_count, colours[], rating, rating_scale, review_count, category_id, parent_category_id, delivery_hours, is_new, review_reward_points, price_source (live: read from the product card; search_index: the product card did not answer, figures from the search index)}], count, page, page_size, total_results, total_pages, has_more, category{category_id, name, path[], url}, sort_applied, applied_filters{}, page_notice, country{code, name, currency, delivery_city, delivery_zone}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"The Wildberries catalogue tree: every category with its id, name, path, parent and whether it can be listed with category/products.","required_params":[],"optional_params":["parent_id","search","max_rotations"],"params":[{"name":"parent_id","type":"integer","required":false,"description":"Only the direct children of this category id.","on_invalid":"reject"},{"name":"search","type":"string","required":false,"description":"Only categories whose name contains this text.","on_invalid":"reject","aliases":["name"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how hard to retry a request Wildberries rate-limits (1-12; category and seller listings use twice this number). Attempts run in parallel rounds over fresh exits — one while the route answers, widening only while it refuses — and stop after 18 seconds either way.","on_invalid":"ignore","default":10,"minimum":1,"maximum":12}],"returns":"categories[{category_id, name, parent_id, depth, path[], url, has_products, child_count}], count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"product/detail","description":"One Wildberries product by article number or URL, for one country: title, brand, seller, every size with its own price, struck price and stock, colour variants with their prices, specifications, description, images, rating and review count, delivery time and the weekly price history.","required_params":[],"optional_params":["product_id","url","country","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Wildberries article number (the number in a product URL; result rows return it).","on_invalid":"reject","example":"159500775","aliases":["id","nm_id","article"]},{"name":"url","type":"string","required":false,"description":"Alternative to product_id: a Wildberries product URL.","on_invalid":"reject","example":"https://www.wildberries.ru/catalog/159500775/detail.aspx","aliases":["product_url"]},{"name":"country","type":"enum","required":false,"description":"Wildberries market. Offers, stock and prices are those for delivery to the country's capital (Moscow, Almaty, Minsk, Yerevan, Bishkek, Tashkent, Dushanbe, Tbilisi), in its currency. Azerbaijan is not available.","on_invalid":"reject","allowed_values":[{"value":"ru","label":"Russia (RUB)"},{"value":"kz","label":"Kazakhstan (KZT)"},{"value":"by","label":"Belarus (BYN)"},{"value":"am","label":"Armenia (AMD)"},{"value":"kg","label":"Kyrgyzstan (KGS)"},{"value":"uz","label":"Uzbekistan (UZS)"},{"value":"tj","label":"Tajikistan (TJS)"},{"value":"ge","label":"Georgia (GEL)"}],"default":"ru","example":"ru"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how hard to retry a request Wildberries rate-limits (1-12; category and seller listings use twice this number). Attempts run in parallel rounds over fresh exits — one while the route answers, widening only while it refuses — and stop after 18 seconds either way.","on_invalid":"ignore","default":10,"minimum":1,"maximum":12}],"returns":"product{product_id, root_id, title, brand, brand_id, seller{id, name, rating}, url, images[], has_video, breadcrumb[], category_id, category, parent_category_id, parent_category, description, specifications[{group, name, value}], seller_sku, colour, contents, certificate_verified, gtin (null: not published), price, was_price, discount_percent, price_max, currency, price_before_logistics, logistics_fee, available, stock_quantity, delivery_hours, sizes[{size_id, name, original_name, price, was_price, discount_percent, price_before_logistics, logistics_fee, available, stock_quantity, warehouse_count, delivery_hours}], variants[{product_id, colour, price, was_price, available, stock_quantity, image}], rating, rating_scale, review_count, review_reward_points, price_history[{date, price}], price_history_currency (RUB), sold_in_country (false: no offer for this country, or sold out)}, country{code, name, currency, delivery_city, delivery_zone}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"159500775"}},{"name":"product/reviews","description":"Reviews of one Wildberries product: the full star breakdown and counts, plus the most recent reviews (about 1 000, which is what Wildberries publishes) with stars, date, text, pros and cons, size fit, helpful votes, photos and the seller's answer. Reviewer names are never returned.","required_params":[],"optional_params":["product_id","url","page","limit","rating","with","this_variant_only","max_rotations"],"params":[{"name":"product_id","type":"string","required":false,"description":"Wildberries article number (the number in a product URL; result rows return it).","on_invalid":"reject","example":"159500775","aliases":["id","nm_id","article"]},{"name":"url","type":"string","required":false,"description":"Alternative to product_id: a Wildberries product URL.","on_invalid":"reject","example":"https://www.wildberries.ru/catalog/159500775/detail.aspx","aliases":["product_url"]},{"name":"page","type":"integer","required":false,"description":"Review page, 1-based.","on_invalid":"reject","default":1,"minimum":1,"maximum":100},{"name":"limit","type":"integer","required":false,"description":"Reviews per page, 1-200.","on_invalid":"reject","default":50,"minimum":1,"maximum":200},{"name":"rating","type":"array","required":false,"description":"Only reviews with these star ratings (1-5).","on_invalid":"reject","example":"1,2","aliases":["stars"]},{"name":"with","type":"enum","required":false,"description":"Keep only reviews with text or with photos.","on_invalid":"reject","allowed_values":[{"value":"all","label":"All reviews"},{"value":"text","label":"With text"},{"value":"photos","label":"With photos"}],"default":"all"},{"name":"this_variant_only","type":"boolean","required":false,"description":"Wildberries pools reviews across a product's colour variants; true keeps only the reviews written for this product_id.","on_invalid":"ignore","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how hard to retry a request Wildberries rate-limits (1-12; category and seller listings use twice this number). Attempts run in parallel rounds over fresh exits — one while the route answers, widening only while it refuses — and stop after 18 seconds either way.","on_invalid":"ignore","default":10,"minimum":1,"maximum":12}],"returns":"product_id, root_id, rating, rating_scale, rating_breakdown{'1'..'5'}, review_count, reviews_with_text, reviews_with_photos, reviews_with_video, reviews_published, reviews_matching, reviews[{review_id, product_id, rating, date, text, pros, cons, variant_colour, variant_size, size_fit, helpful_count, unhelpful_count, tags[], photo_count, has_video, excluded_from_rating, reviewer_country, seller_answer{text, date}}], count, page, limit, total_pages, page_notice","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"seller/detail","description":"A Wildberries seller's public record: shop name, legal name, trademark, tax id and registration number, and the registered address of companies.","required_params":["seller_id"],"optional_params":["max_rotations"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Wildberries seller id (result rows return it as seller.id).","on_invalid":"reject","example":"1334144","aliases":["supplier_id"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how hard to retry a request Wildberries rate-limits (1-12; category and seller listings use twice this number). Attempts run in parallel rounds over fresh exits — one while the route answers, widening only while it refuses — and stop after 18 seconds either way.","on_invalid":"ignore","default":10,"minimum":1,"maximum":12}],"returns":"seller{seller_id, name, legal_name, trademark, individual_entrepreneur, tax_id, registration_number, kpp, legal_address (companies only), url}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"seller/products","description":"One seller's products in one country with the site's sort orders and price and brand filters, 100 a page.","required_params":["seller_id"],"optional_params":["country","page","sort","price_min","price_max","brand_ids","max_rotations"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Wildberries seller id (result rows return it as seller.id).","on_invalid":"reject","example":"1334144","aliases":["supplier_id"]},{"name":"country","type":"enum","required":false,"description":"Wildberries market. Offers, stock and prices are those for delivery to the country's capital (Moscow, Almaty, Minsk, Yerevan, Bishkek, Tashkent, Dushanbe, Tbilisi), in its currency. Azerbaijan is not available.","on_invalid":"reject","allowed_values":[{"value":"ru","label":"Russia (RUB)"},{"value":"kz","label":"Kazakhstan (KZT)"},{"value":"by","label":"Belarus (BYN)"},{"value":"am","label":"Armenia (AMD)"},{"value":"kg","label":"Kyrgyzstan (KGS)"},{"value":"uz","label":"Uzbekistan (UZS)"},{"value":"tj","label":"Tajikistan (TJS)"},{"value":"ge","label":"Georgia (GEL)"}],"default":"ru","example":"ru"},{"name":"page","type":"integer","required":false,"description":"Result page, 100 products per page.","on_invalid":"reject","default":1,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Wildberries' own sort orders.","on_invalid":"reject","allowed_values":[{"value":"popular","label":"Popular (site default)"},{"value":"rating","label":"By rating"},{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"},{"value":"newest","label":"Newest"},{"value":"best_value","label":"Best value"}],"default":"popular"},{"name":"price_min","type":"number","required":false,"description":"Lowest price, in the country's currency.","on_invalid":"reject","example":1000,"minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price, in the country's currency.","on_invalid":"reject","example":5000,"minimum":0},{"name":"brand_ids","type":"array","required":false,"description":"Brand ids (up to 20), from `available_filters` or a result row's brand_id.","on_invalid":"reject","example":"671,21","aliases":["brand_id","brands"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how hard to retry a request Wildberries rate-limits (1-12; category and seller listings use twice this number). Attempts run in parallel rounds over fresh exits — one while the route answers, widening only while it refuses — and stop after 18 seconds either way.","on_invalid":"ignore","default":10,"minimum":1,"maximum":12}],"returns":"results[{position, product_id, root_id (the product family shared by colour variants), title, brand, brand_id, seller{id, name, rating}, url, image, image_count, price (cheapest size, what the buyer pays: goods price + WB logistics fee), was_price (struck price on the same footing, only when discounted), discount_percent (goods price vs struck goods price), price_max (dearest size, when sizes differ), currency, price_before_logistics, logistics_fee, available, stock_quantity, size_count, colours[], rating, rating_scale, review_count, category_id, parent_category_id, delivery_hours, is_new, review_reward_points, price_source (live: read from the product card; search_index: the product card did not answer, figures from the search index)}], count, page, page_size, total_results, total_pages, has_more, seller_id, sort_applied, applied_filters{}, page_notice, country{code, name, currency, delivery_city, delivery_zone}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"suggest","description":"Wildberries search suggestions for the beginning of a query.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The beginning of a search, as typed.","on_invalid":"reject","example":"плат","aliases":["q"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how hard to retry a request Wildberries rate-limits (1-12; category and seller listings use twice this number). Attempts run in parallel rounds over fresh exits — one while the route answers, widening only while it refuses — and stop after 18 seconds either way.","on_invalid":"ignore","default":10,"minimum":1,"maximum":12}],"returns":"query, suggestions[{text, type}], count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"кроссовки"}}]},{"name":"willhaben","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"willhaben API scraper — Austria's largest classifieds site: marketplace search with condition, PayLivery and private/dealer filters, real estate (rent and buy) and cars/motorcycles search, and the full listing record. No account, no browser; private sellers' personal data withheld.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/willhaben/v1","spec_available":true,"actions":[{"name":"search","description":"Search willhaben's second-hand marketplace (Kaufen & Verkaufen) by keyword and/or category: price or 'free', condition, PayLivery (willhaben's buyer-protected shipping) and pickup/shipping, location, private or dealer seller, publish/update/expiry dates, images, and flags for top ads, paid highlights and reserved listings. Filter by price, condition, handover, PayLivery, state or district, seller type, seller, attribute values and last 48 hours; sort newest, price or relevance.","required_params":[],"optional_params":["query","category","condition","handover","paylivery","attribute_ids","price_min","price_max","state","area_id","seller_type","seller_id","posted_last_48h","sort","page","limit","include_facets","include_pii","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into willhaben's search box.","on_invalid":"reject","example":"fahrrad"},{"name":"category","type":"string","required":false,"description":"willhaben category id (e.g. 4525 = bikes) or a willhaben category URL ending in -<id>. Ids come back in facets.","on_invalid":"reject","example":"4525"},{"name":"condition","type":"array","required":false,"description":"One or more of new, like_new, refurbished, used, defective, display_item.","on_invalid":"reject","allowed_values":[{"value":"new","label":"new"},{"value":"like_new","label":"like_new"},{"value":"refurbished","label":"refurbished"},{"value":"used","label":"used"},{"value":"defective","label":"defective"},{"value":"display_item","label":"display_item"}]},{"name":"handover","type":"enum","required":false,"description":"Only listings offering pickup, or shipping.","on_invalid":"reject","allowed_values":[{"value":"pickup","label":"Pickup"},{"value":"shipping","label":"Shipping"}]},{"name":"paylivery","type":"boolean","required":false,"description":"Only listings with PayLivery (buyer protection + shipping via willhaben).","on_invalid":"reject"},{"name":"attribute_ids","type":"array","required":false,"description":"willhaben attribute value ids (frame size, colour, size…) from facets.","on_invalid":"reject"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rental sections).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rental sections).","on_invalid":"reject","example":500,"minimum":0},{"name":"state","type":"enum","required":false,"description":"Austrian federal state.","on_invalid":"reject","allowed_values":[{"value":"burgenland","label":"burgenland"},{"value":"kaernten","label":"kaernten"},{"value":"niederoesterreich","label":"niederoesterreich"},{"value":"oberoesterreich","label":"oberoesterreich"},{"value":"salzburg","label":"salzburg"},{"value":"steiermark","label":"steiermark"},{"value":"tirol","label":"tirol"},{"value":"vorarlberg","label":"vorarlberg"},{"value":"wien","label":"wien"}],"example":"wien"},{"name":"area_id","type":"integer","required":false,"description":"willhaben area id for a district or city (e.g. 117223 = Wien 1st district). Returned in facets when include_facets=true. Use instead of state.","on_invalid":"reject"},{"name":"seller_type","type":"enum","required":false,"description":"Private sellers or dealers only.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private seller"},{"value":"dealer","label":"Dealer / company"}]},{"name":"seller_id","type":"integer","required":false,"description":"Only this seller's listings (a listing's seller_id).","on_invalid":"reject"},{"name":"posted_last_48h","type":"boolean","required":false,"description":"Only listings published in the last 48 hours.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"newest, price_asc, price_desc or relevance. Omitted: willhaben's default order (sort_applied says which).","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"relevance","label":"relevance"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Listings per page (1-100). willhaben's own page size is 30.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"include_facets","type":"boolean","required":false,"description":"Also return willhaben's filter facets for this search (categories, areas, makes, object types, attribute values) with counts and the value to pass back.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names, contact names, phone numbers, street addresses and exact coordinates. Off by default.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, title, url, section, status, is_reserved, price (EUR; 0 only when free; null on request), currency, price_display, is_free, price_on_request, price_is_from, price_not_published, description_preview, postcode, location, district, state, country, address (dealers only), latitude, longitude (dealers only), published_at, updated_at, expires_at, seller_id, seller_type (private|dealer), seller_name (dealers only), images[], image_count, is_top_ad, is_highlighted, is_bumped, category_ids[], teaser[], condition, handover[], paylivery}, count, total, page, limit, has_more, sort_applied, breadcrumbs[], facets[] (include_facets)","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"fahrrad"}},{"name":"real_estate/search","description":"Search willhaben real estate - Austria's largest property portal - by property type (apartments and houses to rent or buy, plots, commercial): price or monthly rent, price per m², living area, rooms, floor, property type, new-build projects with their units, address and district, agency or private landlord, images and top-ad flags. Filter by price, living area, rooms, state or district, agency, available now, keyword; sort newest, price, area or relevance.","required_params":["property_type"],"optional_params":["query","price_min","price_max","living_area_min","living_area_max","rooms","available_now","state","area_id","seller_id","posted_last_48h","sort","page","limit","include_facets","include_pii","max_rotations"],"params":[{"name":"property_type","type":"enum","required":true,"description":"rent_apartment, buy_apartment, rent_house, buy_house, plot, commercial_rent or commercial_buy.","on_invalid":"reject","allowed_values":[{"value":"rent_apartment","label":"rent_apartment"},{"value":"buy_apartment","label":"buy_apartment"},{"value":"rent_house","label":"rent_house"},{"value":"buy_house","label":"buy_house"},{"value":"plot","label":"plot"},{"value":"commercial_rent","label":"commercial_rent"},{"value":"commercial_buy","label":"commercial_buy"}],"example":"rent_apartment"},{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into willhaben's search box.","on_invalid":"reject","example":"fahrrad"},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rental sections).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rental sections).","on_invalid":"reject","example":500,"minimum":0},{"name":"living_area_min","type":"number","required":false,"description":"Smallest living area, m².","on_invalid":"reject","minimum":0},{"name":"living_area_max","type":"number","required":false,"description":"Largest living area, m².","on_invalid":"reject","minimum":0},{"name":"rooms","type":"array","required":false,"description":"One or more of 1, 2, 3, 4, 5, 6-9, 10+.","on_invalid":"reject","allowed_values":[{"value":"1","label":"1"},{"value":"2","label":"2"},{"value":"3","label":"3"},{"value":"4","label":"4"},{"value":"5","label":"5"},{"value":"6-9","label":"6-9"},{"value":"10+","label":"10+"}]},{"name":"available_now","type":"boolean","required":false,"description":"Only properties available immediately.","on_invalid":"reject"},{"name":"state","type":"enum","required":false,"description":"Austrian federal state.","on_invalid":"reject","allowed_values":[{"value":"burgenland","label":"burgenland"},{"value":"kaernten","label":"kaernten"},{"value":"niederoesterreich","label":"niederoesterreich"},{"value":"oberoesterreich","label":"oberoesterreich"},{"value":"salzburg","label":"salzburg"},{"value":"steiermark","label":"steiermark"},{"value":"tirol","label":"tirol"},{"value":"vorarlberg","label":"vorarlberg"},{"value":"wien","label":"wien"}],"example":"wien"},{"name":"area_id","type":"integer","required":false,"description":"willhaben area id for a district or city (e.g. 117223 = Wien 1st district). Returned in facets when include_facets=true. Use instead of state.","on_invalid":"reject"},{"name":"seller_id","type":"integer","required":false,"description":"Only this seller's listings (a listing's seller_id).","on_invalid":"reject"},{"name":"posted_last_48h","type":"boolean","required":false,"description":"Only listings published in the last 48 hours.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"newest, price_asc, price_desc, area_asc, area_desc or relevance.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"area_asc","label":"area_asc"},{"value":"area_desc","label":"area_desc"},{"value":"relevance","label":"relevance"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Listings per page (1-100). willhaben's own page size is 30.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"include_facets","type":"boolean","required":false,"description":"Also return willhaben's filter facets for this search (categories, areas, makes, object types, attribute values) with counts and the value to pass back.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names, contact names, phone numbers, street addresses and exact coordinates. Off by default.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, title, url, section, status, is_reserved, price (EUR; 0 only when free; null on request), currency, price_display, is_free, price_on_request, price_is_from, price_not_published, description_preview, postcode, location, district, state, country, address (dealers only), latitude, longitude (dealers only), published_at, updated_at, expires_at, seller_id, seller_type (private|dealer), seller_name (dealers only), images[], image_count, is_top_ad, is_highlighted, is_bumped, category_ids[], teaser[], property{property_type, living_area_m2, usable_area_m2, rooms, floor, rent_per_month, purchase_price, price_per_m2, free_area_type, is_project, project_id, virtual_tour_url, …}, units[]{ad_id, title, url, price, price_display, living_area_m2, rooms, floor}}, count, total, page, limit, has_more, sort_applied, breadcrumbs[], facets[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"property_type":"rent_apartment","state":"wien"}},{"name":"cars/search","description":"Search willhaben used cars and motorcycles: price, the dealer's earlier price and any bonus-only price kept separate, make, model, version, first registration, mileage, power, fuel, transmission, condition, body type, previous owners, warranty and inspection sticker, location, dealer or private seller, images and top-ad flags. Filter by make, price, mileage, year, fuel, transmission, condition, state, seller type; sort by price, mileage, year, newest or relevance.","required_params":[],"optional_params":["vehicle_type","query","make","price_min","price_max","mileage_min","mileage_max","year_min","year_max","fuel","transmission","condition","state","area_id","seller_type","seller_id","posted_last_48h","sort","page","limit","include_facets","include_pii","max_rotations"],"params":[{"name":"vehicle_type","type":"enum","required":false,"description":"car or motorcycle. The make/fuel/transmission/condition filters apply to cars.","on_invalid":"reject","allowed_values":[{"value":"car","label":"Car"},{"value":"motorcycle","label":"Motorcycle"}],"default":"car"},{"name":"query","type":"string","required":false,"description":"Free-text keyword, as typed into willhaben's search box.","on_invalid":"reject","example":"fahrrad"},{"name":"make","type":"integer","required":false,"description":"willhaben make id (e.g. 1003 = Audi, 1005 = BMW). Ids come back in facets.","on_invalid":"reject","example":1003},{"name":"price_min","type":"number","required":false,"description":"Lowest price in EUR (monthly rent on rental sections).","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in EUR (monthly rent on rental sections).","on_invalid":"reject","example":500,"minimum":0},{"name":"mileage_min","type":"number","required":false,"description":"Lowest mileage, km.","on_invalid":"reject","minimum":0},{"name":"mileage_max","type":"number","required":false,"description":"Highest mileage, km.","on_invalid":"reject","minimum":0},{"name":"year_min","type":"integer","required":false,"description":"Earliest first registration year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest first registration year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"fuel","type":"enum","required":false,"description":"petrol, diesel, electric, gas, hybrid_petrol, hybrid_diesel or hydrogen.","on_invalid":"reject","allowed_values":[{"value":"petrol","label":"petrol"},{"value":"diesel","label":"diesel"},{"value":"electric","label":"electric"},{"value":"gas","label":"gas"},{"value":"hybrid_petrol","label":"hybrid_petrol"},{"value":"hybrid_diesel","label":"hybrid_diesel"},{"value":"hydrogen","label":"hydrogen"}]},{"name":"transmission","type":"enum","required":false,"description":"automatic or manual.","on_invalid":"reject","allowed_values":[{"value":"automatic","label":"Automatic"},{"value":"manual","label":"Manual"}]},{"name":"condition","type":"enum","required":false,"description":"used, new, year_old, oldtimer, day_registration, accident or demo.","on_invalid":"reject","allowed_values":[{"value":"used","label":"used"},{"value":"new","label":"new"},{"value":"year_old","label":"year_old"},{"value":"oldtimer","label":"oldtimer"},{"value":"day_registration","label":"day_registration"},{"value":"accident","label":"accident"},{"value":"demo","label":"demo"}]},{"name":"state","type":"enum","required":false,"description":"Austrian federal state.","on_invalid":"reject","allowed_values":[{"value":"burgenland","label":"burgenland"},{"value":"kaernten","label":"kaernten"},{"value":"niederoesterreich","label":"niederoesterreich"},{"value":"oberoesterreich","label":"oberoesterreich"},{"value":"salzburg","label":"salzburg"},{"value":"steiermark","label":"steiermark"},{"value":"tirol","label":"tirol"},{"value":"vorarlberg","label":"vorarlberg"},{"value":"wien","label":"wien"}],"example":"wien"},{"name":"area_id","type":"integer","required":false,"description":"willhaben area id for a district or city (e.g. 117223 = Wien 1st district). Returned in facets when include_facets=true. Use instead of state.","on_invalid":"reject"},{"name":"seller_type","type":"enum","required":false,"description":"Private sellers or dealers only.","on_invalid":"reject","allowed_values":[{"value":"private","label":"Private seller"},{"value":"dealer","label":"Dealer / company"}]},{"name":"seller_id","type":"integer","required":false,"description":"Only this seller's listings (a listing's seller_id).","on_invalid":"reject"},{"name":"posted_last_48h","type":"boolean","required":false,"description":"Only listings published in the last 48 hours.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"newest, price_asc, price_desc, mileage_asc, mileage_desc, year_desc, year_asc or relevance.","on_invalid":"reject","allowed_values":[{"value":"newest","label":"newest"},{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"},{"value":"mileage_asc","label":"mileage_asc"},{"value":"mileage_desc","label":"mileage_desc"},{"value":"relevance","label":"relevance"},{"value":"year_desc","label":"year_desc"},{"value":"year_asc","label":"year_asc"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":1000},{"name":"limit","type":"integer","required":false,"description":"Listings per page (1-100). willhaben's own page size is 30.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"include_facets","type":"boolean","required":false,"description":"Also return willhaben's filter facets for this search (categories, areas, makes, object types, attribute values) with counts and the value to pass back.","on_invalid":"reject","default":false},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names, contact names, phone numbers, street addresses and exact coordinates. Off by default.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, title, url, section, status, is_reserved, price (EUR; 0 only when free; null on request), currency, price_display, is_free, price_on_request, price_is_from, price_not_published, description_preview, postcode, location, district, state, country, address (dealers only), latitude, longitude (dealers only), published_at, updated_at, expires_at, seller_id, seller_type (private|dealer), seller_name (dealers only), images[], image_count, is_top_ad, is_highlighted, is_bumped, category_ids[], teaser[], vehicle{make, model, model_specification, year, mileage_km, power_kw, fuel, transmission, condition, body_type, previous_owners, warranty, price_before_reduction, price_reduced_at, price_with_bonus, …}}, count, total, page, limit, has_more, sort_applied, breadcrumbs[], facets[]","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"golf"}},{"name":"listing","description":"The full willhaben listing by ad id or URL, in any section: title, price (free, on request and from-prices labelled), description, all images and floor plans, status and reserved flag, condition, pickup/shipping, PayLivery with each shipping option's carrier, price and parcel size, location (postcode, city, district, state), publish/update/expiry dates, breadcrumb, every published attribute, property or vehicle details, top-ad flag, and the seller (dealer company, address and website; private sellers' personal data withheld).","required_params":["ad_id"],"optional_params":["include_pii","max_rotations"],"params":[{"name":"ad_id","type":"string","required":true,"description":"The willhaben ad id (the digits at the end of a listing URL), or the full listing URL.","on_invalid":"reject","example":"1826650948"},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' names, contact names, phone numbers, street addresses and exact coordinates. Off by default.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{ad_id, uuid, title, url, section, status, is_reserved, price, currency, price_display, is_free, price_on_request, price_is_from, price_not_published, description, text_sections{}, condition, condition_label, handover[], paylivery, delivery_options[]{carrier, price, price_before_discount, parcel_size, parcel_type, max_weight_kg, delivery_days, insurance}, payment_options[], location{postcode, city, municipality, district, state, country, street (dealers), latitude, longitude (dealers), area_id}, published_at, first_published_at, updated_at, expires_at, images[], image_count, floor_plans[], category_id, breadcrumbs[], attribute_groups[]{name, code, values[]}, attributes{}, is_top_ad, is_bumped, advertiser_reference, property{} | vehicle{}, seller{seller_id, type, name, name_withheld, company, business_address, website, member_since, active_ad_count, profile_image, partner_years, contact_type, chat_enabled, contact_withheld}}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"wish","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Wish — cross-border marketplace search, products, shipping & reviews","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/wish/v1","spec_available":true,"actions":[{"name":"search","description":"Keyword search across Wish with price, rating, shipping, deal and merchant-tier filters. Returns the price charged, the strikethrough price where Wish publishes one, rating, review count and merchant id.","required_params":["query"],"optional_params":["market","limit","max_pages","min_price","max_price","min_rating"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for.","on_invalid":"reject","example":"wireless earbuds"},{"name":"market","type":"enum","required":false,"description":"Storefront to price against — it changes the currency, the price and how many variations exist. Wish sets it from the exit and accepts no override, so a rarer market costs extra attempts and GB can come back MARKET_UNAVAILABLE; 'any' is cheapest and reports whichever storefront answered.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USD"},{"value":"GB","label":"United Kingdom — GBP"},{"value":"CN","label":"China — CNY (no list prices; see docs)"},{"value":"any","label":"Whichever storefront answers first — cheapest, currency varies"}],"default":"US","example":"US"},{"name":"limit","type":"integer","required":false,"description":"How many products to return (1-150).","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":150},{"name":"max_pages","type":"integer","required":false,"description":"Upstream pages to walk. Wish returns 20-30 usable rows per page, so 150 results needs about 6.","on_invalid":"reject","default":5,"example":3,"minimum":1,"maximum":8},{"name":"min_price","type":"number","required":false,"description":"Lowest price, in the storefront's currency. Applied by this API to the rows it fetched — Wish's search ignores price filters — so raise `max_pages` to widen the net. `filtered_out` reports how many rows it removed.","on_invalid":"reject","example":5},{"name":"max_price","type":"number","required":false,"description":"Highest price, in the storefront's currency. Applied by this API to the rows it fetched, like `min_price`.","on_invalid":"reject","example":25},{"name":"min_rating","type":"enum","required":false,"description":"Only products rated this many stars and up. Applied by this API to the rows it fetched. Products with no reviews have no rating and are excluded.","on_invalid":"reject","allowed_values":[{"value":"4","label":"4 stars & up"},{"value":"3","label":"3 stars & up"},{"value":"2","label":"2 stars & up"},{"value":"1","label":"1 star & up"}],"example":"4"}],"returns":"{query, storefront, currency, total_found, returned, results[], filters_applied, filtered_out, next_offset}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"query":"wireless earbuds","limit":10,"market":"US"}},{"name":"product","description":"Full product record: price, list price, SHIPPING COST and total, every colour/size variation with its own price and stock, merchant, categories, images, description and rating histogram.","required_params":["product_id"],"optional_params":["market","max_variants"],"params":[{"name":"product_id","type":"string","required":true,"description":"Wish product id, or any wish.com product URL.","on_invalid":"reject","example":"63eb5819af90c9111b845906","aliases":["id","url"]},{"name":"market","type":"enum","required":false,"description":"Storefront to price against.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USD"},{"value":"GB","label":"United Kingdom — GBP"},{"value":"CN","label":"China — CNY (no list prices; see docs)"},{"value":"any","label":"Whichever storefront answers first — cheapest, currency varies"}],"default":"US","example":"US"},{"name":"max_variants","type":"integer","required":false,"description":"Variations to return. Wish publishes up to several hundred per product; `variant_count` always states the true total.","on_invalid":"reject","default":100,"example":100,"minimum":1,"maximum":400}],"returns":"{product with variants[], merchant{}, categories[], images[]}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"product_id":"63eb5819af90c9111b845906","market":"US"}},{"name":"reviews","description":"Buyer reviews for a product with the 1-5 star histogram. No reviewer personal data is returned.","required_params":["product_id"],"optional_params":["market","limit","offset"],"params":[{"name":"product_id","type":"string","required":true,"description":"Wish product id, or any wish.com product URL.","on_invalid":"reject","example":"6188c90eddcc50d1bcf714c2","aliases":["id","url"]},{"name":"market","type":"enum","required":false,"description":"Storefront. Reviews do not vary by market; 'any' is cheapest.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USD"},{"value":"GB","label":"United Kingdom — GBP"},{"value":"CN","label":"China — CNY (no list prices; see docs)"},{"value":"any","label":"Whichever storefront answers first — cheapest, currency varies"}],"default":"any","example":"any"},{"name":"limit","type":"integer","required":false,"description":"How many reviews to return.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"offset","type":"integer","required":false,"description":"Where to start, for paging.","on_invalid":"reject","default":0,"example":0,"minimum":0,"maximum":1000}],"returns":"{product_id, rating, review_count, rating_spread{}, reviews[]}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":{"product_id":"6188c90eddcc50d1bcf714c2","limit":5,"market":"any"}},{"name":"similar","description":"The related-products grid Wish shows under a product.","required_params":["product_id"],"optional_params":["market","limit"],"params":[{"name":"product_id","type":"string","required":true,"description":"Wish product id, or any wish.com product URL.","on_invalid":"reject","example":"63eb5819af90c9111b845906","aliases":["id","url"]},{"name":"market","type":"enum","required":false,"description":"Storefront to price against.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USD"},{"value":"GB","label":"United Kingdom — GBP"},{"value":"CN","label":"China — CNY (no list prices; see docs)"},{"value":"any","label":"Whichever storefront answers first — cheapest, currency varies"}],"default":"US","example":"US"},{"name":"limit","type":"integer","required":false,"description":"How many related products to return.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":60}],"returns":"{product_id, storefront, currency, returned, results[]}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{"product_id":"63eb5819af90c9111b845906"}},{"name":"merchant","description":"A Wish store's display name, average rating and rating count.","required_params":["merchant_id"],"optional_params":["market"],"params":[{"name":"merchant_id","type":"string","required":true,"description":"Wish merchant id, as returned by `search` (`merchant_id`) or `product` (`merchant.merchant_id`).","on_invalid":"reject","example":"631197b8ccdc7ca831b54df8","aliases":["id"]},{"name":"market","type":"enum","required":false,"description":"Storefront. Store data does not vary by market.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USD"},{"value":"GB","label":"United Kingdom — GBP"},{"value":"CN","label":"China — CNY (no list prices; see docs)"},{"value":"any","label":"Whichever storefront answers first — cheapest, currency varies"}],"default":"any","example":"any"}],"returns":"{merchant_id, name, rating, rating_count, store_url}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"trending","description":"Wish's logged-out home feed — what the site puts in front of a new visitor in the chosen storefront.","required_params":[],"optional_params":["market","limit","offset"],"params":[{"name":"market","type":"enum","required":false,"description":"Storefront to price against.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States — USD"},{"value":"GB","label":"United Kingdom — GBP"},{"value":"CN","label":"China — CNY (no list prices; see docs)"},{"value":"any","label":"Whichever storefront answers first — cheapest, currency varies"}],"default":"US","example":"US"},{"name":"limit","type":"integer","required":false,"description":"How many products to return.","on_invalid":"reject","default":30,"example":30,"minimum":1,"maximum":100},{"name":"offset","type":"integer","required":false,"description":"Where to start, for paging.","on_invalid":"reject","default":0,"example":0,"minimum":0,"maximum":500}],"returns":"{storefront, currency, returned, results[]}","cacheable":false,"cache_ttl_seconds":0,"pricing":{"mode":"flat","credits":3},"example_params":{}}]},{"name":"woolworths","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Woolworths API scraper — woolworths.com.au (Australia) supermarket and Everyday Market: search products, read the full product record with shelf price, was-price and special, cup (unit) price, multi-buy offers, per-kg and variable-weight pricing, availability, marketplace seller, ratings and reviews, ingredients, allergens and the nutrition panel; browse categories and the site's specials pages. Prices in AUD. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/woolworths/v1","spec_available":true,"actions":[{"name":"search","description":"Search woolworths.com.au by keyword. Each product comes with its shelf price, was-price and discount when on special, the cup (unit) price, multi-buy offer, per-kg or variable-weight pricing, availability, star rating, badges, and the marketplace seller for Everyday Market items. Sort by price or name, keep only specials, filter by brand. Paid placements are removed unless you ask for them.","required_params":["query"],"optional_params":["page","page_size","sort","specials_only","brand","include_sponsored","include_ratings","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper would type it on woolworths.com.au ('milk', 'tim tam', 'dog food').","on_invalid":"reject","example":"chocolate","aliases":["q","keyword","search"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Read `count`, `total_results` and `page_count`.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Products per page, 1-36 (Woolworths' own maximum). Sponsored placements are on top of this and removed by default.","on_invalid":"ignore","default":24,"minimum":1,"maximum":36},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Woolworths' own relevance order (default)"},{"value":"price_asc","label":"Lowest shelf price first"},{"value":"price_desc","label":"Highest shelf price first"},{"value":"name_asc","label":"Product name A to Z"},{"value":"name_desc","label":"Product name Z to A"}],"default":"relevance"},{"name":"specials_only","type":"boolean","required":false,"description":"true = the site's own 'Specials' toggle: products on a price special AND products with a Buy More Save More multi-buy offer (`multi_buy`). Unavailable products can appear with their price hidden.","on_invalid":"ignore","default":false},{"name":"brand","type":"string","required":false,"description":"Only this brand, spelled exactly as in a row's `brand` (case-sensitive: 'Cadbury' works, 'cadbury' returns nothing).","on_invalid":"reject","example":"Cadbury"},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops paid 'Promoted' placements, which Woolworths puts at fixed positions regardless of your sort; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"include_ratings","type":"boolean","required":false,"description":"true (default) adds each row's star rating and rating count (one extra lightweight lookup for the whole page).","on_invalid":"ignore","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (stockcode, string), title, name, brand, package_size, barcode (EAN/GTIN), url, image, breadcrumb[]{level,id,name}, price (number, AUD — the shelf price; per kg when price_per='kg'; null when the product is unavailable), price_display, currency=AUD, original_price (the was-price, only when on special), original_price_display, savings, discount_percent, on_special, half_price, member_price (null — Woolworths published no member price to an anonymous visitor), member_unit_price_text, unit_price, unit_price_measure ('1L', '100G', '1KG', '1EA'), unit_price_text ('$1.65 / 1L'), sold_by ('piece' | 'weight'), price_per ('each' | 'kg'), increment_price, increment_grams, price_min, price_max, price_is_estimate (variable-weight packs), approx_weight_grams, multi_buy{quantity,total_price,price_each,unit_price_text,text} (never subtracted from price), availability ('in_stock' | 'unavailable' | 'not_ranged'), available, in_stock, next_available_date, max_order_quantity (an order limit, not stock), badges[]{type ('label'|'roundel'|'offer'),text,promotion}, promotion_types[], rewards_points_offer, new, online_only, marketplace, seller{type ('retailer'|'marketplace'),name,id,delivery_fee,free_shipping,dispatch_note,delivery_from,delivery_to}, has_variants, sponsored, fulfilment_store_id, rating (0-5), rating_count, review_count, rating_scale (5), rating_distribution{5,4,3,2,1}}, count, total_results, page, page_size, page_count, sponsored_dropped, filters_available{departments[]{id,name,count}, brands[]{name,value,count}}, suggested_query, corrections[], related_terms[], query","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"milk"}},{"name":"product/detail","description":"The full Woolworths product record by stockcode (or product URL): title, brand, barcode, every image, shelf price, was-price and savings, cup price, multi-buy offer, per-kg or variable-weight pricing, availability, star rating with distribution, ingredients, allergens (contains / may contain / free from), dietary claims, Health Star Rating, the nutrition panel, the country-of-origin label, storage and warnings, product specs, variants (Everyday Market) and the seller.","required_params":["product_id"],"optional_params":["max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Woolworths stockcode (the number every row returns as `product_id`) or a woolworths.com.au product URL.","on_invalid":"reject","example":"888140","aliases":["id","stockcode","url"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"product{product_id (stockcode, string), title, name, brand, package_size, barcode (EAN/GTIN), url, image, breadcrumb[]{level,id,name}, price (number, AUD — the shelf price; per kg when price_per='kg'; null when the product is unavailable), price_display, currency=AUD, original_price (the was-price, only when on special), original_price_display, savings, discount_percent, on_special, half_price, member_price (null — Woolworths published no member price to an anonymous visitor), member_unit_price_text, unit_price, unit_price_measure ('1L', '100G', '1KG', '1EA'), unit_price_text ('$1.65 / 1L'), sold_by ('piece' | 'weight'), price_per ('each' | 'kg'), increment_price, increment_grams, price_min, price_max, price_is_estimate (variable-weight packs), approx_weight_grams, multi_buy{quantity,total_price,price_each,unit_price_text,text} (never subtracted from price), availability ('in_stock' | 'unavailable' | 'not_ranged'), available, in_stock, next_available_date, max_order_quantity (an order limit, not stock), badges[]{type ('label'|'roundel'|'offer'),text,promotion}, promotion_types[], rewards_points_offer, new, online_only, marketplace, seller{type ('retailer'|'marketplace'),name,id,delivery_fee,free_shipping,dispatch_note,delivery_from,delivery_to}, has_variants, sponsored, fulfilment_store_id, rating (0-5), rating_count, review_count, rating_scale (5), rating_distribution{5,4,3,2,1}, images[], primary_aisle{department,aisle}, description, ingredients, allergens{contains[],may_contain[],free_from[]}, dietary[], health_star_rating, storage_instructions, directions, warnings, country_of_origin{label,country,australian_ingredients_percent}, nutrition{serving_size,servings_per_pack,rows[]{name,per_serving,per_100}}, specs{label: value}, variants[]{product_id,title,options,price,original_price,in_stock,available,primary,image}, variant_options[]{name,values[]}, variant_title, bundle_groups[]}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"888140"}},{"name":"product/reviews","description":"Customer reviews shown on a Woolworths product page, paged, newest first: star rating, text, reviewer nickname, date, and the source (including reviews syndicated from partner retailers), plus the product's rating summary.","required_params":["product_id"],"optional_params":["page","page_size","sort","max_rotations"],"params":[{"name":"product_id","type":"string","required":true,"description":"Woolworths stockcode (the number every row returns as `product_id`) or a woolworths.com.au product URL.","on_invalid":"reject","example":"888140","aliases":["id","stockcode","url"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Read `count`, `total_results` and `page_count`.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Reviews per page, 1-50.","on_invalid":"ignore","default":10,"minimum":1,"maximum":50},{"name":"sort","type":"enum","required":false,"description":"Review order.","on_invalid":"reject","allowed_values":[{"value":"latest","label":"Newest reviews first (default)"},{"value":"highest_rating","label":"Highest star rating first"},{"value":"lowest_rating","label":"Lowest star rating first"}],"default":"latest"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"reviews[]{rating,text,author,date,source,syndicated_from}, total_reviews, page, page_size, has_more, rating, rating_count, review_count, rating_scale, rating_distribution, product_id","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"888140"}},{"name":"deals","description":"woolworths.com.au's own specials pages: Half Price, Lower Shelf Price, Buy More Save More, Everyday Low Price and Seasonal Price — optionally for one department. Same rows, sorting and brand filter as search.","required_params":[],"optional_params":["type","department","page","page_size","sort","brand","include_sponsored","include_ratings","max_rotations"],"params":[{"name":"type","type":"enum","required":false,"description":"Which of woolworths.com.au's own specials pages to read.","on_invalid":"reject","allowed_values":[{"value":"half_price","label":"Half Price specials"},{"value":"lower_shelf_price","label":"Lower Shelf Price"},{"value":"buy_more_save_more","label":"Buy More Save More (multi-buy offers)"},{"value":"everyday_low_price","label":"Everyday Low Price"},{"value":"seasonal_price","label":"Seasonal Price"}],"default":"half_price"},{"name":"department","type":"string","required":false,"description":"Optional: only this department's deals — a top-level category id from `categories` (e.g. '1_717445A' Snacks & Confectionery).","on_invalid":"reject","example":"1_717445A"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Read `count`, `total_results` and `page_count`.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Products per page, 1-36 (Woolworths' own maximum). Sponsored placements are on top of this and removed by default.","on_invalid":"ignore","default":24,"minimum":1,"maximum":36},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Woolworths' own relevance order (default)"},{"value":"price_asc","label":"Lowest shelf price first"},{"value":"price_desc","label":"Highest shelf price first"},{"value":"name_asc","label":"Product name A to Z"},{"value":"name_desc","label":"Product name Z to A"}],"default":"relevance"},{"name":"brand","type":"string","required":false,"description":"Only this brand, spelled exactly as in a row's `brand` (case-sensitive: 'Cadbury' works, 'cadbury' returns nothing).","on_invalid":"reject","example":"Cadbury"},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops paid 'Promoted' placements, which Woolworths puts at fixed positions regardless of your sort; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"include_ratings","type":"boolean","required":false,"description":"true (default) adds each row's star rating and rating count (one extra lightweight lookup for the whole page).","on_invalid":"ignore","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (stockcode, string), title, name, brand, package_size, barcode (EAN/GTIN), url, image, breadcrumb[]{level,id,name}, price (number, AUD — the shelf price; per kg when price_per='kg'; null when the product is unavailable), price_display, currency=AUD, original_price (the was-price, only when on special), original_price_display, savings, discount_percent, on_special, half_price, member_price (null — Woolworths published no member price to an anonymous visitor), member_unit_price_text, unit_price, unit_price_measure ('1L', '100G', '1KG', '1EA'), unit_price_text ('$1.65 / 1L'), sold_by ('piece' | 'weight'), price_per ('each' | 'kg'), increment_price, increment_grams, price_min, price_max, price_is_estimate (variable-weight packs), approx_weight_grams, multi_buy{quantity,total_price,price_each,unit_price_text,text} (never subtracted from price), availability ('in_stock' | 'unavailable' | 'not_ranged'), available, in_stock, next_available_date, max_order_quantity (an order limit, not stock), badges[]{type ('label'|'roundel'|'offer'),text,promotion}, promotion_types[], rewards_points_offer, new, online_only, marketplace, seller{type ('retailer'|'marketplace'),name,id,delivery_fee,free_shipping,dispatch_note,delivery_from,delivery_to}, has_variants, sponsored, fulfilment_store_id, rating (0-5), rating_count, review_count, rating_scale (5), rating_distribution{5,4,3,2,1}}, count, total_results, page, page_size, page_count, sponsored_dropped, filters_available{departments[]{id,name,count}, brands[]{name,value,count}}, type, department","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"type":"half_price"}},{"name":"category","description":"Every product in one Woolworths category (any level of the aisle tree), paged, with the same rows, sorting, specials toggle and brand filter as search, plus the category's brand list with counts.","required_params":["category"],"optional_params":["page","page_size","sort","specials_only","brand","include_sponsored","include_ratings","max_rotations"],"params":[{"name":"category","type":"string","required":true,"description":"A category: its id from `categories` (e.g. '1_6E4F4E4' Dairy, Eggs & Fridge, '1_B7EF010' Cheese) or its woolworths.com.au /shop/browse/… URL.","on_invalid":"reject","example":"1_6E4F4E4","aliases":["category_id","url","path"]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Read `count`, `total_results` and `page_count`.","on_invalid":"ignore","default":1,"minimum":1,"maximum":500},{"name":"page_size","type":"integer","required":false,"description":"Products per page, 1-36 (Woolworths' own maximum). Sponsored placements are on top of this and removed by default.","on_invalid":"ignore","default":24,"minimum":1,"maximum":36},{"name":"sort","type":"enum","required":false,"description":"Result order.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Woolworths' own relevance order (default)"},{"value":"price_asc","label":"Lowest shelf price first"},{"value":"price_desc","label":"Highest shelf price first"},{"value":"name_asc","label":"Product name A to Z"},{"value":"name_desc","label":"Product name Z to A"}],"default":"relevance"},{"name":"specials_only","type":"boolean","required":false,"description":"true = the site's own 'Specials' toggle: products on a price special AND products with a Buy More Save More multi-buy offer (`multi_buy`). Unavailable products can appear with their price hidden.","on_invalid":"ignore","default":false},{"name":"brand","type":"string","required":false,"description":"Only this brand, spelled exactly as in a row's `brand` (case-sensitive: 'Cadbury' works, 'cadbury' returns nothing).","on_invalid":"reject","example":"Cadbury"},{"name":"include_sponsored","type":"boolean","required":false,"description":"false (default) drops paid 'Promoted' placements, which Woolworths puts at fixed positions regardless of your sort; true keeps them, flagged `sponsored: true`.","on_invalid":"ignore","default":false},{"name":"include_ratings","type":"boolean","required":false,"description":"true (default) adds each row's star rating and rating count (one extra lightweight lookup for the whole page).","on_invalid":"ignore","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"results[]{product_id (stockcode, string), title, name, brand, package_size, barcode (EAN/GTIN), url, image, breadcrumb[]{level,id,name}, price (number, AUD — the shelf price; per kg when price_per='kg'; null when the product is unavailable), price_display, currency=AUD, original_price (the was-price, only when on special), original_price_display, savings, discount_percent, on_special, half_price, member_price (null — Woolworths published no member price to an anonymous visitor), member_unit_price_text, unit_price, unit_price_measure ('1L', '100G', '1KG', '1EA'), unit_price_text ('$1.65 / 1L'), sold_by ('piece' | 'weight'), price_per ('each' | 'kg'), increment_price, increment_grams, price_min, price_max, price_is_estimate (variable-weight packs), approx_weight_grams, multi_buy{quantity,total_price,price_each,unit_price_text,text} (never subtracted from price), availability ('in_stock' | 'unavailable' | 'not_ranged'), available, in_stock, next_available_date, max_order_quantity (an order limit, not stock), badges[]{type ('label'|'roundel'|'offer'),text,promotion}, promotion_types[], rewards_points_offer, new, online_only, marketplace, seller{type ('retailer'|'marketplace'),name,id,delivery_fee,free_shipping,dispatch_note,delivery_from,delivery_to}, has_variants, sponsored, fulfilment_store_id, rating (0-5), rating_count, review_count, rating_scale (5), rating_distribution{5,4,3,2,1}}, count, total_results, page, page_size, page_count, sponsored_dropped, filters_available{departments[]{id,name,count}, brands[]{name,value,count}}, category{id,name,url,parents[]}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"categories","description":"Woolworths' aisle tree: departments, categories and sub-categories with their ids and URLs, including the Specials groups and the Everyday Market departments.","required_params":[],"optional_params":["depth","max_rotations"],"params":[{"name":"depth","type":"integer","required":false,"description":"How many levels of the category tree to return (1-5, default 2).","on_invalid":"ignore","default":2,"minimum":1,"maximum":5},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"categories[]{id, name, slug, url, is_special, child_count, children[]}, count, depth","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"Search-box autocomplete as a Woolworths shopper types.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for, as a shopper would type it on woolworths.com.au ('milk', 'tim tam', 'dog food').","on_invalid":"reject","example":"chocolate","aliases":["q","keyword","search"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-6, default 3).","on_invalid":"ignore","default":3,"minimum":1,"maximum":6}],"returns":"suggestions[], auto_corrected_query, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"milk"}}]},{"name":"worldbank","category":{"id":"finance","title":"Finance & Data"},"title":"World Bank Data API — economic & development indicators (GDP, inflation, population, unemployment) by country and year, multi-country compare, country metadata, indicator search, browse-by-topic and one-call country profiles","version":"1.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/worldbank/v1","spec_available":true,"actions":[{"name":"indicator","description":"time-series for one+ indicators (code or shortcut) across one+ countries/all; date/mrv/mrnev, rank","required_params":["country","indicator"],"optional_params":["date","mrv","mrnev","drop_nulls","rank","per_page","max_pages","frequency","gapfill"],"params":[{"name":"country","type":"string","required":true,"description":"One or more economy codes, separated by ; , or space, or 'all' for every economy. Accepts: ISO 2-letter ('US', 'TR') or 3-letter ('USA', 'CHN') country codes; pass several for a multi-country compare ('US;CN;DE'). World Bank AGGREGATE codes also work as a 'country' here — e.g. WLD (World), EUU (European Union), EMU (Euro area), and income groups HIC/UMC/LMC/LIC, regions ECS/SAS/SSF — to get region/income-group totals. Discover codes via action=country / reference (kind=regions|income_levels).","on_invalid":"reject","example":"US","aliases":["countries","countrycode"]},{"name":"indicator","type":"string","required":true,"description":"One or more World Bank indicator codes OR friendly shortcut aliases (e.g. 'gdp', 'inflation'), separated by ; , or space. Real codes are case-sensitive; shortcut aliases are not. See action=shortcuts.","on_invalid":"reject","example":"NY.GDP.MKTP.CD","aliases":["indicator_code","indicators","code"]},{"name":"date","type":"string","required":false,"description":"Year or year range (e.g. '2020' or '2015:2022'). Omit for all years; combine with mrv/mrnev for recent-values windows instead.","on_invalid":"ignore","example":"2015:2022","aliases":["date_range"]},{"name":"mrv","type":"integer","required":false,"description":"Most-Recent-Values: return only the latest N data points per series.","on_invalid":"ignore","example":5,"minimum":1,"maximum":500},{"name":"mrnev","type":"integer","required":false,"description":"Most-Recent-Non-Empty-Values: latest N NON-null data points per series.","on_invalid":"ignore","example":5,"minimum":1,"maximum":500},{"name":"drop_nulls","type":"boolean","required":false,"description":"Drop observations whose value is null from each series.","on_invalid":"ignore","default":false,"example":true},{"name":"rank","type":"boolean","required":false,"description":"Rank countries by latest value (only when a SINGLE indicator is queried); adds a 'rank' field to each series.","on_invalid":"ignore","default":false,"example":true},{"name":"per_page","type":"integer","required":false,"description":"World Bank API page size for paging through observations.","on_invalid":"ignore","default":1000,"example":1000,"minimum":1,"maximum":20000},{"name":"max_pages","type":"integer","required":false,"description":"Maximum number of observation pages to fetch (caps very large pulls).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50},{"name":"frequency","type":"enum","required":false,"description":"Data frequency for indicators that publish sub-annual series (most WDI indicators are yearly).","on_invalid":"reject","allowed_values":[{"value":"Y","label":"Yearly (default for most indicators)"},{"value":"Q","label":"Quarterly"},{"value":"M","label":"Monthly"}],"example":"Y"},{"name":"gapfill","type":"boolean","required":false,"description":"Carry the last observed value forward to fill gaps (used with mrv).","on_invalid":"ignore","default":false,"example":true}],"returns":"data[] one series per (indicator,country) with series[].{date,value}, latest_value, observations (+ rank when ranked); indicators[], countries[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"country":"US","indicator":"NY.GDP.MKTP.CD","date":"2015:2022"}},{"name":"country","description":"country metadata for codes/all or filtered by region/income_level/lending_type","required_params":["country"],"optional_params":["region","income_level","lending_type","exclude_aggregates","all"],"params":[{"name":"country","type":"string","required":true,"description":"One or more economy codes, separated by ; , or space, or 'all' for every economy. Accepts: ISO 2-letter ('US', 'TR') or 3-letter ('USA', 'CHN') country codes; pass several for a multi-country compare ('US;CN;DE'). World Bank AGGREGATE codes also work as a 'country' here — e.g. WLD (World), EUU (European Union), EMU (Euro area), and income groups HIC/UMC/LMC/LIC, regions ECS/SAS/SSF — to get region/income-group totals. Discover codes via action=country / reference (kind=regions|income_levels).","on_invalid":"reject","example":"US","aliases":["countries","countrycode"]},{"name":"region","type":"string","required":false,"description":"Filter countries by region (matches a region id like 'ECS' or its name); forces an all-countries scan. See reference kind=regions.","on_invalid":"reject","example":"Europe & Central Asia"},{"name":"income_level","type":"string","required":false,"description":"Filter countries by income group (id like 'HIC'/'LIC' or its name); forces an all-countries scan. See reference kind=income_levels.","on_invalid":"reject","example":"HIC","aliases":["income"]},{"name":"lending_type","type":"string","required":false,"description":"Filter countries by lending type (id like 'IBRD'/'IDA' or its name); forces an all-countries scan. See reference kind=lending_types.","on_invalid":"reject","example":"IBRD"},{"name":"exclude_aggregates","type":"boolean","required":false,"description":"Drop World Bank aggregate rows (regions/income groups/WLD) and keep only real economies.","on_invalid":"ignore","default":false,"example":true},{"name":"all","type":"boolean","required":false,"description":"Return metadata for every economy (equivalent to country='all').","on_invalid":"ignore","default":false,"example":true}],"returns":"countries[] with region/income_level/lending_type/capital/lat-long, count (+ filters echo when filtered)","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"country":"US"}},{"name":"search_indicators","description":"local keyword search over the indicator catalog (WDI default; full=all sources)","required_params":["query"],"optional_params":["source","full","topic","limit"],"params":[{"name":"query","type":"string","required":true,"description":"Keyword(s) to match against indicator id + name (all terms must match, case-insensitive).","on_invalid":"reject","example":"gdp growth","aliases":["q","search"]},{"name":"source","type":"string","required":false,"description":"World Bank source/database id to search (default 2 = World Development Indicators). Ignored when full=true.","on_invalid":"ignore","default":"2","example":"2"},{"name":"full","type":"boolean","required":false,"description":"Search the FULL cross-source indicator catalog instead of just WDI.","on_invalid":"ignore","default":false,"example":true},{"name":"topic","type":"string","required":false,"description":"Optional topic filter (matches a topic id or name) layered on top of the keyword search.","on_invalid":"reject","example":"health"},{"name":"limit","type":"integer","required":false,"description":"Maximum number of matching indicators to return.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":500}],"returns":"results[] {id,name,unit,source,topics}, count (total matches), returned, scope","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"gdp growth"}},{"name":"indicator_metadata","description":"definition/source/organization/topics for one+ indicator codes/aliases","required_params":["indicator"],"optional_params":[],"params":[{"name":"indicator","type":"string","required":true,"description":"One or more World Bank indicator codes OR friendly shortcut aliases (e.g. 'gdp', 'inflation'), separated by ; , or space. Real codes are case-sensitive; shortcut aliases are not. See action=shortcuts.","on_invalid":"reject","example":"NY.GDP.MKTP.CD","aliases":["indicator_code","indicators","code"]}],"returns":"indicators[] {id,name,source,source_note,source_organization,topics}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"indicator":"gdp"}},{"name":"country_profile","description":"one-call headline snapshot (most-recent ~10 key metrics) for one+ countries","required_params":["country"],"optional_params":["metrics"],"params":[{"name":"country","type":"string","required":true,"description":"One or more economy codes, separated by ; , or space, or 'all' for every economy. Accepts: ISO 2-letter ('US', 'TR') or 3-letter ('USA', 'CHN') country codes; pass several for a multi-country compare ('US;CN;DE'). World Bank AGGREGATE codes also work as a 'country' here — e.g. WLD (World), EUU (European Union), EMU (Euro area), and income groups HIC/UMC/LMC/LIC, regions ECS/SAS/SSF — to get region/income-group totals. Discover codes via action=country / reference (kind=regions|income_levels).","on_invalid":"reject","example":"US","aliases":["countries","countrycode"]},{"name":"metrics","type":"string","required":false,"description":"Optional comma/semicolon list of shortcut keys or indicator codes to include in the profile. Omit for the default ~10-metric headline set.","on_invalid":"reject","example":"gdp,inflation,population"}],"returns":"profiles[] {country,region,income_level,indicators{metric:{value,date,unit}}}, count, metrics[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"country":"FR"}},{"name":"shortcuts","description":"list the metric->indicator-code map, or metric=<key>&country=<code> to fetch directly","required_params":[],"optional_params":["metric","country","date","mrv","mrnev"],"params":[{"name":"metric","type":"enum","required":false,"description":"A friendly metric key to fetch directly. Omit to LIST the full metric→indicator-code map instead.","on_invalid":"reject","allowed_values":[{"value":"gdp","label":"GDP (current US$) (NY.GDP.MKTP.CD)"},{"value":"gdp_per_capita","label":"GDP per capita (current US$) (NY.GDP.PCAP.CD)"},{"value":"gdp_growth","label":"GDP growth (annual %) (NY.GDP.MKTP.KD.ZG)"},{"value":"gni_per_capita","label":"GNI per capita, Atlas method (current US$) (NY.GNP.PCAP.CD)"},{"value":"inflation","label":"Inflation, consumer prices (annual %) (FP.CPI.TOTL.ZG)"},{"value":"population","label":"Population, total (SP.POP.TOTL)"},{"value":"population_growth","label":"Population growth (annual %) (SP.POP.GROW)"},{"value":"unemployment","label":"Unemployment, total (% of total labor force, ILO) (SL.UEM.TOTL.ZS)"},{"value":"labor_force","label":"Labor force, total (SL.TLF.TOTL.IN)"},{"value":"life_expectancy","label":"Life expectancy at birth, total (years) (SP.DYN.LE00.IN)"},{"value":"poverty","label":"Poverty headcount ratio at $3.00/day (2021 PPP) (%) (SI.POV.DDAY)"},{"value":"exports","label":"Exports of goods and services (current US$) (NE.EXP.GNFS.CD)"},{"value":"imports","label":"Imports of goods and services (current US$) (NE.IMP.GNFS.CD)"},{"value":"fdi","label":"Foreign direct investment, net inflows (current US$) (BX.KLT.DINV.CD.WD)"},{"value":"exchange_rate","label":"Official exchange rate (LCU per US$, period average) (PA.NUS.FCRF)"},{"value":"real_interest_rate","label":"Real interest rate (%) (FR.INR.RINR)"},{"value":"gov_debt","label":"Central government debt, total (% of GDP) (GC.DOD.TOTL.GD.ZS)"},{"value":"co2_per_capita","label":"CO2 emissions excluding LULUCF per capita (t CO2e) (EN.GHG.CO2.PC.CE.AR5)"},{"value":"electricity_access","label":"Access to electricity (% of population) (EG.ELC.ACCS.ZS)"},{"value":"internet_users","label":"Individuals using the Internet (% of population) (IT.NET.USER.ZS)"},{"value":"mobile_subs","label":"Mobile cellular subscriptions (per 100 people) (IT.CEL.SETS.P2)"},{"value":"health_exp_gdp","label":"Current health expenditure (% of GDP) (SH.XPD.CHEX.GD.ZS)"},{"value":"military_exp_gdp","label":"Military expenditure (% of GDP) (MS.MIL.XPND.GD.ZS)"},{"value":"tax_revenue_gdp","label":"Tax revenue (% of GDP) (GC.TAX.TOTL.GD.ZS)"},{"value":"current_account","label":"Current account balance (current US$) (BN.CAB.XOKA.CD)"},{"value":"gross_savings_gdp","label":"Gross savings (% of GDP) (NY.GNS.ICTR.ZS)"},{"value":"agriculture_gdp","label":"Agriculture, forestry & fishing, value added (% GDP) (NV.AGR.TOTL.ZS)"},{"value":"industry_gdp","label":"Industry (incl. construction), value added (% GDP) (NV.IND.TOTL.ZS)"},{"value":"services_gdp","label":"Services, value added (% of GDP) (NV.SRV.TOTL.ZS)"},{"value":"urban_population_pct","label":"Urban population (% of total population) (SP.URB.TOTL.IN.ZS)"},{"value":"trade_gdp","label":"Trade (% of GDP) (NE.TRD.GNFS.ZS)"}],"example":"gdp","aliases":["shortcut"]},{"name":"country","type":"string","required":false,"description":"One or more economy codes, separated by ; , or space, or 'all' for every economy. Accepts: ISO 2-letter ('US', 'TR') or 3-letter ('USA', 'CHN') country codes; pass several for a multi-country compare ('US;CN;DE'). World Bank AGGREGATE codes also work as a 'country' here — e.g. WLD (World), EUU (European Union), EMU (Euro area), and income groups HIC/UMC/LMC/LIC, regions ECS/SAS/SSF — to get region/income-group totals. Discover codes via action=country / reference (kind=regions|income_levels).","on_invalid":"reject","example":"US","aliases":["countries","countrycode"]},{"name":"date","type":"string","required":false,"description":"Year or year range (e.g. '2020' or '2015:2022'). Omit for all years; combine with mrv/mrnev for recent-values windows instead.","on_invalid":"ignore","example":"2015:2022","aliases":["date_range"]},{"name":"mrv","type":"integer","required":false,"description":"Most-Recent-Values: return only the latest N data points per series.","on_invalid":"ignore","example":5,"minimum":1,"maximum":500},{"name":"mrnev","type":"integer","required":false,"description":"Most-Recent-Non-Empty-Values: latest N NON-null data points per series.","on_invalid":"ignore","example":5,"minimum":1,"maximum":500}],"returns":"shortcuts{key:{code,name,unit}} + count when listing; OR the indicator time-series (data[]) when metric=<key>&country=<code>","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"reference","description":"reference lists: regions | income_levels | lending_types | sources | topics","required_params":["kind"],"optional_params":[],"params":[{"name":"kind","type":"enum","required":true,"description":"Which reference list to return.","on_invalid":"reject","allowed_values":[{"value":"regions","label":"World Bank regions"},{"value":"income_levels","label":"Income-level groups"},{"value":"lending_types","label":"Lending-type groups"},{"value":"sources","label":"Data sources/collections"},{"value":"topics","label":"Indicator topics"},{"value":"region","label":"alias of regions"},{"value":"income_level","label":"alias of income_levels"},{"value":"income","label":"alias of income_levels"},{"value":"incomelevel","label":"alias of income_levels"},{"value":"lending_type","label":"alias of lending_types"},{"value":"lendingtype","label":"alias of lending_types"},{"value":"lending","label":"alias of lending_types"},{"value":"source","label":"alias of sources"},{"value":"topic","label":"alias of topics"}],"example":"income_levels","aliases":["type"]}],"returns":"kind, items[] (shape depends on kind: regions/income_levels/lending_types/sources/topics), count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"kind":"income_levels"}},{"name":"topic_indicators","description":"browse every indicator in a World Bank topic (Health, Economy, Climate, etc.) by topic id or name; optional keyword filter","required_params":["topic"],"optional_params":["query","limit","per_page","max_pages"],"params":[{"name":"topic","type":"string","required":true,"description":"A World Bank topic, as its numeric id ('8') OR its name ('health', 'economy', 'climate'). The 21 topics include Agriculture & Rural Development, Economy & Growth, Education, Energy & Mining, Environment, Financial Sector, Health, Infrastructure, Poverty, Public Sector, Science & Technology, Social Protection & Labor, Trade, Urban Development, Gender, Climate Change. List ids/names via action=reference (kind=topics).","on_invalid":"reject","example":"health","aliases":["topic_id","kind"]},{"name":"query","type":"string","required":false,"description":"Optional keyword(s) to narrow the topic's indicator list locally (all terms must match the indicator id or name, case-insensitive). Omit to list every indicator in the topic.","on_invalid":"reject","example":"immunization","aliases":["q"]},{"name":"limit","type":"integer","required":false,"description":"Maximum number of matching indicators to return.","on_invalid":"ignore","default":50,"example":50,"minimum":1,"maximum":500},{"name":"per_page","type":"integer","required":false,"description":"World Bank API page size for paging through observations.","on_invalid":"ignore","default":1000,"example":1000,"minimum":1,"maximum":20000},{"name":"max_pages","type":"integer","required":false,"description":"Maximum number of observation pages to fetch (caps very large pulls).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":50}],"returns":"topic_id, topic, count (total in topic), returned, results[] {id,name,unit,source,topics}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"topic":"health","limit":25}}]},{"name":"yad2","category":{"id":"classifieds","title":"Classifieds & Second-hand"},"title":"Yad2 API scraper — Israel's #1 classifieds: used and new cars, motorcycles, scooters, trucks and boats; apartments and houses for sale and rent and commercial property; second-hand products from business sellers; and the full listing record. No account, no browser; private sellers' names withheld.","version":"0.1.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/yad2/v1","spec_available":true,"actions":[{"name":"cars/search","description":"Search Yad2 vehicles - cars, motorcycles, scooters, trucks and watercraft: price (placeholder and missing prices labelled), make, model and sub-model with ids, year, hand (owner count), fuel, engine size, area, dealer or private seller with the dealer's name, the dealer's warranty and service commitments, monthly-payment terms, paid promotion tier, tags and photos. Filter by make, model, year, price, mileage, hand, engine size, fuel, gearbox, body family, seats, area, dealers only, with price or photos; sort by price.","required_params":[],"optional_params":["vehicle_type","manufacturer_id","model_id","year_min","year_max","price_min","price_max","mileage_min","mileage_max","hand_min","hand_max","engine_cc_min","engine_cc_max","fuel","gearbox","family_type","seats","area_id","top_area_id","seller_type","only_with_price","only_with_images","sort","page","max_rotations"],"params":[{"name":"vehicle_type","type":"enum","required":false,"description":"car (default), motorcycle, scooter, truck or watercraft. Not every filter exists for every type - yad2 has no make filter for trucks and no mileage filter for watercraft; such a request is rejected, never ignored.","on_invalid":"reject","allowed_values":[{"value":"car","label":"car"},{"value":"motorcycle","label":"motorcycle"},{"value":"scooter","label":"scooter"},{"value":"truck","label":"truck"},{"value":"watercraft","label":"watercraft"}],"default":"car"},{"name":"manufacturer_id","type":"integer","required":false,"description":"yad2 make id (e.g. 19 = Toyota, 18 = Volvo). Every row returns make.id.","on_invalid":"reject","example":19,"minimum":1,"maximum":99999},{"name":"model_id","type":"integer","required":false,"description":"yad2 model id (e.g. 10245 = Toyota Verso). Needs manufacturer_id.","on_invalid":"reject","minimum":1,"maximum":9999999},{"name":"year_min","type":"integer","required":false,"description":"Earliest production year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"year_max","type":"integer","required":false,"description":"Latest production year.","on_invalid":"reject","minimum":1900,"maximum":2100},{"name":"price_min","type":"number","required":false,"description":"Lowest price in ILS (monthly rent for rentals). Listings without a price are left out.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in ILS (monthly rent for rentals). Listings without a price are left out.","on_invalid":"reject","minimum":0},{"name":"mileage_min","type":"number","required":false,"description":"Lowest mileage, km.","on_invalid":"reject","minimum":0},{"name":"mileage_max","type":"number","required":false,"description":"Highest mileage, km.","on_invalid":"reject","minimum":0},{"name":"hand_min","type":"integer","required":false,"description":"Fewest owners ('hand'): 0 = new from the importer, 1 = first hand.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"hand_max","type":"integer","required":false,"description":"Most owners ('hand').","on_invalid":"reject","minimum":0,"maximum":20},{"name":"engine_cc_min","type":"number","required":false,"description":"Smallest engine, cc.","on_invalid":"reject","minimum":0},{"name":"engine_cc_max","type":"number","required":false,"description":"Largest engine, cc.","on_invalid":"reject","minimum":0},{"name":"fuel","type":"array","required":false,"description":"One or more of petrol, diesel, hybrid_petrol, plugin_hybrid_petrol, electric.","on_invalid":"reject","allowed_values":[{"value":"petrol","label":"petrol"},{"value":"diesel","label":"diesel"},{"value":"hybrid_petrol","label":"hybrid_petrol"},{"value":"plugin_hybrid_petrol","label":"plugin_hybrid_petrol"},{"value":"electric","label":"electric"}]},{"name":"gearbox","type":"array","required":false,"description":"manual and/or automatic.","on_invalid":"reject","allowed_values":[{"value":"manual","label":"manual"},{"value":"automatic","label":"automatic"}]},{"name":"family_type","type":"array","required":false,"description":"One or more of mini, family, executive, sport, jeep, pickup, crossover.","on_invalid":"reject","allowed_values":[{"value":"mini","label":"mini"},{"value":"family","label":"family"},{"value":"executive","label":"executive"},{"value":"sport","label":"sport"},{"value":"jeep","label":"jeep"},{"value":"pickup","label":"pickup"},{"value":"crossover","label":"crossover"}]},{"name":"seats","type":"integer","required":false,"description":"Number of seats.","on_invalid":"reject","minimum":1,"maximum":60},{"name":"area_id","type":"integer","required":false,"description":"yad2 area id (e.g. 1 = Tel Aviv area, 9 = Rishon LeZion area). Every row returns its area id; the locations action returns them by name.","on_invalid":"reject","minimum":1,"maximum":999},{"name":"top_area_id","type":"integer","required":false,"description":"yad2 top-area id (e.g. 2 = Center, 25 = North, 100 = Jerusalem district).","on_invalid":"reject","minimum":1,"maximum":999},{"name":"seller_type","type":"enum","required":false,"description":"dealer = dealers and importers only. yad2 has no private-only filter; every row says seller_type.","on_invalid":"reject","allowed_values":[{"value":"dealer","label":"Dealers only"}]},{"name":"only_with_price","type":"boolean","required":false,"description":"Only listings that publish a price.","on_invalid":"reject"},{"name":"only_with_images","type":"boolean","required":false,"description":"Only listings with photos.","on_invalid":"reject"},{"name":"sort","type":"enum","required":false,"description":"price_asc or price_desc. Omitted: yad2's own order (paid tiers first).","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. yad2's own page size: 40 vehicle rows, 40 real-estate rows (20 private + 20 agency), 36 product rows.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":2000},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, url, vertical, title, price (ILS), currency, price_not_published, price_placeholder, price_published_raw, vehicle_type, make{id,name,name_en}, model{id,name,name_en}, sub_model{id,name}, year, hand, hand_label, fuel{id,name,name_en}, engine_cc, motorcycle_type, licence_class, special_type, special_model, watercraft_type, area{id,name}, seller_type (dealer|private), dealer{id,name,logo}, promotion_tier, tags[], dealer_commitments[], payment_installments{advance_payment, monthly_payment, number_of_payments, balloon}, trade_in_offered, images[], image_count}, count, total, total_pages, page, has_more, vehicle_type, sort, placeholder_price_dropped","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"manufacturer_id":19}},{"name":"real_estate/search","description":"Search Yad2 real estate - apartments, houses and other property for sale or rent, and commercial property: price or monthly rent, earlier price after a price drop, property type, rooms, size, floor, full address with street, neighbourhood and map coordinates, private or agency with the agency's name, exclusivity, tags and photos. Location by region, city, area, neighbourhood or street id, or a place name resolved through Yad2's own address search. Filter by property type, rooms, price, size, floor, keyword, parking, elevator, balcony, safe room, air conditioning, accessibility, furnished, renovated, price dropped, new from contractor, agencies only.","required_params":["deal_type"],"optional_params":["region","location","city_id","area_id","neighborhood_id","street_id","property_type","rooms_min","rooms_max","price_min","price_max","size_min","size_max","floor_min","floor_max","query","seller_type","features","only_with_price","only_with_images","include_sponsored","page","include_pii","max_rotations"],"params":[{"name":"deal_type","type":"enum","required":true,"description":"sale, rent, commercial (both), commercial_sale or commercial_rent.","on_invalid":"reject","allowed_values":[{"value":"sale","label":"sale"},{"value":"rent","label":"rent"},{"value":"commercial","label":"commercial"},{"value":"commercial_sale","label":"commercial_sale"},{"value":"commercial_rent","label":"commercial_rent"}],"example":"rent"},{"name":"region","type":"integer","required":false,"description":"yad2 region: 1 Center & Sharon, 2 South, 3 Tel Aviv area, 4 Judea, Samaria & Jordan Valley, 5 Northern coast (Haifa), 6 Jerusalem area, 7 North & valleys, 8 Jerusalem. Required unless location is given.","on_invalid":"reject","example":3,"minimum":1,"maximum":8},{"name":"location","type":"string","required":false,"description":"A place name in Hebrew (city, neighbourhood, area or street), resolved with Yad2's own address search; the match used comes back as location_resolved. Replaces region/city/area/neighbourhood/street ids.","on_invalid":"reject","example":"פלורנטין"},{"name":"city_id","type":"string","required":false,"description":"yad2 city id (e.g. 5000 = Tel Aviv-Yafo). Must belong to region.","on_invalid":"reject"},{"name":"area_id","type":"integer","required":false,"description":"yad2 area id (e.g. 1 = Tel Aviv area, 9 = Rishon LeZion area). Every row returns its area id; the locations action returns them by name.","on_invalid":"reject","minimum":1,"maximum":999},{"name":"neighborhood_id","type":"string","required":false,"description":"yad2 neighbourhood id (locations action).","on_invalid":"reject"},{"name":"street_id","type":"string","required":false,"description":"yad2 street id (locations action).","on_invalid":"reject"},{"name":"property_type","type":"array","required":false,"description":"Residential: apartment, garden_apartment, studio_loft, house, rooftop_penthouse, duplex, triplex, semi_detached, housing_unit, vacation, parking, farm, plot, general, residential_building, storage, basement, purchase_group. Commercial: offices, shops, clinics, warehouses, plot, industrial, halls, general, office_building, parking_lot, basement, studio, hotel, coworking.","on_invalid":"reject","allowed_values":[{"value":"apartment","label":"apartment"},{"value":"garden_apartment","label":"garden_apartment"},{"value":"studio_loft","label":"studio_loft"},{"value":"house","label":"house"},{"value":"rooftop_penthouse","label":"rooftop_penthouse"},{"value":"duplex","label":"duplex"},{"value":"housing_unit","label":"housing_unit"},{"value":"vacation","label":"vacation"},{"value":"parking","label":"parking"},{"value":"farm","label":"farm"},{"value":"plot","label":"plot"},{"value":"semi_detached","label":"semi_detached"},{"value":"general","label":"general"},{"value":"residential_building","label":"residential_building"},{"value":"storage","label":"storage"},{"value":"basement","label":"basement"},{"value":"purchase_group","label":"purchase_group"},{"value":"triplex","label":"triplex"},{"value":"offices","label":"offices"},{"value":"shops","label":"shops"},{"value":"clinics","label":"clinics"},{"value":"warehouses","label":"warehouses"},{"value":"industrial","label":"industrial"},{"value":"halls","label":"halls"},{"value":"office_building","label":"office_building"},{"value":"parking_lot","label":"parking_lot"},{"value":"studio","label":"studio"},{"value":"hotel","label":"hotel"},{"value":"coworking","label":"coworking"}]},{"name":"rooms_min","type":"number","required":false,"description":"Fewest rooms (3.5 allowed).","on_invalid":"reject","minimum":0,"maximum":20},{"name":"rooms_max","type":"number","required":false,"description":"Most rooms.","on_invalid":"reject","minimum":0,"maximum":20},{"name":"price_min","type":"number","required":false,"description":"Lowest price in ILS (monthly rent for rentals). Listings without a price are left out.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in ILS (monthly rent for rentals). Listings without a price are left out.","on_invalid":"reject","minimum":0},{"name":"size_min","type":"number","required":false,"description":"Smallest size, m².","on_invalid":"reject","minimum":0},{"name":"size_max","type":"number","required":false,"description":"Largest size, m².","on_invalid":"reject","minimum":0},{"name":"floor_min","type":"integer","required":false,"description":"Lowest floor.","on_invalid":"reject","minimum":-5,"maximum":200},{"name":"floor_max","type":"integer","required":false,"description":"Highest floor.","on_invalid":"reject","minimum":-5,"maximum":200},{"name":"query","type":"string","required":false,"description":"Free text matched by Yad2 against the ad, in Hebrew.","on_invalid":"reject","example":"מרפסת שמש"},{"name":"seller_type","type":"enum","required":false,"description":"agency = listings by real-estate agencies only. yad2 has no private-only filter; every row says seller_type.","on_invalid":"reject","allowed_values":[{"value":"agency","label":"Agencies only"}]},{"name":"features","type":"array","required":false,"description":"One or more of parking, elevator, balcony, shelter (safe room), air_conditioning, accessible, furnished, renovated, price_dropped, new_from_contractor.","on_invalid":"reject","allowed_values":[{"value":"parking","label":"parking"},{"value":"elevator","label":"elevator"},{"value":"balcony","label":"balcony"},{"value":"shelter","label":"shelter"},{"value":"air_conditioning","label":"air_conditioning"},{"value":"accessible","label":"accessible"},{"value":"furnished","label":"furnished"},{"value":"renovated","label":"renovated"},{"value":"price_dropped","label":"price_dropped"},{"value":"new_from_contractor","label":"new_from_contractor"}]},{"name":"only_with_price","type":"boolean","required":false,"description":"Only listings that publish a price.","on_invalid":"reject"},{"name":"only_with_images","type":"boolean","required":false,"description":"Only listings with photos.","on_invalid":"reject"},{"name":"include_sponsored","type":"boolean","required":false,"description":"Also return Yad2's paid 'platinum' placements for this page, apart, under sponsored[].","on_invalid":"reject","default":false},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. yad2's own page size: 40 vehicle rows, 40 real-estate rows (20 private + 20 agency), 36 product rows.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":2000},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' and brokers' personal names. Off by default; phone numbers are never returned.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, url, vertical, deal_type, title, price (ILS), currency, price_period (month for rentals), price_not_published, price_placeholder, price_published_raw, price_before_drop, price_dropped, property_type, rooms, size_m2, built_size_m2, property_condition_id, location{region, top_area, area, city, neighborhood, street, house_number, floor, latitude, longitude}, seller_type (private|agency), agency{name,logo}, is_exclusive, promotion_tier, is_sponsored, tags[], images[], video, image_count}, count, total, total_pages, page, has_more, deal_type, private_count, agency_count, sponsored_dropped, sponsored[] (include_sponsored), projects_dropped, location_resolved, placeholder_price_dropped","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"deal_type":"rent","region":3}},{"name":"products/search","description":"Browse Yad2's second-hand products section (business sellers: furniture, electrical appliances, phones, computers, businesses for sale and more) by category and sub-category: price (missing and placeholder prices labelled), condition, city and area, category breadcrumb, dates and photos. Filter by category, sub-category, price and area; sort by price. Yad2 offers no keyword search here.","required_params":[],"optional_params":["category_id","subcategory_id","price_min","price_max","area_id","sort","page","include_pii","max_rotations"],"params":[{"name":"category_id","type":"integer","required":false,"description":"yad2 category: 1 electrical appliances, 2 furniture, 4 musical instruments, 5 cellular, 6 computers, 9 work tools, 11 baby and child, 12 sport, 14 bicycles, 18 fashion, 20 photography, 25 office, 28 business equipment, 32 sanitary, 37 businesses for sale, 38 medical, 39 scooters, 40 stock, 45 home appliances, 49 gardening, 56 industrial, 61 portable housing, 69 events, 71 toys.","on_invalid":"reject","example":2,"minimum":1,"maximum":999},{"name":"subcategory_id","type":"integer","required":false,"description":"yad2 sub-category id (e.g. 14 = tables in furniture). Every row returns subcategory.id. Needs category_id.","on_invalid":"reject","minimum":1,"maximum":99999},{"name":"price_min","type":"number","required":false,"description":"Lowest price in ILS (monthly rent for rentals). Listings without a price are left out.","on_invalid":"reject","minimum":0},{"name":"price_max","type":"number","required":false,"description":"Highest price in ILS (monthly rent for rentals). Listings without a price are left out.","on_invalid":"reject","minimum":0},{"name":"area_id","type":"integer","required":false,"description":"yad2 area id (e.g. 1 = Tel Aviv area, 9 = Rishon LeZion area). Every row returns its area id; the locations action returns them by name.","on_invalid":"reject","minimum":1,"maximum":999},{"name":"sort","type":"enum","required":false,"description":"price_asc or price_desc. Omitted: newest first (yad2's own order).","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"price_asc"},{"value":"price_desc","label":"price_desc"}]},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. yad2's own page size: 40 vehicle rows, 40 real-estate rows (20 private + 20 agency), 36 product rows.","on_invalid":"reject","default":1,"example":1,"minimum":1,"maximum":2000},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' and brokers' personal names. Off by default; phone numbers are never returned.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listings[]{ad_id, vertical, title, price, currency, price_not_published, price_placeholder, price_published_raw, category{id,name}, subcategory{id,name}, breadcrumb[], condition, city, area{id,name}, latitude, longitude (business sellers), created_at, bumped_at, seller_type, highlight, images[], image_count}, count, total, total_pages, page, has_more, breadcrumbs[], placeholder_price_dropped","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"category_id":2}},{"name":"locations","description":"Yad2's own address search: cities, neighbourhoods, areas and streets matching a Hebrew name, each with the region, area, city, neighbourhood and street ids that real_estate/search and cars/search accept.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Place name in Hebrew (at least 2 letters).","on_invalid":"reject","example":"חיפה"},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"locations[]{label, kind (city|neighborhood|area|street), kind_label, region_id, top_area_id, area_id, city_id, neighborhood_id, street_id}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"listing","description":"The full Yad2 listing by id or URL, from any section. Vehicles: mileage, gearbox, colour, horse power, seats, doors, body type, ownership and original ownership, test validity and last test mileage, fields the Ministry of Transport verified, equipment list, description, dealer, dates created/updated/bumped/expires. Real estate: price or rent and payments per year, price before a drop, rooms, size, built and garden size, floor of building floors, balconies, parking, entry date, condition, amenities, full address and coordinates, distance to a shelter, agency with licence numbers, description, dates. Products: title, price, category, condition, city, description, photos. Private sellers' names withheld.","required_params":["ad_id"],"optional_params":["vertical","include_pii","max_rotations"],"params":[{"name":"ad_id","type":"string","required":true,"description":"The yad2 listing token (e.g. 'inhp0uq0', the last part of a listing URL) or the full listing URL. Every search row returns it.","on_invalid":"reject","example":"inhp0uq0"},{"name":"vertical","type":"enum","required":false,"description":"Section of the listing, if known (saves lookups). A URL sets it.","on_invalid":"reject","allowed_values":[{"value":"vehicles","label":"Vehicles"},{"value":"real_estate","label":"Real estate"},{"value":"products","label":"Second-hand products"}]},{"name":"include_pii","type":"boolean","required":false,"description":"Return private sellers' and brokers' personal names. Off by default; phone numbers are never returned.","on_invalid":"reject","default":false},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"listing{ad_id, ad_number, url, vertical, title, price, currency, price_not_published, price_placeholder, price_published_raw, description, images[], image_count, created_at, updated_at, bumped_at, expires_at, seller_type, … vehicle fields (mileage_km, gearbox, color, horse_power, ownership, test_valid_until, verified_by_ministry_of_transport, specification{}, dealer{}) | real-estate fields (deal_type, price_period, price_before_drop, payments_per_year, property_type, rooms, size_m2, amenities[], location{}, seller{name, name_withheld}, agency{name, logo, licence_number, about, brokers[]}) | product fields (category, product_condition_id, city, seller{business_name, contact_name_withheld})}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"yahoo-auctions","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Yahoo! Auctions Japan API scraper (ヤフオク!) - search live auctions, sold prices (落札相場) with price statistics, full auction records with tax-included prices and shipping to any prefecture, seller inventory, categories and keyword suggestions. Prices in JPY. No account, no browser.","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/yahoo-auctions/v1","spec_available":true,"actions":[{"name":"search","description":"Search live Yahoo! Auctions listings by keyword: auction id, title, image, the current price and buy-now price (tax included), bid and watch counts, end time, condition, category path, where it ships from, the shipping fee to your chosen prefecture, and the seller's id and positive rating. Filter by condition, individual/store/flea-market seller, auction or fixed price, price, buy-now price, free shipping, minimum bids, featured, new arrivals, prefecture, brand and category; sort by relevance, ending soon, newest, price, bids or buy-now price.","required_params":["query"],"optional_params":["category_id","sort","page","limit","condition","seller_type","listing_format","price_min","price_max","buy_now_price_min","buy_now_price_max","has_buy_now","free_shipping","min_bids","featured_only","new_arrivals","item_location","shipping_destination","brand_id","exclude_suspected_fakes","max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"Keyword, in Japanese or English (both are matched, e.g. 'nintendo' also finds ニンテンドー).","on_invalid":"reject","example":"ポケモンカード","aliases":["q","keyword","p"]},{"name":"category_id","type":"integer","required":false,"description":"Restrict to one category (and everything under it).","on_invalid":"reject","example":2084315794,"minimum":0,"aliases":["category","auccat"]},{"name":"sort","type":"enum","required":false,"description":"Order. Only orderings measured to change the results are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Yahoo! Auctions' own ranking (default)"},{"value":"ending_soon","label":"Ending soonest first"},{"value":"newest","label":"Most recently listed first"},{"value":"price_asc","label":"Lowest current price first"},{"value":"price_desc","label":"Highest current price first (topped by 9,999,999-yen placeholders)"},{"value":"most_bids","label":"Most bids first"},{"value":"buy_now_price_asc","label":"Lowest buy-now price first (listings with one)"},{"value":"featured","label":"Paid featured listings first (注目のオークション)"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Yahoo! Auctions serves results up to position 15,000 + limit; deeper pages are rejected. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Listings per page, 1-100 (default 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":100,"aliases":["page_size"]},{"name":"condition","type":"array","required":false,"description":"Item condition, Yahoo! Auctions' six grades. Several may be given, comma-separated.","on_invalid":"reject","allowed_values":[{"value":"new","label":"未使用 — unused"},{"value":"like_new","label":"未使用に近い — nearly unused"},{"value":"good","label":"目立った傷や汚れなし — no noticeable scratches or marks"},{"value":"fair","label":"やや傷や汚れあり — some scratches or marks"},{"value":"worn","label":"傷や汚れあり — scratches or marks"},{"value":"poor","label":"全体的に状態が悪い — poor overall condition"}],"example":"like_new","aliases":["item_condition"]},{"name":"seller_type","type":"array","required":false,"description":"Who is selling. Several may be given, comma-separated.","on_invalid":"reject","allowed_values":[{"value":"individual","label":"Private sellers on Yahoo! Auctions"},{"value":"store","label":"Registered stores (ストア)"},{"value":"fleamarket","label":"Yahoo!フリマ fixed-price flea-market listings shown in search"}],"example":"store"},{"name":"listing_format","type":"enum","required":false,"description":"Bidding auctions only, or fixed-price listings only.","on_invalid":"reject","allowed_values":[{"value":"auction","label":"Bidding listings (オークション形式)"},{"value":"fixed_price","label":"Fixed-price listings (定額)"}]},{"name":"price_min","type":"integer","required":false,"description":"Lowest current (or sold) price, whole yen, tax included.","on_invalid":"reject","example":5000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest current (or sold) price, whole yen, tax included.","on_invalid":"reject","example":20000,"minimum":0},{"name":"buy_now_price_min","type":"integer","required":false,"description":"Lowest buy-now (即決) price, whole yen. Implies listings that have one.","on_invalid":"reject","minimum":0},{"name":"buy_now_price_max","type":"integer","required":false,"description":"Highest buy-now (即決) price, whole yen.","on_invalid":"reject","minimum":0},{"name":"has_buy_now","type":"boolean","required":false,"description":"Only listings with a buy-now (即決) price.","on_invalid":"reject"},{"name":"free_shipping","type":"boolean","required":false,"description":"Only listings with free shipping (送料無料).","on_invalid":"reject"},{"name":"min_bids","type":"integer","required":false,"description":"Only listings with at least this many bids.","on_invalid":"reject","minimum":1},{"name":"featured_only","type":"boolean","required":false,"description":"Only paid featured listings (注目のオークション).","on_invalid":"reject"},{"name":"new_arrivals","type":"boolean","required":false,"description":"Only listings the site marks as new arrivals.","on_invalid":"reject"},{"name":"item_location","type":"string","required":false,"description":"Only listings shipped from these prefectures, by JIS number 1-47 (1 Hokkaido, 13 Tokyo, 23 Aichi, 27 Osaka, 40 Fukuoka), comma-separated.","on_invalid":"reject","example":"13","aliases":["location"]},{"name":"shipping_destination","type":"integer","required":false,"description":"Prefecture (JIS 1-47) the shipping fees are quoted for. Default 13 (Tokyo), as on the site. Fees differ by destination.","on_invalid":"reject","default":13,"example":27,"minimum":1,"maximum":47,"aliases":["destination_prefecture"]},{"name":"brand_id","type":"integer","required":false,"description":"Yahoo! Auctions brand id (every row returns `brand_id`).","on_invalid":"reject","example":102358,"minimum":1},{"name":"exclude_suspected_fakes","type":"boolean","required":false,"description":"Drop listings Yahoo! Auctions flags as suspected counterfeits (the site's default).","on_invalid":"reject","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"items[]{auction_id, title, url, image, price (number, JPY, tax included - the current bid), buy_now_price (tax included, null when none), buy_now_price_excluding_tax, start_price_excluding_tax, currency, bid_count, watch_count, quantity, is_fixed_price, listing_type (individual|store|fleamarket), condition, condition_code, category{id, name, path[]{id, name}}, brand_id, catalog_id, item_location{code, name}, free_shipping, shipping_fee (to shipping_destination; null when the seller has not fixed one), shipping_fee_type, shipping_fee_timing (fixed|decided_after_sale|cash_on_delivery), buy_now_shipping_fee, seller{id, name (null on rows - the site masks it), url, positive_percent, is_store, is_best_store, city}, is_featured (paid placement), is_new_arrival, is_appraised, easy_payment, start_time, end_time, rating (null), review_count (null), rating_scale (null)}, count, total_results, page, has_more, filters{}, category_facets[]{id, name, count}, query","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"query":"ポケモンカード","limit":20}},{"name":"sold/search","description":"Sold Yahoo! Auctions listings (落札相場) from roughly the last six months: the price each item actually sold for (tax included), bid count, end date, condition and seller, plus the average, lowest and highest sold price across every match. Search by keyword, category or seller; filter by condition, seller type and price.","required_params":[],"optional_params":["query","category_id","seller_id","sort","page","limit","condition","seller_type","price_min","price_max","exclude_suspected_fakes","max_rotations"],"params":[{"name":"query","type":"string","required":false,"description":"Optional keyword to narrow the listing.","on_invalid":"reject","example":"ポケモンカード","aliases":["q","keyword","p"]},{"name":"category_id","type":"integer","required":false,"description":"Restrict to one category (and everything under it).","on_invalid":"reject","example":2084315794,"minimum":0,"aliases":["category","auccat"]},{"name":"seller_id","type":"string","required":false,"description":"Only this seller's sold listings (their sales history).","on_invalid":"reject","example":"z3pLoGidbEW4uPBUi5ZiuYGVtNyJ","aliases":["seller","user_id","auc_user_id"]},{"name":"sort","type":"enum","required":false,"description":"Order of sold listings.","on_invalid":"reject","allowed_values":[{"value":"recently_ended","label":"Most recently ended first (default)"},{"value":"oldest_ended","label":"Oldest first (the index reaches back about six months)"},{"value":"price_asc","label":"Lowest sold price first"},{"value":"price_desc","label":"Highest sold price first"},{"value":"most_bids","label":"Most bids first"},{"value":"fewest_bids","label":"Fewest bids first"}],"default":"recently_ended"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Yahoo! Auctions serves results up to position 15,000 + limit; deeper pages are rejected. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Listings per page, 1-100 (default 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":100,"aliases":["page_size"]},{"name":"condition","type":"array","required":false,"description":"Item condition, Yahoo! Auctions' six grades. Several may be given, comma-separated.","on_invalid":"reject","allowed_values":[{"value":"new","label":"未使用 — unused"},{"value":"like_new","label":"未使用に近い — nearly unused"},{"value":"good","label":"目立った傷や汚れなし — no noticeable scratches or marks"},{"value":"fair","label":"やや傷や汚れあり — some scratches or marks"},{"value":"worn","label":"傷や汚れあり — scratches or marks"},{"value":"poor","label":"全体的に状態が悪い — poor overall condition"}],"example":"like_new","aliases":["item_condition"]},{"name":"seller_type","type":"array","required":false,"description":"Who is selling. Several may be given, comma-separated.","on_invalid":"reject","allowed_values":[{"value":"individual","label":"Private sellers on Yahoo! Auctions"},{"value":"store","label":"Registered stores (ストア)"},{"value":"fleamarket","label":"Yahoo!フリマ fixed-price flea-market listings shown in search"}],"example":"store"},{"name":"price_min","type":"integer","required":false,"description":"Lowest current (or sold) price, whole yen, tax included.","on_invalid":"reject","example":5000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest current (or sold) price, whole yen, tax included.","on_invalid":"reject","example":20000,"minimum":0},{"name":"exclude_suspected_fakes","type":"boolean","required":false,"description":"Drop listings Yahoo! Auctions flags as suspected counterfeits (the site's default).","on_invalid":"reject","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"items[]{sold_price, sold_at, auction_id, title, url, image, price (number, JPY, tax included - the current bid), buy_now_price (tax included, null when none), buy_now_price_excluding_tax, start_price_excluding_tax, currency, bid_count, watch_count, quantity, is_fixed_price, listing_type (individual|store|fleamarket), condition, condition_code, category{id, name, path[]{id, name}}, brand_id, catalog_id, item_location{code, name}, free_shipping, shipping_fee (to shipping_destination; null when the seller has not fixed one), shipping_fee_type, shipping_fee_timing (fixed|decided_after_sale|cash_on_delivery), buy_now_shipping_fee, seller{id, name (null on rows - the site masks it), url, positive_percent, is_store, is_best_store, city}, is_featured (paid placement), is_new_arrival, is_appraised, easy_payment, start_time, end_time, rating (null), review_count (null), rating_scale (null)}, count, total_results, page, has_more, filters{}, price_statistics{average, min, max, currency, over}, query","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":5},"example_params":{"query":"nintendo switch","limit":20}},{"name":"product/detail","description":"One Yahoo! Auctions auction in full, live or ended: title, full description, every image, the current or final price tax included (with the pre-tax figure and tax rate for stores), start and buy-now price, bids, bidders, watchers, quantity, start/end time and time left, auto-extension, condition, category path, brand, item specifics, the seller (name, positive %, good/bad counts, store and verification badges, prefecture), shipping (who pays, methods and the fee to your chosen prefecture, handling time, anonymous delivery) and the returns policy.","required_params":["auction_id"],"optional_params":["shipping_destination","max_rotations"],"params":[{"name":"auction_id","type":"string","required":true,"description":"Yahoo! Auctions auction id (the code at the end of /jp/auction/<id>, e.g. k1244566600; 8-11 digits, usually with one leading letter). A full auction URL works.","on_invalid":"reject","example":"k1244566600","aliases":["id","item_id","product_id","url"]},{"name":"shipping_destination","type":"integer","required":false,"description":"Prefecture (JIS 1-47) the shipping fees are quoted for. Default 13 (Tokyo), as on the site. Fees differ by destination.","on_invalid":"reject","default":13,"example":27,"minimum":1,"maximum":47,"aliases":["destination_prefecture"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"item{auction_id, title, url, status (open|closed), is_ended, price (tax included), price_excluding_tax, tax_rate, start_price, buy_now_price, buy_now_price_excluding_tax, currency, bid_count, bidder_count, watch_count, quantity, start_time, end_time, time_left_seconds, auto_extension, early_end_allowed, price_negotiable, condition, condition_label, listing_type, description, images[], image, category{id, name, path[]}, brand{id, name, path[]}, product_name, catalog_id, item_specifics{}, gtin (null), seller{id, name, url, positive_percent, rating_score, good_count, bad_count, is_store, is_best_store, is_excellent_seller, identity_verified, fast_shipper, location{code, name}}, shipping{paid_by (seller|buyer), free_shipping, destination{code, name}, fee_to_destination, methods[]{name, fee, is_official, anonymous, tracking}, ships_within, ships_from, anonymous_delivery_available, worldwide}, returns{accepted, note}, store_platform, is_featured, questions_answered, rating (null), review_count (null), rating_scale (null)}","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"seller/listings","description":"A Yahoo! Auctions seller's profile and live listings: display name, store or individual, rating total and positive ratio, identity verification, fast-shipper badge and profile message, then the seller's current auctions with the same row fields, filters and sorts as search.","required_params":["seller_id"],"optional_params":["query","sort","page","limit","condition","seller_type","listing_format","price_min","price_max","buy_now_price_min","buy_now_price_max","has_buy_now","free_shipping","min_bids","featured_only","new_arrivals","item_location","shipping_destination","brand_id","exclude_suspected_fakes","max_rotations"],"params":[{"name":"seller_id","type":"string","required":true,"description":"Seller id (the code in /seller/<id>). Every row returns it as `seller.id`. A seller page URL works.","on_invalid":"reject","example":"z3pLoGidbEW4uPBUi5ZiuYGVtNyJ","aliases":["seller","user_id","auc_user_id"]},{"name":"query","type":"string","required":false,"description":"Optional keyword to narrow the listing.","on_invalid":"reject","example":"ポケモンカード","aliases":["q","keyword","p"]},{"name":"sort","type":"enum","required":false,"description":"Order. Only orderings measured to change the results are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Yahoo! Auctions' own ranking (default)"},{"value":"ending_soon","label":"Ending soonest first"},{"value":"newest","label":"Most recently listed first"},{"value":"price_asc","label":"Lowest current price first"},{"value":"price_desc","label":"Highest current price first (topped by 9,999,999-yen placeholders)"},{"value":"most_bids","label":"Most bids first"},{"value":"buy_now_price_asc","label":"Lowest buy-now price first (listings with one)"},{"value":"featured","label":"Paid featured listings first (注目のオークション)"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Yahoo! Auctions serves results up to position 15,000 + limit; deeper pages are rejected. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Listings per page, 1-100 (default 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":100,"aliases":["page_size"]},{"name":"condition","type":"array","required":false,"description":"Item condition, Yahoo! Auctions' six grades. Several may be given, comma-separated.","on_invalid":"reject","allowed_values":[{"value":"new","label":"未使用 — unused"},{"value":"like_new","label":"未使用に近い — nearly unused"},{"value":"good","label":"目立った傷や汚れなし — no noticeable scratches or marks"},{"value":"fair","label":"やや傷や汚れあり — some scratches or marks"},{"value":"worn","label":"傷や汚れあり — scratches or marks"},{"value":"poor","label":"全体的に状態が悪い — poor overall condition"}],"example":"like_new","aliases":["item_condition"]},{"name":"seller_type","type":"array","required":false,"description":"Who is selling. Several may be given, comma-separated.","on_invalid":"reject","allowed_values":[{"value":"individual","label":"Private sellers on Yahoo! Auctions"},{"value":"store","label":"Registered stores (ストア)"},{"value":"fleamarket","label":"Yahoo!フリマ fixed-price flea-market listings shown in search"}],"example":"store"},{"name":"listing_format","type":"enum","required":false,"description":"Bidding auctions only, or fixed-price listings only.","on_invalid":"reject","allowed_values":[{"value":"auction","label":"Bidding listings (オークション形式)"},{"value":"fixed_price","label":"Fixed-price listings (定額)"}]},{"name":"price_min","type":"integer","required":false,"description":"Lowest current (or sold) price, whole yen, tax included.","on_invalid":"reject","example":5000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest current (or sold) price, whole yen, tax included.","on_invalid":"reject","example":20000,"minimum":0},{"name":"buy_now_price_min","type":"integer","required":false,"description":"Lowest buy-now (即決) price, whole yen. Implies listings that have one.","on_invalid":"reject","minimum":0},{"name":"buy_now_price_max","type":"integer","required":false,"description":"Highest buy-now (即決) price, whole yen.","on_invalid":"reject","minimum":0},{"name":"has_buy_now","type":"boolean","required":false,"description":"Only listings with a buy-now (即決) price.","on_invalid":"reject"},{"name":"free_shipping","type":"boolean","required":false,"description":"Only listings with free shipping (送料無料).","on_invalid":"reject"},{"name":"min_bids","type":"integer","required":false,"description":"Only listings with at least this many bids.","on_invalid":"reject","minimum":1},{"name":"featured_only","type":"boolean","required":false,"description":"Only paid featured listings (注目のオークション).","on_invalid":"reject"},{"name":"new_arrivals","type":"boolean","required":false,"description":"Only listings the site marks as new arrivals.","on_invalid":"reject"},{"name":"item_location","type":"string","required":false,"description":"Only listings shipped from these prefectures, by JIS number 1-47 (1 Hokkaido, 13 Tokyo, 23 Aichi, 27 Osaka, 40 Fukuoka), comma-separated.","on_invalid":"reject","example":"13","aliases":["location"]},{"name":"shipping_destination","type":"integer","required":false,"description":"Prefecture (JIS 1-47) the shipping fees are quoted for. Default 13 (Tokyo), as on the site. Fees differ by destination.","on_invalid":"reject","default":13,"example":27,"minimum":1,"maximum":47,"aliases":["destination_prefecture"]},{"name":"brand_id","type":"integer","required":false,"description":"Yahoo! Auctions brand id (every row returns `brand_id`).","on_invalid":"reject","example":102358,"minimum":1},{"name":"exclude_suspected_fakes","type":"boolean","required":false,"description":"Drop listings Yahoo! Auctions flags as suspected counterfeits (the site's default).","on_invalid":"reject","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"seller{id, name, url, is_store, store_url, rating_total, positive_percent, identity_verified, fast_shipper, profile_message, icon}, items[]{auction_id, title, url, image, price (number, JPY, tax included - the current bid), buy_now_price (tax included, null when none), buy_now_price_excluding_tax, start_price_excluding_tax, currency, bid_count, watch_count, quantity, is_fixed_price, listing_type (individual|store|fleamarket), condition, condition_code, category{id, name, path[]{id, name}}, brand_id, catalog_id, item_location{code, name}, free_shipping, shipping_fee (to shipping_destination; null when the seller has not fixed one), shipping_fee_type, shipping_fee_timing (fixed|decided_after_sale|cash_on_delivery), buy_now_shipping_fee, seller{id, name (null on rows - the site masks it), url, positive_percent, is_store, is_best_store, city}, is_featured (paid placement), is_new_arrival, is_appraised, easy_payment, start_time, end_time, rating (null), review_count (null), rating_scale (null)}, count, total_results, page, has_more, filters{}","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"category/products","description":"Browse one Yahoo! Auctions category: the category's name, parent and sub-categories, then its live listings with the same row fields, filters and sorts as search (a keyword is optional).","required_params":["category_id"],"optional_params":["query","sort","page","limit","condition","seller_type","listing_format","price_min","price_max","buy_now_price_min","buy_now_price_max","has_buy_now","free_shipping","min_bids","featured_only","new_arrivals","item_location","shipping_destination","brand_id","exclude_suspected_fakes","max_rotations"],"params":[{"name":"category_id","type":"integer","required":true,"description":"Yahoo! Auctions category id (the number in /category/list/<id>/). `categories` walks the tree; every row returns `category.id`.","on_invalid":"reject","example":2084315794,"minimum":1,"aliases":["category","auccat"]},{"name":"query","type":"string","required":false,"description":"Optional keyword to narrow the listing.","on_invalid":"reject","example":"ポケモンカード","aliases":["q","keyword","p"]},{"name":"sort","type":"enum","required":false,"description":"Order. Only orderings measured to change the results are accepted.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Yahoo! Auctions' own ranking (default)"},{"value":"ending_soon","label":"Ending soonest first"},{"value":"newest","label":"Most recently listed first"},{"value":"price_asc","label":"Lowest current price first"},{"value":"price_desc","label":"Highest current price first (topped by 9,999,999-yen placeholders)"},{"value":"most_bids","label":"Most bids first"},{"value":"buy_now_price_asc","label":"Lowest buy-now price first (listings with one)"},{"value":"featured","label":"Paid featured listings first (注目のオークション)"}],"default":"relevance"},{"name":"page","type":"integer","required":false,"description":"Result page, 1-based. Yahoo! Auctions serves results up to position 15,000 + limit; deeper pages are rejected. A page past the end returns an empty list.","on_invalid":"reject","default":1,"minimum":1},{"name":"limit","type":"integer","required":false,"description":"Listings per page, 1-100 (default 50).","on_invalid":"reject","default":50,"minimum":1,"maximum":100,"aliases":["page_size"]},{"name":"condition","type":"array","required":false,"description":"Item condition, Yahoo! Auctions' six grades. Several may be given, comma-separated.","on_invalid":"reject","allowed_values":[{"value":"new","label":"未使用 — unused"},{"value":"like_new","label":"未使用に近い — nearly unused"},{"value":"good","label":"目立った傷や汚れなし — no noticeable scratches or marks"},{"value":"fair","label":"やや傷や汚れあり — some scratches or marks"},{"value":"worn","label":"傷や汚れあり — scratches or marks"},{"value":"poor","label":"全体的に状態が悪い — poor overall condition"}],"example":"like_new","aliases":["item_condition"]},{"name":"seller_type","type":"array","required":false,"description":"Who is selling. Several may be given, comma-separated.","on_invalid":"reject","allowed_values":[{"value":"individual","label":"Private sellers on Yahoo! Auctions"},{"value":"store","label":"Registered stores (ストア)"},{"value":"fleamarket","label":"Yahoo!フリマ fixed-price flea-market listings shown in search"}],"example":"store"},{"name":"listing_format","type":"enum","required":false,"description":"Bidding auctions only, or fixed-price listings only.","on_invalid":"reject","allowed_values":[{"value":"auction","label":"Bidding listings (オークション形式)"},{"value":"fixed_price","label":"Fixed-price listings (定額)"}]},{"name":"price_min","type":"integer","required":false,"description":"Lowest current (or sold) price, whole yen, tax included.","on_invalid":"reject","example":5000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Highest current (or sold) price, whole yen, tax included.","on_invalid":"reject","example":20000,"minimum":0},{"name":"buy_now_price_min","type":"integer","required":false,"description":"Lowest buy-now (即決) price, whole yen. Implies listings that have one.","on_invalid":"reject","minimum":0},{"name":"buy_now_price_max","type":"integer","required":false,"description":"Highest buy-now (即決) price, whole yen.","on_invalid":"reject","minimum":0},{"name":"has_buy_now","type":"boolean","required":false,"description":"Only listings with a buy-now (即決) price.","on_invalid":"reject"},{"name":"free_shipping","type":"boolean","required":false,"description":"Only listings with free shipping (送料無料).","on_invalid":"reject"},{"name":"min_bids","type":"integer","required":false,"description":"Only listings with at least this many bids.","on_invalid":"reject","minimum":1},{"name":"featured_only","type":"boolean","required":false,"description":"Only paid featured listings (注目のオークション).","on_invalid":"reject"},{"name":"new_arrivals","type":"boolean","required":false,"description":"Only listings the site marks as new arrivals.","on_invalid":"reject"},{"name":"item_location","type":"string","required":false,"description":"Only listings shipped from these prefectures, by JIS number 1-47 (1 Hokkaido, 13 Tokyo, 23 Aichi, 27 Osaka, 40 Fukuoka), comma-separated.","on_invalid":"reject","example":"13","aliases":["location"]},{"name":"shipping_destination","type":"integer","required":false,"description":"Prefecture (JIS 1-47) the shipping fees are quoted for. Default 13 (Tokyo), as on the site. Fees differ by destination.","on_invalid":"reject","default":13,"example":27,"minimum":1,"maximum":47,"aliases":["destination_prefecture"]},{"name":"brand_id","type":"integer","required":false,"description":"Yahoo! Auctions brand id (every row returns `brand_id`).","on_invalid":"reject","example":102358,"minimum":1},{"name":"exclude_suspected_fakes","type":"boolean","required":false,"description":"Drop listings Yahoo! Auctions flags as suspected counterfeits (the site's default).","on_invalid":"reject","default":true},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"category{id, name, is_leaf, open_listing_count}, parent{id, name}, children[]{id, name, is_leaf}, items[]{auction_id, title, url, image, price (number, JPY, tax included - the current bid), buy_now_price (tax included, null when none), buy_now_price_excluding_tax, start_price_excluding_tax, currency, bid_count, watch_count, quantity, is_fixed_price, listing_type (individual|store|fleamarket), condition, condition_code, category{id, name, path[]{id, name}}, brand_id, catalog_id, item_location{code, name}, free_shipping, shipping_fee (to shipping_destination; null when the seller has not fixed one), shipping_fee_type, shipping_fee_timing (fixed|decided_after_sale|cash_on_delivery), buy_now_shipping_fee, seller{id, name (null on rows - the site masks it), url, positive_percent, is_store, is_best_store, city}, is_featured (paid placement), is_new_arrival, is_appraised, easy_payment, start_time, end_time, rating (null), review_count (null), rating_scale (null)}, count, total_results, page, has_more, filters{}","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"categories","description":"The Yahoo! Auctions category tree one level at a time: a category's name, whether it is a leaf, how many live listings it holds, its parent, and its sub-categories with their ids.","required_params":[],"optional_params":["category_id","max_rotations"],"params":[{"name":"category_id","type":"integer","required":false,"description":"Category to open; 0 (default) is the top level.","on_invalid":"reject","default":0,"example":25464,"minimum":0,"aliases":["category"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"category{id, name, is_leaf, open_listing_count}, parent{id, name}, children[]{id, name, is_leaf}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"suggest","description":"Yahoo! Auctions' own keyword suggestions for the start of a search term.","required_params":["query"],"optional_params":["max_rotations"],"params":[{"name":"query","type":"string","required":true,"description":"The start of a keyword.","on_invalid":"reject","example":"ポケモン","aliases":["q","keyword"]},{"name":"max_rotations","type":"integer","required":false,"description":"Advanced: how many times to retry a difficult request (1-5).","on_invalid":"ignore","default":3,"minimum":1,"maximum":5}],"returns":"query, suggestions[], count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"ポケモンカード"}}]},{"name":"yandex-maps","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Yandex Maps API — place search, business detail and reviews scraper: name, address, phone, website, rating, review count, categories, coordinates and opening hours from Yandex Maps (yandex.com.tr) across Turkey, Russia and the CIS — plus paginated customer reviews, geo-anchored nearby search and address geocoding, no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/yandex-maps/v1","spec_available":true,"actions":[{"name":"search","description":"Search Yandex Maps for businesses by text/category. Returns up to ~25 orgs with name, address, coordinates, rating, review count, categories, phone, website, social links and opening hours.","required_params":["text"],"optional_params":["city","region_id","ll","z"],"params":[{"name":"text","type":"string","required":true,"description":"What to look for — a business name, brand or category ('kahve', 'eczane', 'Starbucks', 'restaurant').","on_invalid":"reject","example":"kahve","aliases":["query","q"]},{"name":"city","type":"string","required":false,"description":"City to scope the search to. One of: istanbul, ankara, izmir, antalya, bursa, adana, moscow, saint-petersburg, kazan, yekaterinburg, novosibirsk, minsk, almaty, astana, tashkent, baku, tbilisi, yerevan, kyiv. Defaults to istanbul. Any other place: pass ll instead — an unlisted slug is rejected rather than answered from somewhere else.","on_invalid":"ignore","example":"istanbul"},{"name":"region_id","type":"string","required":false,"description":"Advanced escape hatch: Yandex internal region id, for a place the city list does not cover (213=Moscow, 11508=Istanbul, 11503=Ankara). Overrides city. Prefer ll for precision.","on_invalid":"ignore","example":"213"},{"name":"ll","type":"string","required":false,"description":"Map-center bias as 'lon,lat' (NOTE: lon first). Strongly recommended for local results.","on_invalid":"ignore","example":"28.9795,41.0151"},{"name":"z","type":"integer","required":false,"description":"Zoom level 1-21 (higher = tighter local area).","on_invalid":"ignore","default":14,"example":14,"minimum":1,"maximum":21}],"returns":"orgs[]{org_id, name, address, latitude, longitude, url, rating, rating_count, review_count, categories[], phones[], website, social_links[], hours_text, status, seoname}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"text":"kahve","city":"istanbul"}},{"name":"detail","description":"Full business card for one org by org_id (or a Yandex Maps org URL): name, address, coordinates, rating, categories, phones, website, social links, opening hours, features and photo count.","required_params":[],"optional_params":["org_id","url"],"params":[{"name":"org_id","type":"string","required":false,"description":"Yandex Maps org id (the number in /maps/org/<id>/). From a search result's org_id.","on_invalid":"reject","example":"1242233919"},{"name":"url","type":"string","required":false,"description":"Alternatively a full Yandex Maps org URL.","on_invalid":"ignore","example":"https://yandex.com.tr/maps/org/kofemaniya/1242233919/"}],"returns":"org{org_id, name, address, latitude, longitude, rating, rating_count, review_count, categories[], phones[], website, social_links[], hours_text, description, country, locality, street, house, features[], photo_count}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"org_id":"1242233919"}},{"name":"reviews","description":"Paginated public customer reviews for an org: author handle, level, star rating, text, date and the business's reply. 50 reviews per page — page with `page`; meta.total_pages / meta.review_count tell you how many.","required_params":["org_id"],"optional_params":["page"],"params":[{"name":"org_id","type":"string","required":true,"description":"Yandex Maps org id to pull reviews for.","on_invalid":"reject","example":"1242233919"},{"name":"page","type":"integer","required":false,"description":"Review page (50 per page). Page until meta.total_pages.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200}],"returns":"reviews[]{review_id, author, author_level, rating, text, date, business_reply, photo_count} + meta{page, total_pages, review_count}","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"per_unit","credits":1,"per":50,"min":1},"example_params":{"org_id":"1242233919"}},{"name":"nearby","description":"Find businesses of a category around a coordinate. Returns geo-anchored orgs (same shape as search) closest to the given 'lon,lat' center.","required_params":["ll","text"],"optional_params":["z"],"params":[{"name":"ll","type":"string","required":true,"description":"Center to search around as 'lon,lat' (lon first).","on_invalid":"reject","example":"28.985,41.036"},{"name":"text","type":"string","required":true,"description":"Category or keyword to find near the center ('eczane', 'atm', 'cafe', 'hastane').","on_invalid":"reject","example":"eczane","aliases":["category","q"]},{"name":"z","type":"integer","required":false,"description":"Zoom (tighter = smaller radius).","on_invalid":"ignore","default":16,"example":16,"minimum":10,"maximum":21}],"returns":"orgs[]{org_id, name, address, latitude, longitude, rating, review_count, categories[], phones[], hours_text} (closest first)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"ll":"28.985,41.036","text":"eczane"}},{"name":"geocode","description":"Geocode an address/place name to coordinates via Yandex. Returns the matched toponym with latitude/longitude and a normalized address. Pass a complete address; Yandex resolves it directly (don't over-qualify a place already named).","required_params":["address"],"optional_params":[],"params":[{"name":"address","type":"string","required":true,"description":"Address or place name to geocode (e.g. 'Taksim Meydanı', 'Red Square Moscow').","on_invalid":"reject","example":"Taksim Meydanı","aliases":["text","q"]}],"returns":"result{name, address, latitude, longitude, type, uri}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"address":"Taksim Meydanı"}}]},{"name":"yellowpages","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Yellow Pages API — US local business directory scraper: search businesses by category and city, get full business details (name, phone, address, website, rating, reviews, opening hours, years in business, categories and services) and browse any category in any US city from yellowpages.com, no API key required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/yellowpages/v1","spec_available":true,"actions":[{"name":"search","description":"Search the Yellow Pages business directory by category/keyword and US location. Returns up to 30 businesses per page with name, phone, address, categories, star rating, review count, years in business, a 'From Business' snippet and the detail URL. Paginate with `page`; meta.total_results gives the full match count.","required_params":["search_terms","geo_location_terms"],"optional_params":["page"],"params":[{"name":"search_terms","type":"string","required":true,"description":"What to look for — a business category, service or name ('plumber', 'italian restaurant', 'dentist', 'Joe's Pizza').","on_invalid":"reject","example":"plumber","aliases":["query","q","term"]},{"name":"geo_location_terms","type":"string","required":true,"description":"Where to search — a US 'City, ST', a ZIP code, or a neighborhood ('Austin, TX', '90210', 'Brooklyn, NY').","on_invalid":"reject","example":"Austin, TX","aliases":["location","geo","where"]},{"name":"page","type":"integer","required":false,"description":"Result page (30 businesses per page). Page until meta.total_results is covered.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100}],"returns":"businesses[]{name, url, ypid, phone, address, street_address, locality, categories[], rating, review_count, years_in_business, snippet, hours[]} + meta{page, total_results, per_page, has_more, next_page}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"search_terms":"plumber","geo_location_terms":"Austin, TX"}},{"name":"detail","description":"Full business profile from a Yellow Pages detail URL (the `url` of a search result): name, description, full address, geo coordinates, phone, website, email, rating + review count, years in business / founding year, payment methods, languages, opening hours, the list of services offered and recent customer reviews.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"The Yellow Pages business detail (/mip/) URL, taken from a search result's `url` field.","on_invalid":"reject","example":"https://www.yellowpages.com/austin-tx/mip/clarke-kent-plumbing-10674347","aliases":["mip_url","business_url"]}],"returns":"business{name, description, address, latitude, longitude, phone, website, email, rating, review_count, founding_year, years_in_business, payment_accepted, languages, hours[], services[], reviews[]{author, rating, text, date}}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"category","description":"Browse every business in a Yellow Pages category for a US city — e.g. all restaurants in Chicago, all dentists in Miami. Same business fields as search, paginated. Use this when you want a city-wide category list rather than a keyword search.","required_params":["category","location"],"optional_params":["page"],"params":[{"name":"category","type":"string","required":true,"description":"Category slug as it appears on Yellow Pages ('restaurants', 'dentists', 'auto-repair', 'plumbers').","on_invalid":"reject","example":"restaurants","aliases":["cat"]},{"name":"location","type":"string","required":true,"description":"US city as 'City, ST' (e.g. 'Chicago, IL', 'Miami, FL').","on_invalid":"reject","example":"Chicago, IL","aliases":["city","geo"]},{"name":"page","type":"integer","required":false,"description":"Result page (30 businesses per page). Page until meta.total_results is covered.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100}],"returns":"businesses[]{name, url, ypid, phone, address, categories[], rating, review_count, years_in_business, snippet} + meta{page, total_results, per_page, has_more, next_page}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"restaurants","location":"Chicago, IL"}}]},{"name":"yelp","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Yelp API scraper — business search, reviews, ratings, business data (price, phone, hours, amenities, photos), menus and popular dishes from yelp.com","version":"1.7.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/yelp/v1","spec_available":true,"actions":[{"name":"business/reviews","description":"Fetch all reviews (with full pagination — newest, oldest, highest rated or elite first) plus the complete Yelp business profile — rating, review count, categories, price, phone, address, hours, amenities and photos. Accepts up to 39 businesses per call via their Yelp business ID.","required_params":["encBizIds"],"optional_params":["maxReviews","sortBy","ratings","language","includeDetail","includeNotRecommended","reviewsPerPage"],"params":[{"name":"encBizIds","type":"array","required":true,"description":"One or more Yelp business IDs. For multiple businesses, comma-separate them: id1,id2,id3 (a JSON array also works). Retrieve a business ID from the search or business/url-to-id actions — it is NOT the slug in the yelp.com/biz/ URL.","on_invalid":"reject","example":"gZz9A8k8ORC_xl0aHxtY4w"},{"name":"maxReviews","type":"integer","required":false,"description":"How many reviews to fetch per business (1–10000). More reviews = longer runtime.","on_invalid":"reject","default":20,"minimum":1,"maximum":10000},{"name":"sortBy","type":"enum","required":false,"description":"Review ordering.","on_invalid":"reject","allowed_values":[{"value":"RELEVANCE_DESC","label":"Most relevant (Yelp default)"},{"value":"DATE_DESC","label":"Newest first"},{"value":"DATE_ASC","label":"Oldest first"},{"value":"RATING_DESC","label":"Highest rated first"},{"value":"RATING_ASC","label":"Lowest rated first"},{"value":"ELITES_DESC","label":"Elite reviewers first"}],"default":"DATE_DESC"},{"name":"ratings","type":"array","required":false,"description":"Only reviews with these star ratings, e.g. [1, 2] for negative ones. Default: all (1–5).","on_invalid":"reject","allowed_values":[{"value":1,"label":"1 star"},{"value":2,"label":"2 stars"},{"value":3,"label":"3 stars"},{"value":4,"label":"4 stars"},{"value":5,"label":"5 stars"}],"default":[5,4,3,2,1],"example":[5]},{"name":"language","type":"string","required":false,"description":"Review language code (ISO 639-1, e.g. en, es, fr, de). Yelp returns reviews written in that language.","on_invalid":"ignore","default":"en","example":"en"},{"name":"includeDetail","type":"boolean","required":false,"description":"Include the full business profile (address, phone, coordinates, amenities, hours, photos).","on_invalid":"reject","default":true},{"name":"includeNotRecommended","type":"boolean","required":false,"description":"Also fetch Yelp's 'not recommended' (filtered) reviews.","on_invalid":"reject","default":false},{"name":"reviewsPerPage","type":"integer","required":false,"description":"How many reviews to request per page from Yelp (1–50). Higher values reduce the number of round trips for large harvests.","on_invalid":"ignore","default":30,"minimum":1,"maximum":50}],"returns":"results[]{business{enc_biz_id, name, alias, url, rating, review_count, categories, phone, address, city, state, zip, latitude, longitude, amenities, hours, primary_photo_url}, reviews[]{review_id, rating, text, language, localized_date, created_at, useful_count, reactions, has_owner_reply, photos, reviewer*}} (*reviewer name and country are redacted by default; personal data is included only when you request it)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"per_unit","credits":1,"per":1,"min":1},"example_params":{"encBizIds":["gZz9A8k8ORC_xl0aHxtY4w"],"maxReviews":20}},{"name":"business/details","description":"Get the full Yelp business profile without reviews — name, categories, star rating, review count, price level, phone, full address, coordinates, hours, amenities and photo. Faster and cheaper than business/reviews when you only need the listing. Accepts up to 39 businesses per call via their Yelp business ID.","required_params":["encBizIds"],"optional_params":["includePii"],"params":[{"name":"encBizIds","type":"array","required":true,"description":"Yelp business ID(s). For multiple businesses, comma-separate them: id1,id2,id3 (a JSON array also works; up to 39 per request, fetched concurrently). Retrieve a business ID from the search action or business/url-to-id — it is NOT the slug in the yelp.com/biz/ URL.","on_invalid":"reject","example":"gZz9A8k8ORC_xl0aHxtY4w"}],"returns":"results[]{business{enc_biz_id, name, alias, url, rating, review_count, categories, price_range, phone, address, city, state, zip, latitude, longitude, amenities[]{name,value}, hours, primary_photo_url}, rating_histogram}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"encBizIds":["gZz9A8k8ORC_xl0aHxtY4w"]}},{"name":"search","description":"Search Yelp by keyword or category and location. Returns up to 25 ranked businesses with business ID, name, URL, rating, review count, price, categories, address and photo. Supports recommended, rating, review_count and distance ordering. One page only; pagination and advanced filters are unavailable.","required_params":["term","location"],"optional_params":["limit","sort_by"],"params":[{"name":"term","type":"string","required":true,"description":"What to search for — a keyword, dish, service or category (e.g. 'Pizza', 'coffee shop', 'plumber', 'Mexican').","on_invalid":"reject","example":"Pizza","aliases":["search_term","find_desc","query","q","category"]},{"name":"location","type":"string","required":true,"description":"Where to search. Use a full, exact location like the Yelp site expects — 'San Francisco, CA' or a neighborhood, not just 'San Francisco'.","on_invalid":"reject","example":"San Francisco, CA","aliases":["find_loc","loc"]},{"name":"limit","type":"integer","required":false,"description":"Maximum businesses to return (1-25). One page only.","on_invalid":"reject","default":10,"minimum":1,"maximum":25},{"name":"sort_by","type":"enum","required":false,"description":"Result ordering (Yelp's own search sorts).","on_invalid":"ignore","allowed_values":[{"value":"recommended","label":"Yelp's default best-match ranking"},{"value":"rating","label":"Highest rated first"},{"value":"review_count","label":"Most reviewed first"},{"value":"distance","label":"Nearest to the location first"}],"default":"recommended","aliases":["sortBy"]}],"returns":"results[]{enc_biz_id, name, slug, url, rating, review_count, price, price_level, categories[], address, city, state, neighborhoods[], image} + meta{parse_source, offset, limit}","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"term":"Pizza","location":"San Francisco, CA","limit":10}},{"name":"popular_dishes","description":"Get a restaurant's popular dishes from Yelp — the 'Popular dishes' section shown on the Yelp business page — returning each dish's name and photo. Identify the restaurant by its Yelp business URL, its Yelp business ID (from the search or business details actions), or its Yelp slug. Restaurant pages only; returns an empty list when Yelp shows no popular dishes for that restaurant.","required_params":[],"optional_params":["business_url","business_id","slug","limit"],"params":[{"name":"business_url","type":"string","required":false,"description":"The restaurant's Yelp business page URL (any yelp.com/biz/… link). Provide this OR business_id OR slug.","on_invalid":"ignore","example":"https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco","aliases":["url"]},{"name":"business_id","type":"string","required":false,"description":"The restaurant's Yelp business ID — as returned by the search or business/details actions (e.g. v1DHGRNCH9247WLYoaoA9A).","on_invalid":"ignore","example":"v1DHGRNCH9247WLYoaoA9A","aliases":["encBizId","enc_biz_id","id"]},{"name":"slug","type":"string","required":false,"description":"The restaurant's Yelp slug (the part after /biz/ in the URL).","on_invalid":"ignore","example":"tonys-pizza-napoletana-san-francisco"},{"name":"limit","type":"integer","required":false,"description":"Max dishes to return (1–50).","on_invalid":"ignore","default":20,"minimum":1,"maximum":50}],"returns":"dishes[]{name, image, photo_id} + count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"menus","description":"Get a restaurant's menu from Yelp when Yelp hosts it — returning menu sections with each item's name, description, price and photo. Identify the restaurant by its Yelp business URL, Yelp business ID, or slug. Only menus hosted on Yelp are returned; many restaurants link to an external menu, which Yelp has no structured data for — `menu_available` is false in those cases.","required_params":[],"optional_params":["business_url","business_id","slug"],"params":[{"name":"business_url","type":"string","required":false,"description":"The restaurant's Yelp business page URL (any yelp.com/biz/… link).","on_invalid":"ignore","example":"https://www.yelp.com/biz/the-pizza-shop-by-flour-hoboken","aliases":["url"]},{"name":"business_id","type":"string","required":false,"description":"The restaurant's Yelp business ID (from search or business details).","on_invalid":"ignore","example":"5uUs2b4bQdS3WS8z16LJKw","aliases":["encBizId","enc_biz_id","id"]},{"name":"slug","type":"string","required":false,"description":"The restaurant's Yelp slug (the part after /biz/ in the URL).","on_invalid":"ignore","example":"the-pizza-shop-by-flour-hoboken"}],"returns":"sections[]{section, items[]{name, description, price, image}} + section_count + item_count + menu_available","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"business/photos","description":"Get a Yelp business's photos — the images shown on its Yelp page, with captions and categories (food, menu, interior, etc.) where Yelp provides them. Identify the business by its Yelp business URL, Yelp business ID, or slug.","required_params":[],"optional_params":["business_url","business_id","slug","limit"],"params":[{"name":"business_url","type":"string","required":false,"description":"The business's Yelp page URL (any yelp.com/biz/… link). Provide this OR business_id OR slug.","on_invalid":"ignore","example":"https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco","aliases":["url"]},{"name":"business_id","type":"string","required":false,"description":"The business's Yelp business ID (from the search or business/details actions).","on_invalid":"ignore","example":"mSMZJj2pFvttWLpcDmgrEA","aliases":["encBizId","enc_biz_id","id"]},{"name":"slug","type":"string","required":false,"description":"The business's Yelp slug (the part after /biz/ in the URL).","on_invalid":"ignore","example":"tonys-pizza-napoletana-san-francisco"},{"name":"limit","type":"integer","required":false,"description":"Max photos to return (1–200).","on_invalid":"ignore","default":60,"minimum":1,"maximum":200}],"returns":"photos[]{url, caption, category} + count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"tonys-pizza-napoletana-san-francisco","limit":8}},{"name":"review_highlights","description":"Get a Yelp business's review highlights — the recurring phrases reviewers mention (e.g. 'happy hour', 'great service'), each with a sample snippet from a real review. A fast at-a-glance read on what the business is known for. Identify the business by its Yelp business URL, Yelp business ID, or slug.","required_params":[],"optional_params":["business_url","business_id","slug","limit"],"params":[{"name":"business_url","type":"string","required":false,"description":"The business's Yelp page URL. Provide this OR business_id OR slug.","on_invalid":"ignore","example":"https://www.yelp.com/biz/tonys-pizza-napoletana-san-francisco","aliases":["url"]},{"name":"business_id","type":"string","required":false,"description":"The business's Yelp business ID (from search or business/details).","on_invalid":"ignore","example":"mSMZJj2pFvttWLpcDmgrEA","aliases":["encBizId","enc_biz_id","id"]},{"name":"slug","type":"string","required":false,"description":"The business's Yelp slug (the part after /biz/ in the URL).","on_invalid":"ignore","example":"tonys-pizza-napoletana-san-francisco"},{"name":"limit","type":"integer","required":false,"description":"Max highlights to return (1–30).","on_invalid":"ignore","default":15,"minimum":1,"maximum":30}],"returns":"highlights[]{phrase, snippet} + count","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"slug":"tonys-pizza-napoletana-san-francisco","limit":6}},{"name":"business/url-to-id","description":"Convert any yelp.com/biz/… business page URL into the Yelp business ID used by business/details, business/reviews, popular_dishes and menus.","required_params":["business_url"],"optional_params":[],"params":[{"name":"business_url","type":"string","required":true,"description":"Any yelp.com/biz/… business page URL (any subdomain). Returns that business's Yelp business ID.","on_invalid":"reject","example":"https://www.yelp.com/biz/mancinis-wood-fired-pizza-brooklyn-2","aliases":["url","biz_url"]}],"returns":"{enc_biz_id, name, slug, url}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"business/search","description":"Find a Yelp business by name (plus optional location) and return its Yelp business ID, name and Yelp URL. Pass the business ID straight into business/reviews or business/details. No Yelp account required.","required_params":["name"],"optional_params":["location","limit","resolveAll"],"params":[{"name":"name","type":"string","required":true,"description":"Business name to look up on Yelp — e.g. 'Blue Bottle Coffee'.","on_invalid":"reject","example":"Blue Bottle Coffee"},{"name":"location","type":"string","required":false,"description":"City / neighborhood to disambiguate same-named branches (strongly recommended).","on_invalid":"ignore","example":"San Francisco"},{"name":"limit","type":"integer","required":false,"description":"Max ranked candidate matches to return (1–10).","on_invalid":"ignore","default":5,"minimum":1,"maximum":10},{"name":"resolveAll","type":"boolean","required":false,"description":"Resolve the Yelp business ID for every returned candidate (uses more calls). Default: resolve only the top match.","on_invalid":"reject","default":false}],"returns":"results[]{enc_biz_id, name, slug, url, subtitle, name_similarity} (ranked by name match; the top result's business ID is always resolved)","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"name":"Blue Bottle Coffee","location":"San Francisco"}}]},{"name":"youtube","category":{"id":"media","title":"Media, Film & Knowledge"},"title":"YouTube API — search (with filters) videos, channels, playlists and shorts; get video details, comments (top/newest), related videos, channel info and About panel, playlist and channel-uploads listings, and video transcripts/captions","version":"0.1.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/youtube/v1","spec_available":true,"actions":[{"name":"search","description":"search videos/channels/playlists/shorts with filters (upload date, duration, sort order, features)","required_params":["query"],"optional_params":["type","limit","continuation","upload_date","duration","sort_by","features"],"params":[{"name":"query","type":"string","required":false,"description":"Search keywords. Provide `query` for a new search, or `continuation` for the next page.","on_invalid":"reject","example":"lofi hip hop","aliases":["q"]},{"name":"type","type":"enum","required":false,"description":"Restrict results to one result kind.","on_invalid":"reject","allowed_values":[{"value":"all","label":"Everything"},{"value":"video","label":"Videos"},{"value":"channel","label":"Channels"},{"value":"playlist","label":"Playlists"},{"value":"movie","label":"Movies"},{"value":"shorts","label":"Shorts"}],"default":"all","example":"video"},{"name":"upload_date","type":"enum","required":false,"description":"Filter by how recently the video was uploaded.","on_invalid":"reject","allowed_values":[{"value":"hour","label":"Last hour"},{"value":"today","label":"Today"},{"value":"week","label":"This week"},{"value":"month","label":"This month"},{"value":"year","label":"This year"}],"example":"week"},{"name":"duration","type":"enum","required":false,"description":"Filter by video length.","on_invalid":"reject","allowed_values":[{"value":"short","label":"Under 4 minutes"},{"value":"medium","label":"4-20 minutes"},{"value":"long","label":"Over 20 minutes"}],"example":"long"},{"name":"sort_by","type":"enum","required":false,"description":"Order the results.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance"},{"value":"date","label":"Upload date (newest)"},{"value":"views","label":"View count"},{"value":"rating","label":"Rating"}],"default":"relevance","example":"date"},{"name":"features","type":"string","required":false,"description":"Comma-separated feature filters: live, 4k, hd, subtitles/cc, creative_commons, 360, hdr, location, purchased, 3d.","on_invalid":"ignore","example":"hd,cc"},{"name":"limit","type":"integer","required":false,"description":"How many items to return (1-200). Paged internally; clamped to range.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":200},{"name":"continuation","type":"string","required":false,"description":"Next-page token from a previous response's `continuation` (provide this instead of the primary id to fetch the next page).","on_invalid":"ignore","example":""}],"returns":"results[] (type-tagged: video/shorts/channel/playlist rows), count, estimated_results, continuation (next-page token), query, type","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"lofi hip hop","type":"video","limit":20}},{"name":"video_detail","description":"video metadata: title/views/likes/date/channel/description (+ duration/keywords/thumbnails/caption-langs best-effort)","required_params":["video_id"],"optional_params":[],"params":[{"name":"video_id","type":"string","required":true,"description":"YouTube video id (11 chars) or any watch/youtu.be/shorts/embed URL.","on_invalid":"reject","example":"dQw4w9WgXcQ","aliases":["videoId","id"]}],"returns":"video record: title, views, likes, published_date, channel{name,channel_id,subscribers}, description, how_this_was_made{altered_or_synthetic,auto_dubbed,label,text}, +length_seconds/keywords/thumbnails/available_captions","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"video_id":"dQw4w9WgXcQ"}},{"name":"video_details","description":"BATCH engagement enrichment — pass up to 50 video_ids in ONE call, get likes + description (+ optional comment_count) per video. Built to enrich channel_videos/channel_shorts lists (which don't carry likes) without one call per video.","required_params":["video_ids"],"optional_params":["include_comment_count"],"params":[{"name":"video_ids","type":"array","required":false,"description":"Up to 50 video ids or watch URLs to enrich in one batch.","on_invalid":"reject","example":["dQw4w9WgXcQ","9bZkp7q19f0"]},{"name":"include_comment_count","type":"boolean","required":false,"description":"Also fetch total comment_count per video (1 extra call/video → higher cost+latency). Default off (likes + description only).","on_invalid":"ignore","default":false}],"returns":"videos[]{video_id, title, views, likes, published_date, description, channel_id, channel_name, how_this_was_made{altered_or_synthetic,auto_dubbed,label,text}, comment_count?} + count + requested + failed[]","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"comments","description":"video comments (text/author/likes/replies), paginated, sortable by top or newest","required_params":["video_id"],"optional_params":["limit","continuation","sort"],"params":[{"name":"video_id","type":"string","required":false,"description":"YouTube video id (11 chars) or any watch/youtu.be/shorts/embed URL.","on_invalid":"reject","example":"dQw4w9WgXcQ","aliases":["videoId","id"]},{"name":"limit","type":"integer","required":false,"description":"How many items to return (1-200). Paged internally; clamped to range.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":200},{"name":"sort","type":"enum","required":false,"description":"Comment ordering (ignored when paging an existing `continuation`).","on_invalid":"reject","allowed_values":[{"value":"top","label":"Top comments"},{"value":"newest","label":"Newest first"}],"default":"top","example":"newest"},{"name":"continuation","type":"string","required":false,"description":"Next-page token from a previous response's `continuation` (provide this instead of the primary id to fetch the next page).","on_invalid":"ignore","example":""}],"returns":"comments[]{text, author, likes, reply_count, published, is_reply}, count, continuation, sort, top_level_count","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"video_id":"dQw4w9WgXcQ","limit":20}},{"name":"channel","description":"channel detail: subs/videoCount/description/links","required_params":["channel_id"],"optional_params":["handle","url"],"params":[{"name":"channel_id","type":"string","required":true,"description":"Channel id (UC…), an @handle, or a channel URL — any one resolves the channel.","on_invalid":"reject","example":"UCX6OQ3DkcsbYNE6H8uQQuVA","aliases":["handle","url","browseId","id"]}],"returns":"channel record: title, channel_id, handle, subscribers, video_count, description, external_links[], avatar","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"channel_id":"UCX6OQ3DkcsbYNE6H8uQQuVA"}},{"name":"transcript","description":"video transcript/captions (timed segments + full text) select any language the video has via 'lang'; format=text|segments","required_params":["video_id"],"optional_params":["lang","format"],"params":[{"name":"video_id","type":"string","required":true,"description":"YouTube video id (11 chars) or any watch/youtu.be/shorts/embed URL.","on_invalid":"reject","example":"dQw4w9WgXcQ","aliases":["videoId","id"]},{"name":"lang","type":"string","required":false,"description":"Preferred caption language code (e.g. en, es, de). Falls back to an available track; see available_languages in the response.","on_invalid":"ignore","default":"en","example":"en","aliases":["language"]},{"name":"format","type":"enum","required":false,"description":"Output shape. 'text' omits the per-cue segments[] array.","on_invalid":"ignore","allowed_values":[{"value":"segments","label":"Timed segments + full text"},{"value":"text","label":"Full text only"}],"default":"segments","example":"segments"}],"returns":"transcript: language, language_code, is_generated, segment_count, duration_ms, text, segments[]{start_ms,dur_ms,text}, available_languages[]","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":{"video_id":"dQw4w9WgXcQ","lang":"en"}},{"name":"playlist","description":"list a playlist's videos (id/title/channel/duration/position), paginated","required_params":["playlist_id"],"optional_params":["limit","continuation"],"params":[{"name":"playlist_id","type":"string","required":false,"description":"Playlist id (PL…/UU…/OLAK…), a full playlist URL (…?list=…), or a VL… browseId.","on_invalid":"reject","example":"PLFgquLnL59alCl_2TQvOiD5Vgm1hCaGSI","aliases":["list","url","id"]},{"name":"limit","type":"integer","required":false,"description":"How many items to return (1-200). Paged internally; clamped to range.","on_invalid":"ignore","default":100,"example":100,"minimum":1,"maximum":200},{"name":"continuation","type":"string","required":false,"description":"Next-page token from a previous response's `continuation` (provide this instead of the primary id to fetch the next page).","on_invalid":"ignore","example":""}],"returns":"items[]{video_id, title, channel, channel_id, duration, views, position, thumbnails, url}, count, continuation, playlist_id, playlist_title","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"playlist_id":"PL15B1E77BB5708555","limit":20}},{"name":"channel_videos","description":"a channel's uploads (Videos tab): video_id/title/views/duration, paginated","required_params":["channel_id"],"optional_params":["handle","url","limit","continuation"],"params":[{"name":"channel_id","type":"string","required":true,"description":"Channel id (UC…), an @handle, or a channel URL — any one resolves the channel.","on_invalid":"reject","example":"UCX6OQ3DkcsbYNE6H8uQQuVA","aliases":["handle","url","browseId","id"]},{"name":"limit","type":"integer","required":false,"description":"How many items to return (1-200). Paged internally; clamped to range.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":200},{"name":"continuation","type":"string","required":false,"description":"Next-page token from a previous response's `continuation` (provide this instead of the primary id to fetch the next page).","on_invalid":"ignore","example":""}],"returns":"videos[]{video_id, title, channel, views, published, duration, thumbnails, url}, count, continuation, channel_id","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"channel_id":"UCX6OQ3DkcsbYNE6H8uQQuVA","limit":20}},{"name":"channel_shorts","description":"a channel's Shorts tab (video_id/title/views/views_int/thumbnails), paginated — the Shorts that the Videos tab (channel_videos) omits; works for shorts-only channels","required_params":["channel_id"],"optional_params":["handle","url","limit","continuation"],"params":[{"name":"channel_id","type":"string","required":true,"description":"Channel id (UC…), an @handle, or a channel URL — any one resolves the channel.","on_invalid":"reject","example":"UCX6OQ3DkcsbYNE6H8uQQuVA","aliases":["handle","url","browseId","id"]},{"name":"limit","type":"integer","required":false,"description":"How many items to return (1-200). Paged internally; clamped to range.","on_invalid":"ignore","default":30,"example":30,"minimum":1,"maximum":200},{"name":"continuation","type":"string","required":false,"description":"Next-page token from a previous response's `continuation` (provide this instead of the primary id to fetch the next page).","on_invalid":"ignore","example":""}],"returns":"shorts[]{video_id, title, views, views_int, thumbnails, url}, count, continuation, channel_id","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"channel_id":"UCX6OQ3DkcsbYNE6H8uQQuVA","limit":20}},{"name":"related","description":"recommended/related videos for a video_id (from the watch page)","required_params":["video_id"],"optional_params":["limit"],"params":[{"name":"video_id","type":"string","required":true,"description":"YouTube video id (11 chars) or any watch/youtu.be/shorts/embed URL.","on_invalid":"reject","example":"dQw4w9WgXcQ","aliases":["videoId","id"]},{"name":"limit","type":"integer","required":false,"description":"How many items to return (1-200). Paged internally; clamped to range.","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":200}],"returns":"related[]{video_id, title, channel, channel_id, views, published, duration, thumbnails, url}, count, video_id","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"video_id":"dQw4w9WgXcQ","limit":15}},{"name":"channel_about","description":"full channel About panel: total views, joined date, country, links, description","required_params":["channel_id"],"optional_params":["handle","url"],"params":[{"name":"channel_id","type":"string","required":true,"description":"Channel id (UC…), an @handle, or a channel URL — any one resolves the channel.","on_invalid":"reject","example":"UCX6OQ3DkcsbYNE6H8uQQuVA","aliases":["handle","url","browseId","id"]}],"returns":"channel_id, description, country, joined_date, view_count, video_count, subscribers, canonical_url, links[]{title, link}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{"channel_id":"UCX6OQ3DkcsbYNE6H8uQQuVA"}}]},{"name":"zalando","category":{"id":"ecommerce","title":"E-commerce & Marketplaces"},"title":"Zalando API — EU fashion product search, category browse, product detail, sizes & reviews (zalando.de/.co.uk/.fr + 6 more)","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/zalando/v1","spec_available":true,"actions":[{"name":"search","description":"Search Zalando by keyword — returns product cards with name, brand, SKU, price, color, images and product URL. Filterable by brand, price range and category; paginated.","required_params":["q"],"optional_params":["country","page","category","order","brand","min_price","max_price"],"params":[{"name":"q","type":"string","required":true,"description":"Search keyword.","on_invalid":"reject","example":"nike sneaker","aliases":["query"]},{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"category","type":"string","required":false,"description":"Optional category slug to scope the search to.","on_invalid":"reject","aliases":["path"]},{"name":"order","type":"enum","required":false,"description":"Sort order.","on_invalid":"ignore","allowed_values":[{"value":"popularity","label":"Most popular"},{"value":"price","label":"Price low to high"},{"value":"price_desc","label":"Price high to low"},{"value":"newest","label":"Newest"},{"value":"sale","label":"Sale"}],"example":"price","aliases":["sort"]},{"name":"brand","type":"string","required":false,"description":"Filter by brand (slugified), e.g. nike-sportswear.","on_invalid":"reject","example":"nike"},{"name":"min_price","type":"number","required":false,"description":"Minimum price (store currency).","on_invalid":"ignore","example":50},{"name":"max_price","type":"number","required":false,"description":"Maximum price (store currency).","on_invalid":"ignore","example":200}],"returns":"results[] (name, brand, sku, price, color, images, url), page, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"q":"nike","country":"de"}},{"name":"category","description":"Browse Zalando products by category (e.g. herrenschuhe-sneaker) — returns listing cards with name, brand, price and images. Filterable and paginated.","required_params":["category"],"optional_params":["country","page","order","brand","min_price","max_price"],"params":[{"name":"category","type":"string","required":true,"description":"Zalando category slug, e.g. herrenschuhe-sneaker (discover via the categories action).","on_invalid":"reject","example":"herrenschuhe-sneaker","aliases":["path"]},{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"order","type":"enum","required":false,"description":"Sort order.","on_invalid":"ignore","allowed_values":[{"value":"popularity","label":"Most popular"},{"value":"price","label":"Price low to high"},{"value":"price_desc","label":"Price high to low"},{"value":"newest","label":"Newest"},{"value":"sale","label":"Sale"}],"example":"price","aliases":["sort"]},{"name":"brand","type":"string","required":false,"description":"Filter by brand (slugified), e.g. nike-sportswear.","on_invalid":"reject","example":"nike"},{"name":"min_price","type":"number","required":false,"description":"Minimum price (store currency).","on_invalid":"ignore","example":50},{"name":"max_price","type":"number","required":false,"description":"Maximum price (store currency).","on_invalid":"ignore","example":200}],"returns":"results[] listing cards, category, page, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"category":"herrenschuhe-sneaker","country":"de"}},{"name":"sale","description":"On-sale / discounted Zalando products — the outlet grid with original price, current price, discount percent (0-100) and discount amount (money off). Scope to a category, otherwise lands on the country's sale/outlet section. Paginated.","required_params":[],"optional_params":["country","category","page","brand","min_price","max_price"],"params":[{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"},{"name":"category","type":"string","required":false,"description":"Optional category slug to limit the sale to (e.g. herrenschuhe-sneaker). Omit for the whole sale section.","on_invalid":"reject","aliases":["path"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"brand","type":"string","required":false,"description":"Filter by brand (slugified), e.g. nike-sportswear.","on_invalid":"reject","example":"nike"},{"name":"min_price","type":"number","required":false,"description":"Minimum price (store currency).","on_invalid":"ignore","example":20},{"name":"max_price","type":"number","required":false,"description":"Maximum price (store currency).","on_invalid":"ignore","example":100}],"returns":"results[] (name, brand, sku, price, original_price, discount_percent (0-100), discount_amount (money off, store currency), on_sale, url), category, page, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"new_arrivals","description":"Newest Zalando products in a category, sorted newest-first. Scope to a category (e.g. damenschuhe-sneaker), otherwise lands on the country's primary section. Paginated.","required_params":[],"optional_params":["country","category","page","brand","min_price","max_price"],"params":[{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"},{"name":"category","type":"string","required":false,"description":"Optional category slug (e.g. damenschuhe-sneaker). Omit for the country's primary section.","on_invalid":"reject","aliases":["path"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"brand","type":"string","required":false,"description":"Filter by brand (slugified), e.g. nike-sportswear.","on_invalid":"reject","example":"nike"},{"name":"min_price","type":"number","required":false,"description":"Minimum price (store currency).","on_invalid":"ignore","example":20},{"name":"max_price","type":"number","required":false,"description":"Maximum price (store currency).","on_invalid":"ignore","example":200}],"returns":"results[] listing cards (newest first), category, page, total, has_more, next_page","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"product","description":"Full Zalando product detail by URL or SKU — name, brand, price, color, gallery images, available sizes, rating and attributes.","required_params":[],"optional_params":["url","sku","country"],"params":[{"name":"url","type":"string","required":false,"description":"Full Zalando product URL (.html). (product needs url OR sku.)","on_invalid":"reject","example":"https://www.zalando.de/nike-sportswear-air-force-1-07-sneaker-low-white-ni112n022-a11.html"},{"name":"sku","type":"string","required":false,"description":"Zalando SKU, e.g. NI112N022-A11 (resolved from url when omitted).","on_invalid":"reject"},{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"}],"returns":"product{} — name, brand, sku, price, color, images, sizes, rating, attributes","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{"url":"https://www.zalando.de/nike-sportswear-air-force-1-07-sneaker-low-white-ni112n022-a11.html","country":"de"}},{"name":"similar","description":"Products similar to a given Zalando item — pulled from the product page recommendation cards.","required_params":[],"optional_params":["url","sku","country"],"params":[{"name":"url","type":"string","required":false,"description":"Full Zalando product URL (.html). (product needs url OR sku.)","on_invalid":"reject","example":"https://www.zalando.de/nike-sportswear-air-force-1-07-sneaker-low-white-ni112n022-a11.html"},{"name":"sku","type":"string","required":false,"description":"Zalando SKU, e.g. NI112N022-A11 (resolved from url when omitted).","on_invalid":"reject"},{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"}],"returns":"results[] related products (name, brand, price, url), sku","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"variants","description":"All size variants for a Zalando product with in-stock flags — useful for monitoring stock availability.","required_params":[],"optional_params":["url","sku","country"],"params":[{"name":"url","type":"string","required":false,"description":"Full Zalando product URL (.html). (product needs url OR sku.)","on_invalid":"reject","example":"https://www.zalando.de/nike-sportswear-air-force-1-07-sneaker-low-white-ni112n022-a11.html"},{"name":"sku","type":"string","required":false,"description":"Zalando SKU, e.g. NI112N022-A11 (resolved from url when omitted).","on_invalid":"reject"},{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"}],"returns":"variants[] {size, sku, in_stock}, sku","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"brands","description":"Distinct brands present in a given Zalando listing — the brands found across the product cards of the supplied category or keyword search (one listing page, not Zalando's full brand directory). Useful for building brand filter chips for that listing. Pass category or q; defaults to the country's primary section.","required_params":[],"optional_params":["country","category","q","page"],"params":[{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"},{"name":"category","type":"string","required":false,"description":"Category slug to collect brands from (e.g. herrenschuhe-sneaker). Defaults to the country's primary section.","on_invalid":"reject","aliases":["path"]},{"name":"q","type":"string","required":false,"description":"Keyword to collect brands from instead of a category.","on_invalid":"reject","aliases":["query"]},{"name":"page","type":"integer","required":false,"description":"Result page (1-based). Page forward with meta.next_page.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"brands[] {name, slug}, source (category|query), scope","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"categories","description":"Top-level Zalando category links for a country, live-discovered from that TLD's own localized homepage navigation — so each country returns its real localized paths (fr: femme/homme/enfant, it: donna/uomo/bambini, es: mujer/hombre, nl: dames/heren, pl: kobiety/mezczyzni …), feed these paths to the category / sale / new_arrivals actions.","required_params":[],"optional_params":["country","gender"],"params":[{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"},{"name":"gender","type":"string","required":false,"description":"Optional gender to filter seeds (e.g. women, men, kids).","on_invalid":"reject"}],"returns":"categories[] {name, path, url}","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"filters","description":"Discover which sort and filter options are available for Zalando listings, including price range, brand and sort order.","required_params":[],"optional_params":["country","category","q"],"params":[{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"},{"name":"category","type":"string","required":false,"description":"Category to live-probe sort behaviour against.","on_invalid":"reject","aliases":["path"]},{"name":"q","type":"string","required":false,"description":"Keyword context (optional).","on_invalid":"reject","aliases":["query"]}],"returns":"sort_options[], supported_query_params, live_probe, notes","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"reviews","description":"Customer reviews and overall rating summary for a Zalando product (when reviews are embedded on the product page).","required_params":[],"optional_params":["url","sku","country"],"params":[{"name":"url","type":"string","required":false,"description":"Full Zalando product URL (.html). (product needs url OR sku.)","on_invalid":"reject","example":"https://www.zalando.de/nike-sportswear-air-force-1-07-sneaker-low-white-ni112n022-a11.html"},{"name":"sku","type":"string","required":false,"description":"Zalando SKU, e.g. NI112N022-A11 (resolved from url when omitted).","on_invalid":"reject"},{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"}],"returns":"reviews[], rating{average, count}, reviews_count, available","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}},{"name":"attributes","description":"Product attribute clusters for a Zalando item — material composition, care instructions and other structured attributes from the product page.","required_params":[],"optional_params":["url","sku","country"],"params":[{"name":"url","type":"string","required":false,"description":"Full Zalando product URL (.html). (product needs url OR sku.)","on_invalid":"reject","example":"https://www.zalando.de/nike-sportswear-air-force-1-07-sneaker-low-white-ni112n022-a11.html"},{"name":"sku","type":"string","required":false,"description":"Zalando SKU, e.g. NI112N022-A11 (resolved from url when omitted).","on_invalid":"reject"},{"name":"country","type":"enum","required":false,"description":"Zalando country edition (TLD) — sets language and currency.","on_invalid":"reject","allowed_values":[{"value":"de","label":"Germany"},{"value":"uk","label":"United Kingdom"},{"value":"gb","label":"United Kingdom"},{"value":"fr","label":"France"},{"value":"nl","label":"Netherlands"},{"value":"it","label":"Italy"},{"value":"es","label":"Spain"},{"value":"pl","label":"Poland"}],"default":"de","example":"de"}],"returns":"attribute_categories[] {category_name, attributes[{key,value}]}, available","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"zappos","category":{"id":"other","title":"Other"},"title":"Zappos API — search zappos.com for shoes, boots, sandals, clothing, bags, accessories, eyewear and watches, and pull a full product with every colourway, every size and width, per-variant price, per-variant units in stock, ASIN, UPC, brand, description, measurements, ratings and images — no API key or account required","version":"1.0.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/zappos/v1","spec_available":true,"actions":[{"name":"search","description":"Search the Zappos catalog. Give a `query` ('running shoes', 'hiking boots', 'nike air max', 'womens dresses') and get back 100 products per page, each with Zappos' own product id, style id and colour id, price and list price, discount, units in stock, star rating, review count, badges, the full image set, and the product's OTHER colourways inline. Narrow with brand, colour, gender, size, width, department, category, material, style, feature, occasion, pattern, theme, price bucket and an on-sale switch; sort by price, rating, newest or best sellers. Every filter value your query actually supports — with the number of products behind it — is returned in `filters_available`, so you never have to guess.","required_params":["query"],"optional_params":["max_results","page","sort","brand","color","gender","size","width","category","department","material","style","feature","occasion","pattern","theme","price_range","on_sale","exclude","lean"],"params":[{"name":"query","type":"string","required":true,"description":"What to search for on zappos.com — a category ('running shoes', 'hiking boots', 'womens dresses'), a brand + category ('nike air max', 'ugg slippers'), or a product name. Zappos auto-narrows obvious queries to a department (searching 'running shoes' selects Shoes for you); whatever it decided is reported back in `applied_filters`.","on_invalid":"reject","example":"running shoes","aliases":["q","term","keyword","text","search"]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return (1-400). Zappos paginates 100 per page; asking for more than 100 fetches the following pages automatically, up to four.","on_invalid":"ignore","default":100,"minimum":1,"maximum":400,"aliases":["limit","max","count"]},{"name":"page","type":"integer","required":false,"description":"Which result page to start from (1-based, 100 products per page). Page until `meta.pagination.has_more` is false.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":100},{"name":"sort","type":"enum","required":false,"description":"Result ordering, using Zappos' own six options. Omit for Zappos' relevance ranking. NOTE (measured, not a bug): every ordering other than relevance also DROPS the products that have no value for the sort key — sorting 'hiking boots' by rating takes the result count from 462 to 343, because 119 products have no rating yet. `meta.pagination.total_results` always reports the count for the request you actually made.","on_invalid":"reject","allowed_values":[{"value":"relevance","label":"Relevance (Zappos default)"},{"value":"newest","label":"New Arrivals"},{"value":"rating","label":"Customer Rating"},{"value":"best_sellers","label":"Best Sellers"},{"value":"price_low","label":"Price: Low to High"},{"value":"price_high","label":"Price: High to Low"}],"example":"price_low","aliases":["order","sort_by"]},{"name":"brand","type":"string","required":false,"description":"Only this brand, written the way Zappos writes it (Nike, adidas, Merrell, UGG, Dr. Martens). The full brand list for your query, with result counts, comes back in `filters_available.realBrandNameFacet`.","on_invalid":"ignore","example":"Merrell"},{"name":"color","type":"string","required":false,"description":"Only this colour family — Zappos groups colours into about fourteen families (Black, Brown, Gray, White, Blue, Green, Red, Pink, Purple, Tan, Multi, Metallic, Yellow, Orange). Live values in `filters_available.colorFacet`.","on_invalid":"ignore","example":"Black"},{"name":"gender","type":"string","required":false,"description":"Men, Women, Boys or Girls — Zappos' own audience facet. Live values in `filters_available.txAttrFacet_Gender`.","on_invalid":"ignore","example":"Women","aliases":["sex","audience"]},{"name":"size","type":"string","required":false,"description":"Only products available in this size. Zappos uses a different size facet per audience (Men's Shoe Size, Women's Shoe Size, Kids' Shoe Sizes, clothing sizes), so pass the size the way it is printed — '10', '10.5', 'Large', '8 Toddler' — and the engine picks the size facet your query actually offers. Live values are the `filters_available` entries whose label contains 'Size'.","on_invalid":"ignore","example":"10"},{"name":"width","type":"string","required":false,"description":"Only products available in this width — Narrow, Medium, Wide, Extra Wide, Extra-Extra Wide (footwear only). Live values are the `filters_available` entries whose label contains 'Width'.","on_invalid":"ignore","example":"Wide"},{"name":"category","type":"string","required":false,"description":"Zappos' second-level category (Boots, Sneakers & Athletic Shoes, Sandals, Hiking, Dresses, Backpacks…). Live values in `filters_available.zc2`.","on_invalid":"ignore","example":"Boots","aliases":["subcategory"]},{"name":"department","type":"string","required":false,"description":"Zappos' top-level department (Shoes, Clothing, Bags, Accessories, Eyewear, Watches). Live values in `filters_available.zc1`.","on_invalid":"ignore","example":"Shoes","aliases":["dept"]},{"name":"material","type":"string","required":false,"description":"Leather, Suede, Canvas, Mesh, Nylon, Rubber, Synthetic, Textile. Live values in `filters_available.txAttrFacet_Materials`.","on_invalid":"ignore","example":"Leather"},{"name":"style","type":"string","required":false,"description":"Zappos' style facet (Athletic, Bootie, Chukka, Comfort, Duck Boot, Western…). Live values in `filters_available.txAttrFacet_Styles`.","on_invalid":"ignore","example":"Chukka"},{"name":"feature","type":"string","required":false,"description":"A product feature Zappos tags (Waterproof, Arch Support, Insulated, Lightweight, Slip Resistant, Moisture Wicking…). Live values in `filters_available.txAttrFacet_Features`.","on_invalid":"ignore","example":"Waterproof"},{"name":"occasion","type":"string","required":false,"description":"Athletic, Casual, Dress, Outdoor, Work & Duty. Live values in `filters_available.txAttrFacet_Occasion`.","on_invalid":"ignore","example":"Outdoor"},{"name":"pattern","type":"string","required":false,"description":"Camo, Distressed, Logo, Quilted, Solid, Woven… Live values in `filters_available.txAttrFacet_Pattern`.","on_invalid":"ignore","example":"Solid"},{"name":"theme","type":"string","required":false,"description":"Action Sports, Summer, Western, Winter. Live values in `filters_available.txAttrFacet_Theme`.","on_invalid":"ignore","example":"Winter"},{"name":"price_range","type":"string","required":false,"description":"One of Zappos' price buckets — '$50 and Under', '$100 and Under', '$200 and Under', '$200 and Over'. Zappos publishes buckets, not a free min/max range; live values in `filters_available.priceFacet`.","on_invalid":"ignore","example":"$100 and Under","aliases":["price_bucket"]},{"name":"on_sale","type":"boolean","required":false,"description":"Only products Zappos currently marks as on sale.","on_invalid":"ignore","default":false,"aliases":["sale","discounted"]},{"name":"exclude","type":"array","required":false,"description":"Leave heavy parts out of the response. Omit it and the response is exactly as before. `filters_available` is about two thirds of a typical search response and `other_colors` about a fifth; dropping them never removes a price, stock, id or the main `image` of a card. Unknown values are ignored.","on_invalid":"ignore","allowed_values":[{"value":"filters_available","label":"the facet vocabulary (about two thirds of a typical response)"},{"value":"other_colors","label":"each card's sibling colourways"},{"value":"images","label":"each card's full image set (the main `image` stays)"}],"example":"filters_available, images"},{"name":"lean","type":"boolean","required":false,"description":"Shorthand for exclude=filters_available,other_colors,images: the cards' ids, names, prices, stock, ratings and main image, nothing else. 12 'running shoes' cards: 134 KB -> 11 KB.","on_invalid":"ignore","default":false}],"returns":"products[]{product_id, style_id, color_id, name, brand, product_type, color, color_detail, genders[], url, price, original_price, currency, on_sale, percent_off, discount_amount, in_stock, units_available, low_stock, is_new, rating, style_rating, review_count, image, images[]{view, url}, swatch_image, has_fabric_swatch, is_couture, badges[], promo_badges[], other_colors[]{style_id, color_id, color, color_detail, price, original_price, percent_off, units_available, rating, review_count, image, url}} + filters_available{<zappos facet field>: {label, multi_select, values[]{value, label, count, selected, apply_url}}} + search{term, original_term, corrected_from, heading, applied_filters}. meta.pagination{page, per_page, total_results, page_count, returned, has_more, next_page}; meta.filters{applied, ignored}. Honest caveats: `units_available` is Zappos' live stock count for that colourway summed over its sizes — search does NOT break it down per size, which is what `product_detail` is for; `rating` is the product-level star average and `style_rating` the colourway's, and both are 0 (not null) on products with no reviews yet, exactly as Zappos publishes them; `other_colors` is present only when Zappos ships the sibling colourways on the card; `swatch_image` exists only for products with a fabric swatch; a filter whose value your query does not offer is reported in `meta.filters.ignored` and is never silently dropped. `exclude` / `lean` drop the named parts (the keys are then absent, not null).","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"running shoes","max_results":40}},{"name":"price","description":"Refresh the current price and stock of one Zappos product, cheaply. Give the `product_id` (optionally `color_id` or `style_id`) and get back every colourway with its price, list price, discount, in-stock flag and units in stock, plus the requested colourway on top. One request, about half the bytes of `product_detail`. Stock is per COLOURWAY (summed over its sizes); for per-size stock, ASIN and UPC use `product_detail`.","required_params":["product_id"],"optional_params":["color_id","style_id","url"],"params":[{"name":"product_id","type":"string","required":true,"description":"Zappos' own PRODUCT id — the number in a zappos.com/product/<id> URL, the `sku` in their schema.org data, and the `product_id` on every `search` result. Always a string of digits; never hashed, composed or re-derived. A style id is NOT accepted here (Zappos does not serve /product/<styleId>) — pass it as `style_id` instead. You may pass the full product URL in `url` rather than this.","on_invalid":"reject","example":"10020684","aliases":["id","productId","product","sku","asin_product"]},{"name":"color_id","type":"string","required":false,"description":"Which colourway to put in `selected_color`. Zappos' own colour id, exactly as `search` returns it. Omit to get the colourway Zappos shows by default. If the id does not belong to this product the call fails with NOT_FOUND and lists the ids that do — it never quietly returns a different colour.","on_invalid":"ignore","example":"1115616","aliases":["colorId","colour_id"]},{"name":"style_id","type":"string","required":false,"description":"Alternative colour selector: Zappos' STYLE id (their SKU for one colourway of one product), as returned by `search`. Resolved to its colour inside the product payload, so it costs no extra request. Use `color_id` OR `style_id`.","on_invalid":"ignore","example":"6597311","aliases":["styleId","style"]},{"name":"url","type":"string","required":false,"description":"A full zappos.com product URL — an alternative to `product_id` (+ `color_id`). Both the short /product/<id>/color/<id> form and the long /p/<slug>/product/<id>/color/<id> form are accepted.","on_invalid":"ignore","example":"https://www.zappos.com/product/10020684/color/1115616","aliases":["product_url","link"]}],"returns":"product_id, name, brand, url, currency, price, original_price, percent_off, on_sale, in_stock, units_available (all for the selected colourway), selected_color{color_id, style_id, color, url, price, original_price, currency, percent_off, on_sale, in_stock, units_available}, colors[] (same shape, every colourway), any_in_stock, price_min, price_max, color_count, source. Honest caveats: when no colour is asked for, the selected colourway is the one Zappos lists first, which can differ from product_detail's default; a product that is sold out in every colour does not appear in Zappos' search index, so for it (and for a colour the index does not list) the engine reads the product page instead: same answer, source 'product_page', slower.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"product_detail","description":"Get one Zappos product in full, by its product id (or its zappos.com URL) — brand, category, gender, the marketing description and every specification bullet, the parsed physical measurements (weight, heel height, shaft, circumference, platform height, bag depth and strap drop where Zappos lists them), size charts, the customer rating with its star histogram and the runs-small / runs-wide / arch-support breakdowns, and the two customer reviews Zappos embeds. Every colourway is returned with its own style id, colour id, price, list price, image set and stock, and the selected colourway is broken down to the SIZE x WIDTH level: one row per purchasable variant with Zappos' stock id, the Amazon ASIN, the manufacturer UPC, that variant's own price and list price, and how many units are in stock right now.","required_params":["product_id"],"optional_params":["color_id","style_id","url","include_all_color_variants"],"params":[{"name":"product_id","type":"string","required":true,"description":"Zappos' own PRODUCT id — the number in a zappos.com/product/<id> URL, the `sku` in their schema.org data, and the `product_id` on every `search` result. Always a string of digits; never hashed, composed or re-derived. A style id is NOT accepted here (Zappos does not serve /product/<styleId>) — pass it as `style_id` instead. You may pass the full product URL in `url` rather than this.","on_invalid":"reject","example":"10020684","aliases":["id","productId","product","sku","asin_product"]},{"name":"color_id","type":"string","required":false,"description":"Which colourway to put in `selected_color`. Zappos' own colour id, exactly as `search` returns it. Omit to get the colourway Zappos shows by default. If the id does not belong to this product the call fails with NOT_FOUND and lists the ids that do — it never quietly returns a different colour.","on_invalid":"ignore","example":"1115616","aliases":["colorId","colour_id"]},{"name":"style_id","type":"string","required":false,"description":"Alternative colour selector: Zappos' STYLE id (their SKU for one colourway of one product), as returned by `search`. Resolved to its colour inside the product payload, so it costs no extra request. Use `color_id` OR `style_id`.","on_invalid":"ignore","example":"6597311","aliases":["styleId","style"]},{"name":"url","type":"string","required":false,"description":"A full zappos.com product URL — an alternative to `product_id` (+ `color_id`). Both the short /product/<id>/color/<id> form and the long /p/<slug>/product/<id>/color/<id> form are accepted.","on_invalid":"ignore","example":"https://www.zappos.com/product/10020684/color/1115616","aliases":["product_url","link"]},{"name":"include_all_color_variants","type":"boolean","required":false,"description":"By default the per-size variant list (stock id, ASIN, UPC, price, units in stock) is returned for the SELECTED colour, and the other colourways come back summarised (price, price range, in-stock flag, variant count). Set true to get the full size grid for EVERY colourway in one response — no extra request, just a much larger payload (a 22-colour sneaker is ~370 variants).","on_invalid":"ignore","default":false,"aliases":["all_variants","full_variants"]}],"returns":"product{product_id, name, full_name, brand, brand_id, brand_url, product_type, category, gender, url, product_url, description, bullets[], measurements{}, size_charts[]{label, url}, breadcrumbs[]{name, url}, video{title, url, embed_url, thumbnail}, rating{average, review_count, histogram_pct, fit_size, fit_width, fit_arch}, fit{size, width, arch}, sample_reviews[]{review_id, rating, text, author, author_byline, date, up_votes, verified_purchase, incentivised, has_media, comfort_rating, look_rating, fit_size, fit_width, fit_arch, also_owns}, color_count, price_min, price_max, currency} + selected_color{color_id, style_id, color, url, price, original_price, percent_off, on_sale, final_sale, badge, image, images[]{view, url}, variant_count, in_stock_variant_count, in_stock, units_available, price_min, price_max, size_axis, widths[], size_ranges[], variants[]{stock_id, asin, upc, size, size_label, size_group, size_system, size_range, size_id, width, width_id, dimensions{}, price, original_price, currency, on_sale, in_stock, units_available, is_placeholder}} + colors[] (the same shape for every colourway; `variants` only on the selected one unless include_all_color_variants=true). Honest caveats: per-variant price IS published and is returned verbatim — it is NOT copied down from the colourway, and where a size genuinely carries no price of its own the field is null rather than filled in; sold-out sizes are still listed, but Zappos replaces their stock id with a synthetic `out_of_stock_…` token and blanks the ASIN/UPC, so those rows come back with `stock_id: null`, `asin: null`, `upc: null` and `is_placeholder: true`; `fit` is null when no customer has rated the fit (Zappos renders its default text at 0%, which we do not pass off as data); `measurements` exists only for the categories Zappos measures (footwear and bags — not clothing, watches or eyewear); `video` and `size_charts` are per-product and usually absent; `sample_reviews` is at most TWO — the most- and least-upvoted — because that is all Zappos embeds in the product page.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":2},"example_params":null}]},{"name":"zara","category":{"id":"other","title":"Other"},"title":"Zara API — search the Zara catalogue in 20 country stores and pull a full product: price with discount and currency, every colourway, every size with its own SKU and live stock status, the full-resolution image gallery, fibre composition, care instructions and country of origin — no API key or account required","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/zara/v1","spec_available":true,"actions":[{"name":"search","description":"Search the Zara catalogue and get back the products on sale right now — each with Zara's own product id, name, price (with the was-price and discount percentage when it is reduced), currency, availability, colourway with hex code, the other colours it comes in, the product images at full resolution, the department and product family, and the link to the page. Choose the country store with `market` (that is what sets the currency), narrow with section, colour, category or brand, sort by price, and page through the results. Every filter value the query actually supports comes back in `filters_available` with counts, so you never have to guess one.","required_params":["query"],"optional_params":["market","section","brand","color","category","sort","max_results","page"],"params":[{"name":"query","type":"string","required":true,"description":"What to look for — a garment, a material + garment, a product name, even a reference ('linen blazer', 'wide leg jeans', 'wool coat', 'scented candle'). Zara matches its own catalogue; when it cannot match the words it silently falls back to semantic similarity, so always read `match.type` in the response (EXACT = the words matched, SPELL_CHECK_LONG = Zara corrected the spelling, SEMANTIC_FALLBACK = the results are only loosely related).","on_invalid":"reject","example":"linen blazer","aliases":["q","keyword","search","searchTerm","text"]},{"name":"market","type":"enum","required":false,"description":"Which Zara country store to read. This decides the catalogue, the assortment, the prices AND the currency — the same product is USD 35.90 in `us`, EUR 22.95 in `de` and GBP 22.99 in `gb`. Prices do NOT depend on where the request comes from, only on this value, so the same market always returns the same currency.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"br","label":"Brazil (BRL)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"de","label":"Germany (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"in","label":"India (INR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"au","label":"Australia (AUD)"}],"default":"us","example":"us","aliases":["country","store","region"]},{"name":"section","type":"enum","required":false,"description":"Restrict to one department. Omit for all of them. (Zara accepts other words here and silently ignores them, so only the four that verifiably filter are offered.)","on_invalid":"reject","allowed_values":[{"value":"woman","label":"Women's"},{"value":"man","label":"Men's"},{"value":"kid","label":"Kids'"},{"value":"home","label":"Zara Home"}],"example":"woman","aliases":["department","gender"]},{"name":"brand","type":"enum","required":false,"description":"Zara's search index is the Inditex index for that store, so a query can return Zara Home and Massimo Dutti products alongside Zara ones (measured: 78% zara, 14% zarahome, 8% massimodutti over 720 rows, and heavily query-dependent — 'candle' is almost entirely Zara Home). Set this to keep only one brand. Zara has no server-side brand filter, so this is applied to the rows after they are fetched: `meta.pagination.total_results` stays Zara's own unfiltered count and `meta.brand_filtered_out` reports how many rows were removed.","on_invalid":"reject","allowed_values":[{"value":"zara","label":"Zara"},{"value":"zarahome","label":"Zara Home"},{"value":"massimodutti","label":"Massimo Dutti"}],"example":"zara"},{"name":"color","type":"string","required":false,"description":"Keep only one colour family. Pass a value from `filters_available.color` (black, beige, blue, brown, grey, green, white, red, pink, purple, orange, yellow, multicolour …) — the exact list a query supports, with counts, comes back in every response so you never have to guess.","on_invalid":"ignore","example":"black","aliases":["colour"]},{"name":"category","type":"string","required":false,"description":"Keep only one catalogue branch, using a value from `filters_available.rootCategories` (e.g. catalog01_woman, catalog01_kid, catalog01_home). Finer-grained than `section` and always taken from the response rather than invented.","on_invalid":"ignore","example":"catalog01_woman","aliases":["root_category"]},{"name":"sort","type":"enum","required":false,"description":"Result ordering. Omit for Zara's own relevance ranking. Price is the only ordering Zara's search supports — it rejects every other sort key outright, so no other option is offered here.","on_invalid":"reject","allowed_values":[{"value":"price_asc","label":"Cheapest first"},{"value":"price_desc","label":"Most expensive first"}],"example":"price_asc","aliases":["order","sort_by"]},{"name":"max_results","type":"integer","required":false,"description":"How many products to return, 1-200. One upstream request whatever you ask for — Zara pages by offset, not by fixed page size.","on_invalid":"ignore","default":40,"example":40,"minimum":1,"maximum":200,"aliases":["limit","max","page_size"]},{"name":"page","type":"integer","required":false,"description":"Which page of results to start from (1-based; a page is `max_results` products). Page until `meta.pagination.has_more` is false. Zara stops serving results a little under 2,000 products deep whatever the query's headline total says.","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":200}],"returns":"results[]{product_id, product_group_id, name, url, brand, brand_id, reference, display_reference, price{amount, currency, raw, exponent, was, discount_pct, discount_label, on_sale, min, max, promotions[], unit_price}, availability, in_stock, section, section_name, family_name, subfamily_name, kind, type, color{product_id, color_id, name, hex, reference, availability}, available_colors[]{name, hex}, additional_color_count, main_color_hex, tags[]{type, label}, image, images[]{url, kind, name, width, height}, image_count, seo{keyword, seo_product_id, discern_product_id}, position} + filters_available{color[], rootCategories[], price_range[]} (each {value, label, count, filter}) + sort_available[] + market{code, store_id, locale, currency, url_base} + match{type, provider, universe}. meta.pagination{page, page_size, total_results, returned, has_more, next_page}. Honest caveats: `price.was` / `discount_pct` / `discount_label` exist only on reduced items (about 1 row in 3.5 when something is on sale, none otherwise) — a missing was-price means the item is not reduced, never that we failed to read it; `price.min`/`max` appear only on the rare product whose colourways are priced differently; `tags` is Zara's own badge (NEW, …) and most products carry none; `additional_color_count` is 0 on single-colour products; `total_results` is Zara's headline count for the query and it is NOT the number you can page through — paginate on `has_more`.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"dress","max_results":20}},{"name":"product_detail","description":"Get one Zara product in full, by its product id or its zara.com URL — the name and the full description, the price with its currency and any discount, the product reference as printed on the label, EVERY colourway it is made in and, inside each one, EVERY size with Zara's own SKU number, that size's own price and whether it is in stock right now. Also the complete image gallery at full resolution, the fibre composition broken down per garment part, care instructions, country of origin and traceability, safety warnings, certified and sustainable material claims, physical measurements where Zara publishes them, the size system, the department and product family, and the date the product first went on sale. Choose the country store with `market` — id, price, currency and stock are all per-market.","required_params":[],"optional_params":["product_id","url","market","include_composition","find_market"],"params":[{"name":"product_id","type":"string","required":false,"description":"Zara's own product id — exactly the `product_id` a search row returns, and the `v1=` value in a zara.com product URL. A digits-only string (9 digits today); it is never a number to be arithmetic on and never has leading zeros stripped. Zara's ids are colour-level: one id is one colourway of a garment. Passing the `product_group_id` instead also works and returns the same group. Provide `product_id` OR `url`.","on_invalid":"reject","example":"579951647","aliases":["id","productId","product","colour_id","color_product_id"]},{"name":"url","type":"string","required":false,"description":"A zara.com product URL, as an alternative to `product_id`. The id is read from the `v1=` parameter, which every link Zara itself publishes carries. A URL without `v1=` cannot be resolved — Zara publishes no lookup from the short `-p<number>` code to a product — and is rejected with that explanation rather than guessed at.","on_invalid":"ignore","example":"https://www.zara.com/us/en/textured-blazer-p04387050.html?v1=579951647","aliases":["product_url","link"]},{"name":"market","type":"enum","required":false,"description":"Which Zara country store to read. This decides the catalogue, the assortment, the prices AND the currency — the same product is USD 35.90 in `us`, EUR 22.95 in `de` and GBP 22.99 in `gb`. Prices do NOT depend on where the request comes from, only on this value, so the same market always returns the same currency.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"br","label":"Brazil (BRL)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"de","label":"Germany (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"in","label":"India (INR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"au","label":"Australia (AUD)"}],"default":"us","example":"us","aliases":["country","store","region"]},{"name":"include_composition","type":"boolean","required":false,"description":"Include the composition-and-care detail: fibre percentages per garment part, washing/care instructions, country of origin and traceability, safety warnings, certified and sustainable material claims, and (on bags, shoes, candles and similar) physical measurements. Costs one extra upstream request that runs alongside the main one; set false for the fastest possible response.","on_invalid":"ignore","default":true,"aliases":["include_extra_detail","with_composition"]},{"name":"find_market","type":"boolean","required":false,"description":"When the product is not in the market you asked for, look for it in the largest Zara stores and name the ones that have it (`meta.available_in`). Zara's catalogue is per-country, so an id that is missing in one store is very often live in another. Off by default because it costs one extra lookup per store searched; the request has already failed either way and is not charged.","on_invalid":"ignore","default":false}],"returns":"product{product_id, product_group_id, name, url, description, brand, brand_id, reference, display_reference, price{amount, currency, raw, exponent, was, discount_pct, discount_label, on_sale, promotions[], unit_price}, availability, in_stock, sizes_in_stock, state, section, section_name, family_id, family_name, subfamily_id, subfamily_name, kind, type, first_visible_date, size_system, size_guide_available, buyer, flags{}, selected_color, colors[]{product_id, color_id, name, hex, reference, styling_id, availability, price{}, description, sizes[]{sku, size_id, equivalent_size_id, name, short_name, availability, in_stock, reference, price{}, demand, attributes[]}, images[]{url, kind, name, width, height}, videos[], tags[], attributes[]{type, identifier, name, values[], properties{}}, related_product_ids[]}, color_count, sku_count, composition{parts[]{description, components[]{material, percentage}, areas[], microcontents[], reinforcements[]}, exceptions[]}, care[], origin[], warnings[], measurements[], certified_materials[], sustainable_materials[], conformity_declaration[], extra_detail_sections[]{type, lines[]}, seo{keyword, seo_product_id, discern_product_id, breadcrumb[]}}. Honest caveats: `composition` is the structured fibre table and is present on most but not all products (perfume and some accessories have none); `care`, `origin`, `warnings`, `measurements`, `certified_materials` and `sustainable_materials` are per-category — `measurements` is published for bags, shoes and homeware and not for garments, `warnings` for candles, perfume and children's wear — and each is null where Zara publishes nothing, never because the fetch failed; `videos` exists only on the products Zara filmed; `attributes` are Zara's own machine tags, returned verbatim because they have no cross-category meaning; `related_product_ids` are the looks and sets Zara links to the product. `availability` / `in_stock` / `sizes_in_stock` are computed from the per-size stock, because per size is the only granularity Zara publishes here — a product counts as in stock when at least one of its sizes is, and all three are null for a product with no sizes at all. Zara publishes NO ratings, NO reviews, NO stock quantity (only in/out per size) and NO seller — see the source notes; nothing here is invented to fill those gaps.","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":1},"example_params":{"product_id":"545422590","market":"us"}},{"name":"price","description":"Cheap refresh of ONE Zara product's current price and stock, by product id or zara.com URL: the price with its currency (and the was-price and discount when it is reduced), the colour's availability word and an `in_stock` boolean. One light upstream request instead of the three a full product_detail makes, so use this for daily price/stock monitoring and product_detail only when you need sizes, images or composition. Same ids and the same `market` knob as product_detail.","required_params":[],"optional_params":["product_id","url","market"],"params":[{"name":"product_id","type":"string","required":false,"description":"Zara's own product id — exactly the `product_id` a search row returns, and the `v1=` value in a zara.com product URL. A digits-only string (9 digits today); it is never a number to be arithmetic on and never has leading zeros stripped. Zara's ids are colour-level: one id is one colourway of a garment. Passing the `product_group_id` instead also works and returns the same group. Provide `product_id` OR `url`.","on_invalid":"reject","example":"579951647","aliases":["id","productId","product","colour_id","color_product_id"]},{"name":"url","type":"string","required":false,"description":"A zara.com product URL, as an alternative to `product_id`. The id is read from the `v1=` parameter, which every link Zara itself publishes carries. A URL without `v1=` cannot be resolved — Zara publishes no lookup from the short `-p<number>` code to a product — and is rejected with that explanation rather than guessed at.","on_invalid":"ignore","example":"https://www.zara.com/us/en/textured-blazer-p04387050.html?v1=579951647","aliases":["product_url","link"]},{"name":"market","type":"enum","required":false,"description":"Which Zara country store to read. This decides the catalogue, the assortment, the prices AND the currency — the same product is USD 35.90 in `us`, EUR 22.95 in `de` and GBP 22.99 in `gb`. Prices do NOT depend on where the request comes from, only on this value, so the same market always returns the same currency.","on_invalid":"reject","allowed_values":[{"value":"us","label":"United States (USD)"},{"value":"ca","label":"Canada (CAD)"},{"value":"mx","label":"Mexico (MXN)"},{"value":"br","label":"Brazil (BRL)"},{"value":"gb","label":"United Kingdom (GBP)"},{"value":"ie","label":"Ireland (EUR)"},{"value":"es","label":"Spain (EUR)"},{"value":"pt","label":"Portugal (EUR)"},{"value":"fr","label":"France (EUR)"},{"value":"it","label":"Italy (EUR)"},{"value":"de","label":"Germany (EUR)"},{"value":"nl","label":"Netherlands (EUR)"},{"value":"pl","label":"Poland (PLN)"},{"value":"tr","label":"Turkey (TRY)"},{"value":"ae","label":"United Arab Emirates (AED)"},{"value":"in","label":"India (INR)"},{"value":"jp","label":"Japan (JPY)"},{"value":"kr","label":"South Korea (KRW)"},{"value":"au","label":"Australia (AUD)"}],"default":"us","example":"us","aliases":["country","store","region"]}],"returns":"product{product_id, product_group_id, name, color, reference, url, price{amount, currency, raw, exponent, was, discount_pct, discount_label, on_sale, min, max, promotions[], unit_price}, currency, availability, in_stock}. `availability` is Zara's own colour-level word (in_stock, low_on_stock, out_of_stock, ...); `in_stock` is true when that colour can be bought now (in_stock or low_on_stock). Per-size stock is NOT here: Zara publishes it only on the product payload, so ask product_detail for sizes. `price.was` / `discount_pct` exist only on reduced items.","cacheable":true,"cache_ttl_seconds":300,"pricing":{"mode":"flat","credits":1},"example_params":{}}]},{"name":"zillow","category":{"id":"real-estate","title":"Real Estate"},"title":"Zillow API — US real estate data: for-sale, rental and sold listings, full property detail with Zestimate, price/tax history, schools, comps, agents, market trends, walk/transit/bike scores and home-value history","version":"1.5.0","pii_redact_default":true,"mint_reusable":null,"base_path":"/zillow/v1","spec_available":true,"actions":[{"name":"new_listings","description":"New US inventory straight from Zillow's own published feed — the listings that appeared in the last couple of days, refreshed within the hour. Returns identity and location (zpid, canonical url, address as Zillow writes it, region, postal code, country, changed_at); pass a zpid to `property_detail` for price, beds, sqft, status and Zestimate.","required_params":[],"optional_params":["category","region","country","postal_prefix","changed_after","max_results","page"],"params":[{"name":"category","type":"enum","required":false,"description":"Which feed to read.","on_invalid":"reject","allowed_values":[{"value":"for_sale","label":"New for-sale listings (~25k/day, last ~2 days)"},{"value":"sold","label":"Newly sold — fresh comps (~17k/day, last ~3 days)"},{"value":"for_rent","label":"New rentals (~25k/day, last ~2 days)"},{"value":"new_construction","label":"New construction (slower category)"},{"value":"for_sale_by_owner","label":"FSBO — whole category, not just recent"},{"value":"auction","label":"Auction — whole category, not just recent"},{"value":"pending","label":"Pending — whole category, not just recent"},{"value":"other","label":"Other — whole category, not just recent"}],"default":"for_sale","example":"for_sale"},{"name":"region","type":"string","required":false,"description":"Two-letter US state or Canadian province, e.g. TX. Pair with `country` — the codes overlap.","on_invalid":"ignore","example":"TX"},{"name":"country","type":"enum","required":false,"description":"Restrict to one country. The feed mixes both.","on_invalid":"reject","allowed_values":[{"value":"US","label":"United States"},{"value":"CA","label":"Canada"}],"example":"US"},{"name":"postal_prefix","type":"string","required":false,"description":"Match postal codes starting with this, e.g. 787 for the Austin area.","on_invalid":"ignore","example":"787"},{"name":"changed_after","type":"string","required":false,"description":"ISO-8601 instant; keep rows changed strictly after it (e.g. 2026-08-20T00:00:00Z). Use the previous call's `window.newest` to poll incrementally.","on_invalid":"ignore","example":"2026-08-20T00:00:00Z"},{"name":"max_results","type":"integer","required":false,"description":"Rows to return, up to 5000.","on_invalid":"ignore","default":200,"example":200,"minimum":1,"maximum":5000},{"name":"page","type":"integer","required":false,"description":"1-based page over the filtered set.","on_invalid":"ignore","default":1,"example":1,"minimum":1}],"returns":"listings[]{zpid, url, address, region, postal_code, country, changed_at}, category, window{oldest, newest, is_recent_window}, pagination{page, per_page, returned, total_matched, has_more} — MEASURED 2026-08-21: sampling 14 zpids from the for-sale feed and resolving each through property_detail gave days_on_market [0,0,0,0,0,1,1,1,1,2,4] — 10 of 11 at 0-2 days, median 1, five of them day zero, all FOR_SALE. So this is genuinely new inventory. Per category the 50,000-row window covers roughly: for_sale 2 days (~25k/day), sold 3 days (~17k/day, i.e. fresh comps), for_rent 2 days (~25k/day). The smaller categories (for_sale_by_owner, auction, pending, other) are smaller than the window, so their feed is the WHOLE category rather than recent arrivals — `window.is_recent_window` says which you got, per call. ADDRESS is passed through exactly as Zillow writes it and is NOT split into street and city: the slug is `<street>-<City>-<ST>-<zip>` with both halves hyphen-separated, so any split is a guess (a naive one turns '7530-Demona-Dr-Las-Vegas-NV-89123' into street '7530 Demona Dr Las' and city 'Vegas'). `region`, `postal_code` and `country` are parsed from the unambiguous tail and are reliable. COUNTRY MATTERS: Zillow's 'us' feed carries Canada too — 40,943 US to 9,034 CA in one measured leaf — and Canadian provinces are two letters as well, so filtering on `region` alone would serve Ontario as a US state. Filter on `country` when that matters.","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"per_unit","credits":2,"per":500,"min":2},"example_params":{"category":"for_sale","max_results":5}},{"name":"search","description":"Search listings by location (for sale / for rent / recently sold), with structured filters: price, beds, baths, home type, sqft, lot, year built, HOA, days-on-market and keywords. Read `returns` before using status=for_rent (rentals come back as BUILDINGS with a units[] breakdown, not as individual apartments) or status=sold (about a dozen US states publish no sale price at all).","required_params":["location"],"optional_params":["status","max_pages","fetch_all","max_results","price_min","price_max","beds_min","baths_min","home_type","sqft_min","sqft_max","lot_min","lot_max","year_built_min","year_built_max","max_hoa","days_on_max","keywords"],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — city, ZIP, neighborhood or county ('Austin, TX', '78704', 'Brooklyn, NY').","on_invalid":"reject","example":"Austin, TX"},{"name":"status","type":"enum","required":false,"description":"Listing status to search (synonyms rent/rental/recently_sold also accepted).","on_invalid":"ignore","allowed_values":[{"value":"for_sale","label":"For sale"},{"value":"for_rent","label":"For rent"},{"value":"sold","label":"Recently sold"}],"default":"for_sale","example":"for_sale"},{"name":"max_results","type":"integer","required":false,"description":"Stop after this many listings. Caps across pages — a single page (~41 listings) is always returned in full.","on_invalid":"reject","default":1000,"example":100,"minimum":1,"maximum":10000},{"name":"max_pages","type":"integer","required":false,"description":"How many result pages to fetch (~41 listings/page).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":20},{"name":"fetch_all","type":"boolean","required":false,"description":"Fetch EVERY listing in the area (returns more than Zillow's standard ~860-result cap). Slower; combine with max_results.","on_invalid":"reject","default":false,"example":false},{"name":"price_min","type":"integer","required":false,"description":"Minimum list price in USD (e.g. 300000).","on_invalid":"ignore","example":300000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum list price in USD (e.g. 700000).","on_invalid":"ignore","example":700000,"minimum":0},{"name":"beds_min","type":"integer","required":false,"description":"Minimum bedrooms (e.g. 3 = 3+ beds).","on_invalid":"ignore","example":3,"minimum":0,"maximum":10,"aliases":["beds"]},{"name":"baths_min","type":"number","required":false,"description":"Minimum bathrooms (e.g. 2 = 2+ baths).","on_invalid":"ignore","example":2,"minimum":0,"maximum":10},{"name":"home_type","type":"string","required":false,"description":"Property type filter — one or several (comma-separated). One of: house, condo, townhouse, multi_family, land, manufactured, apartment (e.g. 'house,condo').","on_invalid":"ignore","example":"house"},{"name":"sqft_min","type":"integer","required":false,"description":"Minimum living area in square feet (e.g. 1500).","on_invalid":"ignore","example":1500,"minimum":0},{"name":"sqft_max","type":"integer","required":false,"description":"Maximum living area in square feet (e.g. 3000).","on_invalid":"ignore","example":3000,"minimum":0},{"name":"lot_min","type":"integer","required":false,"description":"Minimum lot size in SQUARE FEET (43560 sqft = 1 acre).","on_invalid":"ignore","example":5000,"minimum":0},{"name":"lot_max","type":"integer","required":false,"description":"Maximum lot size in square feet.","on_invalid":"ignore","example":43560,"minimum":0},{"name":"year_built_min","type":"integer","required":false,"description":"Earliest year built (e.g. 2010).","on_invalid":"ignore","example":2010,"minimum":1800,"maximum":2030},{"name":"year_built_max","type":"integer","required":false,"description":"Latest year built (e.g. 2024).","on_invalid":"ignore","example":2024,"minimum":1800,"maximum":2030},{"name":"max_hoa","type":"integer","required":false,"description":"Maximum monthly HOA fee in USD (e.g. 100; 0 keeps no-HOA only).","on_invalid":"ignore","example":100,"minimum":0},{"name":"days_on_max","type":"integer","required":false,"description":"Only listings on Zillow at most this many days (e.g. 7 = new this week).","on_invalid":"ignore","example":7,"minimum":1},{"name":"keywords","type":"string","required":false,"description":"Free-text listing keyword filter (e.g. 'pool', 'waterfront', 'guest house').","on_invalid":"ignore","example":"pool"}],"returns":"items[]{zpid, identifier_type, is_building, url, list_price_usd, price_display, status, status_text, property_type, beds, baths, sqft, lot_sqft, zestimate_usd, rent_zestimate_usd, tax_assessed_value_usd, days_on_market, address_line, city, state_code, postal_code, latitude, longitude, photos[]} + count + total_reported + filters_applied. STATUS=FOR_RENT RETURNS BUILDINGS, NOT APARTMENTS. Zillow's rental search publishes one card per apartment community. MEASURED 2026-08-28 across five cities, 41 rows each: 193 of 205 rows were buildings (Austin 41/41, Miami 41/41, Chicago 38/41, Seattle 37/41, Boise 36/41). A building row carries NO beds, baths, sqft, property_type or days_on_market: a building has no single value for any of them and Zillow sends none. It carries instead units[]{beds, rent_from_usd, rent_display, is_room_share} - one entry per floor plan, 493 entries over those same five pages - plus rent_min_usd, rent_max_usd, beds_min, beds_max, units_available, building_name and building_id. Its `zpid` is Zillow's BUILDING KEY, a '<lat>--<lng>' string rather than a property id, so it will not resolve in property_detail; `identifier_type` reads 'building_key' or 'zpid' on every row and `is_building` is the boolean. The remaining ~6% of rental rows are single homes or units and do carry beds, baths, sqft and a price. STATUS=SOLD: THE SALE PRICE IS NOT PUBLISHED IN NON-DISCLOSURE STATES. About a dozen US states keep sale prices off the public record and Zillow shows no price for any listing in them. MEASURED 2026-08-28, 41 rows per city: priced 41/41 in Seattle WA, Chicago IL, Phoenix AZ, Miami FL and Denver CO; 0/41 in Austin TX, 2/41 in Boise ID, 1/41 in Salt Lake City UT. There, sold_price_usd, list_price_usd and price_display are null and property_detail cannot recover them - the number is not on Zillow in any form, so this API returns null rather than guessing. sold_date, tax_assessed_value_usd and zestimate_usd DO fill (the Zestimate is Zillow's estimate of value, NOT the price paid). meta.fields_not_published repeats all of this, with the affected row count, on any response where it applies.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Austin, TX"}},{"name":"search_by_coordinates","description":"Search listings inside exact map bounds (returns more than the standard ~860-result cap), with the same structured filters as search.","required_params":["map_bounds"],"optional_params":["status","max_pages","fetch_all","max_results","price_min","price_max","beds_min","baths_min","home_type","sqft_min","sqft_max","lot_min","lot_max","year_built_min","year_built_max","max_hoa","days_on_max","keywords"],"params":[{"name":"map_bounds","type":"object","required":true,"description":"Map viewport to search: {west, east, south, north} in decimal degrees.","on_invalid":"reject","example":{"west":-97.78,"east":-97.7,"south":30.24,"north":30.3},"aliases":["bounds"]},{"name":"status","type":"enum","required":false,"description":"Listing status to search (synonyms rent/rental/recently_sold also accepted).","on_invalid":"ignore","allowed_values":[{"value":"for_sale","label":"For sale"},{"value":"for_rent","label":"For rent"},{"value":"sold","label":"Recently sold"}],"default":"for_sale","example":"for_sale"},{"name":"max_results","type":"integer","required":false,"description":"Stop after this many listings. Caps across pages — a single page (~41 listings) is always returned in full.","on_invalid":"reject","default":1000,"example":100,"minimum":1,"maximum":10000},{"name":"max_pages","type":"integer","required":false,"description":"How many result pages to fetch (~41 listings/page).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":20},{"name":"fetch_all","type":"boolean","required":false,"description":"Fetch EVERY listing in the area (returns more than Zillow's standard ~860-result cap). Slower; combine with max_results.","on_invalid":"reject","default":false,"example":false},{"name":"price_min","type":"integer","required":false,"description":"Minimum list price in USD (e.g. 300000).","on_invalid":"ignore","example":300000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum list price in USD (e.g. 700000).","on_invalid":"ignore","example":700000,"minimum":0},{"name":"beds_min","type":"integer","required":false,"description":"Minimum bedrooms (e.g. 3 = 3+ beds).","on_invalid":"ignore","example":3,"minimum":0,"maximum":10,"aliases":["beds"]},{"name":"baths_min","type":"number","required":false,"description":"Minimum bathrooms (e.g. 2 = 2+ baths).","on_invalid":"ignore","example":2,"minimum":0,"maximum":10},{"name":"home_type","type":"string","required":false,"description":"Property type filter — one or several (comma-separated). One of: house, condo, townhouse, multi_family, land, manufactured, apartment (e.g. 'house,condo').","on_invalid":"ignore","example":"house"},{"name":"sqft_min","type":"integer","required":false,"description":"Minimum living area in square feet (e.g. 1500).","on_invalid":"ignore","example":1500,"minimum":0},{"name":"sqft_max","type":"integer","required":false,"description":"Maximum living area in square feet (e.g. 3000).","on_invalid":"ignore","example":3000,"minimum":0},{"name":"lot_min","type":"integer","required":false,"description":"Minimum lot size in SQUARE FEET (43560 sqft = 1 acre).","on_invalid":"ignore","example":5000,"minimum":0},{"name":"lot_max","type":"integer","required":false,"description":"Maximum lot size in square feet.","on_invalid":"ignore","example":43560,"minimum":0},{"name":"year_built_min","type":"integer","required":false,"description":"Earliest year built (e.g. 2010).","on_invalid":"ignore","example":2010,"minimum":1800,"maximum":2030},{"name":"year_built_max","type":"integer","required":false,"description":"Latest year built (e.g. 2024).","on_invalid":"ignore","example":2024,"minimum":1800,"maximum":2030},{"name":"max_hoa","type":"integer","required":false,"description":"Maximum monthly HOA fee in USD (e.g. 100; 0 keeps no-HOA only).","on_invalid":"ignore","example":100,"minimum":0},{"name":"days_on_max","type":"integer","required":false,"description":"Only listings on Zillow at most this many days (e.g. 7 = new this week).","on_invalid":"ignore","example":7,"minimum":1},{"name":"keywords","type":"string","required":false,"description":"Free-text listing keyword filter (e.g. 'pool', 'waterfront', 'guest house').","on_invalid":"ignore","example":"pool"}],"returns":"items[] - the same shape, and the same for_rent (buildings, not apartments) and sold (no price in non-disclosure states) caveats, as `search` - plus filters_applied.","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"search_by_url","description":"Run any copied Zillow URL: a search URL replays that exact search (with its filters); a property URL routes to the full property detail.","required_params":["url"],"optional_params":[],"params":[{"name":"url","type":"string","required":true,"description":"Any Zillow search or property URL, copied from the browser.","on_invalid":"reject","example":"https://www.zillow.com/austin-tx/rentals/"}],"returns":"items[] (search URL) or listing{...} (property URL)","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":2},"example_params":null},{"name":"property_detail","description":"Full property record: Zestimate (+history), price & tax history, schools, walk/transit/bike scores, agent, photos, RESO facts. Batch several with zpids[].","required_params":[],"optional_params":["zpid","zpids","url"],"params":[{"name":"zpid","type":"string","required":false,"description":"Zillow property ID. Provide zpid, zpids OR url.","on_invalid":"reject","example":"29377187"},{"name":"zpids","type":"array","required":false,"description":"Several property IDs in one call (batch).","on_invalid":"reject","example":["29377187","29377188"]},{"name":"url","type":"string","required":false,"description":"Zillow property URL (alternative to zpid).","on_invalid":"reject","example":"https://www.zillow.com/homedetails/29377187_zpid/"}],"returns":"listing{zpid, address_line, list_price_usd, zestimate_usd, rent_zestimate_usd, price_history[], tax_history[], schools[], walk_transit_score{...}, agent{...}, photos[], reso_facts{...}} (or listings[] for zpids batch). ON A SOLD HOME IN A NON-DISCLOSURE STATE (TX, ID, UT and about ten others), list_price_usd is 0 and price_history is an EMPTY array: the sale price is not a public record there, so Zillow carries no price event to return. This is not a lookup failure and retrying will not change it - verified 2026-08-28 on zpid 250400649, taken straight from a `sold` search of Austin TX: list_price_usd 0, price_history [], last_sold_price_usd null, while zestimate_usd (873300) and the property facts such as year_built (2017) filled normally.","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{"zpid":"29377187"}},{"name":"comps","description":"Comparable homes near a property (synthesized similar-listing search, scored by distance/beds/sqft).","required_params":[],"optional_params":["zpid","url","radius_deg","max_comps"],"params":[{"name":"zpid","type":"string","required":false,"description":"Zillow property ID — the number in the property URL (…/12345678_zpid/) or `zpid` from a search result.","on_invalid":"reject","example":"29377187"},{"name":"url","type":"string","required":false,"description":"Zillow property URL (alternative to zpid).","on_invalid":"reject","example":"https://www.zillow.com/homedetails/29377187_zpid/"},{"name":"radius_deg","type":"number","required":false,"description":"Search radius in decimal degrees (0.03 ≈ 2 miles).","on_invalid":"reject","default":0.03,"example":0.03,"minimum":0.005,"maximum":0.5},{"name":"max_comps","type":"integer","required":false,"description":"How many comparables to return (1–100).","on_invalid":"reject","default":12,"example":12,"minimum":1,"maximum":100}],"returns":"subject{...} + comps[]{zpid, address_line, list_price_usd, beds, baths, sqft, distance} + radius_deg + method","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"sold","description":"Recently-sold listings (last 12 months) by location or map bounds, with the same structured filters as search. The sale price fills in disclosure states and is genuinely absent in non-disclosure ones - read `returns` before building on it.","required_params":[],"optional_params":["location","map_bounds","max_pages","fetch_all","max_results","price_min","price_max","beds_min","baths_min","home_type","sqft_min","sqft_max","lot_min","lot_max","year_built_min","year_built_max","max_hoa","days_on_max","keywords"],"params":[{"name":"location","type":"string","required":false,"description":"Where to search. Provide location OR map_bounds.","on_invalid":"reject","example":"Austin, TX"},{"name":"map_bounds","type":"object","required":false,"description":"Exact map viewport {west, east, south, north} (alternative to location).","on_invalid":"reject","example":{"west":-97.78,"east":-97.7,"south":30.24,"north":30.3},"aliases":["bounds"]},{"name":"max_pages","type":"integer","required":false,"description":"How many result pages to fetch (~41 listings/page).","on_invalid":"ignore","default":1,"example":1,"minimum":1,"maximum":20},{"name":"fetch_all","type":"boolean","required":false,"description":"Fetch EVERY listing in the area (returns more than Zillow's standard ~860-result cap). Slower; combine with max_results.","on_invalid":"reject","default":false,"example":false},{"name":"price_min","type":"integer","required":false,"description":"Minimum list price in USD (e.g. 300000).","on_invalid":"ignore","example":300000,"minimum":0},{"name":"price_max","type":"integer","required":false,"description":"Maximum list price in USD (e.g. 700000).","on_invalid":"ignore","example":700000,"minimum":0},{"name":"beds_min","type":"integer","required":false,"description":"Minimum bedrooms (e.g. 3 = 3+ beds).","on_invalid":"ignore","example":3,"minimum":0,"maximum":10,"aliases":["beds"]},{"name":"baths_min","type":"number","required":false,"description":"Minimum bathrooms (e.g. 2 = 2+ baths).","on_invalid":"ignore","example":2,"minimum":0,"maximum":10},{"name":"home_type","type":"string","required":false,"description":"Property type filter — one or several (comma-separated). One of: house, condo, townhouse, multi_family, land, manufactured, apartment (e.g. 'house,condo').","on_invalid":"ignore","example":"house"},{"name":"sqft_min","type":"integer","required":false,"description":"Minimum living area in square feet (e.g. 1500).","on_invalid":"ignore","example":1500,"minimum":0},{"name":"sqft_max","type":"integer","required":false,"description":"Maximum living area in square feet (e.g. 3000).","on_invalid":"ignore","example":3000,"minimum":0},{"name":"lot_min","type":"integer","required":false,"description":"Minimum lot size in SQUARE FEET (43560 sqft = 1 acre).","on_invalid":"ignore","example":5000,"minimum":0},{"name":"lot_max","type":"integer","required":false,"description":"Maximum lot size in square feet.","on_invalid":"ignore","example":43560,"minimum":0},{"name":"year_built_min","type":"integer","required":false,"description":"Earliest year built (e.g. 2010).","on_invalid":"ignore","example":2010,"minimum":1800,"maximum":2030},{"name":"year_built_max","type":"integer","required":false,"description":"Latest year built (e.g. 2024).","on_invalid":"ignore","example":2024,"minimum":1800,"maximum":2030},{"name":"max_hoa","type":"integer","required":false,"description":"Maximum monthly HOA fee in USD (e.g. 100; 0 keeps no-HOA only).","on_invalid":"ignore","example":100,"minimum":0},{"name":"days_on_max","type":"integer","required":false,"description":"Only listings on Zillow at most this many days (e.g. 7 = new this week).","on_invalid":"ignore","example":7,"minimum":1},{"name":"keywords","type":"string","required":false,"description":"Free-text listing keyword filter (e.g. 'pool', 'waterfront', 'guest house').","on_invalid":"ignore","example":"pool"}],"returns":"items[]{zpid, url, sold_price_usd, sold_date, list_price_usd, price_display, status (RECENTLY_SOLD), property_type, beds, baths, sqft, lot_sqft, zestimate_usd, tax_assessed_value_usd, address_line, city, state_code, postal_code, latitude, longitude, photos[]} + count + total_reported + filters_applied. WHERE THE SALE PRICE EXISTS AND WHERE IT DOES NOT: about a dozen US states are non-disclosure markets - what a home sold for is not a public record there - and Zillow publishes no price on any recently-sold listing in them. MEASURED 2026-08-28, one page (41 rows) per city: priced 41/41 in Seattle WA, Chicago IL, Phoenix AZ, Miami FL and Denver CO; 0/41 in Austin TX, 2/41 in Boise ID, 1/41 in Salt Lake City UT. In a non-disclosure market sold_price_usd, list_price_usd and price_display come back null and property_detail cannot rescue them (its price_history is empty for the same reason) - the number is not on Zillow at all, so this API returns null instead of inventing one. What you DO get everywhere: sold_date (41/41 in every city measured), tax_assessed_value_usd and zestimate_usd. The Zestimate is Zillow's own estimate of value and is NOT the price the home changed hands for - do not read it as one. meta.fields_not_published names the empty fields, the reason and how many rows are affected on every response where any row is unpriced.","cacheable":true,"cache_ttl_seconds":10800,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Seattle, WA"}},{"name":"agent","description":"Listing agent + broker attribution for one property (agentInfo).","required_params":[],"optional_params":["zpid","url"],"params":[{"name":"zpid","type":"string","required":false,"description":"Zillow property ID — the number in the property URL (…/12345678_zpid/) or `zpid` from a search result.","on_invalid":"reject","example":"29377187"},{"name":"url","type":"string","required":false,"description":"Zillow property URL (alternative to zpid).","on_invalid":"reject","example":"https://www.zillow.com/homedetails/29377187_zpid/"}],"returns":"agent{agent_name, agent_license, broker_name, co_agent_name, buyer_agent…} + for_property{zpid, address_line, list_price_usd, status} (contact details require include_pii)","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":2},"example_params":{}},{"name":"agent_profile","description":"An agent's full portfolio: profile info + their for-sale/sold listings + reviews.","required_params":[],"optional_params":["username","profile_url","zuid","url"],"params":[{"name":"username","type":"string","required":false,"description":"Agent's Zillow username (the part after /profile/; e.g. the profile_url a `agents_by_location` row returns). Provide username, profile_url, zuid OR url.","on_invalid":"reject","example":"ericbramlett"},{"name":"profile_url","type":"string","required":false,"description":"Agent profile URL.","on_invalid":"reject","example":"https://www.zillow.com/profile/ericbramlett/","aliases":["url"]},{"name":"zuid","type":"string","required":false,"description":"Advanced: Zillow user ID.","on_invalid":"ignore"}],"returns":"agent{name, business_name, rating_average, review_count, years_experience, specialties[], license_number, license_state, sale_count_all_time, sales_last_12mo, price_range, average_price, photo_url, service_areas[]} + for_sale[] + sold[] + reviews[]{rating, text, date, reviewer}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":3},"example_params":{}},{"name":"agents_by_location","description":"Real-estate agent directory for a location, with review summaries.","required_params":["location"],"optional_params":[],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — city, ZIP, neighborhood or county ('Austin, TX', '78704', 'Brooklyn, NY').","on_invalid":"reject","example":"Austin, TX"}],"returns":"agents[]{name, profile_url, review_count, rating, sales…} + count + location","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Austin, TX"}},{"name":"autocomplete","description":"Location autocomplete — suggest Zillow regions and addresses for a free-text query (city, ZIP, neighborhood, county or street). Use it to resolve a fuzzy term before searching, or to power a search box.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"Free-text location to autocomplete — a partial city, ZIP, neighborhood, county or street ('Brookl', '787', 'Austin').","on_invalid":"reject","example":"Brookl","aliases":["q","location"]},{"name":"limit","type":"integer","required":false,"description":"Max suggestions to return (1–25).","on_invalid":"ignore","default":10,"example":10,"minimum":1,"maximum":25}],"returns":"suggestions[]{name, type, region_id, latitude, longitude} + count + query","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"Austin"}},{"name":"market_trends","description":"Region market metrics: ZHVI home-value index, median sale/list price, inventory, days-to-pending, % sold above list, rent index.","required_params":["location"],"optional_params":[],"params":[{"name":"location","type":"string","required":true,"description":"Where to search — city, ZIP, neighborhood or county ('Austin, TX', '78704', 'Brooklyn, NY').","on_invalid":"reject","example":"Austin, TX"}],"returns":"market{zhvi_usd, median_sale_price_usd, median_list_price_usd, for_sale_inventory, days_to_pending, pct_sold_above_list, rent_zori_usd} + location + region_id + region_type","cacheable":true,"cache_ttl_seconds":43200,"pricing":{"mode":"flat","credits":2},"example_params":{"location":"Austin, TX"}},{"name":"walk_transit_bike","description":"Zillow Walk Score, Transit Score and Bike Score for a property — walkability, public-transit access and bikeability (0-100) with a description for each.","required_params":[],"optional_params":["zpid","url"],"params":[{"name":"zpid","type":"string","required":false,"description":"Zillow property ID — the number in the property URL (…/12345678_zpid/) or `zpid` from a search result.","on_invalid":"reject","example":"29377187"},{"name":"url","type":"string","required":false,"description":"Zillow property URL (alternative to zpid).","on_invalid":"reject","example":"https://www.zillow.com/homedetails/29377187_zpid/"}],"returns":"scores{walk_score, walk_description, transit_score, transit_description, bike_score, bike_description} + zpid","cacheable":true,"cache_ttl_seconds":604800,"pricing":{"mode":"flat","credits":1},"example_params":{"zpid":"29377187"}},{"name":"home_value_chart","description":"Zillow home-value history — the Zestimate value-over-time series for a property (monthly home value, up to the last 10 years, with the latest forecast point).","required_params":[],"optional_params":["zpid","url","time_period"],"params":[{"name":"zpid","type":"string","required":false,"description":"Zillow property ID — the number in the property URL (…/12345678_zpid/) or `zpid` from a search result.","on_invalid":"reject","example":"29377187"},{"name":"url","type":"string","required":false,"description":"Zillow property URL (alternative to zpid).","on_invalid":"reject","example":"https://www.zillow.com/homedetails/29377187_zpid/"},{"name":"time_period","type":"enum","required":false,"description":"History window for the home-value chart.","on_invalid":"ignore","allowed_values":[{"value":"1y","label":"Last 1 year"},{"value":"5y","label":"Last 5 years"},{"value":"10y","label":"Last 10 years"}],"default":"10y","example":"10y"}],"returns":"this_home{name, points[]{date_ms, value_usd}, point_count} + series[] + latest_value_usd + earliest_value_usd + time_period + zpid","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":{"zpid":"29377187"}}]},{"name":"ziprecruiter","category":{"id":"jobs","title":"Jobs & Hiring"},"title":"ZipRecruiter API — live job search, job details & jobs-by-company from ZipRecruiter (ziprecruiter.co.uk / .ie / .de), no login required","version":"2.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/ziprecruiter/v1","spec_available":true,"actions":[{"name":"search","description":"Search live ZipRecruiter job listings by keyword and location, with pagination and an optional remote-only filter. Each result includes the title, company, location, salary (when posted), posting date, a snippet, the on-site job URL and the apply link. Covers the United Kingdom (ziprecruiter.co.uk), Ireland (ziprecruiter.ie) and Germany (ziprecruiter.de).","required_params":["query"],"optional_params":["location","country","page","max_results","remote"],"params":[{"name":"query","type":"string","required":true,"description":"Free-text job keyword: job title or skill — e.g. 'software engineer', 'registered nurse', 'marketing manager'. Matched against the whole posting (title + description), so 'python' finds Python roles.","on_invalid":"reject","example":"software engineer","aliases":["q","keyword","search"]},{"name":"location","type":"string","required":false,"description":"City or region to search in (e.g. 'London', 'Dublin', 'Berlin'). Leave empty to search the whole country.","on_invalid":"ignore","example":"London"},{"name":"country","type":"enum","required":false,"description":"ZipRecruiter country edition to search. gb (United Kingdom), ie (Ireland) and de (Germany) are fully live. us (United States) is not served by this endpoint yet — a us call returns a clear TARGET_BLOCKED rather than an empty list. Other two-letter codes are passed through as-is.","on_invalid":"ignore","allowed_values":[{"value":"gb","label":"United Kingdom (ziprecruiter.co.uk)"},{"value":"ie","label":"Ireland (ziprecruiter.ie)"},{"value":"de","label":"Germany (ziprecruiter.de)"},{"value":"us","label":"United States (ziprecruiter.com) — coming soon"}],"default":"gb","example":"gb"},{"name":"page","type":"integer","required":false,"description":"Result page to start from, beginning at 1 (20 jobs per page). Use this to page through results — it is the single pagination control.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_results","type":"integer","required":false,"description":"How many job listings to return, paging internally from `page` (1–200).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":200},{"name":"remote","type":"boolean","required":false,"description":"If true, keep only remote / work-from-home listings. ZipRecruiter's country sites expose no server-side remote filter, so this is applied by matching each listing's title and location (the engine pages further to still fill `max_results`).","on_invalid":"ignore","default":false,"example":true,"aliases":["remote_only"]}],"returns":"jobs[]{job_id, title, company, location, salary{min,max,currency,period}, posted_date, snippet, url, apply_url, sponsored, source}, count, total_estimate, query, location, country","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":{"query":"software engineer","location":"London","country":"gb","max_results":20}},{"name":"job_detail","description":"Full ZipRecruiter job posting by job ID (or URL): title, company, location, salary range, employment type, remote flag, posting & expiry dates, the full description, an extracted requirements list and the apply link.","required_params":["job_id"],"optional_params":["url","country"],"params":[{"name":"job_id","type":"string","required":true,"description":"ZipRecruiter numeric job ID — the `job_id` returned by the search action (or the number in a ziprecruiter.co.uk/jobs/<id> URL). Provide job_id OR url.","on_invalid":"reject","example":"539514020","aliases":["jobId"]},{"name":"url","type":"string","required":false,"description":"Full ZipRecruiter job URL — alternative to job_id (the ID is extracted automatically).","on_invalid":"ignore","example":"https://www.ziprecruiter.co.uk/jobs/539514020","aliases":["job_url"]},{"name":"country","type":"enum","required":false,"description":"ZipRecruiter country edition to search. gb (United Kingdom), ie (Ireland) and de (Germany) are fully live. us (United States) is not served by this endpoint yet — a us call returns a clear TARGET_BLOCKED rather than an empty list. Other two-letter codes are passed through as-is.","on_invalid":"ignore","allowed_values":[{"value":"gb","label":"United Kingdom (ziprecruiter.co.uk)"},{"value":"ie","label":"Ireland (ziprecruiter.ie)"},{"value":"de","label":"Germany (ziprecruiter.de)"},{"value":"us","label":"United States (ziprecruiter.com) — coming soon"}],"default":"gb","example":"gb"}],"returns":"job{job_id, title, company, location, location_structured, employment_type, salary{min,max,currency,period}, remote, posted_date, valid_through, description, requirements[], apply_url, url, source}","cacheable":true,"cache_ttl_seconds":21600,"pricing":{"mode":"flat","credits":1},"example_params":null},{"name":"jobs_by_company","description":"List a specific employer's open jobs on ZipRecruiter. Pass a company name; the engine searches and keeps only listings whose employer matches (ZipRecruiter's country sites have no dedicated company page, so this is a best-effort name match over the search results). Optionally narrow by location.","required_params":["company"],"optional_params":["location","country","page","max_results"],"params":[{"name":"company","type":"string","required":true,"description":"Employer name to list open jobs for (e.g. 'Amazon', 'NHS', 'Deloitte').","on_invalid":"reject","example":"Amazon","aliases":["employer","company_name"]},{"name":"location","type":"string","required":false,"description":"City or region to search in (e.g. 'London', 'Dublin', 'Berlin'). Leave empty to search the whole country.","on_invalid":"ignore","example":"London"},{"name":"country","type":"enum","required":false,"description":"ZipRecruiter country edition to search. gb (United Kingdom), ie (Ireland) and de (Germany) are fully live. us (United States) is not served by this endpoint yet — a us call returns a clear TARGET_BLOCKED rather than an empty list. Other two-letter codes are passed through as-is.","on_invalid":"ignore","allowed_values":[{"value":"gb","label":"United Kingdom (ziprecruiter.co.uk)"},{"value":"ie","label":"Ireland (ziprecruiter.ie)"},{"value":"de","label":"Germany (ziprecruiter.de)"},{"value":"us","label":"United States (ziprecruiter.com) — coming soon"}],"default":"gb","example":"gb"},{"name":"page","type":"integer","required":false,"description":"Result page to start from, beginning at 1 (20 jobs per page). Use this to page through results — it is the single pagination control.","on_invalid":"ignore","default":1,"example":1,"minimum":1},{"name":"max_results","type":"integer","required":false,"description":"How many job listings to return, paging internally from `page` (1–200).","on_invalid":"ignore","default":20,"example":20,"minimum":1,"maximum":200}],"returns":"company, jobs[]{job_id, title, company, location, salary, posted_date, snippet, url, apply_url, sponsored}, count, query, location, country","cacheable":true,"cache_ttl_seconds":1800,"pricing":{"mode":"flat","credits":1},"example_params":null}]},{"name":"zomato","category":{"id":"reviews","title":"Reputation & Reviews"},"title":"Zomato API — live Indian restaurant data scraper: search a city's restaurants by cuisine, locality or collection, and get the full record with address, coordinates, opening hours, cost-for-two, the dish catalogue and review text — with Zomato's dining and delivery star ratings returned as SEPARATE fields, never blended","version":"1.0.0","pii_redact_default":false,"mint_reusable":null,"base_path":"/zomato/v1","spec_available":true,"actions":[{"name":"search","description":"List a city's restaurants, optionally narrowed to one cuisine, locality or curated collection, or to the restaurants that deliver. Returns up to 9 rows — that is the source's own ceiling per listing and it does not page, so breadth comes from varying city/cuisine/locality/collection rather than from a page number. Every row carries `is_promoted`, because on a plain city listing all 9 rows are paid placements.","required_params":["city"],"optional_params":["cuisine","locality","collection","mode"],"params":[{"name":"city","type":"string","required":true,"description":"The Zomato city slug, as it appears in the site's own URLs: 'ncr' (Delhi NCR), 'mumbai', 'bangalore', 'hyderabad', 'chennai', 'kolkata', 'pune', 'jaipur'. Inventory is strictly per city — eight cities measured shared zero restaurants with each other.","on_invalid":"reject","example":"ncr","aliases":["city_slug","location"]},{"name":"cuisine","type":"string","required":false,"description":"Narrow the city to one cuisine, using Zomato's own cuisine slug. Measured to bite: Delhi NCR 25,603 listed → 12,847 north-indian, 9,994 chinese, 4,379 pizza, and every returned row really carried that cuisine (9/9 on each). Common slugs: north-indian, south-indian, chinese, pizza, burger, biryani, desserts, cafe, fast-food, italian, continental, mughlai.","on_invalid":"ignore","example":"north-indian"},{"name":"locality","type":"string","required":false,"description":"Narrow the city to one neighbourhood, using Zomato's locality slug ('saket', 'connaught-place-delhi', 'koramangala'). This changes which restaurants come back (measured: 9 of 9 rows different, and the rows really sat in that area) but the source's own `source_total_results` counter does NOT move for it and stays city-wide.","on_invalid":"ignore","example":"saket"},{"name":"collection","type":"string","required":false,"description":"One of Zomato's curated city collections ('best-cafes', 'breakfast', 'insta-worthy'). These are the cleanest rows on the site: /ncr/best-cafes returned 0 paid placements out of 9, where the plain city listing returned 9 out of 9.","on_invalid":"ignore","example":"best-cafes"},{"name":"mode","type":"enum","required":false,"description":"Which side of Zomato to list. 'delivery' genuinely narrows the city (Delhi NCR 25,603 → 2,107 and every row different). 'dining' is the site's default view — it is accepted for clarity but does not narrow anything, which is why it is the default.","on_invalid":"reject","allowed_values":[{"value":"dining","label":"Dine-out listings (the default view)"},{"value":"delivery","label":"Restaurants that deliver"}],"default":"dining","example":"delivery"}],"returns":"restaurants[]{res_id, name, url, slug, rating_dining, rating_dining_count, rating_delivery, rating_delivery_count, price_for_two_text, price_for_two_inr, price_for_one_text, locality, address, cuisines[], distance, timing, image, is_promoted, is_disabled, rating_count_approximate}, count, promoted_count, organic_count, dropped_tiles, source_total_results, city, listing_url, stop_reason","cacheable":true,"cache_ttl_seconds":600,"pricing":{"mode":"flat","credits":2},"example_params":{"city":"ncr"}},{"name":"restaurant/detail","description":"One full restaurant record by id: address and coordinates, city and postcode, the business phone numbers the page prints, cuisines, opening hours per day, cost-for-two, popular dishes, facility highlights, and the dining and delivery ratings as separate named fields.","required_params":["res_id"],"optional_params":[],"params":[{"name":"res_id","type":"string","required":true,"description":"The numeric Zomato restaurant id, as `search` returns it in `res_id`. A zomato.com URL containing the id is also accepted.","on_invalid":"reject","example":311057,"aliases":["restaurant_id","id"]}],"returns":"restaurant{res_id, name, url, rating_dining, rating_dining_count, rating_delivery, rating_delivery_count, rating_count_approximate, price_for_two_text, price_for_two_inr, cost_notes[], cuisines[], address, locality, city, zipcode, latitude, longitude, phone, phones[], status_text, is_open_now, timing_text, opening_hours[], is_delivery_only, is_permanently_closed, is_temporarily_closed, highlights[], popular_dishes, known_for, payment_accepted, image_menus[], chain_url}","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":2},"example_params":{"res_id":311057}},{"name":"restaurant/menu","description":"The restaurant's dish catalogue: every menu, its categories and the dishes in them with name, description and veg/vegan tags. 🔴 Dish PRICES are not returned, because Zomato does not publish them to a logged-out reader — the page sets its own `price_login_blocker` flag and the dish records carry no price key at all (verified from four different exits, including one inside India). `price_inr` is therefore null on every dish and `prices_published` is false, rather than a guessed number.","required_params":["res_id"],"optional_params":[],"params":[{"name":"res_id","type":"string","required":true,"description":"The numeric Zomato restaurant id, as `search` returns it in `res_id`. A zomato.com URL containing the id is also accepted.","on_invalid":"reject","example":311057,"aliases":["restaurant_id","id"]}],"returns":"categories[]{menu, category, items[]{item_id, name, description, price_inr, is_veg, is_vegan, dietary_tags[], is_delivery_enabled, image}}, item_count, menu_count, prices_published, priced_item_count, price_note, res_id","cacheable":true,"cache_ttl_seconds":3600,"pricing":{"mode":"flat","credits":3},"example_params":{"res_id":311057}},{"name":"restaurant/reviews","description":"Review text for one restaurant, newest first, 5 per page. Returns at most 25 reviews: page 6 is where Zomato answers 'Please login', measured identically on three restaurants. Each review carries its text, star rating, age, like and comment counts, and the reviewer name and profile link exactly as the public page prints them.","required_params":["res_id"],"optional_params":["max_pages"],"params":[{"name":"res_id","type":"string","required":true,"description":"The numeric Zomato restaurant id, as `search` returns it in `res_id`. A zomato.com URL containing the id is also accepted.","on_invalid":"reject","example":311057,"aliases":["restaurant_id","id"]},{"name":"max_pages","type":"integer","required":false,"description":"How many review pages to walk, 5 reviews each. Capped at 5 because page 6 is where Zomato returns 'Please login' — measured identically on three restaurants, so 25 reviews is the logged-out ceiling.","on_invalid":"ignore","default":5,"example":5,"minimum":1,"maximum":5}],"returns":"reviews[]{review_id, text, rating, timestamp, like_count, comment_count, photo_count, review_url, user_name, user_profile_url, user_id, user_review_count, user_follower_count, rating_type, rating_label, tags[]}, count, pages_fetched, reviews_truncated, source_number_of_pages, stop_reason, res_id","cacheable":true,"cache_ttl_seconds":900,"pricing":{"mode":"flat","credits":3},"example_params":{"res_id":311057,"max_pages":2}},{"name":"locations/search","description":"Turn a place name into the localities Zomato knows, with coordinates — the lookup that tells you what to pass as `locality`.","required_params":["query"],"optional_params":[],"params":[{"name":"query","type":"string","required":true,"description":"A place name to resolve — a neighbourhood, a landmark or a city.","on_invalid":"reject","example":"connaught place","aliases":["q","place","term"]}],"returns":"locations[]{title, subtitle, name, entity_id, entity_type, location_type, latitude, longitude}, count","cacheable":true,"cache_ttl_seconds":86400,"pricing":{"mode":"flat","credits":1},"example_params":null}]}]}