summaryrefslogtreecommitdiff
path: root/public/index.html
blob: 1b14abc75fe5b3386b13c29f478307b9173056d3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
<!DOCTYPE html>
<html lang="en"><head>
	<meta name="generator" content="Hugo 0.118.2">
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta name="robots" content="index, follow" />
  <link rel="icon shortcut" href="/favicon.ico" sizes="32x32" />
<link rel="icon" href="/favicon.svg" type="image/svg+xml" />
<link rel="icon" href="/favicon-dark.svg" type="image/svg+xml" media="(prefers-color-scheme: dark)" />
<link rel="icon" href="/favicon-16x16.png" type="image/png" sizes="16x16" />
<link rel="icon" href="/favicon-32x32.png" type="image/png" sizes="32x32" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" />
<link fetchpriority="low" href="/site.webmanifest" rel="manifest" />

  <title>
    Build customer scrapers in minutes – Flyscrape</title>
  <meta name="description" content="A modern toolkit for building custom scrapers in minutes." />
  
  
    <link rel="canonical" href="https://flyscrape.com/" itemprop="url" />
  

  

<meta property="og:title" content="Build customer scrapers in minutes" />
<meta property="og:description" content="A modern toolkit for building custom scrapers in minutes." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://flyscrape.com/" /><meta property="og:image" content="https://flyscrape.com/images/ogimage.png" />

  <meta itemprop="name" content="Build customer scrapers in minutes">
<meta itemprop="description" content="A modern toolkit for building custom scrapers in minutes."><meta name="twitter:card" content="summary_large_image"/>
<meta name="twitter:image" content="https://flyscrape.com/images/ogimage.png"/>

<meta name="twitter:title" content="Build customer scrapers in minutes"/>
<meta name="twitter:description" content="A modern toolkit for building custom scrapers in minutes."/>

    <link rel="preload" href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" as="style" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" />
    <link href="/css/compiled/main.min.a8ca7dd455e382034cadeedab59d7db7d30d7a7f69227f7051fcbf853fc8a62a.css" rel="stylesheet" integrity="sha256-qMp91FXjggNMre7atZ19t9MNen9pIn9wUfy/hT/Ipio=" />



  <link href="/css/custom.min.fb1d70d39f490c625a3a57f8afe4471a440e267ea4d56244a2524907cb29e9b5.css" rel="stylesheet" integrity="sha256-&#43;x1w059JDGJaOlf4r&#43;RHGkQOJn6k1WJEolJJB8sp6bU=" />



  


  <script>
     
    const defaultTheme = 'system';

    const setDarkTheme = () => {
      document.documentElement.classList.add("dark");
      document.documentElement.style.colorScheme = "dark";
    }
    const setLightTheme = () => {
      document.documentElement.classList.remove("dark");
      document.documentElement.style.colorScheme = "light";
    }

    if ("color-theme" in localStorage) {
      localStorage.getItem("color-theme") === "dark" ? setDarkTheme() : setLightTheme();
    } else {
      defaultTheme === "dark" ? setDarkTheme() : setLightTheme();
      if (defaultTheme === "system") {
        window.matchMedia("(prefers-color-scheme: dark)").matches ? setDarkTheme() : setLightTheme();
      }
    }
  </script>

  
