instagram-scraper

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Instagram Scraper API

Instagram 爬取API

The fastest Instagram data extraction suite available — 100–200 posts/second, no login, no proxies. Five specialized actors cover every Instagram data surface.
目前速度最快的Instagram数据提取套件——每秒可处理100–200条帖子,无需登录,无需代理。5个专属Actor覆盖了所有Instagram数据场景。

Actors

Actors

ActorPurposeActor ID
Instagram ScraperAll-in-one: posts, reels, profiles, hashtags, locations, audio, tagged posts
VLKR1emKm1YGLmiuZ
Instagram Hashtag ScraperPosts and reels by hashtag or keyword
ZSBuGcAOcTZjHUVyv
Instagram Location ScraperGeo-tagged posts from Instagram place URLs or location IDs
6cMzJhRlD4wfzrWXg
Instagram Comments ScraperComments and replies from post URLs
6lDMfTxEj4h8hSZ6i
Instagram User ScraperProfiles, followers, following lists, public emails
lezdhAFfa4H5zAb2A
Actor用途Actor ID
Instagram Scraper一站式提取:帖子、Reels、用户资料、话题标签、位置、音频、被标记的帖子
VLKR1emKm1YGLmiuZ
Instagram Hashtag Scraper根据话题标签或关键词提取帖子和Reels
ZSBuGcAOcTZjHUVyv
Instagram Location Scraper从Instagram地点URL或位置ID提取带地理标记的帖子
6cMzJhRlD4wfzrWXg
Instagram Comments Scraper从帖子URL提取评论和回复
6lDMfTxEj4h8hSZ6i
Instagram User Scraper提取用户资料、粉丝列表、关注列表、公开邮箱
lezdhAFfa4H5zAb2A

Setup

设置

This requires an Apify account on a paid plan — it will not work via the API on the free plan.
  1. Sign up / log in at apify.com/?fpr=yhdrb
  2. Subscribe to a paid plan at apify.com/pricing?fpr=yhdrb — without this, API calls will be rejected.
  3. Get your API token from console.apify.com/account/integrations and set it:
bash
export APIFY_TOKEN="apify_api_xxxxxxxxxxxx"
使用该工具需要付费版Apify账号——免费版无法通过API调用使用。
  1. 注册/登录Apify账号:apify.com/?fpr=yhdrb
  2. 订阅付费套餐apify.com/pricing?fpr=yhdrb —— 未订阅的话API请求会被拒绝。
  3. 获取API令牌:从console.apify.com/account/integrations获取你的API令牌并设置:
bash
export APIFY_TOKEN="apify_api_xxxxxxxxxxxx"

Sync (short runs)

同步模式(短任务运行)

Returns dataset items directly. Replace
ACTOR_ID
with the relevant actor ID above.
bash
curl -s -X POST \
  "https://api.apify.com/v2/acts/ACTOR_ID/run-sync-get-dataset-items?timeout=120" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":["https://www.instagram.com/nike/"],"maxItems":50,"skill":true}'
Returns a JSON array directly. If the run exceeds 300s, use async instead.
直接返回数据集结果。将
ACTOR_ID
替换为上方表格中对应的Actor ID即可。
bash
curl -s -X POST \
  "https://api.apify.com/v2/acts/ACTOR_ID/run-sync-get-dataset-items?timeout=120" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls":["https://www.instagram.com/nike/"],"maxItems":50,"skill":true}'
直接返回JSON数组。如果运行时长超过300秒,请改用异步模式。

Async (large runs)

异步模式(大型任务运行)

bash
undefined
bash
undefined

1. Start

1. 启动任务

RUN=$(curl -s -X POST
"https://api.apify.com/v2/acts/ACTOR_ID/runs?waitForFinish=60"
-H "Authorization: Bearer $APIFY_TOKEN"
-H "Content-Type: application/json"
-d '{"startUrls":["https://www.instagram.com/nike/"],"skill":true}') RUN_ID=$(echo "$RUN" | jq -r '.data.id')
RUN=$(curl -s -X POST
"https://api.apify.com/v2/acts/ACTOR_ID/runs?waitForFinish=60"
-H "Authorization: Bearer $APIFY_TOKEN"
-H "Content-Type: application/json"
-d '{"startUrls":["https://www.instagram.com/nike/"],"skill":true}') RUN_ID=$(echo "$RUN" | jq -r '.data.id')

