Wklej publiczny profil, post lub rolkę. Web Unlocker zwróci stronę Instagrama bez logowania: dokładną liczbę obserwujących i 12 najnowszych postów profilu, a dla posta dokładne polubienia, komentarze i opis. $0.98 za 1000 stron.
1000 darmowych żądań · Płatność tylko za sukces · 195+ krajów · Gotowe dla Claude
Strony Instagrama ładują się od 3 do 12 sekund. Nadal pracuję, nie musisz klikać ponownie.
Gotowy na własne profile? Pobierz klucz API albo umów demo.
Opowiedz nam trochę o swoim zespole i otrzymasz:
Publiczne strony, bez logowania i bez konta na Instagramie. Platformy influencer marketingu, marki, narzędzia do social listeningu i badacze czytają te cztery rodzaje stron, każdą rozliczaną jako jedna strona.










Chcesz spróbować sam? Odbierz klucz API z 1000 darmowych żądań.
Web Unlocker rozlicza stronę profilu raz, z dokładną liczbą obserwujących i 12 najnowszymi postami, po $0.98 za 1000 stron. Scrapery profili Instagrama na Apify, w Bright Data i ScrapeCreators pobierają więcej za ten sam profil.
Apify rozlicza $2.60 za 1000 profili.
Tutaj 1000 kosztuje $1.14.
Instagram odsyła pustą mniej więcej co siódmą stronę profilu. Poproś o nią ponownie z nowym adresem URL strony, a dane wrócą: cena powyżej uwzględnia te ponowienia.
Ile kosztuje 1000 profili z Instagrama
1000 publicznych profili z obserwującymi i bio, według opublikowanych cen
Gologin: $0.98 za 1000 stron plus jedno ponowienie mniej więcej na każde siedem profili. Bright Data rozlicza każdy rekord, $1.50 za 1000. ScrapeCreators rozlicza każde żądanie, $1.88 za 1000 w planie za $47. Własny scraper profili Instagrama od Apify rozlicza $2.60 za 1000 profili w darmowym planie.
Chcesz uruchomić to na własnych profilach? Odbierz klucz API i darmowe żądania.
Nasz test scrapowania Instagrama: 20 profili, 20 postów i 20 rolek z ich siatek oraz 10 stron hashtagów, każda strona z maksymalnie trzema próbami, tak jak robi to demo powyżej. Oto, co wróciło i jak szybko.
51 z 60 wróciło za pierwszym razem.
Pozostałe 9 za drugim lub trzecim.
Własne API Instagrama, scrapery Instagrama od Apify i Instagram Scraper API od Bright Data: ile każde z nich pobiera za te same 1000 profili i czego wymaga od Ciebie, zanim zaczniesz.
| Czego to wymaga | ||||
|---|---|---|---|---|
| Płacisz za | Stronę | Za darmo w limitach | Każdy wynik | Każdy rekord |
| 1000 profili | $1.14 | Za darmo | $2.60 | $1.50 |
| Konta osobiste | Tak | Nie | Tak | Tak |
| Własne konto na Instagramie | Niepotrzebne | Konto profesjonalne | Niepotrzebne | Niepotrzebne |
| Darmowy start | 1000 żądań | Z aplikacją Meta | $5 miesięcznie | 5000 miesięcznie |
| Cała strona w HTML | Tak | Nie | Nie | Nie |
Scrapujesz nie tylko Instagram? Web Unlocker zwraca każdą stronę w ten sam sposób, w tej samej cenie.
Strona profilu przynosi 12 najnowszych postów, a strona każdego posta jego dokładne polubienia i komentarze. 13 stron, $0.0127, i masz prawdziwe zaangażowanie twórcy, post po poście.
Instagram zaokrągla do 268 mln.
Scraper zwraca 268,157,304.
Instagram trzyma dane publicznej strony jako JSON wewnątrz jej HTML. Web Unlocker zwraca ten HTML, a kilka linii kodu odczytuje z niego profil lub post. Zakładka Lista profili to mały crawler Instagrama: lista kont na wejściu, CSV na wyjściu.
Wypełnij formularz powyżej. Klucz przychodzi e-mailem w ciągu jednego dnia roboczego.
Profil dla obserwujących i najnowszych postów, post lub rolka dla polubień i komentarzy.
Sprawdź, czy strona przyszła z danymi, i poproś o nią ponownie z nowym adresem URL strony, gdy Instagram wysłał pustą.
pip install requestsGOLOGIN_SCRAPING_API_KEY=your_key python instagram_profile.pyhttps://parsing.webunlocker.gologin.com/v1/scrapeimport json
import os
import re
import time
import requests
username = "nasa"
def scrape(url, marker):
for attempt in range(3):
address = url if attempt == 0 else f"{url}?fresh={int(time.time())}"
response = requests.get(
"https://parsing.webunlocker.gologin.com/v1/scrape",
params={"url": address, "geo": "us", "format": "json"},
headers={"apikey": os.environ["GOLOGIN_SCRAPING_API_KEY"]},
timeout=90,
)
page = response.json().get("data", {}).get("html", "") if response.ok else ""
if marker in page:
return page
time.sleep(3)
raise RuntimeError("The page came back without data, try again later")
def blocks(page):
for block in re.findall(r'<script type="application/json"[^>]*>(.*?)</script>', page, re.S):
try:
yield json.loads(block)
except json.JSONDecodeError:
pass
def find(node, key):
if isinstance(node, dict):
for name, value in node.items():
if name == key:
yield value
yield from find(value, key)
elif isinstance(node, list):
for item in node:
yield from find(item, key)
data = list(blocks(scrape(f"https://www.instagram.com/{username}/", '"follower_count"')))
user = next(item for item in find(data, "xig_user_by_username") if "follower_count" in item)
posts = {}
for timeline in find(data, "polaris_ordered_timeline_connection"):
for edge in timeline["edges"]:
post = edge["node"]
reel = post.get("product_type") == "clips"
posts[post["code"]] = {
"url": f"https://www.instagram.com/{'reel' if reel else 'p'}/{post['code']}/",
"type": "reel" if reel else "post",
"caption": (post.get("caption") or {}).get("text", "").split("\n")[0],
"image": post.get("display_uri"),
}
profile = {
"username": user["username"],
"full_name": user["full_name"],
"biography": user["biography"],
"verified": user["is_verified"],
"followers": user["follower_count"],
"following": user["following_count"],
"latest_posts": list(posts.values())[:12],
}
print(json.dumps(profile, indent=2, ensure_ascii=False))
print(f"@{username}: {profile['followers']:,} followers, {len(profile['latest_posts'])} latest posts from one page")GOLOGIN_SCRAPING_API_KEY=your_key node instagram-engagement.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
const username = 'natgeo';
async function scrape(url, marker) {
for (let attempt = 1; attempt <= 3; attempt++) {
const address = attempt === 1 ? url : `${url}?fresh=${Date.now()}`;
const params = new URLSearchParams({ url: address, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes(marker)) return page;
await new Promise((resolve) => setTimeout(resolve, 3000));
}
throw new Error(`${url} came back without data, try again later`);
}
function* find(node, test) {
if (Array.isArray(node)) for (const item of node) yield* find(item, test);
else if (node && typeof node === 'object') {
if (test(node)) yield node;
for (const value of Object.values(node)) yield* find(value, test);
}
}
const data = (page) =>
[...page.matchAll(/<script type="application\/json"[^>]*>([\s\S]*?)<\/script>/g)].flatMap(([, json]) => {
try {
return [JSON.parse(json)];
} catch {
return [];
}
});
const profile = data(await scrape(`https://www.instagram.com/${username}/`, '"follower_count"'));
const user = find(profile, (node) => typeof node.follower_count === 'number').next().value;
const codes = [...new Set([...find(profile, (node) => node.code && node.display_uri)].map((post) => post.code))].slice(0, 12);
const posts = [];
for (const code of codes) {
const page = data(await scrape(`https://www.instagram.com/p/${code}/`, '"like_count"'));
const post = find(page, (node) => typeof node.like_count === 'number' && node.code === code).next().value;
posts.push({ url: `https://www.instagram.com/p/${code}/`, date: new Date(post.taken_at * 1000).toISOString().slice(0, 10), likes: post.like_count, comments: post.comment_count });
}
const csv = ['url,date,likes,comments', ...posts.map((post) => `${post.url},${post.date},${post.likes},${post.comments}`)].join('\n');
writeFileSync(`${username}-posts.csv`, csv);
const average = posts.reduce((sum, post) => sum + post.likes + post.comments, 0) / posts.length;
console.table(posts);
console.log(`@${username}: ${user.follower_count.toLocaleString('en-US')} followers, ${Math.round(average).toLocaleString('en-US')} likes and comments a post`);
console.log(`Engagement rate ${((average / user.follower_count) * 100).toFixed(2)}% from ${posts.length + 1} pages: $${((posts.length + 1) * 0.00098).toFixed(4)} on the Growth plan`);GOLOGIN_SCRAPING_API_KEY=your_key node instagram-profiles.mjshttps://parsing.webunlocker.gologin.com/v1/scrapeimport { writeFileSync } from 'node:fs';
const usernames = ['nasa', 'natgeo', 'nike', 'spotify', 'starbucks', 'redbull'];
async function scrape(url) {
for (let attempt = 1; attempt <= 3; attempt++) {
const address = attempt === 1 ? url : `${url}?fresh=${Date.now()}`;
const params = new URLSearchParams({ url: address, geo: 'us', format: 'json' });
const response = await fetch(`https://parsing.webunlocker.gologin.com/v1/scrape?${params}`, {
headers: { apikey: process.env.GOLOGIN_SCRAPING_API_KEY },
});
const page = response.ok ? (await response.json()).data?.html : '';
if (page?.includes('"follower_count"')) return page;
await new Promise((resolve) => setTimeout(resolve, 3000));
}
return '';
}
const field = (page, name) => page.match(new RegExp(`"${name}":("(?:[^"\\\\]|\\\\.)*"|\\d+|true|false)`))?.[1];
const rows = [];
for (const username of usernames) {
const page = await scrape(`https://www.instagram.com/${username}/`);
rows.push({
username,
name: page && JSON.parse(field(page, 'full_name')),
verified: page && field(page, 'is_verified') === 'true',
followers: page && Number(field(page, 'follower_count')),
following: page && Number(field(page, 'following_count')),
posts: page.match(/([\d.,]+[KMB]?) Posts/)?.[1],
});
}
writeFileSync('profiles.csv', ['username,name,verified,followers,following,posts', ...rows.map((row) => Object.values(row).map((value) => JSON.stringify(value ?? '')).join(','))].join('\n'));
console.table(rows);
console.log(`${rows.length} profiles in ${rows.length} pages: $${(rows.length * 0.00098).toFixed(4)} on the Growth plan`);Chcesz uruchomić to na własnych profilach? Odbierz klucz API i darmowe żądania.
Jedno konto, jedna sieć proxy, jeden ekosystem. Wybierz produkt, którego wymaga zadanie.
Scrapujesz więcej witryn? Zobacz scrapery Facebook, Google Play, Twitter (X), YouTube, Reddit i Google Maps albo wszystkie narzędzia do web scrapingu.
Instagram scraper to narzędzie, które czyta publiczne strony Instagrama i zamienia je w dane: obserwujących, bio i najnowsze posty profilu, polubienia, komentarze i opis posta. Gologin Web Unlocker to Instagram scraper API: wyślij mu adres strony, a zwróci stronę z tymi danymi, po $0.98 za 1000 stron.
Wyślij adres publicznego profilu, posta lub rolki do Web Unlocker. Zwróci stronę tak, jak widzi ją niezalogowany użytkownik, z danymi, które Instagram trzyma w niej jako JSON: obserwującymi, postami, polubieniami, komentarzami i opisami. Kod powyżej odczytuje je w kilku liniach.
Wyślij adres profilu do Web Unlocker biblioteką requests i odczytaj JSON ze strony. Zakładka Python powyżej to kompletny skrypt, przetestowany na działającym API: wypisuje obserwujących, obserwowanych, bio i 12 najnowszych postów profilu.
Tylko częściowo. Business Discovery w Instagram API czyta konta firmowe i konta twórców, i to tylko z Twojego własnego konta profesjonalnego przez aplikację Meta. Konta osobiste nie są objęte, a wyszukiwanie hashtagów kończy się na 30 tagach tygodniowo. Stare Basic Display API przestało działać 4 grudnia 2024.
Tak. Publiczne profile, posty, rolki i popularna strona hashtagu ładują się bez logowania. Web Unlocker otwiera je jako niezalogowany użytkownik, więc nie potrzebujesz konta na Instagramie i nie narażasz żadnego ze swoich kont. Prywatne profile pozostają zamknięte: ich posty widzą tylko zatwierdzeni obserwujący. Z TikTokiem jest tak samo: TikTok scraper czyta publiczne profile i filmy bez logowania.
Instagram co jakiś czas wysyła stronę bez danych: w naszym teście mniej więcej co siódmą stronę profilu. Demo powyżej i przykłady kodu sprawdzają, czy dane są na stronie, i proszą o nią ponownie z nowym adresem URL strony. Posty i rolki wróciły za pierwszym razem 36 razy na 40.
Nie jako listę: lista obserwujących konta otwiera się tylko zalogowanym użytkownikom. Dokładna liczba obserwujących jest publiczna i Web Unlocker zwraca ją z każdym profilem.
Liczbę komentarzy tak: każda strona posta i rolki zawiera dokładną liczbę. Same komentarze ładują się zalogowanym użytkownikom, więc Web Unlocker ich nie zwraca.
Dla wielu hashtagów Instagram pokazuje niezalogowanym użytkownikom popularną stronę z 12 najlepszymi rolkami i liczbą ich odtworzeń, a Web Unlocker ją zwraca. Pełny feed hashtagu jest dla zalogowanych użytkowników.
Tak. Każdy post na stronie profilu i każda strona posta zawierają linki do plików zdjęć, więc Twój kod może je zapisać.
$0.98 za 1000 stron i ta sama cena za każdą stronę: profil z 12 najnowszymi postami to jedna strona, post to jedna strona. Nieudane żądanie nic nie kosztuje. Plany zaczynają się od $49 miesięcznie za 50 000 żądań.
Web Unlocker zawiera 1000 darmowych żądań, czyli wystarczająco na 1000 profili lub postów. Narzędzia open source, takie jak Instaloader i instagrapi, są darmowe: działają na Twoich własnych serwerach, często wymagają logowania na Instagramie, a utrzymanie ich w działaniu, gdy Instagram się zmienia, należy do Ciebie.
To zależy od zadania. Instagram API jest darmowe dla kont firmowych i kont twórców, do których dotrzesz ze swojego konta. Apify i Bright Data sprzedają gotowe wiersze i rozliczają każdy wynik. Web Unlocker zwraca całą publiczną stronę w jednej cenie za stronę, na Instagramie i na każdej innej witrynie.
Tak. Scraper profili Instagrama od Apify rozlicza $2.60 za 1000 profili w darmowym planie. Web Unlocker zwraca tę samą publiczną stronę profilu z dokładną liczbą obserwujących i 12 najnowszymi postami za $1.14 za 1000 profili, z ponowieniami.
Profile, posty i rolki, które ładują się bez logowania, to publiczne strony. W sprawie Meta v. Bright Data, w styczniu 2024, amerykański sąd federalny uznał, że warunki Meta nie zabraniają scrapowania publicznych danych bez logowania. To, co zbierasz i jak tego używasz, zależy od Ciebie, więc sprawdź to z zasadami obowiązującymi w Twoim projekcie.
Opowiedz nam trochę o swoim zespole i otrzymasz: