Changelog
Track public API and capability-contract changes.
This page records customer-visible API changes and deprecations, newest first.
Scope: entries begin at 2026-09-01. Earlier releases were not maintained in a customer-facing changelog.
2026-10-03 — Google Maps place details (v0.1.26)
googlemaps.place and googlemaps.enrich now return complete place details,
including opening hours and the review count, for listings that publish them,
instead of failing when the first response omitted those fields. googlemaps.nearby
can add an exclusion summary — the count of results outside the requested radius —
without claiming to list them all.
2026-10-03 — Google Maps search location inputs (v0.1.26)
googlemaps.search now refuses a request that supplies both a text location
and lat/lng at the same time, returning invalid_input that names the
conflict. Use one location mode: a text location, or a complete lat+lng
pair (with optional zoom). A single coordinate, or zoom without coordinates,
is still refused.
2026-10-03 — Facebook video detail from a page's Videos tab (v0.5.6)
facebook.page-videos.list returns each video's public URL. That exact URL now
works when sent to facebook.video.get, so a page's video list chains straight
into a video's details. No input or output fields changed.
2026-10-03 — Facebook API docs: backup routes removed
The Facebook OpenAPI document and LLM prompt no longer list the background-backup endpoints or the board/pin wording, which do not apply to Facebook. Pinterest's backup contract is unchanged.
2026-10-02: Carrefour pasted links, search query, coordinates and prices
Carrefour API input and price handling
- Product links accept a scheme-less storefront URL and ignore a copied tracking query or fragment for identity; the product is resolved from the trusted path only, never by following the link.
carrefourksa.products.searchrequires an explicitquery; an omitted query is refused instead of defaulting to milk.- A single explicit latitude or longitude is refused (
invalid_input); provide both or neither. - Listing
priceisnullwhen upstream gives no price; a genuine zero is kept.
2026-10-02: Blinkit missing values and merchant coverage; JioMart paging and inputs
Blinkit API missing values and sampled merchant coverage
price,mrp, the promotions product price andeta_in_minutesare nownullwhen Blinkit shows no value, instead of0. A real zero is unchanged. Check any sum, average or stock test that treated0as a real value.- New capability
blinkit.merchant.coverage: sampled serving-merchant coverage for a bounded area, one row per observed merchant; physical store addresses, radius and opening state are not offered.
JioMart API pagination and input handling
- Paging is repaired for numeric and cursor pages, including past-the-end pages, on search, products list, collection products and home.
- Location validation and product-output contracts are corrected; invalid input is refused before any upstream request.
2026-10-02: Swiggy Instamart filters, links and location inputs
The Swiggy Instamart API supports search and category filters, product and category links as input, more ways to specify a delivery location, and whole-number prices in paise. Existing requests keep working unless a line below says otherwise.
Check these if you use them.
- Location: categories, category listings, search and product details take a
store_id, a six-digitpincode, or bothlatandlng. Sending only one coordinate is refused withinvalid_input. A PIN code now wins over coordinates (a store still wins over both). swiggy-instamart.location.serviceabilityandswiggy-instamart.eta: an address Instamart does not serve now returnsserviceable: falsewith no store or ETA, instead of an error.addressis no longer required; give coordinates or apincode.- Errors: an unknown place, an unknown store and an empty suggestion list now
return
not_foundinstead of an upstream error. swiggy-instamart.products.search: each result has aresult_type(match,promoted,sold_out_collectionorother), and onlymatchresults get a rankposition.- Paging: pass
next_offsetback unchanged with the same location, store, query, sort and filters; a changed context refuses the continuation. Search and home skip products already returned on earlier pages, and stop withpagination_status: "limited"andpagination_reason: "history_limit"when that history is full. Oldpage:itemscategory offsets work only without sort or filters.
New.
swiggy-instamart.products.searchandswiggy-instamart.category.products.list:sort, and filtersbrands,typesandmin_rating. Numeric sorts order the products within each page; they do not reorder across pages. Listings can addavailable_filtersandresult_countwhen Instamart provides them.- Product and category links as input:
product_urlonswiggy-instamart.product.get,category_urlonswiggy-instamart.category.products.list. A category listing no longer needscategory_nameandtaxonomy_type: a link, or a name alone, is enough. pincodeonswiggy-instamart.home.list,swiggy-instamart.search.suggestions,swiggy-instamart.location.serviceabilityandswiggy-instamart.eta;latandlngon categories, category listings, search and product details.swiggy-instamart.home.listnow works with coordinates alone.- Products add whole-number prices in paise (
offer_price_paiseandmrp_paise, where a zero price is kept and an unknown one is left out;discount_paiseappears only when there is a discount), a numericrating_value(0 to 5), and linksproduct_url,image_urland, on variations,image_urls.
2026-10-02: Zepto search and category listings
Zepto (zepto-scraper v0.1.28) is live with filters, cursors and clearer
location context. Existing requests keep working unless a line below says
otherwise.
Check these if you use them.
- Location: send either a
pincodeor bothlatitudeandlongitude, or neither for the default store. A PIN code together with coordinates, or only one coordinate, is now refused withinvalid_input. Coordinates must be in range (−90 to 90, −180 to 180). zepto.category.products:pagenow means a slice of matching products (page×limitrows in), not Zepto's own page. Deep pages can run out of pages to read before they return rows. To walk a category in order, pass thenext_cursorfrom each response ascursor.zepto.searchandzepto.category.products:pageandpage_numberno longer default to a value; leave both out for the first page. Search pages go up to 99999, category pages up to 100000.- Links must be HTTPS links on zepto.com or zeptonow.com (a link without a
scheme is read as HTTPS); other hosts, explicit ports and credentials are
refused. IDs must be well formed. Both fail with
invalid_input. - A malformed
cursoris refused before any upstream request. A cursor whose page has changed since you received it is refused withinvalid_input; start the listing again. Catalog cursors issued before this version may also be refused.
New.
zepto.searchandzepto.category.products: filter bybrand_idsorbrand_names,min_price_paise,max_price_paise,min_discountandin_stock, and continue withcursor.zepto.searchalso accepts a Zepto searchurl.sort: price_ascorprice_descorders only the products returned in each response (sort_scope: bounded_sample), not the whole listing.- Listing responses add
next_cursor,stop_reason(why the listing stopped),applied_filters,rows_scanned,sample_sizeandsort_scope. context(store_id,source: the store that answered) is added tozepto.search,zepto.category.products,zepto.categories,zepto.catalog,zepto.product,zepto.adsandzepto.search.facets.zepto.etaaddseta_available.- A selling price, available quantity (including ads'
items_left), discount percent oreta_minutesthat Zepto reports as zero is now returned as zero instead of being dropped; unknown values are still left out.
2026-10-02: Platform updates released since 21 September
A catch-up of the scraper changes that reached the live API between 21 September and 2 October. Most are new optional inputs and new capabilities; existing requests keep working unless a line below says otherwise. Each capability's page in these docs has the full current inputs and outputs.
Check these if you use them.
- Are.na
arena.search:typeno longer acceptsblocks; useall,channelsorusers.arena.channel.blocks-listnow returns one page per call, with newpageandlimitinputs. - Instagram
instagram.highlights.listreturns at most 10 highlights per call and no longer takescursor. - Internshala
internshala.internships.listandinternshala.jobs.listaccept only the stipend and salary values the site offers (for examplemin_stipend0, 2000, 4000, 6000, 8000 or 10000); other values are refused withinvalid_input. - Zomato
zomato.restaurants.allno longer takesconcurrency,max_cellsorstep_km.zomato.restaurant.reviewsneedslimitof at least 5. - YouTube list capabilities (
channel-videos,channel-shorts,channel-live,channel-playlists,channel-community,comments.list,playlist.get,search.query) now default tolimit100 andmax_pages5 when you leave them out. Set them to get more. - Temporarily unavailable while we restore them:
bluesky.feed.search_posts,builtwith.domain.profile,tiktok.shop.product.getandweb.page.screenshot.
Renamed, with the old names still working. Requests that use the old name are served by the new one.
- Meesho:
catalog.search,catalog.categories,catalog.filters,catalog.popular_searches,catalog.search_suggestionsandproduct.reviewsare nowmeesho.catalog.searchand so on, andmeesho.product.reviews. - Swiggy Instamart: the
instamart.*capabilities are nowswiggy-instamart.*(for exampleswiggy-instamart.home.list). - Google Maps:
enrich.google-mapsis nowgooglemaps.enrich.
New capabilities.
- Facebook:
facebook.event.get,facebook.group.get,facebook.page-about.get,facebook.page-events.list,facebook.page-photos.listandfacebook.video-transcript.get. - Flipkart:
flipkart.category.products. - JioMart:
jiomart.fulfillment.getandjiomart.product.availability.scan. - LinkedIn:
linkedin.company.posts,linkedin.company.searchandlinkedin.post.transcript.get. - Swiggy Instamart: search, product, categories, category products, delivery
time and serviceability (
swiggy-instamart.products.search,.product.get,.categories.list,.category.products.list,.eta,.location.serviceability). - Zepto:
zepto.catalog,zepto.catalog.multi_location,zepto.eta,zepto.search.facetsandzepto.search.multi_location. - Zomato:
zomato.restaurant.delivery,zomato.restaurant.menu_imagesandzomato.restaurant.offers. - Instagram:
instagram.highlights.list,instagram.profile-posts.listandinstagram.reels.listare available again.
New optional inputs.
- Amazon:
marketplaceon product and search. - ASDA:
include_raw, andactive_onlyon search, category products and promotions. - Blinkit: every capability accepts a
pincodeor alocation_queryinstead of coordinates (coordinates are checked to be valid latitude and longitude); product and category links as input (product_url,category_url);brand/brandsfilters on search and category products;includeto add optional detail;category_idon categories; and promotion filters (deal_type, includingany_promotion,min_discount_percent,max_price,query,subcategory_id,max_scan). - Facebook:
active_statusandcountryonfacebook.ads-library.search;viewonfacebook.page-videos.list. - Flipkart:
sort,filters,min_priceandmax_priceon search listings;include_filtersandmax_filter_valueson search categories. - Google Trends:
category_idongoogle_trends.trending.list. - Greenhouse:
locationon job search;include_pay_transparencyon job details. - Instahyre:
max_pagesandoffseton company jobs;include_experienceandmax_detail_requestson job search;include_page_metadataon job details. - Instagram:
recent_posts_limiton profiles; higher limits on comments (limitup to 2,000,max_pagesup to 150) and trending reels (max_pagesup to 25); topics reportmedia_countandsource. - Internshala:
max_resultson internships and jobs. - JioMart: product details by
product_idorurl. - LinkedIn: company jobs by
company_name,company_urlorkeywords, withmax_pages;max_pageson job search, and both reportpages_fetched,pages_attempted,stop_reasonandpage_error;max_commentson posts;include_structured_dataon jobs; articles reportpublished_textandpublished_at_precision; newsletters reportauthor_url. - Swiggy: menus by
restaurant_url. - YouTube: comment
sort, and replies withparent_comment_idandreplies_continuation. - Zepto:
pincodeon every location-aware capability;pageon search and category products. - Zomato:
restaurant_idon restaurant capabilities;latitudeandlongitudeon search and restaurant lists;cursoron search;sort,filterandpageon reviews.
Several other platforms received reliability fixes with no change to their inputs or outputs.
Module versions now live: amazon v0.3.0, arena v0.6.3, asda v0.3.1, ashby v0.1.2, blinkit v0.7.8, bluesky v0.1.4, builtwith v0.1.6, chatgpt v0.2.12, ebay v0.5.3, facebook-ads v0.4.7, facebook v0.5.5, flipkart v0.3.0, gemini v0.3.16, google-ads v0.1.15, google-trends v0.1.8, googlemaps v0.1.21, greenhouse v0.3.0, ikea v0.1.10, instagram v1.5.7, instahyre v0.1.8, internshala v0.1.7, jiomart v0.2.4, lidl v0.2.7, linkedin v1.6.0, linktree v0.3.2, meesho v0.5.5, mmt v0.3.5, morrisons v0.2.2, nana v1.3.9, ninja v0.2.2, parkwhiz v0.2.2, pepperfry v0.3.6, producthunt v0.1.13, reddit v0.3.0, redfin v0.2.5, spothero v0.2.2, swiggy-instamart v0.2.4, swiggy v0.1.12, tata-1mg v0.2.6, tesco v0.2.1, threads v0.4.1, tiktok-ads v0.3.7, tiktok v1.2.4, trustpilot v0.2.2, tumblr v0.6.3, uniqlo v0.1.4, universal-web v0.9.21, x v0.1.13, youtube v1.1.6, zepto v0.1.23, zomato v0.4.3.
2026-10-01: Google Trends unknown country codes (v0.1.8)
google_trends.trending.list now rejects an unknown or unassigned two-letter
country code, such as XX, before contacting Google. It returns a terminal
invalid_input that names the country field, so a bad code is not retried as
a temporary upstream failure. Assigned ISO 3166-1 alpha-2 codes (and XK for
Kosovo) remain accepted by validation; Google Trending Now data availability can
still vary by country.
2026-10-01: Pinterest v1.4.25 and background backups
Nothing was removed or renamed, and responses only gained fields. Two changes are worth a look in an existing integration: some errors are now more specific, and links are checked before a job starts.
Clearer errors for missing and private accounts. When Pinterest confirms
that a board's or profile's owner does not exist, or that the account is
private, the job now says so instead of failing with upstream_error:
- account not found: HTTP
404,error.code: "not_found"; - private account: HTTP
403,error.code: "forbidden"witherror.reason: "account_private"; - Pinterest asks for sign-in: HTTP
403,error.code: "login_required".
Treat these as final for that link and stop retrying it. Retry upstream_error
as before.
The board you ask for is the board you get. Board capabilities now confirm
that the returned board matches the requested URL and fail rather than return
another board found on the same page. pinterest.user.get reports a profile as
private only when Pinterest says it is.
Links are checked up front. Every Pinterest url must be an http or
https link on pinterest.com, including country subdomains such as
uk.pinterest.com, or a pin.it short link. Other links, including other
Pinterest domains such as pinterest.ph and links without https://, are
refused with HTTP 422 invalid_input and no job is created. A pin.it link
that redirects away from Pinterest is refused too.
New and optional.
pinterest.user.getaccepts/_saved/and/_created/profile links and returns the same profile.pinterest.user-boards.getacceptspage_mode: truewithcursorto list boards one page at a time, withpaginationandoutcomein the response. Withoutpage_mode, it returns every board at once as before.- Example outputs are published for
pinterest.board-full.get,pinterest.board-pins.list,pinterest.pin.getandpinterest.section.get. - Background backups:
POST /backupswith a profile, board or pin link and a credit budget collects every board in the background, resumes after interruptions, and exports results as CSV or JSON Lines.
2026-09-21 — Additive API changes: error envelope, credit ceiling, /v1
Every change here is additive. No field, status code or error code was removed or renamed, and existing integrations need no change.
- Validation failures (HTTP
422) now also carry the standard envelope:error.code: "invalid_input",error.messageanderror.fields. The original top-levelerrorsmap is unchanged and stays. POST /executeaccepts an optional credit ceiling,max_creditsin the body or anX-Max-Creditsheader. A job priced above it is refused withcredit_limit_exceededbefore acceptance.- Every REST path is also served under
/v1(for examplePOST /v1/execute). The unversioned paths remain supported. - A capability that cannot be served at admission now returns HTTP
503temporarily_unavailableinstead of500 internal_error. MCP reports it withretryable: false. - MCP calls without an
operation_keyare deduplicated by request ID for about 15 minutes rather than indefinitely, so a later session that reuses a small request ID starts a new job. Calls with anoperation_keyare unchanged.
2026-09-01 — Durable results and fail-fast execution status
- Results containing escaped NUL characters now save successfully.
- A result that cannot be saved produces a terminal failure instead of leaving the job marked as running.
- Polling and
Prefer: wait=Nreturnexecution_lostpromptly when a request ends without a result. - Automatic retry recovery prevents duplicate execution and unintended cancellation.
This platform-wide change applies to every scraper and requires no pagination or storage workaround in customer code.
2026-09-01 — Pinterest section backups (v1.4.11)
- Added
pinterest.section-pins.listfor bounded, resumable section downloads. pinterest.section.getnow fails closed for sections above 1,000 pins instead of returning a potentially incomplete result as successful.- Section pages accept Pinterest's verified maximum of 50 raw records and expose
pagination.next_cursor,pagination.has_more,pagination.retrieved_total, and an explicit completionoutcome. - If Pinterest ends a large traversal at its observed ~2,000-item ceiling, the
last page is marked
outcome.status: incompleteinstead of complete.
Existing integrations using pinterest.section.get for large sections must
move to pinterest.section-pins.list and continue until has_more is false.
Credit prices and plans: Upscrape pricing