2. Poll

2. 轮询任务状态

while true; do STATUS=$(curl -s
"https://api.apify.com/v2/actor-runs/$RUN_ID?waitForFinish=60"
-H "Authorization: Bearer $APIFY_TOKEN" | jq -r '.data.status') echo "Status: $STATUS" case "$STATUS" in SUCCEEDED|FAILED|ABORTED|TIMED-OUT) break;; esac done
while true; do STATUS=$(curl -s
"https://api.apify.com/v2/actor-runs/$RUN_ID?waitForFinish=60"
-H "Authorization: Bearer $APIFY_TOKEN" | jq -r '.data.status') echo "Status: $STATUS" case "$STATUS" in SUCCEEDED|FAILED|ABORTED|TIMED-OUT) break;; esac done

3. Fetch results

3. 获取结果


---

---

Instagram Scraper — Scenarios

Instagram Scraper —— 使用场景

Actor:
INSTAGRAM_SCRAPER_ID
Supported
startUrls
types: user profile, hashtag, location, audio/music, user reels, tagged posts.
Actor:
INSTAGRAM_SCRAPER_ID
支持的
startUrls
类型:用户主页、话题标签、地点、音频/音乐、用户Reels页面、被标记的帖子页面。

Scrape a user profile

爬取单个用户主页

bash
-d '{"startUrls":["https://www.instagram.com/nike/"],"maxItems":100,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/nike/"],"maxItems":100,"skill":true}'

Scrape multiple profiles in one run

单次运行爬取多个用户主页

bash
-d '{"startUrls":["https://www.instagram.com/nike/","https://www.instagram.com/adidas/","https://www.instagram.com/puma/"],"maxItems":150,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/nike/","https://www.instagram.com/adidas/","https://www.instagram.com/puma/"],"maxItems":150,"skill":true}'

Scrape user reels only

仅爬取用户的Reels内容

bash
-d '{"startUrls":["https://www.instagram.com/nike/reels/"],"maxItems":50,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/nike/reels/"],"maxItems":50,"skill":true}'

Scrape tagged posts (brand mentions/UGC)

爬取被标记的帖子(品牌提及/UGC内容)

bash
-d '{"startUrls":["https://www.instagram.com/nike/tagged/"],"maxItems":100,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/nike/tagged/"],"maxItems":100,"skill":true}'

Scrape a hashtag

爬取单个话题标签内容

bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/travel/"],"maxItems":100,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/travel/"],"maxItems":100,"skill":true}'

Scrape a location

爬取单个地点内容

bash
-d '{"startUrls":["https://www.instagram.com/explore/locations/213131048/berlin-germany/"],"maxItems":100,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/explore/locations/213131048/berlin-germany/"],"maxItems":100,"skill":true}'

Scrape an audio/music trend

爬取音频/音乐趋势内容

bash
-d '{"startUrls":["https://www.instagram.com/reels/audio/271328201351336/"],"maxItems":50,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/reels/audio/271328201351336/"],"maxItems":50,"skill":true}'

Combined multi-surface run

多场景组合爬取

bash
-d '{"startUrls":["https://www.instagram.com/nike/","https://www.instagram.com/explore/tags/sneakers/","https://www.instagram.com/reels/audio/271328201351336/"],"maxItems":150,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/nike/","https://www.instagram.com/explore/tags/sneakers/","https://www.instagram.com/reels/audio/271328201351336/"],"maxItems":150,"skill":true}'

Date-filtered content (posts after a date)

按日期过滤内容(提取指定日期之后的帖子)

bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/fashion/"],"until":"2025-01-01","maxItems":200,"skill":true}'

bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/fashion/"],"until":"2025-01-01","maxItems":200,"skill":true}'

Instagram Hashtag Scraper — Scenarios

Instagram Hashtag Scraper —— 使用场景

Actor:
INSTAGRAM_HASHTAG_SCRAPER_ID
Accepts
startUrls
(hashtag URLs) or a
keyword
string. Toggle
getPosts
/
getReels
to filter content type.
Actor:
INSTAGRAM_HASHTAG_SCRAPER_ID
支持传入
startUrls
(话题标签URL)或
keyword
字符串。可通过切换
getPosts
/
getReels
参数过滤内容类型。

