Added
-
10 new supported plugins —
google/youtube,chatgpt/chat,shein,trip/search,trip/detail,google/play-store,google/play-store/product,google/play-store/reviews,google/shopping/product,google/shopping/product/stores. Each ships a typed*Parametersmodel and a matching*AsyncPluginadapter. Sync params for YouTube, the Play Store family, and the Shopping Product family live underscrape_do.plugins.google; ChatGPT gets its ownscrape_do.plugins.chatgptsub-package. Shein and Trip.com are async-only (no per-endpoint sync docs page exists) so their params models live alongside the adapters inscrape_do.async_api.models.plugins.additional. All new*AsyncPluginadapters participate in theAsyncPlugindiscriminated union. -
Async adapters for promoted endpoints —
GoogleTrendingAsyncPluginandGoogleHotelsDetailAsyncPluginjoin the discriminated union now that Scrape.do exposes these endpoints through the Async API. -
GoogleSearchAiOverviewAsyncParameters+GoogleSearchAiOverviewAsyncPlugin— async-sideq-driver shape for thegoogle/search/ai-overviewplugin. The plugin handles both fetch hops internally over the Async API. The existing session-key-basedGoogleSearchAiOverviewParameterscontinues to be the sync follow-up form for the SERPstate: "deferred"flow, and both shapes now coexist. The new adapter participates in theAsyncPlugindiscriminated union. -
New public literal type aliases under
scrape_do.plugins.google—GoogleTrendsRegionType(regional-interest resolution for Trends), andGoogleTrendingHoursType/GoogleTrendingSortType/GoogleTrendingStatusTypefor the now-typed Trending model.GoogleTrendsDataTypegains"GEO_MAP"alongside the existing"GEO_MAP_0". Plus new Play Store / Shopping Product literal enums:GooglePlayStoreChartType,GooglePlayStoreDeviceType,GooglePlayStoreAgeType,GoogleShoppingProductSortByType,GoogleShoppingProductDeviceType.TripCabinClassTypeis published under the async-only additional module.
Changed
-
GoogleSearchAiModeParametersis now a strict subset of SERP. The model no longer carriesstart,cr,lr,time_period,filter,nfpr, ornum; AI Mode is documented as a standalone endpoint whose engine rejects those fields with400. Breaking change for callers that constructed the model with any of them. -
GoogleSearchParameters.numremoved — the current per-endpoint SERP docs no longer list it. Breaking change for callers that relied on it being a typed attribute. -
GoogleTrendsParametersgainstz(timezone offset minutes from UTC, default420server-side) andregion(geographic resolution forGEO_MAP/GEO_MAP_0widgets). -
GoogleTrendingParametersrewritten with a typed schema —geois now required and the previously-permissiveextra="allow"shell is replaced with explicithl/hours/cat/sort/statusfields backed by literal enums. The "sync-only" warning is dropped — the endpoint is now part of the Async API plugin table. -
GoogleHotelsDetailParameterssync-only marker dropped — Scrape.do promoted the endpoint to the Async API. Field shape is unchanged. -
WalmartStoreParameters/LowesStoreParametersnow enforce the documented schema fromScrape.do'sasync-api/plugins page instead of accepting arbitrary extras viaextra="allow". Walmart requiresurl(walmart.com domain) and treatszipcode+storeidas a conditional pair (both or neither). Lowes requiresurl(lowes.com domain) plus digit-onlyzipcodeandstoreid. Both pick up the gateway-sidedisableretry/transparentresponse/timeoutknobs. Breaking change for callers passing undocumented extras through the previous schema-free passthrough.
Internal
-
Integration suite standardized around three test categories — content-dependent tests retry on transient Scrape.do gateway failures, shape-dependent tests assert only that the request wasn't rejected (HTTP 400), and error-routing tests are unchanged.
-
Re-introduced
google/trendsandlowes/storeinto the live plugin sweep now that the pass criterion tolerates upstream / engine-side transient failures. -
Plugin integration tests extended with the new endpoints —
google/youtube,chatgpt/chat,shein,trip/search,google/play-store,google/shopping/product,google/trending, plus the promotedgoogle/hotels/detailadapter all participate in the parametrized sweep. The shared case list was moved totests/integration/async_api/conftest.py::_plugin_casesso bothtest_client.pyandtest_async_client.pyconsume the same definitions instead of duplicating them. -
New unit-test coverage for every new model — happy-path construction + cross-field rule tests for
GoogleYouTubeParameters,ChatGPTChatParameters,SheinParameters,TripSearchParameters,TripDetailParameters, the Play Store family, and the Shopping Product family. The sharedAsyncPlugindiscriminated-union test parametrizes all 13 new adapter keys, andtest_google.py/test_chatgpt.pycover each new*AsyncPluginadapter's defaultkeyliteral +min_length=1enforcement. -
The
GoogleSearchAiOverviewAsyncPluginintegration test is omitted for now because the gateway hasn't updated to reflect the documentation changes about thegoogle/search/ai-overviewasync endpoint, so requests still require the sync-onlysession_keyparameter.