{"product_id":"n8n-sub-workflow-fetch-cache-web-pages-with-bright-data","title":"n8n Sub-Workflow: Fetch \u0026 Cache Web Pages with Bright Data","description":"\u003ch3\u003eFetch, render, and cache web pages with Bright Data—fast and consistent\u003c\/h3\u003e\n\u003cp\u003eThis n8n sub-workflow pulls a URL using \u003cstrong\u003eBright Data Web Unlocker\u003c\/strong\u003e, serves results from an \u003cstrong\u003en8n Data Table cache\u003c\/strong\u003e when fresh, and returns a standardized response object containing status, content, and detailed error information.\u003c\/p\u003e\n\n\u003ch3\u003eWhat this workflow does\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReceives requests from other n8n workflows\u003c\/strong\u003e as a sub-workflow, including a \u003cstrong\u003eURL\u003c\/strong\u003e plus optional output \u003cstrong\u003eformat\u003c\/strong\u003e and \u003cstrong\u003emax-age\u003c\/strong\u003e settings.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eValidates and normalizes inputs\u003c\/strong\u003e: checks the URL, normalizes the requested format, and computes a cache freshness window.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eChecks the n8n Data Table cache\u003c\/strong\u003e for an exact URL match and returns cached content immediately when it is still fresh.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eOn cache miss, fetches via Bright Data\u003c\/strong\u003e and inspects the response body for \u003cstrong\u003eBright Data error envelopes\u003c\/strong\u003e, empty payloads, or \u003cstrong\u003eunusually thin content\u003c\/strong\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eRetries with browser rendering when needed\u003c\/strong\u003e: if the first fetch looks empty or too thin, it re-requests the page with \u003cstrong\u003ebrowser rendering enabled\u003c\/strong\u003e to better handle JavaScript-heavy pages.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eReturns a consistent result\u003c\/strong\u003e including \u003cem\u003eok\u003c\/em\u003e, \u003cem\u003efrom_cache\u003c\/em\u003e, \u003cem\u003erendered\u003c\/em\u003e, \u003cem\u003ebytes\u003c\/em\u003e, \u003cem\u003econtent\u003c\/em\u003e, and \u003cem\u003eerror\u003c\/em\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eUpserts the latest response\u003c\/strong\u003e into the Data Table for faster future calls.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eUse cases\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003eBuilding reliable web scraping pipelines where repeated URL requests must be \u003cstrong\u003ededuplicated\u003c\/strong\u003e and accelerated via caching.\u003c\/li\u003e\n  \u003cli\u003eScraping modern, JavaScript-rendered pages that may require \u003cstrong\u003eBright Data rendering\u003c\/strong\u003e after an empty\/thin first response.\u003c\/li\u003e\n  \u003cli\u003eCreating SaaS workflows that need consistent outputs (status\/content\/error) from a shared sub-workflow.\u003c\/li\u003e\n  \u003cli\u003eMonitoring or QA workflows that track whether data came from \u003cstrong\u003ecache vs. live fetch\u003c\/strong\u003e using \u003cem\u003efrom_cache\u003c\/em\u003e and \u003cem\u003erendered\u003c\/em\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e\n\n\u003ch3\u003eTechnical details\u003c\/h3\u003e\n\u003cul\u003e\n  \u003cli\u003e\n\u003cstrong\u003eIntegrations\u003c\/strong\u003e: Bright Data Web Unlocker (via HTTP Header Auth credential in n8n).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eCache layer\u003c\/strong\u003e: n8n \u003cstrong\u003eData Table\u003c\/strong\u003e named \u003ccode\u003escrape_cache\u003c\/code\u003e (with columns like \u003ccode\u003eurl\u003c\/code\u003e, \u003ccode\u003estatus\u003c\/code\u003e, \u003ccode\u003econtent\u003c\/code\u003e, \u003ccode\u003efetched_at\u003c\/code\u003e).\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eWorkflow building blocks\u003c\/strong\u003e: \u003cem\u003eif\u003c\/em\u003e, \u003cem\u003eset\u003c\/em\u003e, \u003cem\u003ecode\u003c\/em\u003e, \u003cem\u003eno op\u003c\/em\u003e, \u003cem\u003edata table\u003c\/em\u003e, and a \u003cem\u003esticky note\u003c\/em\u003e.\u003c\/li\u003e\n  \u003cli\u003e\n\u003cstrong\u003eConfig\u003c\/strong\u003e: update default unlocker zone name and default values for format and \u003cem\u003emax_age_minutes\u003c\/em\u003e in the workflow settings.\u003c\/li\u003e\n\u003c\/ul\u003e","brand":"N8N Commerce","offers":[{"title":"Default Title","offer_id":45891836903603,"sku":"N8N-18630","price":25.99,"currency_code":"GBP","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0749\/6279\/6723\/files\/Ab6AuW842k9rG-o3RQnyb_30uiEY7l.png?v=1787562139","url":"https:\/\/buyflowscripts.com\/products\/n8n-sub-workflow-fetch-cache-web-pages-with-bright-data","provider":"N8N Commerce","version":"1.0","type":"link"}