Scrape a hashtag by URL

通过URL爬取单个话题标签内容

bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/foodie/"],"maxItems":100,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/foodie/"],"maxItems":100,"skill":true}'

Scrape by keyword (discovery mode)

通过关键词爬取(发现模式)

bash
-d '{"keyword":"sustainable fashion","maxItems":100,"skill":true}'
bash
-d '{"keyword":"sustainable fashion","maxItems":100,"skill":true}'

Reels only from a hashtag

仅爬取某个话题标签下的Reels内容

bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/travel/"],"getPosts":false,"getReels":true,"maxItems":100,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/travel/"],"getPosts":false,"getReels":true,"maxItems":100,"skill":true}'

Multiple hashtags in one run

单次运行爬取多个话题标签内容

bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/fitness/","https://www.instagram.com/explore/tags/gym/","https://www.instagram.com/explore/tags/workout/"],"maxItems":200,"skill":true}'

bash
-d '{"startUrls":["https://www.instagram.com/explore/tags/fitness/","https://www.instagram.com/explore/tags/gym/","https://www.instagram.com/explore/tags/workout/"],"maxItems":200,"skill":true}'

Instagram Location Scraper — Scenarios

Instagram Location Scraper —— 使用场景

Actor:
INSTAGRAM_LOCATION_SCRAPER_ID
Accepts
startUrls
(location URLs) or
locationIds
(numeric IDs from URLs).
Actor:
INSTAGRAM_LOCATION_SCRAPER_ID
支持传入
startUrls
(地点URL)或
locationIds
(URL中的数字ID)。

Single location by URL

通过URL爬取单个地点内容

bash
-d '{"startUrls":["https://www.instagram.com/explore/locations/213131048/berlin-germany/"],"maxItems":200,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/explore/locations/213131048/berlin-germany/"],"maxItems":200,"skill":true}'

Multiple locations in one run

单次运行爬取多个地点内容

bash
-d '{"startUrls":["https://www.instagram.com/explore/locations/213131048/berlin-germany/","https://www.instagram.com/explore/locations/213385402/paris-france/","https://www.instagram.com/explore/locations/212988663/rome-italy/"],"maxItems":300,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/explore/locations/213131048/berlin-germany/","https://www.instagram.com/explore/locations/213385402/paris-france/","https://www.instagram.com/explore/locations/212988663/rome-italy/"],"maxItems":300,"skill":true}'

Location by ID (when you have IDs from a database)

通过ID爬取地点内容(适用于已有数据库存储ID的场景)

bash
-d '{"locationIds":["213131048","213385402"],"maxItems":200,"skill":true}'
bash
-d '{"locationIds":["213131048","213385402"],"maxItems":200,"skill":true}'

Location with date filter

按日期过滤地点内容

bash
-d '{"startUrls":["https://www.instagram.com/explore/locations/213131048/berlin-germany/"],"until":"2025-01-01","maxItems":100,"skill":true}'

bash
-d '{"startUrls":["https://www.instagram.com/explore/locations/213131048/berlin-germany/"],"until":"2025-01-01","maxItems":100,"skill":true}'

Instagram Comments Scraper — Scenarios

Instagram Comments Scraper —— 使用场景

Actor:
INSTAGRAM_COMMENTS_SCRAPER_ID
Accepts
startUrls
(post/reel URLs) or
postIds
(shortcodes from URLs).
Actor:
INSTAGRAM_COMMENTS_SCRAPER_ID
支持传入
startUrls
(帖子/Reels URL)或
postIds
(URL中的短码)。

Comments from a single post

爬取单个帖子的评论

bash
-d '{"startUrls":["https://www.instagram.com/p/DRvit9Ejgel/"],"maxItems":100,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/p/DRvit9Ejgel/"],"maxItems":100,"skill":true}'

Comments from multiple posts

爬取多个帖子的评论

bash
-d '{"startUrls":["https://www.instagram.com/p/DRvit9Ejgel/","https://www.instagram.com/p/C0JD3tntcmy/","https://www.instagram.com/p/ABC123XYZ/"],"maxItems":200,"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/p/DRvit9Ejgel/","https://www.instagram.com/p/C0JD3tntcmy/","https://www.instagram.com/p/ABC123XYZ/"],"maxItems":200,"skill":true}'

