公開プロフィール、投稿、リールを貼り付けてください。Web UnlockerがログインなしでInstagramのページを返します。プロフィールなら正確なフォロワー数と最新の投稿12件、投稿なら正確ないいね数、コメント数、キャプションが載っています。1,000ページで$0.98です。
無料リクエスト1,000件 · 課金は成功時のみ · 195以上の国 · Claude対応
チームについて簡単にご記入いただくと、次の内容をお届けします。
対象は公開ページで、ログインもInstagramアカウントも不要です。インフルエンサープラットフォーム、ブランド、ソーシャルリスニングツール、研究者が読み取るのは次の4種類のページで、どれも1ページとして課金されます。










ご自身で試してみますか?無料リクエスト1,000件付きのAPIキーを入手しましょう。
Web Unlockerはプロフィールページを、正確なフォロワー数と最新の投稿12件を含めて1回だけ課金し、料金は1,000ページあたり$0.98です。Apify、Bright Data、ScrapeCreatorsのInstagramプロフィールスクレイパーは、同じプロフィールにもっと高い料金を課金します。
Apifyはプロフィール1,000件で$2.60を課金します。
ここでは1,000件が$1.14です。
Instagramはプロフィールページのおよそ7件に1件を空で返します。別のURLでもう一度リクエストするとデータが返ります。上の料金には、その再試行分も含まれています。
Instagramプロフィール1,000件の料金
フォロワー数と自己紹介付きの公開プロフィール1,000件、公開価格で
Gologin:1,000ページあたり$0.98に、プロフィール約7件ごとに1回の再試行を加えた料金です。Bright Dataはレコードごとに課金し、1,000件あたり$1.50です。ScrapeCreatorsはリクエストごとに課金し、$47プランで1,000件あたり$1.88です。Apify自身のInstagramプロフィールスクレイパーは、無料プランでプロフィール1,000件あたり$2.60です。
ご自身のプロフィール一覧で実行しますか?APIキーと無料リクエストを入手しましょう。
Instagramスクレイピングのテスト:プロフィール20件、そのグリッドから投稿20件とリール20件、ハッシュタグページ10件を、上のデモと同じく各最大3回までリクエストしました。返ってきた結果と、その速さは次のとおりです。
60件中51件が1回目で返りました。
残りの9件は2回目か3回目で返りました。
Instagram自身のAPI、ApifyのInstagramスクレイパー、Bright DataのInstagram Scraper API。同じプロフィール1,000件にそれぞれいくら課金し、始める前に何が必要かは次のとおりです。
| 必要なもの | ||||
|---|---|---|---|---|
| 課金の対象 | 1ページ | 上限内は無料 | 結果ごと | レコードごと |
| プロフィール1,000件 | $1.14 | 無料 | $2.60 | $1.50 |
| 個人アカウント | あり | なし | あり | あり |
| ご自身のInstagramアカウント | 不要 | プロアカウント | 不要 | 不要 |
| 無料で開始 | 1,000リクエスト | Metaアプリで | 月$5 | 月5,000件 |
| ページ全体をHTMLで | あり | なし | なし | なし |
Instagram以外もスクレイピングしますか?Web Unlockerなら、どのページも同じ方法、同じ料金で返します。
プロフィールページには最新の投稿12件が載り、各投稿のページには正確ないいね数とコメント数が載っています。13ページで$0.0127、投稿ごとにクリエイターの本当のエンゲージメントがわかります。
Instagramは268Mに丸めて表示します。
スクレイパーは268,157,304を返します。
Instagramは公開ページのデータを、HTMLの中にJSONとして持っています。Web UnlockerがそのHTMLを返し、数行のコードでプロフィールや投稿を読み取れます。「プロフィール一覧」タブは小さなInstagramクローラーで、アカウントの一覧を渡すとCSVを出力します。
上のフォームにご記入ください。キーは1営業日以内にメールで届きます。
フォロワー数と最新の投稿ならプロフィール、いいね数とコメント数なら投稿かリールを選びます。
ページにデータが含まれているか確認し、Instagramが空のページを返したときは別のURLでもう一度リクエストします。
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`);ご自身のプロフィール一覧で実行しますか?APIキーと無料リクエストを入手しましょう。
1つのアカウント、1つのプロキシネットワーク、1つのエコシステム。用途に合った製品をお選びください。
ほかのサイトもスクレイピングしますか?Facebook、Google Play、Twitter (X)、YouTube、Reddit、Google Mapsのスクレイパー、またはすべてのWebスクレイピングツールをご覧ください。
Instagramスクレイパーは、公開されているInstagramのページを読み取り、データに変えるツールです。プロフィールならフォロワー数、自己紹介、最新の投稿、投稿ならいいね数、コメント数、キャプションが対象です。Gologin Web UnlockerはInstagramスクレイパーAPIで、ページのアドレスを送ると、そのデータが載ったページを1,000ページあたり$0.98で返します。
公開プロフィール、投稿、リールのアドレスをWeb Unlockerに送ります。ログアウト状態の訪問者が見るとおりのページが、InstagramがページにJSONとして持つデータ(フォロワー数、投稿、いいね数、コメント数、キャプション)とともに返ります。上のコードなら数行で読み取れます。
requestsライブラリでプロフィールのアドレスをWeb Unlockerに送り、ページからJSONを読み取ります。上のPythonタブは完全なスクリプトで、実際のAPIでテスト済みです。プロフィールのフォロワー数、フォロー数、自己紹介、最新の投稿12件を出力します。
一部のみです。Instagram APIのBusiness Discoveryはビジネスアカウントとクリエイターアカウントを読み取れますが、Metaアプリを通じてご自身のプロアカウントからしか使えません。個人アカウントは対象外で、ハッシュタグ検索は週30件までです。以前のBasic Display APIは2024年12月4日に終了しました。
はい。公開プロフィール、投稿、リール、ハッシュタグの人気ページはログインなしで読み込めます。Web Unlockerはログアウト状態の訪問者としてページを開くため、Instagramアカウントは不要で、ご自身のアカウントをリスクにさらすこともありません。非公開プロフィールは閉じたままで、その投稿は承認されたフォロワーしか見られません。TikTokも同じで、TikTok スクレイピングなら公開プロフィールと動画をログインなしで読み取れます。
Instagramはときどき、データの入っていないページを返します。テストではプロフィールページのおよそ7件に1件でした。上のデモとコードサンプルはデータの有無を確認し、別のURLでもう一度リクエストします。投稿とリールは40件中36件が1回目で返りました。
一覧としてはできません。アカウントのフォロワー一覧は、ログインしたユーザーにしか表示されません。正確なフォロワー数は公開されており、Web Unlockerはどのプロフィールでもそれを返します。
コメント数なら可能です。投稿とリールのページにはどれも正確な数が載っています。コメントそのものはログインしたユーザーにしか読み込まれないため、Web Unlockerは返しません。
多くのハッシュタグで、Instagramはログアウト状態の訪問者に、人気リール12件とその再生回数が載った人気ページを表示します。Web Unlockerはそのページを返します。ハッシュタグのフィード全体はログインしたユーザー向けです。
はい。プロフィールページの各投稿にも、投稿ページにも画像ファイルへのリンクが付いているので、コードで保存できます。
1,000ページあたり$0.98で、どのページも同じ料金です。最新の投稿12件付きのプロフィールも1ページ、投稿も1ページです。失敗したリクエストは無料です。プランは50,000リクエストで月$49からです。
Web Unlockerには1,000件の無料リクエストが付き、プロフィールまたは投稿1,000件に相当します。Instaloaderやinstagrapiのようなオープンソースツールは無料ですが、ご自身のサーバーで動かす必要があり、Instagramへのログインを求めることも多く、Instagramの変更に合わせて動作を保つのはご自身の役目です。
目的によります。Instagram APIは、ご自身のアカウントからアクセスできるビジネスアカウントとクリエイターアカウントなら無料です。ApifyとBright Dataは完成した行を提供し、すべての結果に課金します。Web Unlockerは公開ページ全体を1ページ1つの料金で返し、Instagramでもほかのどのサイトでも同じです。
はい。ApifyのInstagramプロフィールスクレイパーは、無料プランでプロフィール1,000件あたり$2.60を課金します。Web Unlockerは、正確なフォロワー数と最新の投稿12件が載った同じ公開プロフィールページを、再試行分を含めてプロフィール1,000件あたり$1.14で返します。
ログインなしで読み込めるプロフィール、投稿、リールは公開ページです。2024年1月のMeta対Bright Data訴訟で、米国連邦裁判所は、Metaの規約はログアウト状態での公開データのスクレイピングを禁じていないと判断しました。何を収集し、どう使うかはお客様の判断ですので、プロジェクトに適用されるルールに照らして確認してください。
チームについて簡単にご記入いただくと、次の内容をお届けします。