# Instagram Full Post History Fetcher (BrightData Async)

> Instagram Full Post History Fetcher (BrightData Async) is a paid API for AI agents from instagram-data.withzero.ai, paid per call via MPP, $0.36/post, status unknown (last checked 2026-09-15).

Fetches the complete post history for an Instagram handle using BrightData's async dataset pipeline, with metered per-post billing up to 1000 posts.

## Facts

- Endpoint: POST https://instagram-data.withzero.ai/full-profile
- Price: $0.36/post
- Payment: MPP
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Provider: instagram-data.withzero.ai
- Website: https://instagram-data.withzero.ai
- Canonical page: https://www.zero.xyz/c/instagram-data-withzero-ai-instagram-full-post-history-fetcher-9f57df3b
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_PxzX82QKHQf0AdYM3HPxC

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability instagram-data-withzero-ai-instagram-full-post-history-fetcher-9f57df3b -d '<json body>'
```

Example prompt: Pull the full post history for the Instagram handle @natgeo — up to 500 posts, photos and carousels only (no reels), going back only to posts after January 1st 2024.

## When to prefer this

Choose this endpoint when you need the full or deep post history of a single Instagram handle (up to 1000 posts) and can tolerate an async trigger-poll-download workflow. It is better than the single-handle sync endpoint when you need more than ~12 posts, and better than the batch endpoint when you only need one account but want deep history. The per-post metered billing ($0.0018/post) means you only pay for what is actually delivered.

## Known failure modes

- Handle not found or account is private — returns empty posts array with resultCount 0, billed $0
- BRIGHTDATA_IG_POSTS_DATASET_ID not configured — returns server configuration error
- max_posts exceeds 1000 or is below 1 — returns 400 validation error
- Invalid since_ts value — returns 400 validation error
- BrightData upstream timeout or dataset unavailability — async poll may fail or stall
- Conflicting only_reels and exclude_reels flags both set to true — undefined behavior or error

## How this service works

Fetch a handle's FULL post history via the BrightData Instagram Posts dataset (async Web Scraper: trigger → poll → download). Metered: buyer authorizes up to $0.36 (200 posts × $0.0018) and is billed $0.0018 per post actually delivered (0 posts → free). Body: handle (required), max_posts (1–200, default 100), since_ts, only_reels, exclude_reels. Requires BRIGHTDATA_IG_POSTS_DATASET_ID to be configured.

## Output

Returns an array of up to 1000 post objects for the requested Instagram handle, each containing post ID, shortcode, URL, media type (photo/video/carousel/reel), caption, like count, comment count, view count, thumbnail URL, and timestamps. Also includes total result count, handle, source mode, and optional snapshot ID for the async job.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "handle"
 ],
 "properties": {
  "handle": {
   "type": "string",
   "description": "Instagram handle (with or without @) to fetch full history for."
  },
  "since_ts": {
   "type": "integer",
   "description": "Unix seconds watermark — keep only posts with timestamp > since_ts."
  },
  "max_posts": {
   "type": "integer",
   "maximum": 200,
   "minimum": 1,
   "description": "Max posts to fetch (default 100, cap 200)."
  },
  "only_reels": {
   "type": "boolean",
   "description": "Keep only reels."
  },
  "exclude_reels": {
   "type": "boolean",
   "description": "Drop reels."
  }
 },
 "additionalProperties": false
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "apiVersion",
  "source",
  "handle",
  "resultCount",
  "posts"
 ],
 "properties": {
  "posts": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "id",
     "shortcode",
     "url",
     "type",
     "isVideo",
     "caption",
     "timestamp",
     "takenAt",
     "likes",
     "comments",
     "views",
     "thumbnailUrl"
    ],
    "properties": {
     "id": {
      "type": "string"
     },
     "url": {
      "type": "string"
     },
     "type": {
      "enum": [
       "photo",
       "video",
       "carousel",
       "reel"
      ],
      "type": "string"
     },
     "likes": {
      "type": "number",
      "nullable": true
     },
     "views": {
      "type": "number",
      "nullable": true
     },
     "caption": {
      "type": "string"
     },
     "isVideo": {
      "type": "boolean"
     },
     "takenAt": {
      "type": "string"
     },
     "comments": {
      "type": "number",
      "nullable": true
     },
     "shortcode": {
      "type": "string"
     },
     "timestamp": {
      "type": "number"
     },
     "thumbnailUrl": {
      "type": "string",
      "nullable": true
     }
    },
    "additionalProperties": false
   }
  },
  "handle": {
   "type": "string"
  },
  "source": {
   "enum": [
    "async"
   ],
   "type": "string"
  },
  "apiVersion": {
   "enum": [
    1
   ],
   "type": "number"
  },
  "snapshotId": {
   "type": "string"
  },
  "resultCount": {
   "type": "number"
  }
 },
 "additionalProperties": false
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/instagram-data-withzero-ai-instagram-full-post-history-fetcher-9f57df3b/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from instagram-data.withzero.ai](https://www.zero.xyz/host/instagram-data.withzero.ai/llms.txt)