</head>
<body dir="ltr"><div class="nav-container sticky top-0 z-20 w-full bg-transparent print:hidden">
  <div class="nav-container-blur pointer-events-none absolute z-[-1] h-full w-full bg-white dark:bg-dark shadow-[0_2px_4px_rgba(0,0,0,.02),0_1px_0_rgba(0,0,0,.06)] contrast-more:shadow-[0_0_0_1px_#000] dark:shadow-[0_-1px_0_rgba(255,255,255,.1)_inset] contrast-more:dark:shadow-[0_0_0_1px_#fff]"></div>

  <nav class="mx-auto flex items-center justify-end h-16 px-6 max-w-[90rem]">
    <a class="flex items-center hover:opacity-75 ltr:mr-auto rtl:ml-auto" href="/">
        <img class="block dark:hidden" src="/images/flyscrape.svg" alt="Flyscrape" height="30" width="30" />
        <img class="hidden dark:block" src="/images/flyscrape-dark.svg" alt="Flyscrape" height="30" width="30" />
      <span class="mx-2 font-extrabold inline select-none" title="Flyscrape">Flyscrape</span>
    </a><a
            title="Documentation"
            href="/docs/getting-started"
            
            class="text-sm contrast-more:text-gray-700 contrast-more:dark:text-gray-100 relative -ml-2 hidden whitespace-nowrap py-2 px-3 md:inline-block text-gray-600 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200"
          >
            <span class="text-center">Documentation</span>
          </a>
          <a class="p-2 text-current" target="_blank" rel="noreferer" href="https://github.com/philippta/flyscrape" title="GitHub"><svg height=24 fill="currentColor" viewBox="3 3 18 18">
  <path d="M12 3C7.0275 3 3 7.12937 3 12.2276C3 16.3109 5.57625 19.7597 9.15374 20.9824C9.60374 21.0631 9.77249 20.7863 9.77249 20.5441C9.77249 20.3249 9.76125 19.5982 9.76125 18.8254C7.5 19.2522 6.915 18.2602 6.735 17.7412C6.63375 17.4759 6.19499 16.6569 5.8125 16.4378C5.4975 16.2647 5.0475 15.838 5.80124 15.8264C6.51 15.8149 7.01625 16.4954 7.18499 16.7723C7.99499 18.1679 9.28875 17.7758 9.80625 17.5335C9.885 16.9337 10.1212 16.53 10.38 16.2993C8.3775 16.0687 6.285 15.2728 6.285 11.7432C6.285 10.7397 6.63375 9.9092 7.20749 9.26326C7.1175 9.03257 6.8025 8.08674 7.2975 6.81794C7.2975 6.81794 8.05125 6.57571 9.77249 7.76377C10.4925 7.55615 11.2575 7.45234 12.0225 7.45234C12.7875 7.45234 13.5525 7.55615 14.2725 7.76377C15.9937 6.56418 16.7475 6.81794 16.7475 6.81794C17.2424 8.08674 16.9275 9.03257 16.8375 9.26326C17.4113 9.9092 17.76 10.7281 17.76 11.7432C17.76 15.2843 15.6563 16.0687 13.6537 16.2993C13.98 16.5877 14.2613 17.1414 14.2613 18.0065C14.2613 19.2407 14.25 20.2326 14.25 20.5441C14.25 20.7863 14.4188 21.0746 14.8688 20.9824C16.6554 20.364 18.2079 19.1866 19.3078 17.6162C20.4077 16.0457 20.9995 14.1611 21 12.2276C21 7.12937 16.9725 3 12 3Z"></path>
</svg>
<span class="sr-only">GitHub</span>
          </a><button type="button" aria-label="Menu" class="hamburger-menu -mr-2 rounded p-2 active:bg-gray-400/20 md:hidden"><svg height=24 fill="none" viewBox="0 0 24 24" stroke="currentColor"><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8H20"></path></g><g><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16H20"></path></g></svg></button>
  </nav>
</div>

  <div class='mx-auto flex max-w-screen-xl'>
    <div class="mobile-menu-overlay [transition:background-color_1.5s_ease] fixed inset-0 z-10 bg-black/80 dark:bg-black/60 hidden"></div>
