Skip to main content

juicer.io/instagram/api

Instagram posts, as JSON.

One key returns an account's posts and Reels, public posts on a hashtag and profile data as the same normalized JSON as 14 other networks. No Meta developer app of your own, no permissions review, no token refresh.

curl "https://api.juicer.io/v1/data/posts?platforms=Instagram&term=yourbrand" -H "Authorization: Bearer $JUICER_API_KEY"

AI agents ready

Copy this prompt into the agent of your choice and get going right away.

I want to pull Instagram data through the Juicer API. Work from the official docs, not from memory.

1. Read https://developers.juicer.io first (or connect its docs MCP server, https://developers.juicer.io/mcp, no auth needed). The Quickstart and Authentication pages explain how to get going without a human signing up: POST /v1/authorize with an email returns a temporary API key, and a free Sandbox plan is available for a permanent one.
2. Then use the Juicer MCP server at https://api.juicer.io/mcp if you can, or the REST API at https://api.juicer.io/v1 with the key as a bearer token.
3. For Instagram: look up an account's posts and Reels with platforms=Instagram and the username, public posts with a #hashtag, and resolve a profile with the profiles lookup. Follow the docs for term types and cursor pagination.

Task: resolve the account <yourbrand>, fetch its 10 latest posts and summarize the engagement.
  • Free Sandbox tier
  • No Meta app review
  • Cursor pagination
  • MCP server included

01 / posts

Pull an account's posts and Reels.

Pass the username and get its recent media: caption, attached photos or video, likes and comment counts, posting time and the canonical URL. The same fields Facebook, TikTok and LinkedIn return, so one parser covers every network.

GET /data/posts in the docs →
GET /v1/data/posts?platforms=Instagram&term=yourbrand
{
  "data": [{
    "platform": "Instagram",
    "message": "Golden hour at the new store. Doors open Saturday.",
    "poster": { "display_name": "yourbrand" },
    "media": [{ "type": "video", "url": "https://..." }],
    "like_count": 2417,
    "comment_count": 389,
    "url": "https://www.instagram.com/reel/..."
  }],
  "meta": {
    "platforms": [{ "platform": "Instagram", "success": true, "has_more": true, "next_cursor": "..." }]
  }
}

GET /v1/data/posts 200 1 of 25 posts, 176 ms

yourbrand

Golden hour at the new store. Doors open Saturday.

2,417 389

02 / hashtags

Search public posts on a hashtag.

Pass a hashtag with term_type=hashtag and get recent public posts that use it, whoever published them: campaigns, UGC, event coverage. Instagram's hashtag API hides the poster's username and picture, so the JSON carries the post, not the person.

GET /v1/data/posts?platforms=Instagram&term=%23yourhashtag&term_type=hashtag
{
  "data": [
    { "platform": "Instagram", "message": "Race day done. #yourhashtag",
      "media": [{ "type": "image", "url": "https://..." }], "like_count": 318 },
    { "platform": "Instagram", "message": "Fuelling the crowd this morning #yourhashtag",
      "media": [{ "type": "image", "url": "https://..." }], "like_count": 97 }
  ],
  "meta": { "platforms": [{ "platform": "Instagram", "success": true, "count": 2, "has_more": true }] }
}

GET /v1/data/posts 200 2 posts, 240 ms

  • #yourhashtag

    Race day done. #yourhashtag

  • #yourhashtag

    Fuelling the crowd this morning #yourhashtag

03 / profiles

Resolve a username to its profile.

Up to five handles per request. An exact match returns that account with follower and post counts; otherwise you get candidates to disambiguate. Every profile carries every field, null where Instagram exposes nothing.

GET /data/profiles in the docs →
GET /v1/data/profiles?platforms=Instagram&term=yourbrand
{
  "data": [{
    "platform": "Instagram", "term": "yourbrand", "exact_match": true,
    "profiles": [{
      "handle": "yourbrand",
      "display_name": "Your Brand",
      "url": "https://www.instagram.com/yourbrand",
      "verified": true,
      "metrics": { "follower_count": 128400, "post_count": 942, "total_view_count": null }
    }]
  }]
}

GET /v1/data/profiles 200 1 profile, exact match, 131 ms

Your Brand

instagram.com/yourbrand

Followers
128,400
Posts
942

04 / your own accounts

Sync the accounts you manage. Get a webhook.

Connect a professional account you manage as a feed source and Juicer syncs it on a schedule for 1 credit per sync, applies your moderation rules, keeps the history readable for free and calls your webhook when new posts land. Connection-free lookups on accounts you don't manage cost 3 credits per sync.

