Etsy har over 100 millioner aktive annonser, 5,6 millioner selgere og rundt 450 millioner besøk i måneden. Det er enorme mengder offentlig tilgjengelige data om priser, trender, anmeldelser og konkurrenter — og hvis du noen gang har prøvd å samle det manuelt, vet du hvor tungvint det er.
Jeg brukte en gang en hel helg på å katalogisere konkurrentprodukter manuelt til et markedsundersøkelsesprosjekt. Da jeg kom til produkt nummer 30, begynte jeg å stille spørsmål ved alle livsvalgene som hadde ført meg til det regnearket. Poenget er at Etsy-data er utrolig verdifulle for prisanalyse, produktutvikling, nisjeoppdagelse og selgerbenchmarking — men bare hvis du faktisk klarer å hente dem ut i stor skala. Det er det denne guiden handler om: en samlet gjennomgang av hvordan du skraper Etsy med Python på tvers av alle de fire viktigste sidetypene (søkeresultater, produktsider, butikksider og anmeldelser), pluss ærlig veiledning om Etsys anti-bot-forsvar og et kodefritt alternativ for deg som helst vil slippe all scripting.
Hva betyr det å skrape Etsy med Python?
Webskraping betyr, ganske enkelt, å skrive kode som besøker nettsider og automatisk henter ut dataene du bryr deg om — produktnavn, priser, beskrivelser, bilder, vurderinger, anmeldelser, butikkdetaljer — og organiserer dem i et strukturert format som et regneark eller en database.
Python er det foretrukne språket for denne typen arbeid. Det er nybegynnervennlig, har et stort fellesskap og et bredt økosystem av biblioteker laget for skraping: Requests (for å hente sider), BeautifulSoup (for å analysere HTML), Selenium og Playwright (for nettleserautomatisering) og pandas (for å organisere og eksportere data). Python ligger jevnlig blant de tre mest populære språkene i Stack Overflows årlige utviklerundersøkelse, og skrapebibliotekene er blant de mest nedlastede på PyPI.
Når du skraper Etsy, henter du data fra HTML-en (og noen ganger skjult JSON) som Etsy sender til nettleseren din. Typiske data du kan hente ut inkluderer:
- Produktnavn, priser, beskrivelser, bilder og varianter
- Selger-/butikkinfo (navn, antall salg, plassering, vurdering)
- Vurderinger og fullstendig anmeldelsestekst
- Oppføringer i søkeresultater, kategorier og trendindikatorer
Hvorfor skrape Etsy? Praktiske brukstilfeller som gir avkastning
Å skrape Etsy er ikke bare en teknisk øvelse — det er et konkurransefortrinn. Enten du er selger, produktleder eller dataanalytiker, kan strukturert Etsy-data fort påvirke bunnlinjen din.

