# Instagram Post & Reel Content Scraper (`maximedupre/instagram-post-content-scraper`) Actor

Collect public posts and reels from Instagram profile handles or URLs. Choose posts, reels, or both, then get captions, engagement counts, media links, creator details, and optional reel transcripts when available.

- **URL**: https://apify.com/maximedupre/instagram-post-content-scraper.md
- **Developed by:** [Maxime Dupré](https://apify.com/maximedupre) (community)
- **Categories:** Social media, Marketing, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.35 / 1,000 post or reels

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### 📸 Instagram Post Content Scraper for Public Profile Feeds

For social media researchers, marketers, and developers, this Actor collects public Instagram posts and reels from profile handles or URLs. Get stable public content IDs and canonical URLs, captions, engagement counts, media links, creator details, profile stats, audio, branded-content flags, and optional reel transcripts in one dataset. The Actor does not ask for an Instagram login.

- Collect public posts from profile handles with **[Instagram Posts Scraper](https://apify.com/maximedupre/instagram-post-content-scraper/examples/instagram-posts-scraper)**.
- Collect public reels from a profile with **[Instagram Reels Scraper](https://apify.com/maximedupre/instagram-post-content-scraper/examples/instagram-reels-scraper)**.
- Gather post captions, engagement, media, and creator details with **[Instagram Post Content Scraper](https://apify.com/maximedupre/instagram-post-content-scraper/examples/instagram-post-content-scraper)**.
- Collect posts and reels together from profile feeds with **[Instagram Feed Scraper](https://apify.com/maximedupre/instagram-post-content-scraper/examples/instagram-feed-scraper)**.
- Check a profile feed from a handle or public URL with **[Instagram Profile Scraper](https://apify.com/maximedupre/instagram-post-content-scraper/examples/instagram-profile-scraper)**.

#### 📦 Instagram Rows from Profile Feeds

Each dataset row represents one public post or reel found in a submitted profile feed. It includes the stable public ID, canonical Instagram URL, media references, and fields that Instagram provides. Carousel rows keep their public media entries in source order. A field may be absent when the source does not provide it.

#### ▶️ Collect Public Instagram Posts and Reels

**Run steps**

1. Add one or more public Instagram handles or profile URLs.
2. Choose posts, reels, or both.
3. Choose whether to keep only items attributed to each queried profile or include public collab and coauthored items from its feed.
4. Set a per-profile limit, or leave it empty to return all available results until the source is exhausted.
5. Turn on reel transcripts if you want generated transcripts for eligible reels shorter than two minutes when available, then start the run.

The same content, author, transcript, and limit choices apply to every submitted profile. Private profiles, non-profile URLs, login-gated content, Stories, live Stories, Highlights, and direct single-post or single-reel URL lookups are outside this Actor's scope.

**Duplicate handling**

When the same public item appears again through another submitted profile or alias, the Actor keeps the first eligible occurrence and ignores later matches. The saved row reflects the first match.

#### ⚙️ Input

**Input fields**

| Field | Type | What it does |
| --- | --- | --- |
| `profileReferences` | array of strings | Required. Enter at least one public Instagram profile handle or URL. Private profiles and non-profile URLs are not collected. |
| `contentScope` | string | Choose `posts`, `reels`, or `postsAndReels`. If you leave it out, the Actor collects posts and reels. |
| `authorScope` | string | Choose `profileOnly` or `profileAndCollaborators`. The first keeps items attributed to the queried profile. The second also keeps public collab and coauthored items from that profile feed. If you leave it out, only the queried profile's items are kept. |
| `maxItemsPerProfile` | integer | Sets the maximum number of selected posts or reels per profile. Use 1 or more. Leave it empty to return all available results until the source is exhausted. |
| `includeReelTranscripts` | boolean | Turn it on to generate transcripts for reels shorter than two minutes when available. Reels at two minutes or longer do not get a transcript. It applies only when reels are collected and may make the run take longer. If omitted, it stays off. |

**Example input**

```json
{
  "profileReferences": [
    "instagram"
  ],
  "contentScope": "postsAndReels",
  "authorScope": "profileOnly",
  "maxItemsPerProfile": 20,
  "includeReelTranscripts": false
}
```

#### 🧾 Output

**Dataset link**

| Field | Type | What it does |
| --- | --- | --- |
| `datasetUrl` | URL string | Opens the collected Instagram posts and reels in the dataset overview. |

**Post and reel rows**

All content rows use the same object shape. The top-level `mediaType` can be `photo`, `video`, `reel`, or `carousel`. A carousel uses the same fields with one `media` object for each publicly exposed member. Optional fields appear only when the public source provides them.

| Field | Type | What it does |
| --- | --- | --- |
| `id` | string | Required stable public content ID. |
| `url` | URL string | Required canonical Instagram URL. |
| `mediaType` | string | Required content type: `photo`, `video`, `reel`, or `carousel`. |
| `publishedAt` | ISO date-time string | Publication time when available. |
| `caption` | string | Public caption when available. |
| `engagement` | object | Public engagement values when available. |
| `engagement.likes` | integer | Public likes when available. |
| `engagement.comments` | integer | Public comments when available. |
| `engagement.views` | integer | Public views when available. |
| `engagement.plays` | integer | Public plays when available. |
| `media` | array of objects | Required media entries for the content. Carousel entries stay in source order. |
| `media[].mediaType` | string | Required media type: `photo` or `video`. |
| `media[].url` | URL string | Public media URL when available. |
| `media[].thumbnailUrl` | URL string | Public thumbnail URL when available. |
| `media[].width` | integer | Media width in pixels when available. |
| `media[].height` | integer | Media height in pixels when available. |
| `media[].durationSeconds` | number | Video duration in seconds when available. |
| `creator` | object | Required creator details for the content. |
| `creator.username` | string | Required creator username. |
| `creator.displayName` | string | Creator display name when available. |
| `creator.isVerified` | boolean | Whether the creator is publicly marked as verified when available. |
| `creator.biography` | string | Public profile biography when available. |
| `creator.followers` | integer | Public follower count when available. |
| `creator.following` | integer | Public following count when available. |
| `creator.postCount` | integer | Public profile post count when available. |
| `creator.profileImageUrl` | URL string | Public profile image URL when available. |
| `isBrandedContent` | boolean | Public branded-content flag when available. |
| `audio` | object | Public audio details when available. |
| `audio.title` | string | Audio title when available. |
| `audio.artist` | string | Audio artist when available. |
| `audio.isOriginal` | boolean | Whether the audio is marked as original when available. |
| `transcript` | string | Generated reel transcript when requested and available. |

**Genuine reel row**

This complete row shows a reel with media, engagement, audio, creator details, and a transcript.

```json
{
  "id": "3976187338433532695",
  "url": "https://www.instagram.com/reel/DcuQVFLvJMX/",
  "mediaType": "reel",
  "media": [
    {
      "mediaType": "video",
      "url": "https://scontent-lga3-1.cdninstagram.com/o1/v/t2/f2/m86/AQPPKJTFrofKZs-C3bBUPzY8zCeR7Ms7roXFNtq2Mi8-JYAPd_iHPEOn4T5ieckPmlwdfQceK6GztcjjLggM4W4I6OPLT4Ply5VrSlg.mp4?_nc_cat=109&_nc_sid=5e9851&_nc_ht=scontent-lga3-1.cdninstagram.com&_nc_ohc=hfRQSCSXusEQ7kNvwFZloFQ&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5JTlNUQUdSQU0uQ0xJUFMuQzMuMTI3Ni5kYXNoX2Jhc2VsaW5lXzFfdjEiLCJ4cHZfYXNzZXRfaWQiOjE4MDUwNzcyOTA4NDAwOTgsImFzc2V0X2FnZV9kYXlzIjoyLCJ2aV91c2VjYXNlX2lkIjoxMDA5OSwiZHVyYXRpb25fcyI6NjMsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=17-1&vs=639f595bf3532698&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9DNzRFNzQzRDYwQkFBMkYxNjQ1OENFOEQ2NEM0MzNCRV92aWRlb19kYXNoaW5pdC5tcDQVAALIARIAFQIYUWlnX3hwdl9wbGFjZW1lbnRfcGVybWFuZW50X3YyL0IxNDJEMTE5OUY0NUYxQUEyM0FFMUY2OUFBODBDREE2X2F1ZGlvX2Rhc2hpbml0Lm1wNBUCAsgBEgAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbEwLPrqe20BhUCKAJDMywXQE-1P3ztkWgYEmRhc2hfYmFzZWxpbmVfMV92MREAdf4HZeadAQA&_nc_gid=hnyFq5JaQr7Ls98uMjNG4Q&_nc_ss=7a3ba&_nc_zt=28&oh=00_AQKCrGqjf7p7IY9UP5jOV4lvlTp0tlw_fH54Vutmc70T9A&oe=6A9AD422",
      "thumbnailUrl": "https://scontent-lga3-3.cdninstagram.com/v/t51.82787-15/789979116_18643245517049152_4750106048129770540_n.jpg?stp=c157.0.405.405a_dst-jpg_e15_tt6&_nc_ht=scontent-lga3-3.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2gHx4nq0xpsN5Mg63c-IHRvZ2ksaAy7GG9GApF-Hq271dbM3yI4q-D-eluoQtl0seeE&_nc_ohc=e1YrluBj_NQQ7kNvwFl_ziM&_nc_gid=hnyFq5JaQr7Ls98uMjNG4Q&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQJNf9CBBHpPyNKEB6QnXqgutjXjsNvpEyPW7AYyPSMeJA&oe=6A9EC685&_nc_sid=8b3546",
      "width": 750,
      "height": 421
    }
  ],
  "creator": {
    "username": "nasa",
    "displayName": "NASA",
    "isVerified": true,
    "biography": "Making the seemingly impossible, possible. ✨",
    "followers": 104410670,
    "following": 91,
    "postCount": 4909,
    "profileImageUrl": "https://scontent-lga3-1.cdninstagram.com/v/t51.2885-19/29090066_159271188110124_1152068159029641216_n.jpg?stp=dst-jpg_s320x320_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-lga3-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2gHx4nq0xpsN5Mg63c-IHRvZ2ksaAy7GG9GApF-Hq271dbM3yI4q-D-eluoQtl0seeE&_nc_ohc=Cnnkj7Gsyh0Q7kNvwG_WaWe&_nc_gid=hnyFq5JaQr7Ls98uMjNG4Q&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQIN4BuLLXSfGaKmABRMufUloWJa_OcWomn2khEMazrjIA&oe=6A9EA729&_nc_sid=8b3546"
  },
  "publishedAt": "2026-08-31T23:23:27.000Z",
  "caption": "Roman is on her way, and the Golden Age of Exploration is just the beginning.",
  "engagement": {
    "likes": 170596,
    "comments": 893,
    "views": 704564,
    "plays": 4179893
  },
  "isBrandedContent": false,
  "audio": {
    "title": "Original audio",
    "artist": "nasa",
    "isOriginal": true
  },
  "transcript": "Massage is launched Nancy Grace Roman, the most powerful telescope the world has ever known, and when she opens her eyes, nearly a million miles from Earth, in that first light, she will see more of the universe than anything we have ever put into space before. She will help us understand the mysterious dark matter that holds galaxies together, dark energy that is accelerating the expansion of the universe, and discover more than 100,000 new worlds hidden behind The web, and couple Roman will capture images that will captivate the world and inspire the next generation to go even further. America is taking on the near impossible missions, only NASA is capable of achieving. The golden age of discovery has only just begun. [MUSIC PLAYING]"
}
```

**Genuine carousel row**

This complete row shows a carousel with four public media entries kept in source order.

```json
{
  "id": "3972282388667522428",
  "url": "https://www.instagram.com/p/DcgYclUEV18/",
  "mediaType": "carousel",
  "media": [
    {
      "mediaType": "photo",
      "url": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/787044904_18786834754001321_3898611995126823522_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2.08_tt6&_nc_ht=scontent-ord5-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHM3S1-3SKZMP0FYM68KGDJ3O3G76DE4EDS6uREqEEfr_-4gXm8vU1-obdT4gqMSuY&_nc_ohc=QQU7lHtDDAoQ7kNvwFxsj8T&_nc_gid=5ArEoLeGaRNaeNcaRz9SzQ&edm=AOQ1c0wBAAAA&ccb=7-5&ig_cache_key=Mzk3MjI4MDA4OTMyNjk1MDQ3NQ%3D%3D.3-ccb7-5&oh=00_AQI0icV2aWjoXIUCr9qfZT5oGRDlsu8_5d4dqhL3sPmMeg&oe=6A9EA290&_nc_sid=8b3546",
      "thumbnailUrl": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/787044904_18786834754001321_3898611995126823522_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2.08_tt6&_nc_ht=scontent-ord5-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHM3S1-3SKZMP0FYM68KGDJ3O3G76DE4EDS6uREqEEfr_-4gXm8vU1-obdT4gqMSuY&_nc_ohc=QQU7lHtDDAoQ7kNvwFxsj8T&_nc_gid=5ArEoLeGaRNaeNcaRz9SzQ&edm=AOQ1c0wBAAAA&ccb=7-5&ig_cache_key=Mzk3MjI4MDA4OTMyNjk1MDQ3NQ%3D%3D.3-ccb7-5&oh=00_AQI0icV2aWjoXIUCr9qfZT5oGRDlsu8_5d4dqhL3sPmMeg&oe=6A9EA290&_nc_sid=8b3546",
      "width": 1080,
      "height": 1350
    },
    {
      "mediaType": "photo",
      "url": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/786993048_18786834745001321_1238346926602814146_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2.08_tt6&_nc_ht=scontent-ord5-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHM3S1-3SKZMP0FYM68KGDJ3O3G76DE4EDS6uREqEEfr_-4gXm8vU1-obdT4gqMSuY&_nc_ohc=o6uaEyMrrZgQ7kNvwF7b4_p&_nc_gid=5ArEoLeGaRNaeNcaRz9SzQ&edm=AOQ1c0wBAAAA&ccb=7-5&ig_cache_key=Mzk3MjI4MDA5MTA3MTkzNDc2NQ%3D%3D.3-ccb7-5&oh=00_AQIeICz2isTro8s1TIU4YlPTdhp5B-svfq8bOgaEbBAYSg&oe=6A9EA91E&_nc_sid=8b3546",
      "thumbnailUrl": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/786993048_18786834745001321_1238346926602814146_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2.08_tt6&_nc_ht=scontent-ord5-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHM3S1-3SKZMP0FYM68KGDJ3O3G76DE4EDS6uREqEEfr_-4gXm8vU1-obdT4gqMSuY&_nc_ohc=o6uaEyMrrZgQ7kNvwF7b4_p&_nc_gid=5ArEoLeGaRNaeNcaRz9SzQ&edm=AOQ1c0wBAAAA&ccb=7-5&ig_cache_key=Mzk3MjI4MDA5MTA3MTkzNDc2NQ%3D%3D.3-ccb7-5&oh=00_AQIeICz2isTro8s1TIU4YlPTdhp5B-svfq8bOgaEbBAYSg&oe=6A9EA91E&_nc_sid=8b3546",
      "width": 1080,
      "height": 1350
    },
    {
      "mediaType": "photo",
      "url": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/786027442_18786834775001321_4758464535627062752_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2.08_tt6&_nc_ht=scontent-ord5-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHM3S1-3SKZMP0FYM68KGDJ3O3G76DE4EDS6uREqEEfr_-4gXm8vU1-obdT4gqMSuY&_nc_ohc=kALBm0hHAIcQ7kNvwFtjn1Q&_nc_gid=5ArEoLeGaRNaeNcaRz9SzQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQLKnHdv2EEsogUNXYlxvEfDdy2mE_4bJaz-9CmPVNSJmw&oe=6A9EAA64&_nc_sid=8b3546",
      "thumbnailUrl": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/786027442_18786834775001321_4758464535627062752_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2.08_tt6&_nc_ht=scontent-ord5-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHM3S1-3SKZMP0FYM68KGDJ3O3G76DE4EDS6uREqEEfr_-4gXm8vU1-obdT4gqMSuY&_nc_ohc=kALBm0hHAIcQ7kNvwFtjn1Q&_nc_gid=5ArEoLeGaRNaeNcaRz9SzQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQLKnHdv2EEsogUNXYlxvEfDdy2mE_4bJaz-9CmPVNSJmw&oe=6A9EAA64&_nc_sid=8b3546",
      "width": 1080,
      "height": 1350
    },
    {
      "mediaType": "photo",
      "url": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/786213186_18786834763001321_5758941793582388839_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2.08_tt6&_nc_ht=scontent-ord5-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHM3S1-3SKZMP0FYM68KGDJ3O3G76DE4EDS6uREqEEfr_-4gXm8vU1-obdT4gqMSuY&_nc_ohc=rmDn3OHahNQQ7kNvwFHqKVk&_nc_gid=5ArEoLeGaRNaeNcaRz9SzQ&edm=AOQ1c0wBAAAA&ccb=7-5&ig_cache_key=Mzk3MjI4MDA5MTQ2NjExMTA3Mg%3D%3D.3-ccb7-5&oh=00_AQKorEbMqStvVlGD7mmiDyQTiktxhYdYX6TiuDf1jPFwFw&oe=6A9EAA64&_nc_sid=8b3546",
      "thumbnailUrl": "https://scontent-ord5-2.cdninstagram.com/v/t51.82787-15/786213186_18786834763001321_5758941793582388839_n.jpg?stp=dst-jpg_e35_p1080x1080_sh2.08_tt6&_nc_ht=scontent-ord5-2.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2gHM3S1-3SKZMP0FYM68KGDJ3O3G76DE4EDS6uREqEEfr_-4gXm8vU1-obdT4gqMSuY&_nc_ohc=rmDn3OHahNQQ7kNvwFHqKVk&_nc_gid=5ArEoLeGaRNaeNcaRz9SzQ&edm=AOQ1c0wBAAAA&ccb=7-5&ig_cache_key=Mzk3MjI4MDA5MTQ2NjExMTA3Mg%3D%3D.3-ccb7-5&oh=00_AQKorEbMqStvVlGD7mmiDyQTiktxhYdYX6TiuDf1jPFwFw&oe=6A9EAA64&_nc_sid=8b3546",
      "width": 1080,
      "height": 1350
    }
  ],
  "creator": {
    "username": "instagram",
    "displayName": "Instagram",
    "isVerified": true,
    "biography": "Discover what's new on Instagram 🔎✨",
    "followers": 686377667,
    "following": 285,
    "postCount": 8575,
    "profileImageUrl": "https://scontent-ord5-1.cdninstagram.com/v/t51.82787-19/550891366_18667771684001321_1383210656577177067_n.jpg?stp=dst-jpg_s320x320_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6InByb2ZpbGVfcGljLmRqYW5nby4xMDgwLmMyIn0&_nc_ht=scontent-ord5-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2gHM3S1-3SKZMP0FYM68KGDJ3O3G76DE4EDS6uREqEEfr_-4gXm8vU1-obdT4gqMSuY&_nc_ohc=fW_MvLAEPu4Q7kNvwHGMIrs&_nc_gid=5ArEoLeGaRNaeNcaRz9SzQ&edm=AOQ1c0wBAAAA&ccb=7-5&oh=00_AQLUSr81bdgYz7KJNKcSPOh3PclvS2gFgmyAQ8YHESba5Q&oe=6A9EB1E7&_nc_sid=8b3546"
  },
  "publishedAt": "2026-08-26T14:03:03.000Z",
  "caption": "Meta and 52 state attorneys general agree on a new path forward to empower parents and support teens. But to be truly effective, we need TikTok and YouTube to join us.",
  "engagement": {
    "likes": 23249,
    "comments": 1330
  },
  "isBrandedContent": false
}
```

#### 💳 Pricing

This Actor uses pay-per-event pricing. One event covers each successfully collected public permanent-feed post or reel saved to the dataset. The price shown before a run is the price for that event.

#### 🔌 Integrations

Use the saved dataset in Apify or read its rows with the Apify API. You can use the data in your own review or workflow.

https://www.youtube.com/watch?v=bNACk1\_S\_6w\&list=PLObrtcm1Kw6MUrlLNDbK9QRg8VDJg0gOW\&index=4

#### ❓ FAQ

##### What does a carousel row contain?

The row keeps the carousel's public media entries in source order. Each entry can include its own type, URL, thumbnail, size, and duration when available.

##### Can I collect posts and reels in the same run?

Yes. Set `contentScope` to `postsAndReels` to collect both from each submitted profile.

##### Are transcripts returned for every reel?

No. Turn on `includeReelTranscripts` to request transcripts for eligible reels shorter than two minutes when available. Reels at two minutes or longer do not get a transcript.

##### What does author scope change?

`profileOnly` keeps items attributed to the queried profile. `profileAndCollaborators` also keeps public collab and coauthored items found in that profile feed.

##### What happens when the same post appears more than once?

The Actor saves the first eligible occurrence and ignores later matches for the same public item. The saved row reflects that first match.

##### What happens if I leave the per-profile limit empty?

The Actor returns all available results until the source is exhausted. A number sets the maximum selected posts or reels for each profile.

##### Can I use a private profile or collect Stories?

No. Inputs must point to public profiles. The Actor collects permanent-feed posts and reels, not Stories, live Stories, or Highlights.

##### Does the Actor download media files?

No. It returns public media URLs and thumbnails when available. It does not download or store the media files.

##### Can I look up one post or reel by URL?

No. This Actor collects content from submitted profile handles and public profile URLs, not a single post or reel URL.

##### Why is a field missing?

The row omits a field when the public source does not provide it. The Actor does not fill in missing values.

### 📝 Changelog

**v0.0** (03-09-2026)

- Initial release.

### 🆘 Support

For issues, questions, or feature requests, [file a ticket](https://console.apify.com/actors/maximedupre~instagram-post-content-scraper/issues) and I'll fix or implement it in less than 24h 🫡

### 🔗 Related Actors

- [Instagram Downloader API](https://apify.com/maximedupre/instagram-downloader-api): Get source-hosted media links from known public Instagram posts or reels.
- [Instagram Profile Stats Scraper](https://apify.com/maximedupre/instagram-profile-stats-scraper): Check public follower, following, and post counts for profiles before content collection.
- [Instagram Reels Comment Scraper](https://apify.com/maximedupre/instagram-reels-comments-scraper): Collect top-level comments from known public reels to study audience feedback.
- [Instagram Hashtag Username Scraper](https://apify.com/maximedupre/instagram-hashtag-username-scraper): Find public post authors from a hashtag before adding profile references.
- [Instagram Related Users Scraper](https://apify.com/maximedupre/instagram-related-users-scraper): Find public accounts related to a seed profile for more profile references.

**Made with ❤️ by Maxime Dupré**

# Actor input Schema

## `profileReferences` (type: `array`):

Enter one or more public Instagram profile URLs or handles. Private profiles and non-profile URLs are not collected.

## `contentScope` (type: `string`):

Choose whether to collect posts, reels, or both from each profile. If you omit this field, the scraper collects posts and reels.

## `authorScope` (type: `string`):

Choose whether to keep only items attributed to the queried profile or also keep public collab and coauthored items found in that profile feed. If you omit this field, it keeps items attributed to the queried profile only.

## `maxItemsPerProfile` (type: `integer`):

Set the maximum number of selected posts or reels to collect from each profile. Leave this empty to return all available results until the source is exhausted.

## `includeReelTranscripts` (type: `boolean`):

Turn this on to generate a transcript for reels shorter than two minutes when available. Reels that are two minutes or longer do not get a transcript. This can make the run take longer. It applies only when you collect reels, and omitted input leaves it off.

## Actor input object example

```json
{
  "profileReferences": [
    "instagram"
  ],
  "contentScope": "postsAndReels",
  "authorScope": "profileOnly",
  "maxItemsPerProfile": 20,
  "includeReelTranscripts": false
}
```

# Actor output Schema

## `datasetUrl` (type: `string`):

Open the collected Instagram posts and reels.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "profileReferences": [
        "instagram"
    ],
    "contentScope": "postsAndReels",
    "authorScope": "profileOnly",
    "maxItemsPerProfile": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("maximedupre/instagram-post-content-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "profileReferences": ["instagram"],
    "contentScope": "postsAndReels",
    "authorScope": "profileOnly",
    "maxItemsPerProfile": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("maximedupre/instagram-post-content-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profileReferences": [
    "instagram"
  ],
  "contentScope": "postsAndReels",
  "authorScope": "profileOnly",
  "maxItemsPerProfile": 20
}' |
apify call maximedupre/instagram-post-content-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,maximedupre/instagram-post-content-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Gs9tGdX4UM8kPKgBE/builds/rbuennazgZ8RciOPu/openapi.json
