Dán một profile, bài viết hoặc thước phim công khai. Web Unlocker trả về trang Instagram mà không cần đăng nhập: số người theo dõi chính xác và 12 bài viết mới nhất của một profile, lượt thích, bình luận và chú thích chính xác của một bài viết. $0.98 cho 1.000 trang.
1.000 yêu cầu miễn phí · Chỉ tính phí khi thành công · 195+ quốc gia · Sẵn sàng cho Claude
Trang Instagram mất 3 đến 12 giây để tải. Hệ thống vẫn đang xử lý, bạn không cần nhấp lại.
Sẵn sàng cho các profile của riêng bạn? Nhận API key hoặc đặt lịch demo.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận:
Các trang công khai, không cần đăng nhập và không cần tài khoản Instagram. Các nền tảng influencer, thương hiệu, công cụ social listening và nhà nghiên cứu đọc bốn loại trang này, mỗi loại đều được tính như một trang.










Muốn tự mình thử? Nhận API key với 1.000 yêu cầu miễn phí.
Web Unlocker tính phí một trang profile một lần, kèm số người theo dõi chính xác và 12 bài viết mới nhất, với $0.98 cho 1.000 trang. Các scraper profile Instagram trên Apify, Bright Data và ScrapeCreators tính phí cao hơn cho cùng một profile.
Apify tính $2.60 cho 1.000 profile.
Ở đây 1.000 profile có giá $1.14.
Cứ khoảng bảy trang profile thì Instagram trả về một trang trống. Yêu cầu lại với một URL mới là dữ liệu sẽ trả về: mức giá ở trên đã tính cả những lần thử lại đó.
Chi phí cho 1.000 profile Instagram
1.000 profile công khai kèm số người theo dõi và tiểu sử, theo giá công bố
Gologin: $0.98 cho 1.000 trang, cộng một lần thử lại cho khoảng mỗi bảy profile. Bright Data tính phí mỗi bản ghi, $1.50 cho 1.000. ScrapeCreators tính phí mỗi yêu cầu, $1.88 cho 1.000 ở gói $47. Scraper profile Instagram của chính Apify tính $2.60 cho 1.000 profile ở gói miễn phí.
Sẵn sàng chạy nó trên các profile của riêng bạn? Nhận API key và các yêu cầu miễn phí.
Bài kiểm tra thu thập dữ liệu Instagram của chúng tôi: 20 profile, 20 bài viết và 20 thước phim từ lưới của chúng, cùng 10 trang hashtag, mỗi trang được yêu cầu tối đa ba lần, giống cách bản demo ở trên làm. Đây là những gì trả về, và nhanh đến đâu.
51 trên 60 trả về ngay lần đầu.
9 trang còn lại ở lần thứ hai hoặc thứ ba.
API riêng của Instagram, các scraper Instagram trên Apify và Instagram Scraper API của Bright Data: mỗi bên tính phí bao nhiêu cho cùng 1.000 profile, và đòi hỏi gì ở bạn trước khi bắt đầu.
| Bạn cần gì | ||||
|---|---|---|---|---|
| Bạn trả tiền cho | Một trang | Miễn phí có hạn mức | Mỗi kết quả | Mỗi bản ghi |
| 1.000 profile | $1.14 | Miễn phí | $2.60 | $1.50 |
| Tài khoản cá nhân | Có | Không | Có | Có |
| Tài khoản Instagram của chính bạn | Không cần | Tài khoản Pro | Không cần | Không cần |
| Miễn phí để bắt đầu | 1.000 yêu cầu | Qua app Meta | $5 mỗi tháng | 5.000 mỗi tháng |
| Toàn bộ trang ở dạng HTML | Có | Không | Không | Không |
Cần thu thập nhiều hơn Instagram? Web Unlocker trả về bất kỳ trang nào theo cùng cách, với cùng mức giá.
Một trang profile mang về 12 bài viết mới nhất, và mỗi trang bài viết mang về lượt thích và bình luận chính xác của nó. 13 trang, $0.0127, và bạn có mức tương tác thật của nhà sáng tạo, từng bài viết một.
Instagram làm tròn thành 268 triệu.
Scraper trả về 268,157,304.
Instagram giữ dữ liệu của một trang công khai dưới dạng JSON bên trong HTML của nó. Web Unlocker trả về HTML đó, và vài dòng code sẽ đọc profile hoặc bài viết ra từ đó. Tab Danh sách profile là một Instagram crawler nhỏ: đưa vào một danh sách tài khoản, nhận ra một file CSV.
Điền biểu mẫu ở trên. Key sẽ được gửi qua email trong vòng một ngày làm việc.
Một profile để lấy số người theo dõi và các bài viết mới nhất, một bài viết hoặc thước phim để lấy lượt thích và bình luận.
Kiểm tra xem trang có kèm dữ liệu không, và yêu cầu lại với một URL mới khi Instagram gửi về một trang trống.
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`);Sẵn sàng chạy nó trên các profile của riêng bạn? Nhận API key và các yêu cầu miễn phí.
Một tài khoản, một mạng proxy, một hệ sinh thái. Chọn sản phẩm phù hợp với công việc.
Thu thập thêm nhiều trang web khác? Xem các scraper Facebook, Google Play, Twitter (X), YouTube, Reddit và Google Maps, hoặc mọi công cụ thu thập dữ liệu web.
Instagram scraper là công cụ đọc các trang Instagram công khai và chuyển chúng thành dữ liệu: số người theo dõi, tiểu sử và các bài viết mới nhất của một profile, lượt thích, bình luận và chú thích của một bài viết. Gologin Web Unlocker là một Instagram scraper API: gửi cho nó địa chỉ một trang và nó trả về trang kèm dữ liệu đó, với $0.98 cho 1.000 trang.
Gửi địa chỉ của một profile, bài viết hoặc thước phim công khai tới Web Unlocker. Nó trả về trang giống như một khách truy cập chưa đăng nhập nhìn thấy, kèm dữ liệu mà Instagram giữ bên trong dưới dạng JSON: người theo dõi, bài viết, lượt thích, bình luận và chú thích. Đoạn code ở trên đọc nó trong vài dòng.
Gửi địa chỉ profile tới Web Unlocker bằng thư viện requests và đọc JSON từ trang. Tab Python ở trên là một script hoàn chỉnh, đã được kiểm thử trên API thật: nó in ra số người theo dõi, số đang theo dõi, tiểu sử và 12 bài viết mới nhất của profile.
Chỉ một phần. Business Discovery trong Instagram API đọc được tài khoản doanh nghiệp và tài khoản nhà sáng tạo, và chỉ từ tài khoản chuyên nghiệp của chính bạn thông qua một ứng dụng Meta. Tài khoản cá nhân không được hỗ trợ, và tìm kiếm hashtag dừng ở 30 hashtag mỗi tuần. Basic Display API cũ đã ngừng hoạt động vào ngày 4 tháng 12 năm 2024.
Có. Profile, bài viết, thước phim công khai và trang phổ biến của một hashtag đều tải được mà không cần đăng nhập. Web Unlocker mở chúng như một khách truy cập chưa đăng nhập, nên bạn không cần tài khoản Instagram và không đặt tài khoản nào của bạn vào rủi ro. Profile riêng tư vẫn đóng: bài viết của họ chỉ dành cho người theo dõi đã được chấp thuận. TikTok cũng hoạt động theo cách tương tự: TikTok scraper đọc profile và video công khai mà không cần đăng nhập.
Thỉnh thoảng Instagram gửi một trang không có dữ liệu bên trong: khoảng một trong bảy trang profile trong bài kiểm tra của chúng tôi. Bản demo ở trên và các mẫu code kiểm tra dữ liệu và yêu cầu lại với một URL mới. Bài viết và thước phim trả về ngay lần đầu 36 trên 40 lần.
Không phải dưới dạng danh sách: danh sách người theo dõi của một tài khoản chỉ mở cho người dùng đã đăng nhập. Số người theo dõi chính xác là công khai, và Web Unlocker trả về nó với mọi profile.
Số bình luận thì có: mọi trang bài viết và thước phim đều có con số chính xác. Bản thân các bình luận chỉ tải cho người dùng đã đăng nhập, nên Web Unlocker không trả về chúng.
Với nhiều hashtag, Instagram hiển thị cho khách truy cập chưa đăng nhập một trang phổ biến với 12 thước phim hàng đầu và số lượt phát của chúng, và Web Unlocker trả về trang đó. Toàn bộ nguồn cấp của một hashtag chỉ dành cho người dùng đã đăng nhập.
Có. Mọi bài viết trên trang profile và mọi trang bài viết đều kèm liên kết tới các file ảnh của nó, nên code của bạn có thể lưu chúng.
$0.98 cho 1.000 trang, cùng một mức giá cho mọi trang: một profile kèm 12 bài viết mới nhất là một trang, một bài viết là một trang. Yêu cầu không thành công thì không tốn phí. Các gói bắt đầu từ $49 mỗi tháng cho 50.000 yêu cầu.
Web Unlocker đi kèm 1.000 yêu cầu miễn phí, đủ cho 1.000 profile hoặc bài viết. Các công cụ mã nguồn mở như Instaloader và instagrapi là miễn phí: chúng chạy trên máy chủ của chính bạn, thường yêu cầu đăng nhập Instagram, và việc giữ cho chúng hoạt động khi Instagram thay đổi là việc của bạn.
Tùy vào nhu cầu của bạn. Instagram API miễn phí cho các tài khoản doanh nghiệp và nhà sáng tạo mà bạn truy cập được từ tài khoản của chính mình. Apify và Bright Data bán các dòng dữ liệu làm sẵn và tính phí mỗi kết quả. Web Unlocker trả về toàn bộ trang công khai với một mức giá cho mỗi trang, trên Instagram và trên mọi trang web khác.
Có. Scraper profile Instagram của Apify tính $2.60 cho 1.000 profile ở gói miễn phí. Web Unlocker trả về cùng trang profile công khai kèm số người theo dõi chính xác và 12 bài viết mới nhất với $1.14 cho 1.000 profile, đã tính cả các lần thử lại.
Profile, bài viết và thước phim tải được mà không cần đăng nhập là các trang công khai. Trong vụ Meta v. Bright Data, vào tháng 1 năm 2024, một tòa án liên bang Mỹ đã kết luận rằng điều khoản của Meta không cấm thu thập dữ liệu công khai khi chưa đăng nhập. Bạn thu thập gì và dùng ra sao là quyết định của bạn, vì vậy hãy đối chiếu với các quy định áp dụng cho dự án của bạn.
Hãy cho chúng tôi biết đôi nét về đội ngũ của bạn để nhận: