Pega un perfil, una publicación o un reel públicos. Web Unlocker devuelve la página de Instagram sin iniciar sesión: de un perfil, el número exacto de seguidores y sus 12 últimas publicaciones; de una publicación, los me gusta y comentarios exactos y su descripción. $0.98 por 1000 páginas.
1000 solicitudes gratis · Solo pagas si funciona · 195+ países · Listo para Claude
Las páginas de Instagram tardan de 3 a 12 segundos. Sigue en proceso, no hace falta volver a hacer clic.
¿Listo para tus propios perfiles? Obtén una clave de API o reserva una demo.
Cuéntanos un poco sobre tu equipo y recibe:
Páginas públicas, sin iniciar sesión y sin cuenta de Instagram. Plataformas de influencers, marcas, herramientas de social listening e investigadores leen estos cuatro tipos de página, y cada una se cobra como una página.










¿Quieres probarlo tú mismo? Consigue tu clave de API con 1000 solicitudes gratis.
Web Unlocker cobra una sola vez la página de un perfil, con sus seguidores exactos y sus 12 últimas publicaciones, a $0.98 por 1000 páginas. Los scrapers de perfiles de Instagram en Apify, Bright Data y ScrapeCreators cobran más por el mismo perfil.
Apify cobra $2.60 por 1000 perfiles.
Aquí 1000 cuestan $1.14.
Instagram devuelve vacía más o menos una de cada siete páginas de perfil. Pídela de nuevo con una URL nueva y los datos vuelven: el precio de arriba ya cuenta esos reintentos.
Lo que cuestan 1000 perfiles de Instagram
1000 perfiles públicos con seguidores y biografía, a precios publicados
Gologin: $0.98 por 1000 páginas, más un reintento por cada siete perfiles, aproximadamente. Bright Data cobra cada registro, $1.50 por 1000. ScrapeCreators cobra cada solicitud, $1.88 por 1000 en su plan de $47. El scraper de perfiles de Instagram propio de Apify cobra $2.60 por 1000 perfiles en el plan gratuito.
¿Listo para ejecutarlo con tus propios perfiles? Obtén tu clave de API y solicitudes gratis.
Nuestra prueba de scraping de Instagram: 20 perfiles, 20 publicaciones y 20 reels de sus cuadrículas, y 10 páginas de hashtags, cada una pedida hasta tres veces, como lo hace la demo de arriba. Esto es lo que volvió, y con qué rapidez.
51 de 60 volvieron al primer intento.
Los otros 9, al segundo o al tercero.
La API propia de Instagram, los scrapers de Instagram de Apify y la Instagram Scraper API de Bright Data: lo que cobra cada uno por los mismos 1000 perfiles, y lo que te pide antes de empezar.
| Lo que exige | ||||
|---|---|---|---|---|
| Pagas por | Una página | Gratis con límites | Cada resultado | Cada registro |
| 1000 perfiles | $1.14 | Gratis | $2.60 | $1.50 |
| Cuentas personales | Sí | No | Sí | Sí |
| Tu propia cuenta de Instagram | No hace falta | Cuenta profesional | No hace falta | No hace falta |
| Inicio gratis | 1000 solicitudes | Con una app de Meta | $5 al mes | 5000 al mes |
| La página completa en HTML | Sí | No | No | No |
¿Haces scraping de algo más que Instagram? Web Unlocker devuelve cualquier página de la misma forma y al mismo precio.
La página de un perfil trae sus 12 últimas publicaciones, y la página de cada publicación trae sus me gusta y comentarios exactos. 13 páginas, $0.0127, y tienes el engagement real del creador, publicación por publicación.
Instagram redondea a 268M.
El scraper devuelve 268,157,304.
Instagram guarda los datos de una página pública como JSON dentro de su HTML. Web Unlocker devuelve ese HTML, y unas pocas líneas de código leen de él el perfil o la publicación. La pestaña Lista de perfiles es un pequeño crawler de Instagram: entra una lista de cuentas, sale un CSV.
Rellena el formulario de arriba. La clave llega por correo en un día laborable.
Un perfil para sus seguidores y últimas publicaciones, o una publicación o un reel para sus me gusta y comentarios.
Comprueba que la página trae datos, y pídela de nuevo con una URL nueva cuando Instagram envíe una vacía.
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`);¿Listo para ejecutarlo con tus propios perfiles? Obtén tu clave de API y solicitudes gratis.
Una cuenta, una red de proxies, un ecosistema. Elige el producto que necesita cada tarea.
¿Haces scraping de más sitios? Consulta los scrapers de Facebook, Google Play, Twitter (X), YouTube, Reddit y Google Maps, o todas las herramientas de web scraping.
Un Instagram scraper es una herramienta que lee páginas públicas de Instagram y las convierte en datos: los seguidores, la biografía y las últimas publicaciones de un perfil, y los me gusta, los comentarios y la descripción de una publicación. Gologin Web Unlocker es una Instagram scraper API: envíale la dirección de una página y la devuelve con esos datos, a $0.98 por 1000 páginas.
Envía la dirección de un perfil, una publicación o un reel públicos a Web Unlocker. Devuelve la página como la ve un visitante sin sesión iniciada, con los datos que Instagram guarda dentro como JSON: seguidores, publicaciones, me gusta, comentarios y descripciones. El código de arriba los lee en unas pocas líneas.
Envía la dirección del perfil a Web Unlocker con la biblioteca requests y lee el JSON de la página. La pestaña Python de arriba es un script completo, probado en la API real: muestra los seguidores, los seguidos, la biografía y las 12 últimas publicaciones del perfil.
Solo en parte. Business Discovery, en la Instagram API, lee cuentas de empresa y de creador, y solo desde tu propia cuenta profesional a través de una app de Meta. Las cuentas personales no están incluidas, y la búsqueda de hashtags se detiene en 30 hashtags por semana. La antigua Basic Display API terminó el 4 de diciembre de 2024.
Sí. Los perfiles, publicaciones y reels públicos y la página de populares de un hashtag cargan sin iniciar sesión. Web Unlocker los abre como un visitante sin sesión iniciada, así que no necesitas una cuenta de Instagram ni arriesgas ninguna de las tuyas. Los perfiles privados siguen cerrados: sus publicaciones son solo para los seguidores aprobados. TikTok funciona igual: el TikTok scraper lee perfiles y videos públicos sin iniciar sesión.
De vez en cuando Instagram envía una página sin datos dentro: más o menos una de cada siete páginas de perfil en nuestra prueba. La demo de arriba y los ejemplos de código comprueban que los datos estén y la piden de nuevo con una URL nueva. Las publicaciones y los reels volvieron al primer intento 36 veces de 40.
No como lista: la lista de seguidores de una cuenta solo se abre para usuarios con sesión iniciada. El número exacto de seguidores es público, y Web Unlocker lo devuelve con cada perfil.
El número de comentarios, sí: cada página de publicación y de reel trae la cifra exacta. Los comentarios en sí cargan solo para usuarios con sesión iniciada, así que Web Unlocker no los devuelve.
Para muchos hashtags, Instagram muestra a los visitantes sin sesión iniciada una página de populares con 12 reels destacados y sus reproducciones, y Web Unlocker la devuelve. El feed completo de un hashtag es para usuarios con sesión iniciada.
Sí. Cada publicación de la página de un perfil y cada página de publicación traen los enlaces a sus archivos de imagen, así que tu código puede guardarlos.
$0.98 por 1000 páginas, el mismo precio para cada página: un perfil con sus 12 últimas publicaciones es una página, y una publicación es una página. Una solicitud que falla no cuesta nada. Los planes empiezan en $49 al mes por 50 000 solicitudes.
Web Unlocker incluye 1000 solicitudes gratis, suficientes para 1000 perfiles o publicaciones. Las herramientas de código abierto como Instaloader e instagrapi son gratis: funcionan en tus propios servidores, a menudo piden iniciar sesión en Instagram, y mantenerlas funcionando cuando Instagram cambia depende de ti.
Depende de la tarea. La Instagram API es gratis para las cuentas de empresa y de creador a las que llegas desde la tuya. Apify y Bright Data venden filas ya hechas y cobran cada resultado. Web Unlocker devuelve la página pública completa a un precio por página, en Instagram y en cualquier otro sitio.
Sí. El scraper de perfiles de Instagram de Apify cobra $2.60 por 1000 perfiles en su plan gratuito. Web Unlocker devuelve la misma página pública del perfil, con el número exacto de seguidores y las 12 últimas publicaciones, a $1.14 por 1000 perfiles, reintentos incluidos.
Los perfiles, publicaciones y reels que cargan sin iniciar sesión son páginas públicas. En el caso Meta v. Bright Data, en enero de 2024, un tribunal federal de EE. UU. concluyó que los términos de Meta no prohíben el scraping de datos públicos sin sesión iniciada. Qué recoges y cómo lo usas es decisión tuya, así que compruébalo con las normas que se apliquen a tu proyecto.
Cuéntanos un poco sobre tu equipo y recibe: