-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
4 lines (4 loc) · 50.4 KB
/
index.html
File metadata and controls
4 lines (4 loc) · 50.4 KB
1
2
3
4
<!doctype html><html lang=en dir=ltr class="plugin-pages plugin-id-default" data-has-hydrated=false><meta charset=UTF-8><meta name=generator content="Docusaurus v3.7.0"><title data-rh=true>Crawlee · Build reliable crawlers. Fast.</title><meta data-rh=true property=og:title content="Crawlee for JavaScript · Build reliable crawlers. Fast."><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"><meta data-rh=true name=twitter:card content=summary_large_image><meta data-rh=true property=og:image content=https://crawlee.dev/img/crawlee-og.png><meta data-rh=true name=twitter:image content=https://crawlee.dev/img/crawlee-og.png><meta data-rh=true property=og:url content=https://crawlee.dev/><meta data-rh=true property=og:locale content=en><meta data-rh=true name=docusaurus_locale content=en><meta data-rh=true name=docusaurus_tag content=default><meta data-rh=true name=docsearch:language content=en><meta data-rh=true name=docsearch:docusaurus_tag content=default><meta data-rh=true name=description content="Crawlee helps you build and maintain your crawlers. It's open source, but built by developers who scrape millions of pages every day for a living."><meta data-rh=true name=og:description content="Crawlee helps you build and maintain your crawlers. It's open source, but built by developers who scrape millions of pages every day for a living."><link data-rh=true rel=icon href=/img/favicon.ico><link data-rh=true rel=canonical href=https://crawlee.dev/><link data-rh=true rel=alternate href=https://crawlee.dev/ hreflang=en><link data-rh=true rel=alternate href=https://crawlee.dev/ hreflang=x-default><script data-rh=true>document.addEventListener("DOMContentLoaded",function(){void 0===window.docusaurus&&insertBanner()});function insertBanner(){var n=document.createElement("div");n.id="__docusaurus-base-url-issue-banner-container",n.innerHTML='\n<div id="__docusaurus-base-url-issue-banner" style="border: thick solid red; background-color: rgb(255, 230, 179); margin: 20px; padding: 20px; font-size: 20px;">\n <p style="font-weight: bold; font-size: 30px;">Your Docusaurus site did not load properly.</p>\n <p>A very common reason is a wrong site <a href="https://docusaurus.io/docs/docusaurus.config.js/#baseUrl" style="font-weight: bold;">baseUrl configuration</a>.</p>\n <p>Current configured baseUrl = <span style="font-weight: bold; color: red;">/</span> (default value)</p>\n <p>We suggest trying baseUrl = <span id="__docusaurus-base-url-issue-banner-suggestion-container" style="font-weight: bold; color: green;"></span></p>\n</div>\n',document.body.prepend(n);var e=document.getElementById("__docusaurus-base-url-issue-banner-suggestion-container"),s=window.location.pathname;e.innerHTML="/"===s.substr(-1)?s:s+"/"}</script><link rel=alternate type=application/rss+xml href=/blog/rss.xml title="Crawlee for JavaScript · Build reliable crawlers. Fast. RSS Feed"><link rel=alternate type=application/atom+xml href=/blog/atom.xml title="Crawlee for JavaScript · Build reliable crawlers. Fast. Atom Feed"><link rel=search type=application/opensearchdescription+xml title="Crawlee for JavaScript · Build reliable crawlers. Fast." href=/opensearch.xml><!-- Google Tag Manager --><script>!function(e,t,a,n,r){e[n]=e[n]||[],e[n].push({"gtm.start":new Date().getTime(),event:"gtm.js"});var g=t.getElementsByTagName(a)[0],m=t.createElement(a);m.async=!0,m.src="https://www.googletagmanager.com/gtm.js?id="+r+("dataLayer"!=n?"&l="+n:""),g.parentNode.insertBefore(m,g)}(window,document,"script","dataLayer","GTM-5P7MCS7")</script><!-- End Google Tag Manager --><script>window.intercomSettings={api_base:"https://api-iam.intercom.io",app_id:"kod1r788"},function(){var t=window,e=t.Intercom;if("function"==typeof e)e("reattach_activator"),e("update",t.intercomSettings);else{var n=document,a=function(){a.c(arguments)};a.q=[],a.c=function(t){a.q.push(t)},t.Intercom=a;var i=function(){var t=n.createElement("script");t.type="text/javascript",t.async=!0,t.src="https://widget.intercom.io/widget/kod1r788";var e=n.getElementsByTagName("script")[0];e.parentNode.insertBefore(t,e)};"complete"===document.readyState?i():t.attachEvent?t.attachEvent("onload",i):t.addEventListener("load",i,!1)}}()</script><script src=/js/custom.js></script><link rel=stylesheet href=/assets/css/styles.3744b2b5.css><script src=/assets/js/runtime~main.1e84cbe3.js defer></script><script src=/assets/js/main.d619d1ee.js defer></script><body class=navigation-with-keyboard><script>!function(){var t,e=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme")}catch(t){}}();t=null!==e?e:window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":(window.matchMedia("(prefers-color-scheme: light)").matches,"light"),document.documentElement.setAttribute("data-theme",t)}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/img/crawlee-light.svg><link rel=preload as=image href=/img/crawlee-dark.svg><link rel=preload as=image href=/img/crawlee-javascript-light.svg><link rel=preload as=image href=/img/crawlee-javascript-dark.svg><link rel=preload as=image href=/img/crawlee-python-light.svg><link rel=preload as=image href=/img/crawlee-python-dark.svg><div role=region aria-label="Skip to main content"><a class=skipToContent_fXgn href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="navbar navbar--fixed-top navbarHideable_m1mJ"><div class=navbar__inner><div class=navbar__items><div class=navbarLogo__GY_><div class=logoWithArrows_cB9I><a class="logoImage_a28E sidebarLogo" href=/><img src=/img/crawlee-light.svg alt=Crawlee class="themedComponent_mlkZ themedComponent--light_NVdE"><img src=/img/crawlee-dark.svg alt=Crawlee class="themedComponent_mlkZ themedComponent--dark_xIcU"></a><svg xmlns=http://www.w3.org/2000/svg width=16 height=16 fill=none viewBox="0 0 16 16"><g stroke=#B2B8CC stroke-linecap=round stroke-linejoin=round><path d="M5.334 6 8 3.333 10.667 6M10.667 10 8 12.667 5.334 10"/></g></svg></div><div class=menuWrapper_zUZ_><div class=menu_CQ3p><a class=menuItem_QSny href=/js><img src=/img/crawlee-javascript-light.svg alt="Crawlee JavaScript" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src=/img/crawlee-javascript-dark.svg alt="Crawlee JavaScript" class="themedComponent_mlkZ themedComponent--dark_xIcU"></a><a href=https://crawlee.dev/python target=_self rel=dofollow class=menuItem_QSny><img src=/img/crawlee-python-light.svg alt="Crawlee Python" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src=/img/crawlee-python-dark.svg alt="Crawlee Python" class="themedComponent_mlkZ themedComponent--dark_xIcU"></a><a class=menuItem_QSny href=/><img src=/img/crawlee-light.svg alt=Crawlee class="themedComponent_mlkZ themedComponent--light_NVdE"><img src=/img/crawlee-dark.svg alt=Crawlee class="themedComponent_mlkZ themedComponent--dark_xIcU"><svg xmlns=http://www.w3.org/2000/svg width=17 height=16 fill=none viewBox="0 0 17 16"><path fill=#555D76 d="M14.742 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0l-3.25-3.25a.751.751 0 0 1 1.06-1.06l2.72 2.72 6.72-6.72a.75.75 0 0 1 1.06 0"/></svg></a></div></div></div><div class="navbarItems_fVuF navbarItems__leftMargin_FZoS"><a class="navbar__item navbar__link" href=/js>JavaScript</a><a href=https://crawlee.dev/python target=_self rel=dofollow class="navbar__item navbar__link">Python</a><a class="navbar__item navbar__link" href=/blog>Blog</a></div></div><div class="navbar__items navbar__items--right"><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="main-wrapper mainWrapper_z2l0"><div id=homepageContainer_DjHw><section class=hero_yaHF><h1 class=heroTitle_oQIe>Build reliable web scrapers. Fast.</h1><div class=dashedSeparator_QBho id=separatorHeroHeader_qkl2></div><p class=heroSubtitle_A_md>Crawlee is a web scraping library for JavaScript and Python. It handles blocking, crawling, proxies, and browsers for you.<div class=dashedSeparator_QBho id=separatorHeroHeader2_DFjv><div class=dashedDecorativeCircle_xmcm id=heroDecorativeCircle_vjTR></div></div></section><section class=languageGetStartedSection_KbDZ><div class=languageGetStartedContainer_GWbY><img src=/img/crawlee-javascript-light.svg alt="Crawlee JavaScript" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src=/img/crawlee-javascript-dark.svg alt="Crawlee JavaScript" class="themedComponent_mlkZ themedComponent--dark_xIcU"><div class=buttonContainer_Ep50><a target=_self rel=dofollow href=/js><span class="button_sNNE buttonPrimary_VswM">Learn more</span></a><span><a href=https://github.com/apify/crawlee data-color-scheme=light data-show-count=true aria-label="Star crawlee on GitHub" data-size=large style=min-height:28px>Star</a></span></div><code class=commandContainer_BQw5>npx crawlee create my-crawler<!-- --> <button type=button aria-label="Copy code to clipboard" title=Copy class="copyButton_GOA5 copyButtonCompact_ICWU"><svg width=20 height=20 viewBox="0 0 20 20" xmlns=http://www.w3.org/2000/svg><path fill-rule=evenodd clip-rule=evenodd d="M8.375 2.375C7.13236 2.375 6.125 3.38236 6.125 4.625V6.125H4.625C3.38236 6.125 2.375 7.13236 2.375 8.375V15.375C2.375 16.6176 3.38236 17.625 4.625 17.625H11.625C12.8676 17.625 13.875 16.6176 13.875 15.375V13.875H15.375C16.6176 13.875 17.625 12.8676 17.625 11.625V4.625C17.625 3.38236 16.6176 2.375 15.375 2.375H8.375ZM13.875 12.375H15.375C15.7892 12.375 16.125 12.0392 16.125 11.625V4.625C16.125 4.21079 15.7892 3.875 15.375 3.875H8.375C7.96079 3.875 7.625 4.21079 7.625 4.625V6.125H11.625C12.8676 6.125 13.875 7.13236 13.875 8.375V12.375ZM4.625 7.625C4.21079 7.625 3.875 7.96079 3.875 8.375V15.375C3.875 15.7892 4.21079 16.125 4.625 16.125H11.625C12.0392 16.125 12.375 15.7892 12.375 15.375V8.375C12.375 7.96079 12.0392 7.625 11.625 7.625H4.625Z"/></svg></button></code></div><div class=dashedSeparatorVertical__KuG></div><div class=languageGetStartedContainer_GWbY><img src=/img/crawlee-python-light.svg alt="Crawlee Python" class="themedComponent_mlkZ themedComponent--light_NVdE"><img src=/img/crawlee-python-dark.svg alt="Crawlee Python" class="themedComponent_mlkZ themedComponent--dark_xIcU"><div class=buttonContainer_Ep50><a href=https://crawlee.dev/python target=_self rel=dofollow><span class="button_sNNE buttonPrimary_VswM">Learn more</span></a><span><a href=https://github.com/apify/crawlee-python data-color-scheme=light data-show-count=true aria-label="Star crawlee on GitHub" data-size=large style=min-height:28px>Star</a></span></div><code class=commandContainer_BQw5>pipx run crawlee create my-crawler<!-- --> <button type=button aria-label="Copy code to clipboard" title=Copy class="copyButton_GOA5 copyButtonCompact_ICWU"><svg width=20 height=20 viewBox="0 0 20 20" xmlns=http://www.w3.org/2000/svg><path fill-rule=evenodd clip-rule=evenodd d="M8.375 2.375C7.13236 2.375 6.125 3.38236 6.125 4.625V6.125H4.625C3.38236 6.125 2.375 7.13236 2.375 8.375V15.375C2.375 16.6176 3.38236 17.625 4.625 17.625H11.625C12.8676 17.625 13.875 16.6176 13.875 15.375V13.875H15.375C16.6176 13.875 17.625 12.8676 17.625 11.625V4.625C17.625 3.38236 16.6176 2.375 15.375 2.375H8.375ZM13.875 12.375H15.375C15.7892 12.375 16.125 12.0392 16.125 11.625V4.625C16.125 4.21079 15.7892 3.875 15.375 3.875H8.375C7.96079 3.875 7.625 4.21079 7.625 4.625V6.125H11.625C12.8676 6.125 13.875 7.13236 13.875 8.375V12.375ZM4.625 7.625C4.21079 7.625 3.875 7.96079 3.875 8.375V15.375C3.875 15.7892 4.21079 16.125 4.625 16.125H11.625C12.0392 16.125 12.375 15.7892 12.375 15.375V8.375C12.375 7.96079 12.0392 7.625 11.625 7.625H4.625Z"/></svg></button></code></div></section><div class=dashedSeparator_QBho></div><section class=codeExampleSection_Cmcr><div class=dashedSeparatorVertical__KuG style=height:46px;place-self:center></div><div class=languageSwitchContainer_NPI5><div class=languageSwitch_tSdC><button class="switchOption_Q18j active_BDVU">JavaScript</button><button class=switchOption_Q18j>Python</button><div class=switchBackground_mkUa></div></div></div><div class=fadedOutSeparator_Xrcu></div><div class=decorativeRow_qexa></div><div class=codeBlockContainer_N92A><div class="container_TGAW runnable-code-block"><a href="https://console.apify.com/actors/6i5QsHBMtm3hKph70?runConfig=eyJ1IjoiRWdQdHczb2VqNlRhRHQ1cW4iLCJ2IjoxfQ.eyJpbnB1dCI6IntcbiAgICBcImNvZGVcIjogXCJpbXBvcnQgeyBQbGF5d3JpZ2h0Q3Jhd2xlciB9IGZyb20gJ2NyYXdsZWUnO1xcblxcbi8vIENyYXdsZXIgc2V0dXAgZnJvbSB0aGUgcHJldmlvdXMgZXhhbXBsZS5cXG5jb25zdCBjcmF3bGVyID0gbmV3IFBsYXl3cmlnaHRDcmF3bGVyKHtcXG4gICAgLy8gVXNlIHRoZSByZXF1ZXN0SGFuZGxlciB0byBwcm9jZXNzIGVhY2ggb2YgdGhlIGNyYXdsZWQgcGFnZXMuXFxuICAgIGFzeW5jIHJlcXVlc3RIYW5kbGVyKHsgcmVxdWVzdCwgcGFnZSwgZW5xdWV1ZUxpbmtzLCBwdXNoRGF0YSwgbG9nIH0pIHtcXG4gICAgICAgIGNvbnN0IHRpdGxlID0gYXdhaXQgcGFnZS50aXRsZSgpO1xcbiAgICAgICAgbG9nLmluZm8oYFRpdGxlIG9mICR7cmVxdWVzdC5sb2FkZWRVcmx9IGlzICcke3RpdGxlfSdgKTtcXG5cXG4gICAgICAgIC8vIFNhdmUgcmVzdWx0cyBhcyBKU09OIHRvIC4vc3RvcmFnZS9kYXRhc2V0cy9kZWZhdWx0XFxuICAgICAgICBhd2FpdCBwdXNoRGF0YSh7IHRpdGxlLCB1cmw6IHJlcXVlc3QubG9hZGVkVXJsIH0pO1xcblxcbiAgICAgICAgLy8gRXh0cmFjdCBsaW5rcyBmcm9tIHRoZSBjdXJyZW50IHBhZ2VcXG4gICAgICAgIC8vIGFuZCBhZGQgdGhlbSB0byB0aGUgY3Jhd2xpbmcgcXVldWUuXFxuICAgICAgICBhd2FpdCBlbnF1ZXVlTGlua3MoKTtcXG4gICAgfSxcXG5cXG4gICAgLy8gVW5jb21tZW50IHRoaXMgb3B0aW9uIHRvIHNlZSB0aGUgYnJvd3NlciB3aW5kb3cuXFxuICAgIC8vIGhlYWRsZXNzOiBmYWxzZSxcXG5cXG4gICAgLy8gQ29tbWVudCB0aGlzIG9wdGlvbiB0byBzY3JhcGUgdGhlIGZ1bGwgd2Vic2l0ZS5cXG4gICAgbWF4UmVxdWVzdHNQZXJDcmF3bDogMjAsXFxufSk7XFxuXFxuLy8gQWRkIGZpcnN0IFVSTCB0byB0aGUgcXVldWUgYW5kIHN0YXJ0IHRoZSBjcmF3bC5cXG5hd2FpdCBjcmF3bGVyLnJ1bihbJ2h0dHBzOi8vY3Jhd2xlZS5kZXYnXSk7XFxuXFxuLy8gRXhwb3J0IHRoZSBlbnRpcmV0eSBvZiB0aGUgZGF0YXNldCB0byBhIHNpbmdsZSBmaWxlIGluXFxuLy8gLi9zdG9yYWdlL2tleV92YWx1ZV9zdG9yZXMvcmVzdWx0LmNzdlxcbmNvbnN0IGRhdGFzZXQgPSBhd2FpdCBjcmF3bGVyLmdldERhdGFzZXQoKTtcXG5hd2FpdCBkYXRhc2V0LmV4cG9ydFRvQ1NWKCdyZXN1bHQnKTtcXG5cXG4vLyBPciB3b3JrIHdpdGggdGhlIGRhdGEgZGlyZWN0bHkuXFxuY29uc3QgZGF0YSA9IGF3YWl0IGNyYXdsZXIuZ2V0RGF0YSgpO1xcbmNvbnNvbGUudGFibGUoZGF0YS5pdGVtcyk7XFxuXCJcbn0iLCJvcHRpb25zIjp7ImNvbnRlbnRUeXBlIjoiYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGYtOCIsIm1lbW9yeSI6NDA5Nn19.WKB14SjgTceKYyhONw2oXTkiOao6X4-UAS7cIuwqGvo&asrc=run_on_apify" target=_blank rel=follow class=button_YBBj>Run on<svg width=91 height=25 viewBox="0 0 91 25" fill=none xmlns=http://www.w3.org/2000/svg class="apify-logo-light alignMiddle_src-theme-Footer-index-module"><path d="M3.135 2.85A3.409 3.409 0 0 0 .227 6.699l2.016 14.398 8.483-19.304-7.59 1.059Z" fill=#97D700 /><path d="M23.604 14.847 22.811 3.78a3.414 3.414 0 0 0-3.64-3.154c-.077 0-.153.014-.228.025l-3.274.452 7.192 16.124c.54-.67.805-1.52.743-2.379Z" fill=#71C5E8 /><path d="M5.336 24.595c.58.066 1.169-.02 1.706-.248l12.35-5.211L13.514 5.97 5.336 24.595Z" fill=#FF9013 /><path d="M33.83 5.304h3.903l5.448 14.623h-3.494l-1.022-2.994h-5.877l-1.025 2.994h-3.384L33.83 5.304Zm-.177 9.032h4.14l-2-5.994h-.086l-2.054 5.994ZM58.842 5.304h3.302v14.623h-3.302V5.304ZM64.634 5.304h10.71v2.7h-7.4v4.101h5.962v2.632h-5.963v5.186h-3.309V5.303ZM82.116 14.38l-5.498-9.076h3.748l3.428 6.016h.085l3.599-6.016H91l-5.56 9.054v5.569h-3.324v-5.548ZM51.75 5.304h-7.292v14.623h3.3v-4.634h3.993a4.995 4.995 0 1 0 0-9.99Zm-.364 7.417h-3.628V7.875h3.627a2.423 2.423 0 0 1 0 4.846Z" class=apify-logo fill=#000 /></svg></a><div class="code-block no-title language-javascript codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_biex><pre tabindex=0 class="prism-code language-javascript codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><span class=token-line style=color:#393A34><span class="token keyword module" style=color:#00009f>import</span><span class="token plain"> </span><span class="token imports punctuation" style=color:#393A34>{</span><span class="token imports"> </span><span class="token imports maybe-class-name">PlaywrightCrawler</span><span class="token imports"> </span><span class="token imports punctuation" style=color:#393A34>}</span><span class="token plain"> </span><span class="token keyword module" style=color:#00009f>from</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>'crawlee'</span><span class="token punctuation" style=color:#393A34>;</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic>// PlaywrightCrawler crawls the web using a headless browser controlled by the Playwright library.</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>const</span><span class="token plain"> crawler </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token keyword" style=color:#00009f>new</span><span class="token plain"> </span><span class="token class-name">PlaywrightCrawler</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>{</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token comment" style=color:#999988;font-style:italic>// Use the requestHandler to process each of the crawled pages.</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token keyword" style=color:#00009f>async</span><span class="token plain"> </span><span class="token function" style=color:#d73a49>requestHandler</span><span class="token punctuation" style=color:#393A34>(</span><span class="token parameter punctuation" style=color:#393A34>{</span><span class="token parameter"> request</span><span class="token parameter punctuation" style=color:#393A34>,</span><span class="token parameter"> page</span><span class="token parameter punctuation" style=color:#393A34>,</span><span class="token parameter"> enqueueLinks</span><span class="token parameter punctuation" style=color:#393A34>,</span><span class="token parameter"> pushData</span><span class="token parameter punctuation" style=color:#393A34>,</span><span class="token parameter"> log </span><span class="token parameter punctuation" style=color:#393A34>}</span><span class="token punctuation" style=color:#393A34>)</span><span class="token plain"> </span><span class="token punctuation" style=color:#393A34>{</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token keyword" style=color:#00009f>const</span><span class="token plain"> title </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token keyword control-flow" style=color:#00009f>await</span><span class="token plain"> page</span><span class="token punctuation" style=color:#393A34>.</span><span class="token method function property-access" style=color:#d73a49>title</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>;</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> log</span><span class="token punctuation" style=color:#393A34>.</span><span class="token method function property-access" style=color:#d73a49>info</span><span class="token punctuation" style=color:#393A34>(</span><span class="token template-string template-punctuation string" style=color:#e3116c>`</span><span class="token template-string string" style=color:#e3116c>Title of </span><span class="token template-string interpolation interpolation-punctuation punctuation" style=color:#393A34>${</span><span class="token template-string interpolation">request</span><span class="token template-string interpolation punctuation" style=color:#393A34>.</span><span class="token template-string interpolation property-access">loadedUrl</span><span class="token template-string interpolation interpolation-punctuation punctuation" style=color:#393A34>}</span><span class="token template-string string" style=color:#e3116c> is '</span><span class="token template-string interpolation interpolation-punctuation punctuation" style=color:#393A34>${</span><span class="token template-string interpolation">title</span><span class="token template-string interpolation interpolation-punctuation punctuation" style=color:#393A34>}</span><span class="token template-string string" style=color:#e3116c>'</span><span class="token template-string template-punctuation string" style=color:#e3116c>`</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>;</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token comment" style=color:#999988;font-style:italic>// Save results as JSON to `./storage/datasets/default` directory.</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token keyword control-flow" style=color:#00009f>await</span><span class="token plain"> </span><span class="token function" style=color:#d73a49>pushData</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>{</span><span class="token plain"> title</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"> </span><span class="token literal-property property" style=color:#36acaa>url</span><span class="token operator" style=color:#393A34>:</span><span class="token plain"> request</span><span class="token punctuation" style=color:#393A34>.</span><span class="token property-access">loadedUrl</span><span class="token plain"> </span><span class="token punctuation" style=color:#393A34>}</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>;</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token comment" style=color:#999988;font-style:italic>// Extract links from the current page and add them to the crawling queue.</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token keyword control-flow" style=color:#00009f>await</span><span class="token plain"> </span><span class="token function" style=color:#d73a49>enqueueLinks</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>;</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token punctuation" style=color:#393A34>}</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token comment" style=color:#999988;font-style:italic>// Uncomment this option to see the browser window.</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token comment" style=color:#999988;font-style:italic>// headless: false,</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token comment" style=color:#999988;font-style:italic>// Comment this option to scrape the full website.</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"> </span><span class="token literal-property property" style=color:#36acaa>maxRequestsPerCrawl</span><span class="token operator" style=color:#393A34>:</span><span class="token plain"> </span><span class="token number" style=color:#36acaa>20</span><span class="token punctuation" style=color:#393A34>,</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token punctuation" style=color:#393A34>}</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>;</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic>// Add first URL to the queue and start the crawl.</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword control-flow" style=color:#00009f>await</span><span class="token plain"> crawler</span><span class="token punctuation" style=color:#393A34>.</span><span class="token method function property-access" style=color:#d73a49>run</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>[</span><span class="token string" style=color:#e3116c>'https://crawlee.dev'</span><span class="token punctuation" style=color:#393A34>]</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>;</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic>// Export the whole dataset to a single file in `./result.csv`.</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword control-flow" style=color:#00009f>await</span><span class="token plain"> crawler</span><span class="token punctuation" style=color:#393A34>.</span><span class="token method function property-access" style=color:#d73a49>exportData</span><span class="token punctuation" style=color:#393A34>(</span><span class="token string" style=color:#e3116c>'./result.csv'</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>;</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain" style=display:inline-block></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token comment" style=color:#999988;font-style:italic>// Or work with the data directly.</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token keyword" style=color:#00009f>const</span><span class="token plain"> data </span><span class="token operator" style=color:#393A34>=</span><span class="token plain"> </span><span class="token keyword control-flow" style=color:#00009f>await</span><span class="token plain"> crawler</span><span class="token punctuation" style=color:#393A34>.</span><span class="token method function property-access" style=color:#d73a49>getData</span><span class="token punctuation" style=color:#393A34>(</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>;</span><span class="token plain"></span><br></span><span class=token-line style=color:#393A34><span class="token plain"></span><span class="token console class-name">console</span><span class="token punctuation" style=color:#393A34>.</span><span class="token method function property-access" style=color:#d73a49>table</span><span class="token punctuation" style=color:#393A34>(</span><span class="token plain">data</span><span class="token punctuation" style=color:#393A34>.</span><span class="token property-access">items</span><span class="token punctuation" style=color:#393A34>)</span><span class="token punctuation" style=color:#393A34>;</span><br></span></code></pre><div class=buttonGroup__atx><button type=button aria-label="Copy code to clipboard" title=Copy class=clean-btn><span class=copyButtonIcons_eSgA aria-hidden=true><svg viewBox="0 0 24 24" class=copyButtonIcon_y97N><path fill=currentColor d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"/></svg><svg viewBox="0 0 24 24" class=copyButtonSuccessIcon_LjdS><path fill=currentColor d=M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z /></svg></span></button></div></div></div></div></div><div class=dashedSeparator_QBho></div><div class=decorativeRow_qexa></div></section><section class=cliExampleSection_XgaH><div class=cliExampleTitle_tHVv>Or start with a template from our CLI</div><code class=cliExampleCodeBlock_saP8><pre><span class=cliCommandPrefix_b106>$</span>npx crawlee create my-crawler<button type=button aria-label="Copy code to clipboard" title=Copy class="copyButton_GOA5 copyButtonDefault_nhqF"><svg width=20 height=20 viewBox="0 0 20 20" xmlns=http://www.w3.org/2000/svg><path fill-rule=evenodd clip-rule=evenodd d="M8.375 2.375C7.13236 2.375 6.125 3.38236 6.125 4.625V6.125H4.625C3.38236 6.125 2.375 7.13236 2.375 8.375V15.375C2.375 16.6176 3.38236 17.625 4.625 17.625H11.625C12.8676 17.625 13.875 16.6176 13.875 15.375V13.875H15.375C16.6176 13.875 17.625 12.8676 17.625 11.625V4.625C17.625 3.38236 16.6176 2.375 15.375 2.375H8.375ZM13.875 12.375H15.375C15.7892 12.375 16.125 12.0392 16.125 11.625V4.625C16.125 4.21079 15.7892 3.875 15.375 3.875H8.375C7.96079 3.875 7.625 4.21079 7.625 4.625V6.125H11.625C12.8676 6.125 13.875 7.13236 13.875 8.375V12.375ZM4.625 7.625C4.21079 7.625 3.875 7.96079 3.875 8.375V15.375C3.875 15.7892 4.21079 16.125 4.625 16.125H11.625C12.0392 16.125 12.375 15.7892 12.375 15.375V8.375C12.375 7.96079 12.0392 7.625 11.625 7.625H4.625Z"/></svg></button></pre></code><div class=cliExampleSubtitle_gyUK>Built with 🤍 by Apify. Forever free and open-source.</div></section><div class=dashedSeparator_QBho><div class=dashedDecorativeCircle_xmcm id=ctaDecorativeCircle_RiRN></div></div><section class=ctaSection_eMjk><h2 class=ctaTitle_mGDZ>Get started now!</h2><div class=ctaDescription_bzjF>Crawlee won’t fix broken selectors for you (yet), but it makes building and maintaining reliable crawlers faster and easier—so you can focus on what matters most.</div><div class="ctaButtonContainer_iuBI ctaButtonContainerFullWidth_bk9j"><a target=_self rel=dofollow href=/js><span class="button_sNNE buttonSecondary_xP9S big_fWNj"><svg xmlns=http://www.w3.org/2000/svg width=17 height=16 fill=none viewBox="0 0 17 16"><g stroke=var(--color-text) stroke-linecap=round stroke-linejoin=round clip-path=url(#a)><path fill=var(--color-text) stroke-width=0.58 d="M15.946 14.857h-14.6c-.209 0-.34-.235-.235-.424l3.65-6.575 3.65-6.575a.267.267 0 0 1 .47 0l2.349 4.23a3.239 3.239 0 1 0 3.035 5.465l1.918 3.455c.104.187-.027.424-.235.424z"/><path stroke-width=1.116 d="M15.26 9.718a3.237 3.237 0 1 1-1.546-4.257"/></g><defs><clipPath id=a><path fill=var(--color-text) d="M.5 0h16v16H.5z"/></clipPath></defs></svg>Get started with JS</span></a><a href=https://crawlee.dev/python target=_self rel=dofollow><span class="button_sNNE buttonSecondary_xP9S big_fWNj"><svg xmlns=http://www.w3.org/2000/svg width=17 height=16 fill=none viewBox="0 0 17 16"><g stroke=var(--color-text) stroke-linecap=round stroke-linejoin=round clip-path=url(#a)><path fill=var(--color-text) stroke-width=0.58 d="M15.946 14.857h-14.6c-.209 0-.34-.235-.235-.424l3.65-6.575 3.65-6.575a.267.267 0 0 1 .47 0l2.349 4.23a3.239 3.239 0 1 0 3.035 5.465l1.918 3.455c.104.187-.027.424-.235.424z"/><path stroke-width=1.116 d="M15.26 9.718a3.237 3.237 0 1 1-1.546-4.257"/></g><defs><clipPath id=a><path fill=var(--color-text) d="M.5 0h16v16H.5z"/></clipPath></defs></svg>Get started with Python</span></a></div><div class=fadedOutSeparator_Xrcu id=ctaFadedOutSeparator_mqMu></div><div class=fadedOutSeparatorVertical_sPA9 id=fadedOutSeparatorVerticalLeft_YVql></div><div class=fadedOutSeparatorVertical_sPA9 id=fadedOutSeparatorVerticalRight_YmHa></div><div class=dashedDecorativeCircle_xmcm id=ctaDashedCircleRight_iK_p></div><svg width=543 height=615 viewBox="0 0 266 330" fill=none xmlns=http://www.w3.org/2000/svg class=ctaImage_N8JH><style>g>rect{transform-origin:50%;transform-box:fill-box;will-change:transform;animation:5s ease-in-out infinite rotate;transform:translate(0,0)}@keyframes rotate{0%{transform:rotate(0)}50%{transform:rotate(180deg)}to{transform:rotate(0)}}</style><g transform="scale(0.5347593583)translate(116 146)" filter=url(#filter8_dddd_962_28212)><mask id=mask0_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=98.5 y=310.5 width=140 height=45><rect x=98.5 y=310.5 width=140 height=45 fill=url(#paint0_linear_962_28212) /></mask><g mask=url(#mask0_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 127.579 317.493)"><rect width=5.69774 height=5.69774 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 5.59" style=animation-delay:0s /></g></g><mask id=mask1_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=89.5 y=276.5 width=220 height=95><rect x=89.5 y=276.5 width=215 height=95 fill=url(#paint1_linear_962_28212) /></mask><g mask=url(#mask1_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 114.686 295.837)"><rect width=19.6416 height=19.6416 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 9.71" style=animation-delay:0.05s /></g></g><mask id=mask2_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-187 y=123.5 width=400 height=200><rect x=-186.5 y=123.5 width=395 height=200 fill=url(#paint2_linear_962_28212) /></mask><g mask=url(#mask2_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 96.9658 274.19)"><rect width=38.8063 height=38.8063 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 12.83" style=animation-delay:0.1s /></g></g><mask id=mask3_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-169 y=103.5 width=590 height=245><rect x=-168.5 y=103.5 width=585 height=245 fill=url(#paint3_linear_962_28212) /></mask><g mask=url(#mask3_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 79.2673 252.543)"><rect width=57.9474 height=57.9474 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 14.3868" style=animation-delay:0.15s /></g></g><mask id=mask4_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-151 y=79 width=770 height=315><rect x=-150.5 y=79 width=765 height=315 fill=url(#paint4_linear_962_28212) /></mask><g mask=url(#mask4_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 61.2512 229.993)"><rect width=77.4321 height=77.4321 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 15.386" style=animation-delay:0.2s /></g></g><mask id=mask5_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-133 y=54.5 width=950 height=385><rect x=-132.5 y=54.5 width=945 height=385 fill=url(#paint5_linear_962_28212) /></mask><g mask=url(#mask5_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 43.553 208.784)"><rect width=96.5732 height=96.5732 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 15.995" style=animation-delay:0.25s /></g></g><mask id=mask6_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-114 y=29.5 width=1140 height=460><rect x=-113.5 y=29.5 width=1135 height=460 fill=url(#paint6_linear_962_28212) /></mask><g mask=url(#mask6_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 26.4451 186.699)"><rect width=115.076 height=115.076 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 16.3394" style=animation-delay:0.3s /></g></g><mask id=mask7_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-99 y=-5 width=1290 height=550><rect x=-98.5 y=-5 width=1285 height=550 fill=url(#paint7_linear_962_28212) /></mask><g mask=url(#mask7_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 8.5 161.437)"><rect width=134.315 height=134.315 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 16.689" style=animation-delay:0.35s /></g></g><mask id=mask8_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-114 y=-11 width=1140 height=460><rect x=-113.5 y=-11 width=1135 height=460 fill=url(#paint8_linear_962_28212) /></mask><g mask=url(#mask8_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 26.666 139.719)"><rect width=115.076 height=115.076 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 16.3394" style=animation-delay:0.4s /></g></g><mask id=mask9_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-133 y=-28.5 width=950 height=385><rect x=-132.5 y=-28.5 width=945 height=385 fill=url(#paint9_linear_962_28212) /></mask><g mask=url(#mask9_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 43.7737 117.566)"><rect width=96.5732 height=96.5732 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 15.995" style=animation-delay:0.45s /></g></g><mask id=mask10_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-151 y=-44 width=770 height=315><rect x=-150.5 y=-44 width=765 height=315 fill=url(#paint10_linear_962_28212) /></mask><g mask=url(#mask10_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 61.4722 96.2881)"><rect width=77.4321 height=77.4321 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 15.386" style=animation-delay:0.5s /></g></g><mask id=mask11_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-169 y=-72.5 width=590 height=245><rect x=-168.5 y=-72.5 width=585 height=245 fill=url(#paint11_linear_962_28212) /></mask><g mask=url(#mask11_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 79.4883 73.668)"><rect width=57.9474 height=57.9474 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 14.3868" style=animation-delay:0.55s /></g></g><mask id=mask12_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=-187 y=-107.5 width=400 height=200><rect x=-186.5 y=-107.5 width=395 height=200 fill=url(#paint12_linear_962_28212) /></mask><g mask=url(#mask12_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 97.1863 51.9512)"><rect width=38.8063 height=38.8063 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 12.83" style=animation-delay:0.6s /></g></g><mask id=mask13_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=89.5 y=-1.5 width=220 height=95><rect x=89.5 y=-1.5 width=215 height=95 fill=url(#paint13_linear_962_28212) /></mask><g mask=url(#mask13_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 114.907 30.2344)"><rect width=19.6416 height=19.6416 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 9.71" style=animation-delay:0.65s /></g></g><mask id=mask14_962_28212 style=mask-type:alpha maskUnits=userSpaceOnUse x=98.5 y=-8.5 width=140 height=45><rect x=98.5 y=-8.5 width=140 height=45 fill=url(#paint14_linear_962_28212) /></mask><g mask=url(#mask14_962_28212)><g transform="matrix(0.92388 -0.382683 0.925375 0.379052 127.8 8.52734)"><rect width=5.69774 height=5.69774 stroke=#F25532 stroke-width=3 stroke-linecap=round stroke-dasharray="0.1 5.59" style=animation-delay:0.7s /></g></g></g><defs><filter id=filter8_dddd_962_28212 filterUnits=userSpaceOnUse color-interpolation-filters=sRGB><feFlood flood-opacity=0 result=BackgroundImageFix /><feColorMatrix in=SourceAlpha type=matrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0" result=hardAlpha /><feOffset/><feGaussianBlur stdDeviation=1 /><feColorMatrix type=matrix values="0 0 0 0 0.947194 0 0 0 0 0.333676 0 0 0 0 0.198024 0 0 0 1 0"/><feBlend mode=normal in2=BackgroundImageFix result=effect1_dropShadow_962_28212 /><feOffset/><feGaussianBlur stdDeviation=3.5 /><feColorMatrix type=matrix values="0 0 0 0 0.895833 0 0 0 0 0.354167 0 0 0 0 1 0 0 0 1 0"/><feBlend mode=normal in2=effect1_dropShadow_962_28212 result=effect2_dropShadow_962_28212 /><feOffset/><feGaussianBlur stdDeviation=12 /><feBlend mode=normal in2=effect2_dropShadow_962_28212 result=effect3_dropShadow_962_28212 /><feColorMatrix in=SourceAlpha type=matrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 32 0" result=hardAlpha /><feOffset/><feGaussianBlur stdDeviation=10 /><feColorMatrix type=matrix values="0 0 0 0 0.894118 0 0 0 0 0.352941 0 0 0 0 1 0 0 0 1 0"/><feBlend mode=normal in2=effect3_dropShadow_962_28212 result=effect4_dropShadow_962_28212 /><feBlend mode=normal in=SourceGraphic in2=effect4_dropShadow_962_28212 result=shape /></filter><linearGradient id=paint0_linear_962_28212 x1=133 y1=313 x2=133 y2=322 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint1_linear_962_28212 x1=133 y1=286 x2=133 y2=305 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint2_linear_962_28212 x1=133 y1=258 x2=133 y2=291 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint3_linear_962_28212 x1=133 y1=228 x2=133 y2=277 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint4_linear_962_28212 x1=133 y1=199 x2=133 y2=262 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint5_linear_962_28212 x1=133 y1=170 x2=133 y2=247 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint6_linear_962_28212 x1=133 y1=141 x2=133 y2=233 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint7_linear_962_28212 x1=133 y1=106 x2=133 y2=216 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint8_linear_962_28212 x1=133 y1=94 x2=133 y2=186 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint9_linear_962_28212 x1=133 y1=79 x2=133 y2=156 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint10_linear_962_28212 x1=133 y1=65 x2=133 y2=128 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint11_linear_962_28212 x1=133 y1=49 x2=133 y2=98 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint12_linear_962_28212 x1=133 y1=35 x2=133 y2=68 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint13_linear_962_28212 x1=133 y1=21 x2=133 y2=40 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient><linearGradient id=paint14_linear_962_28212 x1=133 y1=4 x2=133 y2=13 gradientUnits=userSpaceOnUse><stop stop-color=#D9D9D9 stop-opacity=0 /><stop offset=1 stop-color=#D9D9D9 /></linearGradient></defs></svg></section></div></div><footer class="footer_J6tW light"><div class=footerTop_DGOU><div class=footerTopRow_xbYo><div class=footerTopRowLeft__jwX><a width=120 class=footerLogo_Jxa4 href=/><img src=/img/crawlee-light.svg alt="Docusaurus themed image" class="themedComponent_mlkZ themedComponent--light_NVdE" width=120><img src=/img/crawlee-dark.svg alt="Docusaurus themed image" class="themedComponent_mlkZ themedComponent--dark_xIcU" width=120></a><div><button class="clean-btn toggleButton_yw5v toggleButtonDisabled_BJd7" type=button disabled title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)"><svg xmlns=http://www.w3.org/2000/svg width=20 height=20 fill=none viewBox="0 0 20 20" class=""><path stroke=#555D76 stroke-linecap=round stroke-linejoin=round stroke-width=1.5 d="M6.666 10a3.333 3.333 0 1 0 6.666 0 3.333 3.333 0 0 0-6.666 0"/><path stroke=#555D76 stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M2.5 10h.833M10 2.5v.833M16.667 10h.833M10 16.667v.833M4.667 4.667l.583.583m10.083-.583-.583.583m0 9.5.583.583M5.25 14.75l-.583.583"/></svg><svg xmlns=http://www.w3.org/2000/svg width=20 height=20 fill=none viewBox="0 0 20 20" class=""><path stroke=#555D76 stroke-linecap=round stroke-linejoin=round stroke-width=1.5 d="M10 2.5h.328a6.25 6.25 0 0 0 6.6 10.371A7.5 7.5 0 1 1 10 2.493zM14.167 3.333A1.667 1.667 0 0 0 15.833 5a1.667 1.667 0 0 0-1.666 1.666A1.667 1.667 0 0 0 12.5 5a1.667 1.667 0 0 0 1.667-1.667M15.833 9.166H17.5m-.834-.833V10"/></svg><span></span></button></div></div><div class=footerTopRowRight_dEd9><div><div class=footerTitle_tbhc>Docs</div><ul class="footerList_lK9E clean-list"><li><a class="footer__link-item footerLink_YJ8n" href=/js/docs/guides>Guides</a><li><a class="footer__link-item footerLink_YJ8n" href=/js/docs/examples>Examples</a><li><a class="footer__link-item footerLink_YJ8n" href=/js/api/core>API reference</a><li><a class="footer__link-item footerLink_YJ8n" href=/js/api/core/changelog>Changelog</a></ul></div><div><div class=footerTitle_tbhc>Product</div><ul class="footerList_lK9E clean-list"><li><a href=https://discord.com/invite/jyEM2PRvMU target=_blank rel="noopener noreferrer" class="footer__link-item footerLink_YJ8n">Discord<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 fill=none viewBox="0 0 16 16" class=externalLinkIcon_gEsj><path fill=#fff fill-rule=evenodd d="M2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V2.707L1.854 6.854a.5.5 0 1 1-.708-.708L5.293 2H2.5a.5.5 0 0 1-.5-.5" clip-rule=evenodd /></svg></a><li><a href=https://stackoverflow.com/questions/tagged/crawlee target=_blank rel="noopener noreferrer" class="footer__link-item footerLink_YJ8n">Stack Overflow<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 fill=none viewBox="0 0 16 16" class=externalLinkIcon_gEsj><path fill=#fff fill-rule=evenodd d="M2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V2.707L1.854 6.854a.5.5 0 1 1-.708-.708L5.293 2H2.5a.5.5 0 0 1-.5-.5" clip-rule=evenodd /></svg></a><li><a href=https://twitter.com/apify target=_blank rel="noopener noreferrer" class="footer__link-item footerLink_YJ8n">Twitter<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 fill=none viewBox="0 0 16 16" class=externalLinkIcon_gEsj><path fill=#fff fill-rule=evenodd d="M2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V2.707L1.854 6.854a.5.5 0 1 1-.708-.708L5.293 2H2.5a.5.5 0 0 1-.5-.5" clip-rule=evenodd /></svg></a><li><a href=https://www.youtube.com/apify target=_blank rel="noopener noreferrer" class="footer__link-item footerLink_YJ8n">YouTube<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 fill=none viewBox="0 0 16 16" class=externalLinkIcon_gEsj><path fill=#fff fill-rule=evenodd d="M2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V2.707L1.854 6.854a.5.5 0 1 1-.708-.708L5.293 2H2.5a.5.5 0 0 1-.5-.5" clip-rule=evenodd /></svg></a></ul></div><div><div class=footerTitle_tbhc>More</div><ul class="footerList_lK9E clean-list"><li><a href=https://apify.com target=_blank rel="noopener noreferrer" class="footer__link-item footerLink_YJ8n">Apify platform<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 fill=none viewBox="0 0 16 16" class=externalLinkIcon_gEsj><path fill=#fff fill-rule=evenodd d="M2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V2.707L1.854 6.854a.5.5 0 1 1-.708-.708L5.293 2H2.5a.5.5 0 0 1-.5-.5" clip-rule=evenodd /></svg></a><li><a href=https://docusaurus.io target=_blank rel="noopener noreferrer" class="footer__link-item footerLink_YJ8n">Docusaurus<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 fill=none viewBox="0 0 16 16" class=externalLinkIcon_gEsj><path fill=#fff fill-rule=evenodd d="M2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V2.707L1.854 6.854a.5.5 0 1 1-.708-.708L5.293 2H2.5a.5.5 0 0 1-.5-.5" clip-rule=evenodd /></svg></a><li><a href=https://github.com/apify/crawlee target=_blank rel="noopener noreferrer" class="footer__link-item footerLink_YJ8n">GitHub<svg xmlns=http://www.w3.org/2000/svg width=16 height=16 fill=none viewBox="0 0 16 16" class=externalLinkIcon_gEsj><path fill=#fff fill-rule=evenodd d="M2 1.5a.5.5 0 0 1 .5-.5h4a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-1 0V2.707L1.854 6.854a.5.5 0 1 1-.708-.708L5.293 2H2.5a.5.5 0 0 1-.5-.5" clip-rule=evenodd /></svg></a></ul></div></div></div></div><div class=footerBottom_VaxJ><div class=footerBottomRow_vynO><div><svg xmlns=http://www.w3.org/2000/svg width=14 height=12 fill=none viewBox="0 0 14 12" class=hearthIcon_zliG><path fill=#B2B8CC d="M3.653.049a4 4 0 0 1 3.325.95l.025.022.022-.02a4 4 0 0 1 3.156-.96l.164.024a4 4 0 0 1 2.242 6.672l-.12.123-.032.028-4.966 4.919a.67.67 0 0 1-.876.055l-.062-.055-4.996-4.948A4 4 0 0 1 3.653.049"/></svg>Crawlee is forever free and open source</div><div>© <!-- -->2025<!-- --> Apify</div></div></div></footer></div>
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5P7MCS7" height=0 width=0 style=display:none;visibility:hidden></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->