| Brukstilfelle | Hva du skraper | Hvem som får verdi | Forretningspåvirkning |
|---|---|---|---|
| Konkurranseanalyse for priser | Søkeresultater + produktpriser | E-handel, selgere | Dynamisk prising kan øke inntektene med 5–22 % i snitt |
| Oppdagelse av nisjer og trender | Søkeresultater, trendende oppføringer | Gründere, analytikere | Fang opp trendnisjer tidlig (f.eks. økte søk etter "preppy pajamas" med +1 112 %) |
| Produktutvikling og forbedring | Anmeldelser, produktdetaljer | Produktteam | Et kjøkkenutstyrsmerke tok tilbake #1 Best Seller på 60 dager ved å bruke sentimentdata fra anmeldelser |
| SEO og nøkkelordanalyse | Søkeresultater, produkttitler/-tagger | Markedsføringsteam | Identifiser nøkkelord med høy etterspørsel og lav konkurranse |
| Benchmarking av selgere | Butikksider, salgstall | Salgsteam, analytikere | Bygg kvalifiserte lead-lister til 0,01–0,10 USD per post i stedet for kjøpte lister |
| Lager- og beholdningsovervåking | Produkttilgjengelighet | E-handel | Reager raskere på konkurrenters lagerendringer |
Hver av disse brukstilfellene krever data fra ulike Etsy-sidetypper — og nettopp derfor dekker denne guiden alle fire.
Tidsbesparelse: manuelt vs. automatisert
- Manuell Etsy-undersøkelse: 30–45 minutter per produkt (50–75 timer for 100 produkter)
- Automatisert skraping: 100 oppføringer på 2–5 minutter
- AI-drevet skraping er 30–40 % raskere med opptil 99,5 % nøyaktighet
Etsy API vs. webskraping: Hva bør du velge?
Før du skriver én eneste linje kode, er det verdt å spørre: bør jeg bruke Etsys offisielle API eller skrape nettstedet direkte? Dette er et spørsmål jeg ser stadig i forum, og svaret avhenger av hvilke data du trenger.
Hva Etsy API kan og ikke kan gjøre
Etsy tilbyr API v3 med OAuth 2.0-autentisering. Det fungerer fint for å få tilgang til data fra din egen butikk — oppføringer, ordrer, kvitteringer. Men det har klare begrensninger:
- Konkurrentdata: API-et er stort sett begrenset til din egen butikk. Du kan ikke hente pris, salg eller oppføringer fra andre selgere.
- Anmeldelser: Det finnes ikke et robust endepunkt for full anmeldelsestekst i bulk.
- Ratelimits: 10 forespørsler/sekund, 10 000 forespørsler/dag som standard. Offset-grensen er 12 000 poster.
- AI/ML-bruk: Avvises eksplisitt i app-gjennomgang.
- Dokumentasjon: Det er utbredt misnøye i brukerfellesskapet — dårlige eksempler, utdaterte endepunkter og treg support.
Når webskraping er det bedre valget
Hvis du trenger konkurrentinnsikt, sentiment i anmeldelser, analyse på tvers av butikker eller data utover det API-et eksponerer, er skraping veien å gå. Avveiningen er at du møter Etsys anti-bot-forsvar (mer om det nedenfor), og du må investere i oppsett.
Sammenligningstabell: API vs. skraping vs. kodefritt
| Kriterium | Etsys offisielle API | Python-webskraping | Thunderbit (kodefritt) |
|---|---|---|---|
| Tilgang til produktpriser | ✅ (begrensede felt) | ✅ Full HTML/JSON-LD | ✅ AI henter ut alle synlige felt |
| Anmeldelsesdata | ❌ Ikke tilgjengelig i bulk | ✅ Via anmeldelses-endepunkt/HTML | ✅ Skraping av undersider |
| Konkurrentbutikkdata | ❌ Kun egen butikk | ✅ Alle offentlige butikker | ✅ Alle offentlige butikker |
| Krever autentisering | ✅ OAuth 2.0 | ⚠️ Cookies for innloggede data | ⚠️ Nettleserskraping for innlogging |
| Risiko for bot-blokkering | Ingen | HØY (DataDome) | Håndtert (nettleser-nativt) |
| Oppsettstid | Middels (API-nøkler, OAuth) | Høy (kode + proxyer) | ~2 minutter |
Hvis du trenger konkurrentdata, anmeldelser eller analyse på tvers av butikker, dekker API-et rett og slett ikke behovet. Det er den ærlige sannheten.
Velg Python-tilnærming før du skriver en eneste linje kode
Et spørsmål jeg stadig ser på Reddit og Stack Overflow: "Skal jeg bruke Requests + BeautifulSoup, Selenium, en proxy-API eller noe helt annet?" Det riktige svaret avhenger av ferdighetsnivå, budsjett og brukstilfelle.
| Tilnærming | Best for | Læringskurve | Takler JS? | Anti-bot-håndtering | Kostnad |
|---|---|---|---|---|---|
| Requests + BeautifulSoup | Utviklere som vil ha full kontroll | Middels | ❌ | Manuell (headere, proxyer) | Gratis + proxykostnader |
| Selenium / Playwright | JS-tunge sider, innloggingsflyt | Høy | ✅ | Delvis (nettleserfingeravtrykk) | Gratis + proxykostnader |
| Proxy-API-tjenester | Skala + omgåelse av anti-bot | Middels | ✅ (via API) | ✅ Innebygd | Fra 49 USD/mnd |
| Thunderbit (kodefritt) | Ikke-utviklere, rask uthenting | Svært lav | ✅ (nettleser-nativt) | ✅ (nettlesersesjon) | Gratis nivå tilgjengelig |
Hvis du vil ha full kontroll og er komfortabel med Python, gå for Requests + BeautifulSoup. Hvis du trenger JS-rendering eller innloggingsflyt, bruk Selenium. Hvis du vil omgå anti-bot i stor skala, vurder en proxy-tjeneste. Og hvis du vil ha Etsy-data uten å skrive eller vedlikeholde kode, er Thunderbit verdt en titt — mer om det senere.
Slik kjemper Etsy tilbake: forstå DataDome anti-bot-beskyttelse
De fleste skrapeguider vil si "bruk bare en proxy" og gå videre. Det er ikke nok for Etsy. Etsy bruker DataDome, et av de mest aggressive anti-bot-systemene på nettet. DataDome sin egen case-studie fremhever Etsy som en suksesshistorie, og sier at skrapere tidligere sto for rundt 1 % av Etsys datakostnader.

