100 free credits. No credit card required.Start building
Logo
100 free credits. No credit card required

Instagram Profile Posts API

Scrape Instagram Profile Posts data with one API call. Returns a list of recent posts from an Instagram user's profile. Each post includes like count, comment count, caption, media URL, media type, and timestamp. Collaborative posts (Instagram's native "Collab" feature) are fully resolved: `post.ext.coauthors` lists every co-author account as `{ id, username, full_name, is_verified, profile_pic_url }`. Read it whenever you list a profile: a collab post has a single producer and appears in every co-author's grid, so `post.author` is whichever account created the post and is not always the handle you queried. The complete set of accounts on a post is `post.author.username` plus every `username` in `post.ext.coauthors`, and an empty array means Instagram reports the post as not a collab. Note: engagement.shares is null on this endpoint (the upstream carries no per-post share count); to additionally merge in per-post share counts where a second source exposes them (coverage varies by account), use /v1/instagram/profile/posts/full.

Last updated August 2026Maintained by the SocialCrawl team

Returns a user's recent posts with caption, like and comment counts, media URL, media type, and timestamp; share counts are not included. Collab posts list every co-author under ext.coauthors.

Use it for a plain feed pull; profile/posts/full adds per-post share counts. On a collab post the author is whoever created it, so read ext.coauthors for everyone on it.

Searching 51 platforms in parallel

·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Google Finance logoGoogle Finance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility·Universal Search logoUniversal Search
·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Google Finance logoGoogle Finance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility·Universal Search logoUniversal Search
·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Google Finance logoGoogle Finance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility·Universal Search logoUniversal Search
·TikTok logoTikTok·Instagram logoInstagram·YouTube logoYouTube·Facebook logoFacebook·X logoX·LinkedIn logoLinkedIn·Reddit logoReddit·Threads logoThreads·Pinterest logoPinterest·Twitch logoTwitch·Truth Social logoTruth Social·Snapchat logoSnapchat·Kick logoKick·Bluesky logoBluesky·Kwai logoKwai·Rumble logoRumble·Spotify logoSpotify·Apple Music·TikTok Shop logoTikTok Shop·Amazon Shop logoAmazon Shop·Google Shopping logoGoogle Shopping·Trustpilot logoTrustpilot·TripAdvisor logoTripAdvisor·Linktree logoLinktree·Komi logoKomi·Pillar logoPillar·lnk.bio logolnk.bio·Facebook Ads logoFacebook Ads·Google Ads logoGoogle Ads·LinkedIn Ads logoLinkedIn Ads·Google Search logoGoogle Search·Google News logoGoogle News·Google Finance logoGoogle Finance·Polymarket logoPolymarket·Tavily logoTavily·Hacker News logoHacker News·GitHub logoGitHub·Perplexity logoPerplexity·Naver logoNaver·Utility·Universal Search logoUniversal Search
Instagram API

What can you do with the Profile Posts API?

The Profile Posts endpoint gives you structured Instagram data with computed fields in a single request. No scraping infrastructure to build or maintain.

Example Request

curl -H "x-api-key: YOUR_API_KEY" \
  "https://www.socialcrawl.dev/v1/instagram/profile/posts?handle=instagram"
import requests

response = requests.get(
    "https://www.socialcrawl.dev/v1/instagram/profile/posts",
    params={
    'handle': 'instagram',
    },
    headers={"x-api-key": "YOUR_API_KEY"},
)

data = response.json()
const response = await fetch(
  "https://www.socialcrawl.dev/v1/instagram/profile/posts?handle=instagram",
  {
    headers: { "x-api-key": "YOUR_API_KEY" },
  },
);

const data = await response.json();

Parameters

ParameterRequiredDescription
handleYesInstagram username without the @ symbol
next_max_idNoCursor to get next page of results.
trimNoSet to true to get a trimmed response
Example Response

What does the Instagram Profile Posts API return?

Every response follows one unified schema. Here is a real, unmodified response body, so you can see the exact fields you get back before spending a credit.