<aside class="sidebar-container flex flex-col print:hidden md:top-16 md:shrink-0 md:w-64 md:self-start max-md:[transform:translate3d(0,-100%,0)] md:hidden">
  
  <div class="px-4 pt-4 md:hidden">
    <div class="search-wrapper relative md:w-64">
  <div class="relative flex items-center text-gray-900 contrast-more:text-gray-800 dark:text-gray-300 contrast-more:dark:text-gray-300">
    <input
      placeholder="Search..."
      class="search-input block w-full appearance-none rounded-lg px-3 py-2 transition-colors text-base leading-tight md:text-sm bg-black/[.05] dark:bg-gray-50/10 focus:bg-white dark:focus:bg-dark placeholder:text-gray-500 dark:placeholder:text-gray-400 contrast-more:border contrast-more:border-current"
      type="search"
      value=""
      spellcheck="false"
    />
    <kbd
      class="absolute my-1.5 select-none ltr:right-1.5 rtl:left-1.5 h-5 rounded bg-white px-1.5 font-mono text-[10px] font-medium text-gray-500 border dark:border-gray-100/20 dark:bg-dark/50 contrast-more:border-current contrast-more:text-current contrast-more:dark:border-current items-center gap-1 transition-opacity pointer-events-none hidden sm:flex"
    >
      CTRL K
    </kbd>
  </div>

  <div>
    <ul
      class="search-results hextra-scrollbar hidden border border-gray-200 bg-white text-gray-100 dark:border-neutral-800 dark:bg-neutral-900 absolute top-full z-20 mt-2 overflow-auto overscroll-contain rounded-xl py-2.5 shadow-xl max-h-[min(calc(50vh-11rem-env(safe-area-inset-bottom)),400px)] md:max-h-[min(calc(100vh-5rem-env(safe-area-inset-bottom)),400px)] inset-x-0 ltr:md:left-auto rtl:md:right-auto contrast-more:border contrast-more:border-gray-900 contrast-more:dark:border-gray-50 w-screen min-h-[100px] max-w-[min(calc(100vw-2rem),calc(100%+20rem))]"
      style="transition: max-height 0.2s ease 0s;"
    ></ul>
  </div>
</div>

  </div>
  <div class="hextra-scrollbar overflow-y-auto overflow-x-hidden p-4 grow md:h-[calc(100vh-var(--navbar-height)-var(--menu-height))]">
    <ul class="flex flex-col gap-1 md:hidden">
      
      
          <li class="open"><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/"
    
  >Documentation
        <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span>
    </a><div class="ltr:pr-0 overflow-hidden">
        <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/getting-started/"
    
  >Getting Started
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/installation/"
    
  >Installation
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/full-example-script/"
    
  >Full Example Script
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/api-reference/"
    
  >API Reference
    </a>
              
            </li><li class="flex flex-col open"><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/"
    
  >Configuration
        <span class="hextra-sidebar-collapsible-button"><svg fill="none" viewBox="0 0 24 24" stroke="currentColor" class="h-[18px] min-w-[18px] rounded-sm p-0.5 hover:bg-gray-800/5 dark:hover:bg-gray-100/5"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" class="origin-center transition-transform rtl:-rotate-180"></path></svg></span>
    </a>
              <div class="ltr:pr-0 overflow-hidden">
        <ul class='relative flex flex-col gap-1 before:absolute before:inset-y-1 before:w-px before:bg-gray-200 before:content-[""] ltr:ml-3 ltr:pl-3 ltr:before:left-0 rtl:mr-3 rtl:pr-3 rtl:before:right-0 dark:before:bg-neutral-800'><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/starting-url/"
    
  >Starting URL
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/depth/"
    
  >Depth
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/domain-filter/"
    
  >Domain Filter
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/url-filter/"
    
  >URL Filter
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/link-following/"
    
  >Link Following
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/concurrency/"
    
  >Concurrency
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/rate-limiting/"
    
  >Rate Limiting
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/retry/"
    
  >Retry
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/caching/"
    
  >Caching
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/proxies/"
    
  >Proxies
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/cookies/"
    
  >Cookies
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/headers/"
    
  >Headers
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/browser-mode/"
    
  >Browser Mode
    </a>
              
            </li><li class="flex flex-col "><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/docs/configuration/output/"
    
  >Output File and Format
    </a>
              
            </li></ul>
      </div>
            </li></ul>
      </div></li>
          <li class=""><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/cloud/"
    
  >Flyscrape Cloud
    </a></li>
          <li class=""><a
    class="flex items-center justify-between gap-2 cursor-pointer rounded px-2 py-1.5 text-sm transition-colors [-webkit-tap-highlight-color:transparent] [-webkit-touch-callout:none] [word-break:break-word]
      text-gray-500 hover:bg-gray-100 hover:text-gray-900 contrast-more:border contrast-more:border-transparent contrast-more:text-gray-900 contrast-more:hover:border-gray-900 dark:text-neutral-400 dark:hover:bg-primary-100/5 dark:hover:text-gray-50 contrast-more:dark:text-gray-50 contrast-more:dark:hover:border-gray-50"
    href="/proxy/"
    
  >Flyscrape Proxyᴮᴱᵀᴬ
    </a></li>
    </ul>

    </div>
  
  
    <div class="md:hidden  sticky bottom-0 bg-white dark:bg-dark mx-4 py-4 shadow-[0_-12px_16px_#fff] flex items-center gap-2 dark:border-neutral-800 dark:shadow-[0_-12px_16px_#111] contrast-more:border-neutral-400 contrast-more:shadow-none contrast-more:dark:shadow-none border-t" data-toggle-animation="show"><div class="flex grow flex-col"><button
  title="Change theme"
  data-theme="light"
  class="theme-toggle group h-7 rounded-md px-2 text-left text-xs font-medium text-gray-600 transition-colors dark:text-gray-400 hover:bg-gray-100 hover:text-gray-900 dark:hover:bg-primary-100/5 dark:hover:text-gray-50"
  type="button"
  aria-label="Change theme"