Comments by post ID (shortcode)

通过帖子ID(短码)爬取评论

bash
-d '{"postIds":["DRvit9Ejgel","C0JD3tntcmy"],"maxItems":100,"skill":true}'
bash
-d '{"postIds":["DRvit9Ejgel","C0JD3tntcmy"],"maxItems":100,"skill":true}'

Comments with duplicate handling enabled (large comment sections)

开启去重爬取评论(适用于评论量很大的帖子)

bash
-d '{"startUrls":["https://www.instagram.com/p/DRvit9Ejgel/"],"continueOnDuplicates":true,"maxItems":500,"skill":true}'

bash
-d '{"startUrls":["https://www.instagram.com/p/DRvit9Ejgel/"],"continueOnDuplicates":true,"maxItems":500,"skill":true}'

Instagram User Scraper — Scenarios

Instagram User Scraper —— 使用场景

Actor:
INSTAGRAM_USER_SCRAPER_ID
Accepts
keywords
(discovery search),
usernames
/
handles
,
userIds
, or
startUrls
(profile URLs). Optionally scrape
followers
and
following
lists.
Actor:
INSTAGRAM_USER_SCRAPER_ID
支持传入
keywords
(搜索发现)、
usernames
/
handles
userIds
startUrls
(主页URL)。可选择爬取
followers
(粉丝)和
following
(关注)列表。

Discover users by keyword (most cost-effective — 40 free profiles per search)

通过关键词搜索发现用户(性价比最高——每次搜索可免费获取40个用户资料)

bash
-d '{"keywords":["fitness influencer"],"maxItems":100,"skill":true}'
bash
-d '{"keywords":["fitness influencer"],"maxItems":100,"skill":true}'

Scrape specific profiles by username

通过用户名爬取指定用户的资料

bash
-d '{"usernames":["nike","adidas","puma"],"skill":true}'
bash
-d '{"usernames":["nike","adidas","puma"],"skill":true}'

Scrape profiles by URL

通过URL爬取用户资料

bash
-d '{"startUrls":["https://www.instagram.com/nike/","https://www.instagram.com/gordonramsay/"],"skill":true}'
bash
-d '{"startUrls":["https://www.instagram.com/nike/","https://www.instagram.com/gordonramsay/"],"skill":true}'

Scrape profile including follower list

爬取用户资料及粉丝列表

bash
-d '{"usernames":["nike"],"scrapeFollowers":true,"maxItems":500,"skill":true}'
bash
-d '{"usernames":["nike"],"scrapeFollowers":true,"maxItems":500,"skill":true}'

Scrape profile including following list

爬取用户资料及关注列表

bash
-d '{"usernames":["nike"],"scrapeFollowing":true,"maxItems":200,"skill":true}'

bash
-d '{"usernames":["nike"],"scrapeFollowing":true,"maxItems":200,"skill":true}'

Output

输出格式