Example response
{
  "success": true,
  "platform": "tiktok",
  "endpoint": "/v1/tiktok/profile/videos",
  "data": {
    "items": [
      {
        "post": {
          "id": "7658005300657638669",
          "url": "https://www.tiktok.com/@charlidamelio/video/7658005300657638669",
          "content": {
            "text": "dc @lara.joanna ",
            "media_urls": "https://v19.tiktokcdn-eu.com/4a08329b68e24d90b840a05c9244ba65/6a498c37/video/tos/alisg/tos-alisg-ve-37c799-sg/ocXRU4saOAVGYeJRAAygAjFIzOGsgRf4peSeXk/?a=1233&bti=MzU8OGYpNHYpNzo5ZjEuLjpkLTptNDQwOg%3D%3D&&bt=1135&ft=ERfCkaZWD00Q12Nvr-HxzIxRA7lGF3_45SY&mime_type=video_mp4&rc=OTg8NGkzZTQ8PDo1NmQ2O0BpanEzd205cmRlPDMzZzczNEAvNWM0NDFfNi8xMjExNF5eYSNmMGwyMmQ0LzBhLS1kMS9zcw%3D%3D&vvpl=1&l=20260703224143F66ABC3BD3A97DB0685C&btag=e000b0000",
            "thumbnail_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast5-p-0068-tx/owxEmiGPia440JkI3PgALU3bB7aBAlzdBEsKB~tplv-tiktokx-cropcenter-q:300:400:q70.heic?dr=9232&refresh_token=bf18ce44&x-expires=1783202400&x-signature=8AANrRWOCWfS6xtQ9JJiHB77vxo%3D&t=bacd0480&ps=933b5bde&shp=d05b14bd&shcp=132edbea&idc=no1a&biz_tag=tt_video&s=PUBLISH&sc=cover",
            "duration_seconds": 16.903
          },
          "author": {
            "username": "charlidamelio",
            "display_name": "charli d’amelio",
            "avatar_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/ee31de49ddf64b45c5b2e3c55fbd0ea4~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=9608&idc=no1a&ps=87d6e48a&refresh_token=e0b099bd&s=PUBLISH&sc=avatar&shcp=132edbea&shp=d05b14bd&t=223449c4&x-expires=1783202400&x-signature=9SsuimlpGdsdlerisiaqvDVLV3c%3D",
            "verified": true
          },
          "engagement": {
            "views": 3417578,
            "likes": 501973,
            "comments": 2618,
            "shares": 6304,
            "saves": 22989
          },
          "flags": {
            "nsfw": null,
            "spoiler": null,
            "pinned": false,
            "deleted": false
          },
          "published_at": "2026-07-02T18:51:58.000Z",
          "ext": {
            "music_id": "7656080164593437471",
            "published_at_epoch": 1783018318
          }
        },
        "computed": {
          "engagement_rate": 0.14949,
          "language": null,
          "content_category": "other",
          "estimated_reach": 4101094
        }
      },
      {
        "post": {
          "id": "7657606229484670221",
          "url": "https://www.tiktok.com/@charlidamelio/video/7657606229484670221",
          "content": {
            "text": "@Alexa Davis ",
            "media_urls": "https://v19.tiktokcdn-eu.com/07ada727f60ed77f8504c4c9aee6f992/6a498c31/video/tos/alisg/tos-alisg-ve-37c799-sg/oAmE41FRfIDnKlQAZjDgfcEsqFENRqYDSBGUSB/?a=1233&bti=MzU8OGYpNHYpNzo5ZjEuLjpkLTptNDQwOg%3D%3D&&bt=857&ft=ERfCkaZWD00Q12Nvr-HxzIxRA7lGF3_45SY&mime_type=video_mp4&rc=NWU8OTg2aTw6ODlpNDU1PEBpanlrNmw5cmxuPDMzZzczNEBfLTEtMy8tXzYxLzYvYTNfYSNlbGVvMmRrYC9hLS1kMS9zcw%3D%3D&vvpl=1&l=20260703224143F66ABC3BD3A97DB0685C&btag=e000b0000",
            "thumbnail_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast5-p-0068-tx/ooZRDflKEE2SIFSfsAqgFBcFEORUAY4jBDl2Yc~tplv-tiktokx-cropcenter-q:300:400:q70.heic?dr=9232&refresh_token=0ee7ce0e&x-expires=1783202400&x-signature=DiqCJ1sMgLvKp5k1aK2lKgBm7CU%3D&t=bacd0480&ps=933b5bde&shp=d05b14bd&shcp=132edbea&idc=no1a&biz_tag=tt_video&s=PUBLISH&sc=cover",
            "duration_seconds": 10.123
          },
          "author": {
            "username": "charlidamelio",
            "display_name": "charli d’amelio",
            "avatar_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/ee31de49ddf64b45c5b2e3c55fbd0ea4~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=9608&idc=no1a&ps=87d6e48a&refresh_token=e0b099bd&s=PUBLISH&sc=avatar&shcp=132edbea&shp=d05b14bd&t=223449c4&x-expires=1783202400&x-signature=9SsuimlpGdsdlerisiaqvDVLV3c%3D",
            "verified": true
          },
          "engagement": {
            "views": 7205601,
            "likes": 739100,
            "comments": 1943,
            "shares": 6268,
            "saves": 28516
          },
          "flags": {
            "nsfw": null,
            "spoiler": null,
            "pinned": false,
            "deleted": false
          },
          "published_at": "2026-07-01T17:03:22.000Z",
          "ext": {
            "music_id": "7656080164593437471",
            "published_at_epoch": 1782925402
          }
        },
        "computed": {
          "engagement_rate": 0.103713,
          "language": null,
          "content_category": "other",
          "estimated_reach": 8646721
        }
      },
      {
        "post": {
          "id": "7657287641641143565",
          "url": "https://www.tiktok.com/@charlidamelio/video/7657287641641143565",
          "content": {
            "text": null,
            "media_urls": "https://v19.tiktokcdn-eu.com/24d5a0ceaf069ce4435f27d4a1fb7fa5/6a498c2d/video/tos/alisg/tos-alisg-ve-37c799-sg/o4IuEqzEKBC3UgRghYEA5FEDZJDB2RL2JfePpS/?a=1233&bti=M0BzMzU8OGYpNzo5Zi5wIzEuLjpkNDQwOg%3D%3D&&bt=939&ft=ERfCkaZWD00Q12Nvr-HxzIxRA7lGF3_45SY&mime_type=video_mp4&rc=O2Q8M2k1Nzo7ODkzPGQ2NkBpM3VrZmo5cm01PDMzZzczNEBiYC0yLjU0XjQxNTMxX2FhYSNjZy5mMmRzYC9hLS1kMS9zcw%3D%3D&vvpl=1&l=20260703224143F66ABC3BD3A97DB0685C&btag=e000b0000",
            "thumbnail_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-useast5-p-0068-tx/oEEehFBRSDqxRYEZJgMgAQpzEf2PJiDEJNI7CB~tplv-tiktokx-cropcenter-q:300:400:q70.heic?dr=9232&refresh_token=7ef5f605&x-expires=1783202400&x-signature=10x4mFTkwGHZf2I3P%2FcRrZr6vTo%3D&t=bacd0480&ps=933b5bde&shp=d05b14bd&shcp=132edbea&idc=no1a&biz_tag=tt_video&s=PUBLISH&sc=cover",
            "duration_seconds": 6.467
          },
          "author": {
            "username": "charlidamelio",
            "display_name": "charli d’amelio",
            "avatar_url": "https://p16-common-sign.tiktokcdn-eu.com/tos-maliva-avt-0068/ee31de49ddf64b45c5b2e3c55fbd0ea4~tplv-tiktokx-cropcenter-q:1080:1080:q70.heic?dr=9608&idc=no1a&ps=87d6e48a&refresh_token=e0b099bd&s=PUBLISH&sc=avatar&shcp=132edbea&shp=d05b14bd&t=223449c4&x-expires=1783202400&x-signature=9SsuimlpGdsdlerisiaqvDVLV3c%3D",
            "verified": true
          },
          "engagement": {
            "views": 5941789,
            "likes": 941067,
            "comments": 3165,
            "shares": 17173,
            "saves": 18760
          },
          "flags": {
            "nsfw": null,
            "spoiler": null,
            "pinned": false,
            "deleted": false
          },
          "published_at": "2026-06-30T20:27:04.000Z",
          "ext": {
            "music_id": "7530783142774065975",
            "published_at_epoch": 1782851224
          }
        },
        "computed": {
          "engagement_rate": 0.161804,
          "language": null,
          "content_category": null,
          "estimated_reach": 7130147
        }
      }
    ],
    "next_cursor": "1782516110000",
    "total": 10,
    "dropped": 0
  },
  "credits_used": 1,
  "credits_remaining": 9999,
  "request_id": "req-8Kq2ZmR4vT9xLb3P",
  "cached": false,
  "pagination": {
    "next_cursor": "sc.eyJ2IjoyLCJjIjoiMTc4MjUxNjExMDAwMCIsInAiOiJtYXhfY3Vyc29yIn0",
    "has_more": true,
    "page_size": 10
  }
}

