From ba003bd29336f2007e8775de0ea5d92d149d2b08 Mon Sep 17 00:00:00 2001 From: Ryan Byrne Date: Mon, 8 Jun 2026 08:22:36 -0700 Subject: [PATCH] feat: add scrape_async to ZenRowsScraper for async proxy fetches Co-Authored-By: Claude Sonnet 4.6 --- src/vl_apify_shared/zenrows.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/vl_apify_shared/zenrows.py b/src/vl_apify_shared/zenrows.py index c199456..d31f5c4 100644 --- a/src/vl_apify_shared/zenrows.py +++ b/src/vl_apify_shared/zenrows.py @@ -55,3 +55,22 @@ class ZenRowsScraper: f"ZenRows scraped url: {url}. Returned status: {response.status_code} in {elapsed_time}ms" ) return response + + async def scrape_async(self, url: str, premium_proxy: bool = False): + """Fetch a URL asynchronously through ZenRows as a plain proxy (no JS rendering). + + Args + url: URL to fetch + premium_proxy: use residential proxy (ZenRows premium_proxy=true) + """ + self.logger.debug(f"ZenRows fetching url: {url}...") + params: dict = {} + if premium_proxy: + params["premium_proxy"] = "true" + start = time.monotonic() + response = await self.client.get_async(url, params=params) + elapsed_time = round((time.monotonic() - start) * 1000) + self.logger.debug( + f"ZenRows fetched url: {url}. Returned status: {response.status_code} in {elapsed_time}ms" + ) + return response