>
  <div class="flex items-center gap-2 capitalize"><svg height=12 class="group-data-[theme=light]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"/></svg><span class="group-data-[theme=light]:hidden">Light</span><svg height=12 class="group-data-[theme=dark]:hidden" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/></svg><span class="group-data-[theme=dark]:hidden">Dark</span></div>
</button>
</div></div></aside>
    <div class="w-full break-words min-h-[calc(100vh-var(--navbar-height))] min-w-0 pb-8 pt-8 md:pt-12 pl-[max(env(safe-area-inset-left),1.5rem)] pr-[max(env(safe-area-inset-left),1.5rem)]">
      <div class="flex flex-col items-start">
        
<div class="max-w-2xl mx-auto text-center">
  <h1 class="my-8 text-[3rem] lg:text-[4rem] leading-tight font-bold mx-auto">
    Custom scrapers <br />
    built in minutes.
  </h1>

  <p class="my-16 text-xl leading-relaxed text-gray-700 dark:text-gray-300">
  Flyscrape is a modern toolkit for building custom scrapers in minutes.<br /> It can render
  JavaScript, use cookies of your browser and requires no Node.js or Python to run.
  </p>

  <div class="text-center flex flex-col md:block">
    <a href="/docs/getting-started"
      class="inline-block px-8 py-3 md:mr-5 mb-5 md:mb-0 text-lg font-semibold text-center text-white transition-all duration-200 ease-in bg-black border-black border-2 rounded-full cursor-pointer focus:outline-none focus:ring-4 focus:ring-primary-300 dark:bg-white dark:text-black dark:border-white dark:focus:ring-primary-800">Get
      Started <span style="position:relative;margin-left: 2px;top: -1px"><span class="inline-block align-text-bottom icon"><svg height=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></span>
</span></a>
    <!-- <a href="/proxy" -->
    <!--    class="inline-block px-8 py-3 text-lg font-semibold text-center text-black transition-all duration-200 ease-in rounded-full cursor-pointer border-2 border-black focus:outline-none focus:ring-4 focus:ring-primary-300 dark:text-white dark:border-white dark:focus:ring-primary-800">Need Proxies?</a> -->
  </div>
</div>

<div class="w-full max-w-4xl mx-auto my-16 p-4 rounded-md" style="background-image: url('/images/videobg.jpg'); background-size: cover;">
  <!--<p class="mb-4 text-center text-gray-600 dark:text-gray-400">Click the video below to see it in action.</p>
<a href="https://www.youtube.com/watch?v=Yj11v4n9JHA" target="_blank">
<img src="/images/flyscrape-demo.jpg" class="rounded-lg" style="display: block" />
</a>
-->
  <iframe src="https://www.youtube.com/embed/eGk8qFZ9oM4?si=D5j2vssfkPnvVKZy" title="YouTube video player"
    frameborder="0"
    allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
    style="width: 100%; aspect-ratio: 16 / 9;" allowfullscreen class="rounded-md"></iframe>
</div>

<button class="mx-auto inline-block" onclick="document.getElementById('scrollto').scrollIntoView({behavior: 'smooth'})">
Discover the Features
<br />
<span class="text-xl"> <span class="inline-block align-text-bottom icon"><svg height=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M19 14l-7 7m0 0l-7-7m7 7V3"/></svg></span>
 </span>
</button>

