{"product_id":"gaffa","title":"Gaffa","description":"\u003cstyle\u003e\n.guidaio-v3 { --gv3-bg:#f6f5fb;--gv3-surface:#fff;--gv3-surface-soft:#fbfaff;--gv3-ink:#14132b;--gv3-ink-2:#2b2a4a;--gv3-muted:#6c6a8a;--gv3-line:#ecebf5;--gv3-line-2:#e0deef;--gv3-brand:#5b3df5;--gv3-brand-2:#7c63ff;--gv3-brand-soft:#efeaff;--gv3-brand-ink:#2c1d8a;--gv3-ok:#0f8a5a;--gv3-ok-soft:#e6f7ee;--gv3-warn:#b16800;--gv3-warn-soft:#fff3dc;--gv3-bad:#b3261e;--gv3-bad-soft:#fde7e6;--gv3-radius-lg:22px;--gv3-radius:16px;--gv3-radius-sm:10px;--gv3-shadow-sm:0 1px 2px rgba(20,19,43,.04);--gv3-shadow:0 12px 30px rgba(53,38,124,.07);\n  background:radial-gradient(1200px 600px at 80% -10%,rgba(124,99,255,.18),transparent 60%),radial-gradient(900px 500px at -10% 5%,rgba(91,61,245,.12),transparent 60%),var(--gv3-bg);\n  color:var(--gv3-ink);font-family:Inter,system-ui,-apple-system,\"Segoe UI\",Roboto,sans-serif;font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;\n  max-width:1240px;margin:0 auto;padding:24px 16px 64px;border-radius:var(--gv3-radius-lg);}\n.guidaio-v3 *,.guidaio-v3 *::before,.guidaio-v3 *::after{box-sizing:border-box}\n.guidaio-v3 a{color:var(--gv3-brand);text-decoration:none}.guidaio-v3 a:hover{text-decoration:underline}\n.guidaio-v3 img{max-width:100%;display:block}\n.guidaio-v3 h1,.guidaio-v3 h2,.guidaio-v3 h3,.guidaio-v3 h4{font-family:\"Space Grotesk\",Inter,sans-serif;letter-spacing:-.01em;margin:0;color:var(--gv3-ink)}\n.guidaio-v3 svg{display:inline-block;vertical-align:middle}\n.guidaio-v3 .hero{position:relative;background:radial-gradient(700px 320px at 90% 0%,rgba(124,99,255,.18),transparent 70%),linear-gradient(180deg,#fff 0%,#fbfaff 100%);border:1px solid var(--gv3-line);border-radius:var(--gv3-radius-lg);box-shadow:var(--gv3-shadow);padding:32px;overflow:hidden}\n.guidaio-v3 .hero-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:28px;align-items:start}\n.guidaio-v3 .hero-head{display:flex;gap:16px;align-items:flex-start}\n.guidaio-v3 .logo-tile{width:72px;height:72px;border-radius:18px;border:1px solid var(--gv3-line-2);background:#fff;box-shadow:var(--gv3-shadow-sm);display:grid;place-items:center;overflow:hidden;flex:0 0 auto}\n.guidaio-v3 .logo-tile img{width:56px;height:56px;object-fit:contain}\n.guidaio-v3 .eyebrow{display:inline-flex;align-items:center;gap:6px;color:var(--gv3-brand-ink);background:var(--gv3-brand-soft);padding:6px 12px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}\n.guidaio-v3 h1.title{margin-top:12px;font-size:34px;line-height:1.1;color:var(--gv3-ink)}\n.guidaio-v3 .lede{margin:14px 0 0;font-size:17px;color:var(--gv3-ink-2);max-width:60ch}\n.guidaio-v3 .badge-row,.guidaio-v3 .chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}\n.guidaio-v3 .badge{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;font-size:12px;font-weight:600;background:#fff;border:1px solid var(--gv3-line-2);color:var(--gv3-ink-2)}\n.guidaio-v3 .badge.ok{background:var(--gv3-ok-soft);color:var(--gv3-ok);border-color:#b8e8cc}\n.guidaio-v3 .badge.warn{background:var(--gv3-warn-soft);color:var(--gv3-warn);border-color:#f1d6a3}\n.guidaio-v3 .badge.bad{background:var(--gv3-bad-soft);color:var(--gv3-bad);border-color:#f5c2c0}\n.guidaio-v3 .badge.brand{background:var(--gv3-brand-soft);color:var(--gv3-brand-ink);border-color:#d6cdfb}\n.guidaio-v3 .tbd-row{margin-top:14px;display:grid;gap:10px}\n.guidaio-v3 .tbd-row .label{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gv3-muted)}\n.guidaio-v3 .chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;font-size:13px;border:1px solid var(--gv3-line-2);background:#fff;color:var(--gv3-ink-2)}\n.guidaio-v3 .chip.cat{background:#eef2ff;color:#3730a3;border-color:#c7d2fe}\n.guidaio-v3 .chip.dom{background:#ecfeff;color:#0e7490;border-color:#a5f3fc}\n.guidaio-v3 .chip.prof{background:#fdf4ff;color:#86198f;border-color:#f5d0fe}\n.guidaio-v3 .cta-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}\n.guidaio-v3 .btn{display:inline-flex;align-items:center;gap:8px;padding:11px 16px;border-radius:12px;font-weight:700;border:1px solid transparent;cursor:pointer;font-size:14px}\n.guidaio-v3 .btn:hover{text-decoration:none}\n.guidaio-v3 .btn-primary{background:linear-gradient(135deg,var(--gv3-brand) 0%,var(--gv3-brand-2) 100%);color:#fff;box-shadow:0 14px 28px rgba(91,61,245,.28)}\n.guidaio-v3 .btn-secondary{background:#fff;color:var(--gv3-brand-ink);border-color:#d6cdfb}\n.guidaio-v3 .btn-ghost{background:transparent;color:var(--gv3-ink-2);border-color:var(--gv3-line-2)}\n.guidaio-v3 .affiliate-note{margin-top:10px;font-size:12px;color:var(--gv3-muted)}\n.guidaio-v3 .snapshot{background:#fff;border:1px solid var(--gv3-line);border-radius:var(--gv3-radius-lg);padding:20px;box-shadow:var(--gv3-shadow)}\n.guidaio-v3 .snapshot h3{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--gv3-brand-ink);margin-bottom:14px}\n.guidaio-v3 .snapshot dl{margin:0;display:grid;grid-template-columns:1fr;gap:12px}\n.guidaio-v3 .snapshot .row{display:grid;grid-template-columns:1fr auto;gap:8px;padding-bottom:12px;border-bottom:1px dashed var(--gv3-line-2)}\n.guidaio-v3 .snapshot .row:last-child{border-bottom:0;padding-bottom:0}\n.guidaio-v3 .snapshot dt{color:var(--gv3-muted);font-size:13px;margin:0}\n.guidaio-v3 .snapshot dd{margin:0;text-align:right;font-weight:700;color:var(--gv3-ink);font-size:13px}\n.guidaio-v3 .snapshot dd small{display:block;font-weight:500;color:var(--gv3-muted);font-size:11px;text-align:right}\n.guidaio-v3 .price-big{font-family:\"Space Grotesk\";font-size:20px;line-height:1}\n.guidaio-v3 .toc{margin:20px 0 24px;padding:10px;background:rgba(255,255,255,.85);border:1px solid var(--gv3-line);border-radius:22px;box-shadow:var(--gv3-shadow-sm);display:flex;flex-wrap:wrap;gap:8px;overflow-x:auto}\n.guidaio-v3 .toc a{padding:8px 14px;border-radius:999px;font-size:13px;font-weight:600;color:var(--gv3-brand-ink);background:#fff;white-space:nowrap;border:1px solid var(--gv3-line-2);box-shadow:var(--gv3-shadow-sm);transition:transform .18s ease,box-shadow .18s ease,background .18s ease,color .18s ease,border-color .18s ease}\n.guidaio-v3 .toc a:hover{background:linear-gradient(135deg,var(--gv3-brand) 0%,var(--gv3-brand-2) 100%);color:#fff;border-color:transparent;transform:translateY(-2px) scale(1.04);box-shadow:0 8px 18px rgba(91,61,245,.25);text-decoration:none}\n.guidaio-v3 .justify{text-align:justify;text-justify:inter-word;hyphens:auto}\n.guidaio-v3 a.chip,.guidaio-v3 a.chip:hover{text-decoration:none}\n.guidaio-v3 a.chip{transition:transform .15s ease,box-shadow .15s ease,filter .15s ease;cursor:pointer}\n.guidaio-v3 a.chip:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(53,38,124,.12);filter:brightness(.96)}\n.guidaio-v3 section.block{background:var(--gv3-surface);border:1px solid var(--gv3-line);border-radius:var(--gv3-radius-lg);padding:32px;margin-top:22px;box-shadow:var(--gv3-shadow-sm);scroll-margin-top:90px}\n.guidaio-v3 section.block.soft{background:var(--gv3-surface-soft)}\n.guidaio-v3 section.block .head{margin-bottom:20px}\n.guidaio-v3 section.block .eyebrow + h2{margin-top:10px}\n.guidaio-v3 section.block h2{font-size:24px;color:var(--gv3-ink)}\n.guidaio-v3 section.block .lead{margin-top:8px;color:var(--gv3-muted);max-width:70ch}\n.guidaio-v3 .grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}\n.guidaio-v3 .grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\n.guidaio-v3 .rich p{margin:0 0 14px}.guidaio-v3 .rich p:last-child{margin:0}\n.guidaio-v3 ul.brand-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}\n.guidaio-v3 ul.brand-list li{position:relative;padding-left:26px;color:var(--gv3-ink-2)}\n.guidaio-v3 ul.brand-list li::before{content:\"\";position:absolute;left:0;top:9px;width:14px;height:14px;border-radius:999px;background:var(--gv3-brand-soft);box-shadow:inset 0 0 0 4px var(--gv3-brand)}\n.guidaio-v3 ol.steps{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;gap:14px}\n.guidaio-v3 ol.steps li{counter-increment:s;position:relative;padding-left:42px;color:var(--gv3-ink-2);min-height:30px}\n.guidaio-v3 ol.steps li::before{content:counter(s);position:absolute;left:0;top:0;width:30px;height:30px;border-radius:999px;background:linear-gradient(135deg,var(--gv3-brand) 0%,var(--gv3-brand-2) 100%);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;box-shadow:0 6px 14px rgba(91,61,245,.25)}\n.guidaio-v3 .feature-card{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:16px;background:#fff;display:grid;gap:8px}\n.guidaio-v3 .feature-card .icbox{width:36px;height:36px;border-radius:12px;background:var(--gv3-brand-soft);color:var(--gv3-brand-ink);display:grid;place-items:center}\n.guidaio-v3 .feature-card .ftitle{font-weight:700;color:var(--gv3-ink);font-size:15px}\n.guidaio-v3 .feature-card .fbody{color:var(--gv3-muted);font-size:13px}\n.guidaio-v3 .pc{border-radius:var(--gv3-radius);padding:20px;border:1px solid var(--gv3-line)}\n.guidaio-v3 .pc.pros{background:var(--gv3-ok-soft);border-color:#b8e8cc}\n.guidaio-v3 .pc.cons{background:var(--gv3-bad-soft);border-color:#f5c2c0}\n.guidaio-v3 .pc h3{font-size:17px;display:flex;align-items:center;gap:8px;margin-bottom:12px}\n.guidaio-v3 .pc.pros h3{color:var(--gv3-ok)}.guidaio-v3 .pc.cons h3{color:var(--gv3-bad)}\n.guidaio-v3 .pc ul{list-style:none;padding:0;margin:0;display:grid;gap:8px}\n.guidaio-v3 .pc li{display:flex;gap:8px;align-items:flex-start;color:var(--gv3-ink-2);font-size:14px}\n.guidaio-v3 .pc li svg{flex:0 0 auto;margin-top:3px}\n.guidaio-v3 .pc.pros li svg{color:var(--gv3-ok)}.guidaio-v3 .pc.cons li svg{color:var(--gv3-bad)}\n.guidaio-v3 .bestnot{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n.guidaio-v3 .bestnot .card{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:20px;background:#fff}\n.guidaio-v3 .bestnot h3{display:flex;align-items:center;gap:8px;font-size:17px;margin-bottom:12px}\n.guidaio-v3 .bestnot .for h3{color:var(--gv3-ok)}.guidaio-v3 .bestnot .not h3{color:var(--gv3-warn)}\n.guidaio-v3 .plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}\n.guidaio-v3 .plan{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius-lg);padding:22px;background:#fff;display:grid;gap:10px;position:relative}\n.guidaio-v3 .plan.featured{border-color:#c7baff;background:linear-gradient(180deg,#fff 0%,#f7f3ff 100%);box-shadow:var(--gv3-shadow)}\n.guidaio-v3 .plan .pill{position:absolute;top:-12px;right:14px;background:linear-gradient(135deg,var(--gv3-brand) 0%,var(--gv3-brand-2) 100%);color:#fff;font-size:11px;font-weight:700;letter-spacing:.06em;padding:5px 9px;border-radius:999px;text-transform:uppercase}\n.guidaio-v3 .plan .pname{font-family:\"Space Grotesk\";font-weight:700;font-size:17px}\n.guidaio-v3 .plan .pprice{font-family:\"Space Grotesk\";font-size:24px;font-weight:700}\n.guidaio-v3 .plan .pprice small{font-size:13px;font-weight:500;color:var(--gv3-muted)}\n.guidaio-v3 .plan ul{list-style:none;padding:0;margin:6px 0 0;display:grid;gap:8px}\n.guidaio-v3 .plan ul li{display:flex;gap:8px;align-items:flex-start;color:var(--gv3-ink-2);font-size:14px}\n.guidaio-v3 .plan ul li svg{color:var(--gv3-brand);flex:0 0 auto;margin-top:3px}\n.guidaio-v3 .pricing-extras{margin-top:16px;display:grid;gap:10px}\n.guidaio-v3 .offer{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:12px;background:#fff7e6;border:1px solid #f1d6a3;color:var(--gv3-warn);font-size:14px}\n.guidaio-v3 .offer svg{flex:0 0 auto;margin-top:2px}\n.guidaio-v3 .trust-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}\n.guidaio-v3 .trust-grid .col{display:grid;gap:14px}\n.guidaio-v3 .trust-card{background:#fff;border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:20px}\n.guidaio-v3 .trust-card h3{font-size:15px;margin-bottom:10px}\n.guidaio-v3 .kv{display:grid;grid-template-columns:180px 1fr;gap:12px;padding:10px 0;border-top:1px solid var(--gv3-line)}\n.guidaio-v3 .kv:first-child{border-top:0;padding-top:0}\n.guidaio-v3 .kv .k{color:var(--gv3-muted);font-size:13px}\n.guidaio-v3 .kv .v{color:var(--gv3-ink);font-size:14px}\n.guidaio-v3 .availability{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n.guidaio-v3 .availability .card{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);background:#fff;padding:18px}\n.guidaio-v3 .flag-row{display:flex;flex-wrap:wrap;gap:8px}\n.guidaio-v3 .flag{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;background:#fff;border:1px solid var(--gv3-line-2);font-size:13px;color:var(--gv3-ink-2)}\n.guidaio-v3 section.block.watch{background:#fffaf0;border:1px solid #f1d6a3}\n.guidaio-v3 section.block.watch .head h2{color:var(--gv3-warn)}\n.guidaio-v3 .setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}\n.guidaio-v3 .setup-card{background:#fff;border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:20px}\n.guidaio-v3 .integrations{display:flex;flex-wrap:wrap;gap:8px}\n.guidaio-v3 .integration{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:12px;background:#fff;border:1px solid var(--gv3-line-2);color:var(--gv3-ink-2);font-size:13px;font-weight:600}\n.guidaio-v3 .company-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}\n.guidaio-v3 .company-card{border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);background:#fff;padding:20px}\n.guidaio-v3 .timeline{display:grid;gap:8px;margin:8px 0 0}\n.guidaio-v3 .timeline .ev{padding:10px 14px;border-radius:12px;background:var(--gv3-brand-soft);color:var(--gv3-brand-ink);font-weight:600;font-size:14px;display:flex;align-items:center;gap:8px}\n.guidaio-v3 .social-row{display:flex;gap:8px;flex-wrap:wrap}\n.guidaio-v3 .social{width:36px;height:36px;border-radius:12px;border:1px solid var(--gv3-line-2);background:#fff;display:grid;place-items:center;color:var(--gv3-ink-2)}\n.guidaio-v3 .social:hover{background:var(--gv3-brand-soft);color:var(--gv3-brand-ink);border-color:#d6cdfb}\n.guidaio-v3 .res-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}\n.guidaio-v3 .res{display:flex;gap:10px;align-items:center;padding:10px 12px;border-radius:12px;border:1px solid var(--gv3-line);background:#fff;color:var(--gv3-ink-2);font-size:13px}\n.guidaio-v3 .res:hover{border-color:#d6cdfb;background:#fbfaff;text-decoration:none}\n.guidaio-v3 .res svg{color:var(--gv3-brand);flex:0 0 auto}\n.guidaio-v3 .res .url{color:var(--gv3-muted);font-size:11px;word-break:break-all}\n.guidaio-v3 .res .res-text{display:grid}\n.guidaio-v3 .alts{display:flex;flex-wrap:wrap;gap:8px}\n.guidaio-v3 .alt{display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border-radius:14px;background:#fff;border:1px solid var(--gv3-line-2);font-weight:600;color:var(--gv3-ink-2);font-size:14px}\n.guidaio-v3 .alt .av{width:24px;height:24px;border-radius:8px;background:linear-gradient(135deg,#c7baff 0%,#efeaff 100%);display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--gv3-brand-ink)}\n.guidaio-v3 .faq{display:grid;gap:10px}\n.guidaio-v3 .faq details{background:#fff;border:1px solid var(--gv3-line);border-radius:var(--gv3-radius);padding:14px 16px}\n.guidaio-v3 .faq summary{cursor:pointer;list-style:none;font-weight:700;color:var(--gv3-ink);display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:15px}\n.guidaio-v3 .faq summary::-webkit-details-marker{display:none}\n.guidaio-v3 .faq summary svg{color:var(--gv3-brand)}\n.guidaio-v3 .faq .ans{color:var(--gv3-muted);margin-top:10px;font-size:14px}\n.guidaio-v3 section.block.conclusion{background:radial-gradient(700px 320px at 0% 0%,rgba(124,99,255,.18),transparent 60%),linear-gradient(135deg,#1c163a 0%,#2c1d8a 100%);color:#fff;border-color:#2c1d8a}\n.guidaio-v3 section.block.conclusion .head h2{color:#fff}\n.guidaio-v3 section.block.conclusion .lead,.guidaio-v3 section.block.conclusion .rich p{color:rgba(255,255,255,.88)}\n.guidaio-v3 section.block.conclusion .rich strong,.guidaio-v3 section.block.conclusion .rich b{color:#fff}\n.guidaio-v3 section.block.conclusion .eyebrow{background:rgba(255,255,255,.14);color:#fff}\n.guidaio-v3 section.block.conclusion .btn-secondary{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.25)}\n@media (max-width:1080px){.guidaio-v3 .hero-grid,.guidaio-v3 .trust-grid,.guidaio-v3 .company-grid,.guidaio-v3 .setup-grid,.guidaio-v3 .availability{grid-template-columns:1fr}.guidaio-v3 .grid-3,.guidaio-v3 .res-grid,.guidaio-v3 .plan-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}\n@media (max-width:700px){.guidaio-v3{padding:12px 8px 48px}.guidaio-v3 .hero{padding:20px}.guidaio-v3 section.block{padding:20px}.guidaio-v3 .grid-2,.guidaio-v3 .grid-3,.guidaio-v3 .res-grid,.guidaio-v3 .plan-grid,.guidaio-v3 .bestnot,.guidaio-v3 .availability{grid-template-columns:1fr}.guidaio-v3 h1.title{font-size:28px}}\n\u003c\/style\u003e\n\u003cdiv class=\"guidaio-v3\" itemscope itemtype=\"https:\/\/schema.org\/SoftwareApplication\"\u003e\n\u003cmeta itemprop=\"name\" content=\"Gaffa: Cloud Browser Automation \u0026amp; Web Scraping API\"\u003e\n\u003cmeta itemprop=\"description\" content=\"Gaffa is a REST API that drives real cloud browsers: scrape JS sites, capture screenshots, PDFs and LLM-ready markdown. Proxies included, from $29\/month.\"\u003e\n\u003cdiv class=\"hero\"\u003e\u003cdiv class=\"hero-grid\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"hero-head\"\u003e\n\u003cdiv class=\"logo-tile\"\u003e\u003cimg src=\"https:\/\/gaffa.dev\/images\/logo\/logo-light.svg\" alt=\"Gaffa logo\" itemprop=\"image\" loading=\"lazy\"\u003e\u003c\/div\u003e\n\u003cdiv class=\"name-block\"\u003e\n\u003cspan class=\"eyebrow\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"m12 3-1.9 5.8a2 2 0 0 1-1.3 1.3L3 12l5.8 1.9a2 2 0 0 1 1.3 1.3L12 21l1.9-5.8a2 2 0 0 1 1.3-1.3L21 12l-5.8-1.9a2 2 0 0 1-1.3-1.3Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Browser Automation · Web Scraping\u003c\/span\u003e\u003ch1 class=\"title\" itemprop=\"name\"\u003eGaffa\u003c\/h1\u003e\n\u003cp class=\"lede justify\" itemprop=\"description\"\u003eGaffa is a \u003cb\u003eREST API for driving real cloud browsers\u003c\/b\u003e: one call combines a URL with an ordered list of actions. It returns markdown, structured JSON, screenshots or PDFs, for developers, data teams and AI agent builders.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"badge-row\"\u003e\n\u003cspan class=\"badge ok\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cpath d=\"m9 12 2 2 4-4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Active\u003c\/span\u003e\u003cspan class=\"badge ok\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\u003e\u003c\/path\u003e\u003cpath d=\"m9 12 2 2 4-4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e GDPR compliant\u003c\/span\u003e\u003cspan class=\"badge brand\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 12 20 22 4 22 4 12\"\u003e\u003c\/polyline\u003e\u003crect x=\"2\" y=\"7\" width=\"20\" height=\"5\"\u003e\u003c\/rect\u003e\u003cline x1=\"12\" y1=\"22\" x2=\"12\" y2=\"7\"\u003e\u003c\/line\u003e\u003cpath d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\"\u003e\u003c\/path\u003e\u003cpath d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Free trial\u003c\/span\u003e\u003cspan class=\"badge\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"22 7 13.5 15.5 8.5 10.5 2 17\"\u003e\u003c\/polyline\u003e\u003cpolyline points=\"16 7 22 7 22 13\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e Subscription\u003c\/span\u003e\u003cspan class=\"badge\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M6.3 20.3a2.4 2.4 0 0 0 3.4 0L12 18l-6-6-2.3 2.3a2.4 2.4 0 0 0 0 3.4Z\"\u003e\u003c\/path\u003e\u003cpath d=\"m2 22 3-3\"\u003e\u003c\/path\u003e\u003cpath d=\"M7.5 13.5 10 11\"\u003e\u003c\/path\u003e\u003cpath d=\"M10.5 16.5 13 14\"\u003e\u003c\/path\u003e\u003cpath d=\"m18 3-4 4h6l-4 4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e API available\u003c\/span\u003e\u003cspan class=\"badge\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\"\u003e\u003c\/path\u003e\u003ccircle cx=\"9\" cy=\"7\" r=\"4\"\u003e\u003c\/circle\u003e\u003cpolyline points=\"16 11 18 13 22 9\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e 13+\u003c\/span\u003e\u003cspan class=\"badge brand\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cpath d=\"m9 12 2 2 4-4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Verified by Guidaio\u003c\/span\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"tbd-row\"\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"label\"\u003eCategories\u003c\/div\u003e\n\u003cdiv class=\"chip-row\"\u003e\n\u003ca class=\"chip cat\" href=\"\/collections\/browser-automation\"\u003eBrowser Automation\u003c\/a\u003e\u003ca class=\"chip cat\" href=\"\/collections\/web-scraping\"\u003eWeb Scraping\u003c\/a\u003e\u003ca class=\"chip cat\" href=\"\/collections\/api-tools\"\u003eApi Tools\u003c\/a\u003e\u003ca class=\"chip cat\" href=\"\/collections\/workflow-automation\"\u003eWorkflow Automation\u003c\/a\u003e\u003ca class=\"chip cat\" href=\"\/collections\/data-integration\"\u003eData Integration\u003c\/a\u003e\u003ca class=\"chip cat\" href=\"\/collections\/web-research-browsing\"\u003eWeb Research Browsing\u003c\/a\u003e\u003ca class=\"chip cat\" href=\"\/collections\/multimodal-browse-agents\"\u003eMultimodal Browse Agents\u003c\/a\u003e\u003ca class=\"chip cat\" href=\"\/collections\/document-processing-files\"\u003eDocument Processing Files\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv\u003e\n\u003cdiv class=\"label\"\u003eTarget domains\u003c\/div\u003e\n\u003cdiv class=\"chip-row\"\u003e\n\u003ca class=\"chip dom\" href=\"\/collections\/it-software\"\u003eIt Software\u003c\/a\u003e\u003ca class=\"chip dom\" href=\"\/collections\/data-ai\"\u003eData Ai\u003c\/a\u003e\u003ca class=\"chip dom\" href=\"\/collections\/retail-e-commerce\"\u003eRetail E Commerce\u003c\/a\u003e\u003ca class=\"chip dom\" href=\"\/collections\/human-resources\"\u003eHuman Resources\u003c\/a\u003e\u003ca class=\"chip dom\" href=\"\/collections\/journalism-news\"\u003eJournalism News\u003c\/a\u003e\u003ca class=\"chip dom\" href=\"\/collections\/marketing-advertising\"\u003eMarketing Advertising\u003c\/a\u003e\u003ca class=\"chip dom\" href=\"\/collections\/freelancers-entrepreneurs\"\u003eFreelancers Entrepreneurs\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"cta-row\"\u003e\n\u003ca class=\"btn btn-primary\" href=\"https:\/\/gaffa.dev\/\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003cpath d=\"M15 3h6v6\"\u003e\u003c\/path\u003e\u003cpath d=\"M10 14 21 3\"\u003e\u003c\/path\u003e\u003cpath d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Discover the Gaffa API\u003c\/a\u003e\u003ca class=\"btn btn-secondary\" href=\"https:\/\/demo.gaffa.dev\/\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolygon points=\"6 3 20 12 6 21 6 3\"\u003e\u003c\/polygon\u003e\u003c\/svg\u003e Start with 500 free credits\u003c\/a\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003caside class=\"snapshot\"\u003e\u003ch3\u003eSnapshot\u003c\/h3\u003e\n\u003cdl\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003ePricing model\u003c\/dt\u003e\n\u003cdd\u003eSubscription\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eStarts at\u003c\/dt\u003e\n\u003cdd\u003e\n\u003cspan class=\"price-big\"\u003eUSD29.00\u003c\/span\u003e\u003csmall\u003eUSD · per month\u003c\/small\u003e\n\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eFree trial\u003c\/dt\u003e\n\u003cdd\u003eYes\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eAPI available\u003c\/dt\u003e\n\u003cdd\u003eYes\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eDeployment\u003c\/dt\u003e\n\u003cdd\u003eWeb app · API\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eTool status\u003c\/dt\u003e\n\u003cdd\u003eActive\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eMinimum age\u003c\/dt\u003e\n\u003cdd\u003e13+\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"row\"\u003e\n\u003cdt\u003eCountry of origin\u003c\/dt\u003e\n\u003cdd\u003e🇬🇧 United Kingdom\u003c\/dd\u003e\n\u003c\/div\u003e\n\u003c\/dl\u003e\u003c\/aside\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003cnav class=\"toc\" aria-label=\"Page sections\"\u003e\u003ca href=\"#what\"\u003eWhat is it\u003c\/a\u003e\u003ca href=\"#bestnot\"\u003eWhen to use Gaffa \/ When not to\u003c\/a\u003e\u003ca href=\"#how\"\u003eHow to use\u003c\/a\u003e\u003ca href=\"#proscons\"\u003ePros \u0026amp; Cons\u003c\/a\u003e\u003ca href=\"#pricing\"\u003ePricing\u003c\/a\u003e\u003ca href=\"#trust\"\u003eTrust \u0026amp; Privacy\u003c\/a\u003e\u003ca href=\"#watch\"\u003eWatch-outs\u003c\/a\u003e\u003ca href=\"#setup\"\u003eSetup \u0026amp; Integrations\u003c\/a\u003e\u003ca href=\"#company\"\u003eCompany\u003c\/a\u003e\u003ca href=\"#resources\"\u003eResources\u003c\/a\u003e\u003ca href=\"#faq\"\u003eFAQ\u003c\/a\u003e\u003ca href=\"#conclusion\"\u003eConclusion\u003c\/a\u003e\u003c\/nav\u003e\n\u003csection class=\"block\" id=\"what\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eOverview\u003c\/span\u003e\u003ch2\u003eWhat is Gaffa?\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"grid-2\"\u003e\n\u003cdiv class=\"rich justify\"\u003e\u003cp\u003eGaffa is a REST API for browser automation published by Impetus Labs Ltd., a London company. Its documentation presents it as an API that lets you control real web browsers at scale through a simple interface with no configuration required: you tell it which site to visit and which actions to perform, and it returns the result. The browsers are \u003cb\u003ereal cloud browsers rather than headless ones\u003c\/b\u003e, which the publisher argues render JavaScript sites exactly as a local machine would, are harder to detect when scraping, and allow full observability. A browser request has three parts. Parameters set the target (url, proxy_location, async, max_cache_age). Settings control the run (record_request for video capture, max_media_bandwidth, time limits). Actions form an ordered list executed in submission order; a failure aborts the request unless continue_on_fail is set to true, and every action accepts the universal parameters continue_on_fail and custom_id. \u003cb\u003eSeventeen actions\u003c\/b\u003e are documented. Five produce no output (block_dom_removals, click, scroll, type, wait) and twelve return data: capture_cookies, capture_dom, capture_element, capture_screenshot, capture_snapshot, download_file, generate_markdown, generate_simplified_dom, loop, parse_json, parse_table and print. Together they yield simplified HTML, LLM-ready markdown, screenshots, PDFs, structured JSON and a self-contained offline copy of a page. A second request family, mapping requests (POST v1\/site\/map), discovers a sitemap automatically, traverses sitemap indexes, deduplicates and alphabetically sorts the URLs, shares a cache between users and caps at 60 seconds. Reusable schemas have their own endpoints, and authentication uses a single X-API-Key header, with keys created and revoked from Dashboard \u0026gt; API Keys. For sites with strong anti-bot defences, a Stealth layer combines proxies, human-like behaviour, captcha solving and an in-house browser implementation; residential proxies are enabled through the proxy_location parameter. Onboarding tooling includes an API Playground with five prebuilt examples, a public page simulator at demo.gaffa.dev, and llms.txt and llms-full.txt files so an AI assistant can write the calling code, with documentation hosted on GitBook. The audience is developers, data teams and AI agent builders who need web data without operating a browser fleet. The publisher acknowledges that Gaffa is currently in its very early stages.\u003c\/p\u003e\u003c\/div\u003e\n\u003cdiv\u003e\n\u003ch3 style=\"font-size:14px;margin-bottom:12px;color:var(--gv3-brand-ink);text-transform:uppercase;letter-spacing:.08em\"\u003eWhat it does\u003c\/h3\u003e\n\u003cul class=\"brand-list\"\u003e\n\u003cli\u003eDrive a real cloud browser through a single POST to v1\/browser\/requests, combining a URL with an ordered list of actions\u003c\/li\u003e\n\u003cli\u003eScrape JavaScript-rendered sites, with JS rendering applied by default\u003c\/li\u003e\n\u003cli\u003eConvert any page into LLM-ready markdown or a simplified DOM\u003c\/li\u003e\n\u003cli\u003eExtract structured JSON from prose, PDFs or messy layouts, and pull rows out of HTML tables\u003c\/li\u003e\n\u003cli\u003eCapture full-height screenshots, or print a page to PDF with chosen size, margin and orientation\u003c\/li\u003e\n\u003cli\u003eFill in and submit forms with human-like clicking, typing, scrolling and waiting\u003c\/li\u003e\n\u003cli\u003eRetrieve every URL in a site's sitemap with one mapping request, and route traffic through country-selectable residential proxies\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block soft\" id=\"bestnot\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eAudience\u003c\/span\u003e\u003ch2\u003eWhen to use Gaffa \/ When not to\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eA quick filter to help you decide if Gaffa is the right fit.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"bestnot\"\u003e\n\u003cdiv class=\"card for\"\u003e\n\u003ch3\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003cpath d=\"M7 10v12\"\u003e\u003c\/path\u003e\u003cpath d=\"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e When to use Gaffa\u003c\/h3\u003e\n\u003cul class=\"brand-list\"\u003e\n\u003cli\u003eBackend and full-stack developers who need to scrape JavaScript-rendered sites without maintaining browser infrastructure, proxies or a Playwright, Selenium or Puppeteer stack.\u003c\/li\u003e\n\u003cli\u003eData engineering teams ingesting web content into a warehouse or an ETL pipeline, using mapping requests to enumerate a site's URLs before extraction.\u003c\/li\u003e\n\u003cli\u003eAI agent builders: the publisher states it wants to support the development of AI agents able to use the internet exactly how humans would.\u003c\/li\u003e\n\u003cli\u003eLLM and RAG application developers, who can turn any page into LLM-ready markdown or a simplified DOM with a single action.\u003c\/li\u003e\n\u003cli\u003eStartups and small technical teams, addressed by a plan literally named Startup and by four published case studies: job-board aggregation (ivee), a universal news plugin (TRMNL), access to policy pages that block AI agents (Chayn Survivor AI) and web-to-PDF reporting (SailSys).\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"card not\"\u003e\n\u003ch3\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003cpath d=\"M17 14V2\"\u003e\u003c\/path\u003e\u003cpath d=\"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e When not to use Gaffa\u003c\/h3\u003e\n\u003cul class=\"brand-list\"\u003e\n\u003cli\u003eNon-technical users looking for a no-code interface: everything goes through HTTP requests and hand-written JSON payloads.\u003c\/li\u003e\n\u003cli\u003eTeams that expect an official SDK or client library, since the publisher ships raw REST only, with no announced language bindings.\u003c\/li\u003e\n\u003cli\u003eAnyone wanting a mobile app, a browser extension or a plugin: the product is an API plus a web dashboard, nothing else.\u003c\/li\u003e\n\u003cli\u003eUsers who need immediate, high-volume open-web automation: a paid plan is required beyond the free credits, new accounts join a queue, concurrency is capped at 1, 3 or 10 simultaneous requests and each request at 1, 2 or 5 minutes depending on the plan, with mapping requests stopping at 60 seconds.\u003c\/li\u003e\n\u003cli\u003eOrganisations with a formal vendor-security checklist: no DPA is published, no SOC 2 or ISO 27001 certification is claimed, and there is no trust or security page.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block soft\" id=\"how\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eGet started\u003c\/span\u003e\u003ch2\u003eHow to use Gaffa\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eA typical end-to-end flow, from setup to results.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003col class=\"steps\"\u003e\n\u003cli\u003eCreate an account on gaffa.dev\/sign-up: 500 credits are granted, with no credit card required\u003c\/li\u003e\n\u003cli\u003eTry the API Playground in the dashboard, starting from one of its five prebuilt examples\u003c\/li\u003e\n\u003cli\u003ePractise on the public page simulator at demo.gaffa.dev before targeting live sites\u003c\/li\u003e\n\u003cli\u003eFor open-web automation, choose and pay for a plan, then join the queue when prompted on your account dashboard\u003c\/li\u003e\n\u003cli\u003eOptionally move ahead in that queue by completing the publisher's short user questionnaire\u003c\/li\u003e\n\u003cli\u003eCreate an API key in Dashboard \u0026gt; API Keys and copy its value\u003c\/li\u003e\n\u003cli\u003eAuthenticate every call with the X-API-Key header\u003c\/li\u003e\n\u003cli\u003eSend a POST to v1\/browser\/requests with url, proxy_location, async and max_cache_age, plus a settings block containing the ordered actions\u003c\/li\u003e\n\u003cli\u003eRead the result synchronously (async set to false) or poll GET v1\/browser\/requests\/{id}\u003c\/li\u003e\n\u003cli\u003eFor a full URL list, send a POST to v1\/site\/map with url and max_cache_age; optionally feed llms-full.txt to an AI assistant so it writes the calling code for you\u003c\/li\u003e\n\u003c\/ol\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"proscons\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eQuick read\u003c\/span\u003e\u003ch2\u003ePros \u0026amp; Cons\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"grid-2\"\u003e\n\u003cdiv class=\"pc pros\"\u003e\n\u003ch3\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cpath d=\"m9 12 2 2 4-4\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Pros\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eZero configuration: no framework, no proxy setup and no browser infrastructure to operate\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eA single REST API, callable from any language able to issue an HTTP request\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eReal browsers rather than headless ones: faithful rendering and lower detectability when scraping\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eOutputs designed for direct LLM consumption, with markdown, structured JSON and simplified DOM\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eResidential proxies included on all three plans, with the exit country chosen by parameter\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eA genuine trial: 500 credits granted without a credit card, usable on the open web and not only on the demo site\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eSubstantial documentation, with tutorials, endpoint reference, playground examples, an action-choice table and llms.txt files, plus video recording of runs for debugging\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pc cons\"\u003e\n\u003ch3\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cline x1=\"4.93\" y1=\"4.93\" x2=\"19.07\" y2=\"19.07\"\u003e\u003c\/line\u003e\u003c\/svg\u003e Cons\u003c\/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eA young product, acknowledged as such by the publisher, which writes that Gaffa is currently in its very early stages; new accounts must also join a queue before getting open-web access\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003ePublished pricing is inconsistent on proxy bandwidth: the homepage FAQ bills 750 credits per GB, while the credits and pricing documentation bills 1,500 credits per GB\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eRefund conditions are stated twice and differently: a 7-day window after the subscription starts in the refund policy, versus not having used any credits in the current month in the homepage FAQ; refunds are in any case not guaranteed and granted at the publisher's sole discretion\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eNo DPA is published, no security certification such as SOC 2 or ISO 27001 is claimed, and there is no trust or security page; the subprocessor list names a single company, Stripe, and is introduced by the word include, so it is not exhaustive\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eTight operational ceilings: 1, 3 or 10 concurrent requests and 1, 2 or 5 minutes per request depending on the plan, and 60 seconds for a mapping request\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eUnused credits are lost at each billing cycle, with no rollover\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"\u003e\u003c\/line\u003e\u003cline x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"\u003e\u003c\/line\u003e\u003c\/svg\u003e \u003cspan\u003eNo SDK or client library, no published SLA and no status page, with a team reduced to one named individual, Claude AI and GitHub Copilot being presented as the other team members\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block soft\" id=\"pricing\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003ePricing\u003c\/span\u003e\u003ch2\u003ePricing \u0026amp; Plans\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cp class=\"rich justify\" style=\"color:var(--gv3-ink-2);margin:0 0 18px;max-width:80ch\"\u003eNo permanently free plan is advertised in the pricing grid. Every new account receives a one-off allocation of 500 credits, granted without a credit card. The lowest paid entry point is the Starter plan at USD 29.00 per month. Credits may also be purchased outright, without a subscription, at USD 20.00 for 5,000 credits, and a bespoke plan is available on request through the contact page.\u003c\/p\u003e\n\u003cdiv class=\"plan-grid\"\u003e\n\u003cdiv class=\"plan\"\u003e\n\u003cdiv class=\"pname\"\u003eStarter, USD 29 per month, For small and personal projects\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003ebrowser request API\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e9\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e000 credits\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e1 concurrent request\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e1 minute maximum per request\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e7-day data retention\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eresidential proxies\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan featured\"\u003e\n\u003cspan class=\"pill\"\u003eMost popular\u003c\/span\u003e\u003cdiv class=\"pname\"\u003eStartup, USD 99 per month, marked Popular, Power your startup with automated web data access\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003ebrowser request API\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e35\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e000 credits\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e3 concurrent requests\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e2 minutes maximum per request\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e30-day data retention\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eresidential proxies\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan\"\u003e\n\u003cdiv class=\"pname\"\u003eGrowth, USD 249 per month, If you're ready to scale, then this plan is for you\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003ebrowser request API\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e100\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e000 credits\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e10 concurrent requests\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e5 minutes maximum per request\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e3-month data retention\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eresidential proxies\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan\"\u003e\n\u003cdiv class=\"pname\"\u003eGet Credits, USD 20 for 5,000 credits\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eone-off purchase\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eon its own or on top of a plan\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003ewith the same allowances as the Starter plan\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan\"\u003e\n\u003cdiv class=\"pname\"\u003eBespoke plan, advertised on the homepage as Need something bespoke?\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003ea custom plan built on request through the contact page\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003ewith no published price\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"plan\"\u003e\n\u003cdiv class=\"pname\"\u003eConsumption benchmark given by the publisher\u003c\/div\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e10\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e000 credits correspond to roughly 3\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003e333 typical browser sessions\u003c\/span\u003e\n\u003c\/li\u003e\n\u003cli\u003e\n\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e \u003cspan\u003eabout 28 browser hours and 8.5 GB of proxy bandwidth\u003c\/span\u003e\n\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"pricing-extras\"\u003e\u003cdiv class=\"affiliate-note\"\u003ePrices and plans listed above may evolve. Always check the official pricing page before subscribing.\u003c\/div\u003e\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"trust\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eTrust \u0026amp; Privacy\u003c\/span\u003e\u003ch2\u003eData, GDPR \u0026amp; hosting\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eA consolidated view of how Gaffa handles your data.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"trust-grid\"\u003e\n\u003cdiv class=\"col\"\u003e\n\u003cdiv class=\"trust-card\"\u003e\n\u003ch3\u003eGDPR overview\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0\"\u003eThe privacy policy, effective 20 August 2024, contains two dedicated sections: EU GDPR and UK GDPR. Impetus Labs Ltd. describes itself as data controller and\/or processor, and states it remains compliant with its data controller obligations. Legal bases listed are consent, contract performance, legitimate interests and legal compliance; parental consent is required below 16. Rights covered include access, rectification, erasure, restriction, objection, portability in CSV, information and non-discrimination, with a 30-calendar-day response deadline. Transfers outside the EEA rely on European Commission standard contractual clauses and binding corporate rules; UK GDPR Article 45 and the Data Protection Act 2018 are cited. The Information Commissioner's Office is named as supervisory authority, with full address and telephone. A Data Protection Officer is mentioned but has no dedicated email, and no EU Article 27 representative is appointed. No certification or external audit is claimed.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"trust-card\"\u003e\n\u003ch3\u003eWho owns the data?\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0 0 12px\"\u003eThe terms of service cover only the site's own materials, owned by or licensed to Impetus Labs Ltd., with a revocable licence to download one copy for personal, non-commercial, transitory use. The Acceptable Use Policy makes the customer solely responsible for all material they input, upload, transmit, create or publish through the products, and for obtaining legal permission to use it. The privacy policy positions Impetus Labs as data controller and\/or processor for personal information, and a Business Transfers clause would pass personal data to an acquirer or treat it as an asset in insolvency. No clause states who owns the data extracted from third-party pages by browser requests, which is a documented gap.\u003c\/p\u003e\n\u003ch3\u003eReuse rights\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0\"\u003eThe site's own materials may be used for personal, non-commercial, transitory purposes only: modifying, copying, creating derivative works, decompiling, reverse-engineering, removing copyright notices, transferring them or mirroring them on another server is prohibited. For the data a customer extracts through the API, Gaffa states no contractual restriction on reuse; the limits are behavioural rather than proprietary. The terms of service forbid using the service to harvest, collect, or gather user data without the user's consent, or in a way that may infringe the privacy, intellectual property rights or other rights of third parties, and the Acceptable Use Policy forbids transmitting or storing material protected by copyright, trademark or trade secret without authorisation. A fair-use clause allows the publisher to charge additional fees or restrict capacity where usage is judged excessive. UK law governs, with exclusive jurisdiction.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"trust-card\"\u003e\n\u003ch3\u003eData retention \u0026amp; training\u003c\/h3\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eRetention summary\u003c\/div\u003e\n\u003cdiv class=\"v justify\"\u003eRetention of request data depends on the plan: 7 days on Starter, 30 days on Startup, 3 months on Growth. Personal information is kept only for as long as it is needed, in practice for the life of the account; once it is no longer required it is deleted or anonymised by removing every identifying element. Exceptions apply for legal, accounting or reporting obligations, public-interest archiving, scientific or historical research and statistical purposes, and financial records are kept for seven years under UK law. If an account is terminated or deleted, the publisher undertakes to delete the personal information within 90 days of that deletion. Erasure is presented as a qualified right rather than an absolute one, and the policy notes that search engines and third parties may keep copies of information that was made public.\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eSubprocessors disclosed\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003cspan class=\"badge ok\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolyline points=\"20 6 9 17 4 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e Yes\u003c\/span\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"col\"\u003e\u003cdiv class=\"trust-card\"\u003e\n\u003ch3\u003eHosting summary\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0 0 14px\"\u003eThe privacy policy states that the personal information collected is stored and\/or processed in Ireland, the United Kingdom and the United States, or wherever the publisher, its partners, affiliates and third-party providers maintain facilities. The UK GDPR section narrows this for UK data subjects, stating that the information collected is stored and\/or processed in the United Kingdom by the publisher. Cross-border transfers rely on the European Commission's adequacy decision for the United Kingdom, on European Commission-approved standard contractual clauses, on binding corporate rules or on other legally accepted means, with UK GDPR Article 45 and the Data Protection Act 2018 cited. Stripe is the only third party named. Impetus Labs Ltd. is established in London and UK law governs the service. No hosting region is selectable by the customer and no contractual data residency is offered. Note that the domain resolves to 172.67.197.200 on AS13335 (Cloudflare, anycast), which is a CDN node and not evidence of where application data is stored.\u003c\/p\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eHosting countries\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003cdiv class=\"flag-row\"\u003e\n\u003cspan class=\"flag\"\u003e🇮🇪 Ireland\u003c\/span\u003e\u003cspan class=\"flag\"\u003e🇬🇧 United Kingdom\u003c\/span\u003e\u003cspan class=\"flag\"\u003e🇺🇸 United States\u003c\/span\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block watch\" id=\"watch\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eWatch-outs\u003c\/span\u003e\u003ch2\u003eThings to keep in mind\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eRisks and trade-offs to weigh before adopting Gaffa.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cul class=\"brand-list\" style=\"grid-template-columns:repeat(2,1fr);display:grid;gap:12px 24px\"\u003e\n\u003cli\u003eLegal exposure sits with the customer: the Acceptable Use Policy forbids gathering user data without consent and any infringement of third-party privacy or intellectual property rights, and makes the customer solely responsible for the material processed and for obtaining permission to use it\u003c\/li\u003e\n\u003cli\u003eThe stealth features, human-like behaviour, captcha solving and an in-house browser, are built to get past protections that target sites deliberately put in place; judging whether a given use is acceptable is left entirely to the user\u003c\/li\u003e\n\u003cli\u003eThe parse_json action sends page content to a third-party model (gpt-4o-mini), and the site says nothing about what becomes of that content afterwards\u003c\/li\u003e\n\u003cli\u003eThe site never addresses training on customer data: no commitment, no opt-out, no mention at all, so nothing can be assumed either way\u003c\/li\u003e\n\u003cli\u003eTraffic is routed through third-party residential proxies whose address sourcing is not documented, and video recordings of automations are kept by the publisher for the plan's retention period, from 7 days to 3 months\u003c\/li\u003e\n\u003cli\u003eCommercial terms leave room for surprises: a fair-use clause allows additional fees or capacity restrictions with no published threshold, refunds are discretionary and stated under two divergent conditions, and unused credits expire at each cycle\u003c\/li\u003e\n\u003cli\u003eDependency risk: a very young publisher, a single named individual, no SLA and no status page, plus a Business Transfers clause under which personal data would follow the company to an acquirer or into insolvency\u003c\/li\u003e\n\u003c\/ul\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"setup\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eSetup\u003c\/span\u003e\u003ch2\u003eSetup \u0026amp; Integrations\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"setup-grid\"\u003e\u003cdiv class=\"setup-card\"\u003e\n\u003ch3 style=\"font-size:15px;margin-bottom:10px\"\u003eTechnical difficulty\u003c\/h3\u003e\n\u003cp class=\"justify\" style=\"color:var(--gv3-ink-2);margin:0 0 14px\"\u003eLow for a developer, out of reach for a non-developer. The only real prerequisite is being able to send an HTTP POST with a JSON body: nothing to install, no framework and no dependency, and a single X-API-Key header for authentication. The API Playground ships five editable, runnable examples, demo.gaffa.dev provides practice pages, and llms-full.txt lets an AI assistant write the calling code. Two frictions remain: there is no SDK, so every call is hand-written, and building CSS selectors is the user's responsibility. Access to the open web is also gated by a queue for new accounts.\u003c\/p\u003e\n\u003ch3 style=\"font-size:15px;margin:14px 0 10px\"\u003eDeployment\u003c\/h3\u003e\n\u003cdiv class=\"flag-row\"\u003e\n\u003cspan class=\"flag\"\u003eWeb app\u003c\/span\u003e\u003cspan class=\"flag\"\u003eAPI\u003c\/span\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block soft\" id=\"company\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eCompany\u003c\/span\u003e\u003ch2\u003eBehind Gaffa\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"company-card\"\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eCompany name\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003cb\u003eImpetus Labs Ltd.\u003c\/b\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eFounded\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e21\/04\/2022\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eCountry of origin\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e🇬🇧 United Kingdom\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eHeadquarters\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e86-90 Paul Street, London, EC2A 4NE\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eUBO\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003eJames Edward Mundy\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eUBO country\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e🇬🇧 United Kingdom\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eDomain registrar country\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e🇺🇸 United States\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"kv\"\u003e\n\u003cdiv class=\"k\"\u003eSupport contact\u003c\/div\u003e\n\u003cdiv class=\"v\"\u003e\u003ca href=\"mailto:support@gaffa.dev\"\u003esupport@gaffa.dev\u003c\/a\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"resources\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eOfficial links\u003c\/span\u003e\u003ch2\u003eResources\u003c\/h2\u003e\n\u003cp class=\"lead\"\u003eAll the official URLs gathered for verification and reference.\u003c\/p\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"res-grid\"\u003e\n\u003ca class=\"res\" href=\"https:\/\/gaffa.dev\/\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cpath d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\"\u003e\u003c\/path\u003e\u003cpath d=\"M2 12h20\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eHomepage\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003egaffa.dev\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/gaffa.dev\/#pricing\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"2\" x2=\"12\" y2=\"22\"\u003e\u003c\/line\u003e\u003cpath d=\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003ePricing\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003egaffa.dev\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/gaffa.dev\/#features\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolygon points=\"12 2 2 7 12 12 22 7 12 2\"\u003e\u003c\/polygon\u003e\u003cpolyline points=\"2 17 12 22 22 17\"\u003e\u003c\/polyline\u003e\u003cpolyline points=\"2 12 12 17 22 12\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eFeatures\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003egaffa.dev\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/gaffa.dev\/about\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"\u003e\u003c\/circle\u003e\u003cline x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"\u003e\u003c\/line\u003e\u003cline x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eAbout\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003egaffa.dev\/about\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/gaffa.dev\/contact\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003crect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\u003e\u003c\/rect\u003e\u003cpath d=\"m22 7-10 5L2 7\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eContact\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003egaffa.dev\/contact\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/demo.gaffa.dev\/\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolygon points=\"6 3 20 12 6 21 6 3\"\u003e\u003c\/polygon\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eDemo\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003edemo.gaffa.dev\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/gaffa.dev\/legal\/terms-of-service\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\u003e\u003c\/path\u003e\u003cpolyline points=\"14 2 14 8 20 8\"\u003e\u003c\/polyline\u003e\u003cline x1=\"16\" y1=\"13\" x2=\"8\" y2=\"13\"\u003e\u003c\/line\u003e\u003cline x1=\"16\" y1=\"17\" x2=\"8\" y2=\"17\"\u003e\u003c\/line\u003e\u003cpolyline points=\"10 9 9 9 8 9\"\u003e\u003c\/polyline\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eTerms\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003egaffa.dev\/legal\/terms-of-service\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/gaffa.dev\/legal\/privacy-policy\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003ePrivacy policy\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003egaffa.dev\/legal\/privacy-policy\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\u003ca class=\"res\" href=\"https:\/\/gaffa.dev\/docs\/api-reference\/api-reference\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpath d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"\u003e\u003c\/path\u003e\u003cpath d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\u003cdiv class=\"res-text\"\u003e\n\u003cdiv\u003eAPI documentation\u003c\/div\u003e\n\u003cdiv class=\"url\"\u003egaffa.dev\/docs\/api-reference\/api-reference\u003c\/div\u003e\n\u003c\/div\u003e\u003c\/a\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block\" id=\"faq\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eFAQ\u003c\/span\u003e\u003ch2\u003eFrequently asked questions\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"faq\"\u003e\n\u003cdetails\u003e\u003csummary\u003eWhat is a credit? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eOne credit covers 30 seconds of browser time, doubled when screen recording is enabled. Proxy bandwidth is billed in credits per GB, and the published rate differs by source: 750 credits per GB in the homepage FAQ, 1,500 credits per GB in the credits and pricing documentation. AI features running on gpt-4o-mini cost 1 credit per 20,000 input tokens and 1 credit per 10,000 output tokens, and each mapping request costs 1 credit.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eIs there a free trial? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eYes. Every new account receives 500 credits without entering a credit card, and those credits can be spent on the open web, not only on the demo.gaffa.dev page simulator.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eDo unused credits roll over to the next month? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eNo. Any credit not consumed by the next billing cycle is lost; there is no rollover.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhat happens when I run out of credits? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eThe API stays reachable for reading back data from past requests, but no new request can be issued. You need to upgrade your plan or buy additional credits.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhat is the refund policy? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eA request must be made within 7 days of the subscription starting, and each case is reviewed individually at the publisher's sole discretion, with refunds explicitly not guaranteed. Note that the homepage FAQ words the eligibility condition differently, requiring that no credits have been used in the current month.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eDo I need to learn Playwright, Selenium or Puppeteer? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eNo. The publisher states it has abstracted part of the functionality of those frameworks behind a REST API, so the only requirement is being able to call an HTTP endpoint.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eCan Gaffa handle sites protected by anti-bot systems? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eThe publisher advertises a stealth capability combining proxies, human-like behaviour, captcha solving and an in-house browser implementation for sites with heavy restrictions. No success rate is published.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eCan I choose the country traffic exits from? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eYes, through the proxy_location parameter, which routes the request over a residential proxy network.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eWhere is the data hosted? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eThe privacy policy states that personal information is stored and\/or processed in Ireland, the United Kingdom and the United States. No hosting region is selectable by the customer.\u003c\/div\u003e\u003c\/details\u003e\u003cdetails\u003e\u003csummary\u003eIs there a mobile application? \u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"\u003e\u003c\/line\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"\u003e\u003c\/line\u003e\u003c\/svg\u003e\u003c\/summary\u003e\u003cdiv class=\"ans justify\"\u003eNo. Gaffa is delivered as an API plus a web dashboard, with no iOS or Android application and no browser extension.\u003c\/div\u003e\u003c\/details\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003csection class=\"block conclusion\" id=\"conclusion\"\u003e\u003cdiv class=\"head\"\u003e\n\u003cspan class=\"eyebrow\"\u003eConclusion\u003c\/span\u003e\u003ch2\u003eShould you pick Gaffa?\u003c\/h2\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"rich justify\" style=\"max-width:80ch\"\u003e\u003cp\u003eGaffa's value proposition is clear: remove browser infrastructure, frameworks, proxies, scaling and headless browsers behind a single REST API, and return web content in formats a program or a language model can consume directly. Functional coverage is already broad for a young product, with seventeen actions, two request families and outputs ranging from simplified HTML and markdown to structured JSON, screenshots and PDFs. Entry pricing is legible and low at USD 29 per month, credits can be bought on demand, and the 500-credit trial needs no card and works on the open web. Traction signals exist: four customer case studies published between January 2025 and July 2026, sixteen blog posts and participation in Major League Hacking's Global Hack Week. The reservations are equally documented. The publisher itself writes that Gaffa is in its very early stages, new accounts wait in a queue for open-web access, and the visible team is one individual with two AI assistants presented as teammates. No DPA and no security certification are published, the credit rate for proxy bandwidth appears at two different values on two first-party pages, and refund eligibility is expressed under two divergent conditions. Data governance is thorough on the EU and UK GDPR side, but the site is entirely silent on model training and on who owns the data extracted from third-party pages. The natural buyer is a technical team that already has a web-data use case and wants to avoid running its own browser fleet: the trial is large enough to benchmark real pages, and the entry plan is cheap enough to test at small volume. Teams bound by a formal vendor-security process, or needing contractual guarantees on retention, subprocessors or availability, will want to wait for the publisher to document more.\u003c\/p\u003e\u003c\/div\u003e\n\u003cdiv class=\"cta-row\"\u003e\n\u003ca class=\"btn btn-primary\" href=\"https:\/\/gaffa.dev\/\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"16\" height=\"16\"\u003e\u003cpath d=\"M15 3h6v6\"\u003e\u003c\/path\u003e\u003cpath d=\"M10 14 21 3\"\u003e\u003c\/path\u003e\u003cpath d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\"\u003e\u003c\/path\u003e\u003c\/svg\u003e Visit Gaffa\u003c\/a\u003e\u003ca class=\"btn btn-secondary\" href=\"https:\/\/demo.gaffa.dev\/\" target=\"_blank\" rel=\"noopener\"\u003e\u003csvg viewbox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" width=\"14\" height=\"14\"\u003e\u003cpolygon points=\"6 3 20 12 6 21 6 3\"\u003e\u003c\/polygon\u003e\u003c\/svg\u003e Watch the demo\u003c\/a\u003e\n\u003c\/div\u003e\u003c\/section\u003e\n\u003c\/div\u003e","brand":"Impetus Labs Ltd.","offers":[{"title":"Default Title","offer_id":58253672612171,"sku":null,"price":0.0,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1038\/0905\/7099\/files\/official-gaffa-by-guidaio_17462fc2-864f-4d17-9ed8-ce6a444c28df.png?v=1787695015","url":"https:\/\/guidaio.com\/products\/gaffa","provider":"Guidaio","version":"1.0","type":"link"}