Example captured from the TikTok API. Every SocialCrawl endpoint returns this same unified schema, so your Instagram Profile Posts response has the same fields.

API Details

How does the Instagram Profile Posts API work?

Send a GET request with your API key and get back clean, structured JSON in our unified schema. Supported computed fields are populated when the source provides the required inputs.

Method

GET

Response

JSON

Why SocialCrawl

Why use SocialCrawl for Instagram Profile Posts data?

We handle the complexity of Instagram data extraction so you can focus on building. Unified schema, AI enrichment, and zero platform logic in your code.

Developer First

How do you scrape social media data in seconds?

The fastest social media scraping API for developers. Scrape profiles, posts, comments, and analytics from 51 platforms covering 10B+ monthly active users.

One schema, every platform

Query 51 platforms with identical response structures. Write your integration once.

Computed fields, not just scraped

When an endpoint supports these metrics and the source provides the required inputs, the normalized record includes engagement_rate, estimated_reach, content_category, and language. Ready to use.

See your data before you code

Visual Data Explorer. Paste any URL, get rich result cards, sortable tables, CSV export.

import requests

response = requests.get(
    'https://www.socialcrawl.dev/v1/tiktok/profile',
    params={'handle': 'charlidamelio'},
    headers={'x-api-key': 'sc_YOUR_API_KEY'}
)
data = response.json()
[ .JSON ]
{
  "success": true,
  "platform": "tiktok",
  "data": {
    "author": {
      "username": "charlidamelio",
      "followers": 152400000
    },
    "engagement": {
      "likes": 12400000000,
      "engagement_rate": 0.087
    },
    "metadata": {
      "language": "en",
      "content_category": "lifestyle"
    }
  }
}
+ 51 platforms
FAQ