<div id="scrollto"></div>
<hr class="hidden w-full my-8 dark:block lg:my-12"
  style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.2);" />
<hr id="features" class="w-full my-8 dark:hidden lg:my-12"
  style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.8);" />

<div class="w-full mt-12 text-center lg:text-left">
  <div class="gap-12 flex flex-col lg:grid lg:grid-cols-2">

    <div>
      <h2 class="py-2 mt-12 mb-8 text-4xl font-bold leading-none tracking-tighter text-black not-prose dark:text-white">
        Easy-peasy Setup.
      </h2>
      <p class="text-xl text-gray-800 dark:text-gray-300 sm:text-xl">
        Flyscrape is a standalone scraping tool and does not need Node.js or Python.
        Simply run <code
          class="px-2 py-1 text-sm text-black border border-gray-500 rounded-md dark:text-white whitespace-nowrap">flyscrape new</code>
        and you're ready to scrape.
        <br />
        <br />
        <a href="/docs/getting-started"
          style=" display: inline-block; color: hsl(var(--primary-hue) var(--primary-saturation) 45% / var(--tw-text-opacity));    text-decoration-line: underline; text-decoration-thickness: from-font; text-underline-position: from-font;">Visit
          the Getting Started Guide</a>
      </p>
    </div>

    <img src="/images/flyscrapenew.gif" class="block rounded-lg order-last lg:order-none w-full mx-auto" loading="lazy" style="max-width: 570px" />
  </div>

  <hr class="hidden dark:block my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.2);" />
  <hr class="w-full dark:hidden my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.8);" />

  <div class="gap-12 flex flex-col lg:grid lg:grid-cols-2">
    <img src="/images/flyscrapebrowser.gif" class="block rounded-lg order-last lg:order-none w-full mx-auto" loading="lazy"  style="max-width: 570px"/>

    <div>
      <h2 class="py-2 mt-12 mb-8 text-4xl font-bold leading-none tracking-tighter text-black not-prose dark:text-white">
        Browser / JS rendering.
      </h2>
      <p class="text-xl text-gray-800 dark:text-gray-300 sm:text-xl">
        Browser Mode can help you scrape even the most difficult sites. Whether the site heavily relies on JavaScript or has Anti-Bot measures, it's always worth a shot.
        <br />
        <br />
        <a href="/docs/configuration/browser-mode"
          style=" display: inline-block; color: hsl(var(--primary-hue) var(--primary-saturation) 45% / var(--tw-text-opacity));    text-decoration-line: underline; text-decoration-thickness: from-font; text-underline-position: from-font;">Visit
          the Browser Mode Documentation</a>
      </p>
    </div>

  </div>

  <hr class="hidden dark:block my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.2);" />
  <hr class="w-full dark:hidden my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.8);" />

  <div class="gap-12 flex flex-col lg:grid lg:grid-cols-2">

    <div>
      <h2 class="py-2 mt-12 mb-8 text-4xl font-bold leading-none tracking-tighter text-black not-prose dark:text-white">
        Access your Cookies.
      </h2>
      <p class="text-xl text-gray-800 dark:text-gray-300 sm:text-xl">
        Give Flyscrape access to the cookie store of your personal browser. This makes scraping protected websites, that require an active login session easy as cake.
        <br />
        <br />
        <a href="/docs/configuration/cookies"
          style=" display: inline-block; color: hsl(var(--primary-hue) var(--primary-saturation) 45% / var(--tw-text-opacity));    text-decoration-line: underline; text-decoration-thickness: from-font; text-underline-position: from-font;">Visit
          the Cookie Documentation</a>
      </p>
    </div>

    <img src="/images/flyscrapecookies.gif" class="block rounded-lg order-last lg:order-none w-full mx-auto" loading="lazy" style="max-width: 570px" />
  </div>

  <hr class="hidden dark:block my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.2);" />
  <hr class="w-full dark:hidden my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.8);" />

  <div class="gap-12 flex flex-col lg:grid lg:grid-cols-2">
    <img src="/images/flyscraperequestcontrol.gif" class="block rounded-lg order-last lg:order-none w-full mx-auto" loading="lazy"  style="max-width: 570px"/>

    <div>
      <h2 class="py-2 mt-12 mb-8 text-4xl font-bold leading-none tracking-tighter text-black not-prose dark:text-white">
        Precise Request Control.
      </h2>
      <p class="text-xl text-gray-800 dark:text-gray-300 sm:text-xl">
        Precisely control how fast requests are processed, what links to follow or what sites to avoid.
        8 different dials allow you to fine-tune Flyscrape's behaviour for virtually every website.
        <br />
        <br />
        <a href="/docs/configuration"
          style=" display: inline-block; color: hsl(var(--primary-hue) var(--primary-saturation) 45% / var(--tw-text-opacity));    text-decoration-line: underline; text-decoration-thickness: from-font; text-underline-position: from-font;">Browse all Configuration Options</a>
      </p>
    </div>

  </div>

  <hr class="hidden dark:block my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.2);" />
  <hr class="w-full dark:hidden my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.8);" />

  <div class="gap-12 flex flex-col lg:grid lg:grid-cols-2">

    <div>
      <h2 class="py-2 mt-12 mb-8 text-4xl font-bold leading-none tracking-tighter text-black not-prose dark:text-white">
        Extract exactly what you need.
      </h2>
      <p class="text-xl text-gray-800 dark:text-gray-300 sm:text-xl">
        Flyscrape comes with the full power of JavaScript, allowing you to precisely define what you want to scrape from a website. 
        With its familiar jQuery- or cheerio-like API selecting HTML elements becomes second nature.
        <br />
        <br />
        <a href="/docs/api-reference"
          style=" display: inline-block; color: hsl(var(--primary-hue) var(--primary-saturation) 45% / var(--tw-text-opacity));    text-decoration-line: underline; text-decoration-thickness: from-font; text-underline-position: from-font;">Visit
          the API Reference</a>
      </p>
    </div>

    <img src="/images/flyscrapequery.jpg" class="block rounded-lg order-last lg:order-none w-full mx-auto" loading="lazy" style="max-width: 570px"/>
  </div>

  <hr class="hidden dark:block my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.2);" />
  <hr class="w-full dark:hidden my-24"
    style="border-color: hsl(var(--primary-hue) var(--primary-saturation) 94% / 0.8);" />


  <h2
    class="py-2 mx-auto mt-12 mb-8 text-4xl font-bold leading-none tracking-tighter text-black  not-prose dark:text-white text-center">
    Want to give Flyscrape a try?
  </h2>
  <p class="mx-auto text-xl text-gray-800 dark:text-gray-300 sm:text-xl text-center">
    Dive into our user-friendly guide and discover how to get started with ease.
  </p>