Webhooks in the docs →
POST /v1/feeds/{feed_id}/sources
{ "platform": "Instagram", "term": "yourbrand", "term_type": "username" }

// later, on your endpoint
{
  "event": "post.created",
  "feed_id": 458351,
  "post": { "platform": "Instagram", "message": "New this week ...", "url": "https://..." }
}

POST /v1/feeds/458351/sources 201 synced 25 posts, 1 credit

post.created https://yourapp.com/hooks/juicer delivered 200

Use cases

What teams build on the Instagram API

The same normalized posts serve product features, marketing sites and AI workflows.

Instagram inside your product

Show a customer's Instagram activity in your CRM, agency dashboard or community app without owning the OAuth flow. Connect their account once and read it forever.

Hashtag campaigns and UGC

Collect every public post on a campaign hashtag, run it through moderation and push the keepers to a site, a screen or a print pipeline.

Shoppable social proof for stores

Pull a brand's posts and Reels into product pages and checkout flows. Connected sources keep the proof current without a redeploy.

Monitoring and analytics

Archive posts and engagement counts for the accounts you track, yours and competitors', and chart follower growth, likes and posting cadence over time.

Instagram data for AI agents

Give an agent get_data_posts and get_data_profiles through the MCP server and it can research an account, summarize a campaign or draft captions with live context.

Retiring a hand-built Graph API integration

Replace Meta app review, expiring tokens and version deprecations with one endpoint that Juicer keeps working. Most teams migrate in a day.

Why use Juicer instead of the Instagram Graph API directly?

Reading Instagram yourself means a Meta developer app, an app review for every permission, a Business account linked to a Facebook Page, tokens that expire, media URLs that expire faster, rate limits and a Graph API version that retires every two years. Juicer carries all of it through its own reviewed Meta app.

Build it yourself

A Meta app, a review, and a pager.

  • Meta app review
  • Tokens expiring
  • Media URLs expiring
  • Graph API versions retiring
  • Rate limits
  • Moderation
  • Webhook plumbing
  • Engagement fields per version

Weeks to first post. Forever to maintain.

Juicer handles the heavy lifting.

With the Juicer API

One key. Same JSON as 14 other networks.

  • No Meta developer app
  • Posts, Reels and hashtag search
  • Profiles with follower counts
  • Cached media that keeps working
  • Moderation applied before you read
  • Webhooks on new posts
  • MCP server for agents
  • Free Sandbox to start
Start with one API call

Questions

Frequently asked questions

What developers ask before pulling Instagram data through Juicer.

  • Do I need a Meta developer app or Graph API access?
    No. API lookups run against Juicer's own infrastructure: you pass a username or hashtag and get JSON back. The only Meta login involved is optional: connecting a professional account you manage as a feed source, through Juicer's OAuth, unlocks cheaper syncs and webhooks for that account.
  • Which Instagram lookups are supported?
    On GET /data/posts, Instagram accepts term_type=username (an account's posts and Reels) and term_type=hashtag (public posts using a hashtag). GET /data/profiles resolves usernames to profiles with metrics. Stories and mentions are feed source types: connect the account in a feed and read them through GET /feeds/{id}/posts.
  • Why do hashtag posts have no username?
    Instagram's hashtag API does not expose the poster's username or profile picture, so those fields are null on hashtag results. Posts read from an account you look up or connect carry the poster as usual.
  • Can I read private accounts?
    No. Instagram exposes public content only; a private account returns nothing unless it is connected as your own source.
  • How does pagination work?
    Each call returns one upstream page of results. meta.platforms[] carries has_more and an opaque next_cursor per platform; repeat the same request with cursor=<value> to continue. Cursors are per platform, so a multi-platform request paginates each network independently.
  • What does Instagram cost in credits?
    Reads of already-synced posts are free. A connected Instagram source costs 1 credit per sync; a premium (connection-free) Instagram source costs 3 credits per sync. Sandbox is free; Builder is $99 a month for 750 credits, Scale $499 for 4,500, Platform Partner from $2,500. The API pricing page has the calculator.
  • Is there an MCP server?
    Yes. Juicer's MCP server exposes the Instagram lookups as get_data_posts and get_data_profiles, next to feed, source, moderation, analytics and webhook tools, so an AI agent can pull Instagram content without custom scrapers or OAuth flows. It is available on every API plan, including the free Sandbox. The full reference lives at developers.juicer.io.
  • Can I display the posts instead of building a UI?
    Yes. The same account gives you the Instagram feed widget: connect the account, pick a layout and paste one embed code. Many teams use both, the widget for the marketing site and the API for the product.

Ready to build?

Start pulling Instagram data in minutes

A preview of a Juicer feed widget showing real social media posts