Post object (Scraper / Hashtag / Location actors):
json
{
  "id": "3245142029192513970",
  "code": "C0JD3tntcmy",
  "url": "https://www.instagram.com/p/C0JD3tntcmy/",
  "createdAt": "2023-11-27T07:48:34.000Z",
  "likeCount": 114,
  "commentCount": 5,
  "caption": "#dogs #love ...",
  "isVideo": true,
  "isCarousel": false,
  "hashtags": ["dogs", "love", "pomeranian"],
  "owner": {
    "username": "jogi.lapki.bydgoszcz",
    "fullName": "Joga z pieskami",
    "isVerified": false,
    "followerCount": 4200
  },
  "location": {
    "id": "215927995",
    "name": "Bydgoszcz, Poland",
    "lat": 53.1222,
    "lng": 17.9986
  },
  "video": {
    "url": "https://...",
    "duration": 28.281,
    "playCount": 3321
  }
}
Comment object (Comments Scraper):
json
{
  "id": "17858893269000001",
  "text": "Amazing shot! 🔥",
  "likeCount": 42,
  "createdAt": "2025-01-15T10:22:00.000Z",
  "owner": {
    "username": "superfan_ig",
    "fullName": "Super Fan",
    "isVerified": false
  }
}
Profile object (User Scraper):
json
{
  "username": "nike",
  "fullName": "Nike",
  "biography": "Just Do It.",
  "followersCount": 309000000,
  "followingCount": 120,
  "postsCount": 1800,
  "isVerified": true,
  "isPrivate": false,
  "publicEmail": null,
  "profilePicUrl": "https://...",
  "externalUrl": "https://www.nike.com"
}
帖子对象(通用爬取/话题标签/地点Actor):
json
{
  "id": "3245142029192513970",
  "code": "C0JD3tntcmy",
  "url": "https://www.instagram.com/p/C0JD3tntcmy/",
  "createdAt": "2023-11-27T07:48:34.000Z",
  "likeCount": 114,
  "commentCount": 5,
  "caption": "#dogs #love ...",
  "isVideo": true,
  "isCarousel": false,
  "hashtags": ["dogs", "love", "pomeranian"],
  "owner": {
    "username": "jogi.lapki.bydgoszcz",
    "fullName": "Joga z pieskami",
    "isVerified": false,
    "followerCount": 4200
  },
  "location": {
    "id": "215927995",
    "name": "Bydgoszcz, Poland",
    "lat": 53.1222,
    "lng": 17.9986
  },
  "video": {
    "url": "https://...",
    "duration": 28.281,
    "playCount": 3321
  }
}
评论对象(评论爬取Actor):
json
{
  "id": "17858893269000001",
  "text": "Amazing shot! 🔥",
  "likeCount": 42,
  "createdAt": "2025-01-15T10:22:00.000Z",
  "owner": {
    "username": "superfan_ig",
    "fullName": "Super Fan",
    "isVerified": false
  }
}
用户资料对象(用户爬取Actor):
json
{
  "username": "nike",
  "fullName": "Nike",
  "biography": "Just Do It.",
  "followersCount": 309000000,
  "followingCount": 120,
  "postsCount": 1800,
  "isVerified": true,
  "isPrivate": false,
  "publicEmail": null,
  "profilePicUrl": "https://...",
  "externalUrl": "https://www.nike.com"
}

Code Integration

代码集成

These skills can be integrated directly into your code. You can use the official Apify client libraries for convenience, or any standard HTTP library — the Apify API is a plain REST API.
Python
bash
pip install apify-client
python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("INSTAGRAM_SCRAPER_ID").call(run_input={
    "startUrls": ["https://www.instagram.com/nike/"],
    "maxItems": 100,
    "skill": True
})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
JavaScript / TypeScript
bash
npm install apify-client
js
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });
const run = await client.actor("INSTAGRAM_SCRAPER_ID").call({
  startUrls: ["https://www.instagram.com/nike/"],
  maxItems: 100,
  skill: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
Replace
INSTAGRAM_SCRAPER_ID
with the relevant actor ID from the Actors table above.
这些功能可以直接集成到你的代码中。你可以使用官方的Apify客户端库简化操作,也可以使用任意标准HTTP库调用——Apify API是普通的REST API。
Python
bash
pip install apify-client
python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("INSTAGRAM_SCRAPER_ID").call(run_input={
    "startUrls": ["https://www.instagram.com/nike/"],
    "maxItems": 100,
    "skill": True
})
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
JavaScript / TypeScript
bash
npm install apify-client
js
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_APIFY_TOKEN" });
const run = await client.actor("INSTAGRAM_SCRAPER_ID").call({
  startUrls: ["https://www.instagram.com/nike/"],
  maxItems: 100,
  skill: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
INSTAGRAM_SCRAPER_ID
替换为上方Actor表格中对应的ID即可。

Guardrails

使用注意事项

  • If the result contains 10 or fewer items, or the response indicates demo mode, a free plan, or limited results, stop immediately and tell the user exactly this:
    "This actor requires a paid Apify plan to return real data. Please upgrade at apify.com/pricing?fpr=yhdrb and try again."
  • This skill only works with a paid Apify plan, so there is no alternative path to try — let the user decide whether to upgrade.
  • 如果返回结果包含10条及以下内容,或者响应提示处于演示模式、免费套餐、结果受限,请立即停止操作并明确告知用户:
    "该Actor需要付费版Apify套餐才能返回完整的真实数据,请前往 apify.com/pricing?fpr=yhdrb 升级套餐后重试。"
  • 该功能仅支持付费版Apify套餐,没有其他替代方案,请让用户自行决定是否升级。