</div>
<div class="mx-auto my-12 text-lg ">


  <a href="/docs/getting-started"
    class="inline-block px-8 py-3 text-lg font-semibold text-center text-white transition-all duration-200 ease-in bg-black rounded-full cursor-pointer focus:outline-none focus:ring-4 focus:ring-primary-300 dark:bg-white dark:text-black dark:focus:ring-primary-800">Get
    Started <span style="position:relative;margin-left: 2px;top: -1px"><span class="inline-block align-text-bottom icon"><svg height=1em xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"><path stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/></svg></span>
</span></a>

</div>

<script async src="https://app.flyscrape.com/script.js?v=0"></script>

      </div>
    </div>
  </div>

  </body>
  <script defer src="/js/main.min.5250a01f9a9cabefdb65e77efc7c04221397882cded9c5c058a5504e730b11b3.js" integrity="sha256-UlCgH5qcq&#43;/bZed&#43;/HwEIhOXiCze2cXAWKVQTnMLEbM="></script>


<script defer src="/lib/flexsearch/flexsearch.bundle.min.0425860527cc9968f9f049421c7a56b39327d475e2e3a8f550416be3a9134327.js" integrity="sha256-BCWGBSfMmWj58ElCHHpWs5Mn1HXi46j1UEFr46kTQyc="></script>
    <script defer src="/en.search.min.9afdc7c586c6f971dd94df10b989f10faaf38e5702571fd8cfc9ff9135c2d495.js" integrity="sha256-mv3HxYbG&#43;XHdlN8QuYnxD6rzjlcCVx/Yz8n/kTXC1JU="></script>


</html>