Hva er DataDome, og hvordan fungerer det?
DataDome sjekker ikke bare IP-adressen din. Det bruker et deteksjonsoppsett med flere lag:
- TLS-fingeravtrykk (JA3): Python-biblioteket
requestshar en særegen TLS-signatur som DataDome kan oppdage umiddelbart. - Inspeksjon av HTTP-headere/protokoll: Sjekker om nettleserheadere er komplette og konsistente — manglende eller feil rekkefølge på headere er et faresignal.
- JavaScript-fingeravtrykk (Picasso-protokollen): Kjører JS-utfordringer i nettleseren for å verifisere at du er en ekte bruker.
- Atferdsbasert maskinlæring: Analyserer 35+ signaler per forespørsel, med 85 000+ modellprofiler per nettsted.
- IP-omdømmescore: Datasenter-IP-er blir flagget umiddelbart.
- Cookie-verifisering:
datadome-cookien må være til stede og gyldig.
Tegn på at du er blokkert (og hvordan du sjekker det)
En av de vanligste fallgruvene: du får en 200 OK-respons, men HTML-en er egentlig en CAPTCHA-side, ikke dataene du ville ha. Andre tegn:
- 403 Forbidden-feil
- Omdirigeringsløkker
- Responskroppen inneholder et
ddJavaScript-objekt eller HTML for skyve-CAPTCHA
Sjekk alltid responskroppen, ikke bare statuskoden. En rask kontroll:
if "captcha" in resp.text.lower() or "datadome" in resp.text.lower():
print("Blokkert! Fikk en CAPTCHA-side i stedet for data.")
Headere og cookies som reduserer deteksjon
Du kan ikke garantere at du ikke blir blokkert, men realistiske headere og god cookie-håndtering kommer langt:
session = requests.Session()
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/133.0.0.0 Safari/537.36",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.9",
"Accept-Encoding": "gzip, deflate, br",
"Sec-Ch-Ua": '"Chromium";v="133", "Not-A.Brand";v="99", "Google Chrome";v="133"',
"Sec-Ch-Ua-Mobile": "?0",
"Sec-Ch-Ua-Platform": '"Windows"',
"Sec-Fetch-Dest": "document",
"Sec-Fetch-Mode": "navigate",
"Sec-Fetch-Site": "none",
"Upgrade-Insecure-Requests": "1",
})
Viktig også:
- Behold cookies mellom forespørsler med
requests.Session(). - Legg inn tilfeldige forsinkelser (2–7 sekunder) mellom forespørsler.
- Simuler en henvisningskjede: Besøk først forsiden, deretter søk, så produktsider.
- I stor skala er rotasjon av residential proxyer avgjørende. Datasenter-IP-er blir nesten umiddelbart flagget.
Disse teknikkene reduserer deteksjon, men fjerner den ikke. For skraping med høyt volum trenger du sannsynligvis en proxy-tjeneste eller en nettleserbasert tilnærming.
Slik setter du opp Python-miljøet for å skrape Etsy
Før du begynner:
- Vanskelighetsgrad: Middels
- Tidsbruk: Ca. 30–60 minutter (oppsett + første skraping)
- Det du trenger: Python 3.8+, pip, en kodeditor, Chrome-nettleser (for inspeksjon i DevTools)
Installer avhengigheter
Opprett en prosjektmappe, sett opp et virtuelt miljø og installer bibliotekene du trenger:
mkdir etsy-scraper && cd etsy-scraper
python -m venv venv
source venv/bin/activate # På Windows: venv\Scripts\activate
pip install requests beautifulsoup4 lxml pandas
- requests — henter nettsider
- beautifulsoup4 — analyserer HTML
- lxml — raskere HTML-parser (valgfritt, men anbefalt)
- pandas — strukturerer og eksporterer data til CSV/Excel
Hvis du trenger nettleserautomatisering senere (for innlogging eller JS-tunge sider), installer også:
pip install selenium
Forstå sidens struktur før du koder
Her er et tips som sparer masse tid: Etsy legger inn strukturert produktdata i <script type="application/ld+json">-tagger på de fleste sider. Disse JSON-LD-dataene er allerede strukturert — produktnavn, pris, vurdering, bilder — så du slipper å slåss med skjøre CSS-selektorer for hvert eneste felt.
Åpne en hvilken som helst Etsy-produktside, høyreklikk, velg "Vis kilde", og søk etter application/ld+json. Du finner en blokk med @type: Product som inneholder det meste av dataene du trenger. Søkeresultatsider har @type: ItemList.
CSS-selektorer er fortsatt nyttige som reservevalg (for data som ikke ligger i JSON-LD, som fraktinformasjon eller anmeldelsestekst), men JSON-LD bør være første stopp.
Steg 1: Skrap Etsy-søkeresultater med Python
Søkeresultater er utgangspunktet for de fleste Etsy-skrapingsprosjekter — enten du overvåker en nisje, følger konkurrentpriser eller bygger en produktdatabase.
Bygg søke-URL-en
Etsys søke-URL-er følger dette mønsteret:
https://www.etsy.com/search?q={keyword}&ref=pagination&page={page_number}
For forespørsler med flere ord må mellomrom URL-kodes (for eksempel handmade+jewelry eller handmade%20jewelry). Parameteren ref=pagination får forespørselen til å ligne mer på vanlig nettlesernavigasjon.
Andre nyttige parametere: order (most_relevant, price_asc, price_desc, date_desc), min_price, max_price, ship_to, free_shipping=true. Hver side returnerer 48 elementer.
Send forespørselen og analyser HTML-en
import requests
from bs4 import BeautifulSoup
import json
import time
import random
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/124.0.0.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
}
def scrape_etsy_search(query, max_pages=3):
all_products = []
for page in range(1, max_pages + 1):
url = f"https://www.etsy.com/search?q={query}&ref=pagination&page={page}"
resp = requests.get(url, headers=headers, timeout=30)
if "captcha" in resp.text.lower():
print(f"Blokkert på side {page}. Prøv med forsinkelser eller proxyer.")
break
soup = BeautifulSoup(resp.text, "lxml")
for script in soup.find_all("script", type="application/ld+json"):
data = json.loads(script.string)
if data.get("@type") == "ItemList":
for item in data.get("itemListElement", []):
all_products.append({
"name": item.get("name"),
"url": item.get("url"),
"image": item.get("image"),
"price": item.get("offers", {}).get("price"),
"currency": item.get("offers", {}).get("priceCurrency"),
"position": item.get("position"),
})
time.sleep(random.uniform(2, 5))
return all_products
Hent annonseringsdata fra JSON-LD
itemListElement-arrayen gir deg navnet på hver oppføring, URL, bilde, pris og valuta. Hvis du også trenger stjernevurderinger eller antall treff (ikke alltid i JSON-LD), kan du falle tilbake på CSS-selektorer:
- Oppføringskort:
.v2-listing-card - Tittel:
h3.v2-listing-card__title - Pris:
span.currency-value - Lenke:
a.listing-link(href)
Håndter paginering
Løp gjennom sidene og legg inn en tilfeldig forsinkelse mellom hver forespørsel. Etsy returnerer vanligvis opptil 20–250 sider, avhengig av søket.
results = scrape_etsy_search("handmade+jewelry", max_pages=5)
print(f"Skrapet {len(results)} produkter.")
For en skraping av 5 sider tok dette omtrent 20 sekunder i min testing — sammenlignet med over 30 minutter med manuell kopier-og-lim.
Steg 2: Skrap Etsy-produktsider med Python
Når du har en liste med produkt-URL-er fra søk, er neste steg å hente detaljert data fra hver enkelt produktside.
Hent produktsiden
def scrape_etsy_product(url):
resp = requests.get(url, headers=headers, timeout=30)
soup = BeautifulSoup(resp.text, "lxml")
for script in soup.find_all("script", type="application/ld+json"):
data = json.loads(script.string)
if data.get("@type") == "Product":
offers = data.get("offers", {})
price = offers.get("price") or offers.get("lowPrice")
rating_data = data.get("aggregateRating", {})
return {
"name": data.get("name"),
"description": data.get("description", "")[:500],
"brand": data.get("brand", {}).get("name") if isinstance(data.get("brand"), dict) else data.get("brand"),
"category": data.get("category"),
"price": price,
"currency": offers.get("priceCurrency"),
"availability": offers.get("availability"),
"rating": rating_data.get("ratingValue"),
"review_count": rating_data.get("reviewCount"),
"images": data.get("image", []),
"sku": data.get("sku"),
"material": data.get("material"),
}
return None
Håndter prisvariasjoner
Noen produkter har én enkelt offers.price. Andre (med varianter som størrelse eller farge) bruker offers.lowPrice og offers.highPrice. Koden over håndterer begge ved å falle tilbake fra price til lowPrice.
Hent flere felt via CSS-selektorer
For data som ikke ligger i JSON-LD — fraktinformasjon, varianter, fullstendige selgerdetaljer — trenger du CSS-selektorer:
- Tittel:
h1[data-buy-box-listing-title] - Varianter:
select[data-selector-id]ellerdiv[data-option-set] - Frakt:
div.wt-text-captionnær fraktseksjonen
Avveiningen er at JSON-LD er renere og mer stabilt når layouten endres. CSS-selektorer er mer skjøre, men dekker flere felt.
Steg 3: Skrap Etsy-butikksider med Python
Dette er delen de fleste konkurrentguider hopper helt over — og den er trolig den mest verdifulle for salgsteam og konkurranseanalytikere.
Bygg butikk-URL-en og hent siden
def scrape_etsy_shop(shop_name):
url = f"https://www.etsy.com/shop/{shop_name}"
resp = requests.get(url, headers=headers, timeout=30)
soup = BeautifulSoup(resp.text, "lxml")
# Butikkmetadata fra HTML (ikke i JSON-LD)
sales_el = soup.select_one("div.shop-sales-reviews a")
rating_el = soup.find("input", {"name": "initial-rating"})
location_el = soup.select_one("div.shop-location")
shop_data = {
"name": shop_name,
"sales": sales_el.text.strip() if sales_el else None,
"rating": rating_el["value"] if rating_el else None,
"location": location_el.text.strip() if location_el else None,
}
# Oppføringer fra JSON-LD
listings = []
for script in soup.find_all("script", type="application/ld+json"):
data = json.loads(script.string)
if data.get("@type") == "ItemList":
for item in data.get("itemListElement", []):
listings.append({
"name": item.get("name"),
"url": item.get("url"),
"price": item.get("offers", {}).get("price"),
})
shop_data["listings"] = listings
return shop_data
Hva du kan hente fra butikksider
JSON-LD på butikksider er @type: ItemList — det dekker produktoppføringene, men ikke butikkmetadata som antall salg, plassering eller vurdering. For disse trenger du CSS-selektorer:
| Datapunkt | Selektor | Merknader |
|---|---|---|
| Butikknavn | h1 eller meta-tittel | Vanligvis i sidetittelen |
| Totalt antall salg | div.shop-sales-reviews a | Tekst som "12 345 sales" |
| Stjernevurdering | Verdi i input[name="initial-rating"] | Tall fra 1–5 |
| Plassering | div.shop-location | By, land |
| Medlem siden | div.shop-info | Datotekst |
Butikkdata er spesielt verdifulle for å bygge lead-lister, benchmarke konkurrenter eller identifisere toppselgere i en nisje.
Steg 4: Skrap Etsy-anmeldelser med Python
Anmeldelser er blant de mest verdifulle — og vanskeligste — datapunktene på Etsy. Den fulle anmeldelsesteksten, vurderingene og datoene ligger ikke i den første HTML-en; de lastes via et internt API-endepunkt.
Tilnærming 1: Finn Etsys interne API-endepunkt for anmeldelser
Åpne en produktside i Chrome, åpne DevTools (F12), gå til Network-fanen og scroll ned til anmeldelsesdelen. Du vil se en POST-forespørsel til noe som ligner:
https://www.etsy.com/api/v3/ajax/bespoke/member/neu/specs/deep_dive_reviews
Dette endepunktet returnerer HTML-biter som inneholder anmeldelseskortene. For å bruke det trenger du:
- listing_id — den numeriske ID-en fra produkt-URL-en
- shop_id — hent fra produktsidens HTML ved hjelp av regex
- csrf_nonce — hent fra en
<meta>-tagg på siden
Hent ut ID-er og CSRF-token
import re
def get_review_params(product_url):
resp = requests.get(product_url, headers=headers)
html = resp.text
listing_id = product_url.split("/")[-1].split("?")[0]
shop_id_match = re.search(r'"shopId"\s*:\s*(\d+)', html)
shop_id = shop_id_match.group(1) if shop_id_match else None
soup = BeautifulSoup(html, "lxml")
csrf_meta = soup.find("meta", {"name": "csrf_nonce"})
csrf = csrf_meta["content"] if csrf_meta else None
return listing_id, shop_id, csrf
Skrap anmeldelser med paginering
def scrape_reviews(listing_id, shop_id, csrf, max_pages=5):
session = requests.Session()
session.headers.update(headers)
all_reviews = []
for page in range(1, max_pages + 1):
payload = {
"specs": {
"deep_dive_reviews": {
"module_path": "neu/specs/deep_dive_reviews",
"listing_id": listing_id,
"shop_id": shop_id,
"page": page,
}
}
}
resp = session.post(
"https://www.etsy.com/api/v3/ajax/bespoke/member/neu/specs/deep_dive_reviews",
json=payload,
headers={"x-csrf-token": csrf, "Content-Type": "application/json"},
)
data = resp.json()
html_fragment = data.get("output", {}).get("deep_dive_reviews", "")
review_soup = BeautifulSoup(html_fragment, "lxml")
for card in review_soup.select("div.review-card"):
rating_el = card.find("input", {"name": "rating"})
text_el = card.select_one("div.wt-text-body")
user_el = card.select_one("a[data-review-username]")
date_el = card.select_one("p.wt-text-body-small")
all_reviews.append({
"rating": rating_el["value"] if rating_el else None,
"text": text_el.text.strip() if text_el else None,
"reviewer": user_el.text.strip() if user_el else None,
"date": date_el.text.strip() if date_el else None,
})
time.sleep(random.uniform(2, 5))
return all_reviews
Tilnærming 2: Parse anmeldelser fra HTML (reservevalg)
Hvis API-tilnærmingen feiler (for eksempel på grunn av problemer med CSRF-token), kan du analysere den første siden med anmeldelser direkte fra produktsidens HTML. Begrensningen er at bare den første bunken med anmeldelser ligger i den statiske HTML-en. For mer enn det trenger du API-et eller et nettleserautomatiseringsverktøy som Selenium.
Håndtere data som krever innlogging: skrap din egen Etsy-butikk
Dette er et hull ingen andre guider dekker, men det er et reelt behov — spesielt for Etsy-selgere som vil hente egne ordrer, inntekter og statistikk.
Problemet er at requests alene ikke kan få tilgang til Etsy-dashbordet ditt fordi det ikke har med innloggingscookie-ene dine.
Alternativ 1: Selenium med manuell innlogging og cookie-henting
Bruk Selenium til å åpne en nettleser, logg inn manuelt (eller automatiser innloggingen), og fortsett deretter skrapingen mens du er autentisert:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://www.etsy.com/signin")
# Logg inn manuelt i nettleservinduet, og deretter:
input("Trykk Enter etter innlogging...")
cookies = driver.get_cookies()
# Bruk nå driver.get() til å navigere til dashbord-sidene dine og skrap dem
Du kan også lagre cookies fra Selenium-økten og gjenbruke dem med requests.Session() for raskere og lettere skraping etter den første innloggingen.
Alternativ 2: Eksporter nettleser-cookies for bruk med Requests
Bruk en nettleserutvidelse (som "EditThisCookie") til å eksportere aktive Etsy-øktcookies, og last dem deretter inn i en Requests-økt:
import requests
session = requests.Session()
# Legg til cookies eksportert fra nettleseren din
session.cookies.set("uaid", "YOUR_UAID_VALUE", domain=".etsy.com")
session.cookies.set("user_prefs", "YOUR_USER_PREFS_VALUE", domain=".etsy.com")
# ... legg til andre øktcookies etter behov
resp = session.get("https://www.etsy.com/your/orders", headers=headers)
Den enkle veien: Thunderbits nettleserskrapingsmodus
Siden Thunderbit kjører i Chrome-nettleseren din, arver den den aktive Etsy-økten din automatisk. Ingen autentiseringskode, ingen cookie-eksport — bare gå til Etsy-dashbordet ditt og skrap. Dette er virkelig nyttig for å hente ut ordrer, inntekter, statistikk og andre selgerdata uten scripting.
Skrap Etsy-dashbordet ditt med AI
Eksport og bruk av skrapede Etsy-data
Lagre til CSV eller JSON
import pandas as pd
df = pd.DataFrame(results)
df.to_csv("etsy_products.csv", index=False, encoding="utf-8")
df.to_json("etsy_products.json", orient="records", indent=2)
Beste praksis: ta med tidsstempler i filnavnene, bruk UTF-8-koding, og håndter spesialtegn i produktnavn (Etsy-selgere elsker emojis og aksenttegn).
Eksporter til Google Sheets, Airtable eller Notion
For Python-brukere lar biblioteker som gspread (Google Sheets) eller Airtable API deg sende data programmessig. Men hvis du bruker Thunderbit, er alle eksportmuligheter — til Google Sheets, Excel, Airtable og Notion — gratis og ett klikk unna. Ingen API-nøkler, ingen OAuth-oppsett.
Hopp over koden: Slik skraper du Etsy med Thunderbit (kodefritt alternativ)
Ikke alle vil skrive Python-skript, vedlikeholde proxy-oppsett eller feilsøke CSS-selektorer klokken 02.00 om natten. Hvis du kjenner deg igjen, er dette måten å hente Etsy-data med Thunderbit.
Installer Thunderbit Chrome-utvidelsen
Gå til Chrome Nettmarked og installer Thunderbit. Opprett en gratis konto — gratisnivået gir deg 6 sider/måned, og alle eksporteringer er gratis.
Bruk AI-forslag til felter på hvilken som helst Etsy-side
Gå til en Etsy-søke-, produkt- eller butikkside. Klikk "AI-forslag til felter" i Thunderbit-sidepanelet. AI-en skanner siden og foreslår kolonner — produktnavn, pris, vurdering, bilder, butikknavn, tagger, fraktinfo. Juster eller legg til kolonner etter behov.
Klikk skrap og eksporter
Klikk "Skrap" for å hente data fra den gjeldende siden. For resultater over flere sider bruker du Thunderbits pagineringsskraping. For å berike en liste med produkt-URL-er med detaljdata fra hver produktside (beskrivelser, anmeldelser, frakt), bruker du skraping av undersider — Thunderbit besøker hver lenke og henter ekstra data automatisk.
Eksporter til Excel, Google Sheets, Airtable eller Notion — helt gratis.
Når Thunderbit er bedre enn Python for Etsy-skraping
- Ingen proxy-oppsett eller anti-bot-kode nødvendig. Thunderbit kjører i din ekte Chrome-nettleser, så den arver økten din og ser ut som en vanlig bruker for DataDome.
- AI tilpasser seg layoutendringer automatisk. Ingen ødelagte selektorer å fikse når Etsy oppdaterer frontenden.
- Supert for engangsundersøkelser, konkurranseanalyse eller teammedlemmer uten teknisk bakgrunn. Hvis du bare trenger et raskt datasett, trenger du ikke et Python-miljø.
- Skraping av undersider lar deg berike en liste med produkt-URL-er med detaljert data uten å skrive nestede løkker.
For en gjennomgang, sjekk ut Thunderbits YouTube-kanal.
Python vs. Thunderbit: kostnadssammenligning over 6 måneder
| Faktor | Python, egen løsning | Thunderbit |
|---|---|---|
| Oppsettstid | 8–20 timer | Under 5 minutter |
| Kostnad over 6 måneder (inkl. arbeid, proxyer) | 2 720–9 450 USD | 90–228 USD |
| Månedlig vedlikehold | 4–10+ timer (oppdatering av selektorer = 80 %+ overhead) | 0–1 timer |
| Anti-bot-håndtering | Residential proxyer til 85x normal kredittkostnad | Nettleserbasert, omgår DataDome nativt |
| Datakvalitet | Høy (med innsats) | Høy (AI-drevet) |
Jeg sier ikke at Python er feil valg — hvis du trenger full kontroll, egendefinert logikk eller integrasjon i en større pipeline, er kode fortsatt kongen. Men for de fleste forretningsbrukere som bare trenger Etsy-data, taler avkastningsregnestykket for et kodefritt verktøy.
Juridiske og etiske tips for å skrape Etsy
Jeg får spørsmål om lovlighet i hvert eneste innlegg om skraping, så her er kortversjonen:
- Etsys bruksvilkår forbyr uttrykkelig automatisert tilgang. Når det er sagt, baserer Etsy seg på teknisk håndheving (DataDome) heller enn søksmål — det finnes ingen kjente Etsy-spesifikke rettssaker mot skrapere.
- Skrap bare offentlig tilgjengelige data. Ikke omgå autentisering eller få tilgang til private dashbord for selgere du ikke eier.
- Bruk fornuftig forespørselsrate. 2–7 sekunders forsinkelse mellom forespørsler, og ikke overbelast Etsys servere.
- Respekter
robots.txt. Etsy tillater søkesider, men begrenser enkelte stier. - Håndter persondata ansvarlig i henhold til personvernlovgivning som GDPR.
- Rådfør deg med juridisk ekspertise ved skraping i kommersiell skala.
For mer bakgrunn, se innlegget vårt om juridiske konsekvenser av webskraping — inkludert Meta mot Bright Data (2024), der skraping av offentlig data ble opprettholdt.
Oppsummering: viktige poenger
Vi har vært innom mye her. Her er det jeg vil at du skal sitte igjen med:
- Etsys strukturerte JSON-LD-data gjør uthenting renere enn rå HTML-parsing for de fleste felt.
- DataDome er en reell hindring — bruk riktige headere, forsinkelser, cookie-håndtering og residential proxyer for Python-skraping i stor skala.
- Etsy API-et er begrenset. Hvis du trenger anmeldelser, konkurrentbutikker eller analyse på tvers av selgere, er skraping den praktiske veien.
- Thunderbit tilbyr et kodefritt alternativ som håndterer anti-bot og autentisering nativt — verdt å prøve hvis du vil ha Etsy-data uten å vedlikeholde skript.
- Skrap alltid ansvarlig og respekter Etsys vilkår.
Hvis du vil komme i gang uten å skrive kode, prøv Thunderbit gratis. Eller bruk Python-koden fra denne guiden til å bygge din egen tilpassede skraper — og måtte selektorene dine aldri ryke en fredag ettermiddag.
For flere skrapeguider, se vår guide til Etsy-scraper og oversikten over de beste AI-webskraperne.
Prøv Thunderbit for å skrape Etsy-data raskere Get Started Free
Vanlige spørsmål
1. Er det lovlig å skrape Etsy med Python?
Å skrape offentlig tilgjengelige data er generelt tillatt under nyere rettspraksis (f.eks. Meta mot Bright Data, hiQ mot LinkedIn). Likevel forbyr Etsys bruksvilkår automatisert tilgang, så vurder alltid vilkårene og robots.txt før du skraper. Ved storstilt eller kommersiell bruk bør du rådføre deg med juridisk ekspertise.
2. Kan jeg skrape Etsy uten å bli blokkert?
Etsy bruker DataDome, et av de tøffeste anti-bot-systemene som finnes. Realistiske headere, forsinkelser mellom forespørsler, vedvarende cookies og rotasjon av residential proxyer bidrar alle til å redusere blokkeringer. Thunderbits nettleser-nære tilnærming unngår det meste av deteksjonen siden den opererer inne i din ekte Chrome-økt.
3. Har Etsy et API jeg kan bruke i stedet for skraping?
Ja — Etsy tilbyr API v3, men det er stort sett begrenset til data fra din egen butikk og mangler robust tilgang til anmeldelser. De fleste brukstilfeller for konkurranseinnsikt og analyse på tvers av butikker krever skraping.
4. Hvilke Python-biblioteker trenger jeg for å skrape Etsy?
Minst: requests, beautifulsoup4, pandas (for eksport) og json (innebygd). For sider med mye JS eller innloggingskrav, legg til selenium. For raskere HTML-parsing, bruk lxml.
5. Hvordan skraper jeg spesifikt Etsy-anmeldelser?
Etsy-anmeldelser lastes via et internt API-endepunkt (/api/v3/ajax/bespoke/member/neu/specs/deep_dive_reviews). Du må hente ut listing-ID, shop-ID og CSRF-token fra produktsiden, og deretter sende en POST til endepunktet med paginering. Som reserve kan du parse den første bunken med anmeldelser fra produktsidens HTML — begge metodene går vi gjennom steg for steg i denne guiden.
Les mer
- Slik bruker du en Etsy-scraper for å styrke salgsstrategien din
- Slik skraper du produkter fra e-handelsnettsteder enkelt
- Slik skriver du en webskraper med Python: fra start til slutt
- Slik skraper du data fra et nettsted med Python på en effektiv måte
- Slik skraper du data med Python: en nybegynnerguide