Have a question? We got answers

Find answers to frequently asked questions about SocialCrawl's API, pricing, and capabilities.

Contact us
How do I list a user's Instagram posts with an API?
Send a GET request to /v1/instagram/profile/posts with the handle parameter. SocialCrawl returns a JSON array of the user's most recent posts, each with caption, like count, comment count, media URL, media type, and timestamp.
How do I paginate through Instagram posts?
The response includes a next_max_id cursor. Pass that value back as the next_max_id query parameter on your next request to fetch the next page. Keep paginating until the cursor is empty.
Does the Instagram Posts API return photos and videos?
Yes. Each post entry includes a media_type field (image, video, or carousel) and a media URL. Carousel posts include an array of child media URLs so you can iterate over every slide in a single post.
How much does the Instagram Posts API cost per request?
Each call costs 1 credit on the standard tier and returns one page of posts. New accounts get 100 free credits with no credit card, so you can fetch roughly 100 pages of posts before paying.
How recent are the posts returned?
Posts are returned in reverse-chronological order starting with the most recent. The first page gives you the newest posts; pagination lets you walk back through the user's full public post history as far as Instagram exposes it.

Ask AI about SocialCrawl

Ready to scrape Instagram Profile Posts data?

Get your API key and start pulling Instagram data in under 60 seconds.

Start for free

🤖 AI agent or LLM? Read this page as markdown