# Instagram Batch Profile Fetcher (Sync, Web Unlocker)

> Instagram Batch Profile Fetcher (Sync, Web Unlocker) is a paid API for AI agents from instagram-data.withzero.ai, paid per call via MPP, price unknown, status unknown (last checked 2026-09-15).

Concurrently fetches account metadata and up to 12 recent posts for 1–25 Instagram handles in a single synchronous request, with optional filters for reels and time range.

## Facts

- Endpoint: POST https://instagram-data.withzero.ai/profiles
- Price: price unknown
- Payment: MPP
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 2
- Provider: instagram-data.withzero.ai
- Website: https://instagram-data.withzero.ai
- Canonical page: https://www.zero.xyz/c/instagram-data-withzero-ai-instagram-batch-profile-fetcher-sync-web-3a27f25e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_kg53uhtWOH5nJ1m_nBEPi

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-batch-profile-fetcher-sync-web-3a27f25e -d '<json body>'
```

Example prompt: Can you pull the Instagram profile data and latest posts for these 5 accounts — @natgeo, @nasa, @nike, @apple, and @netflix — and only include reels posted after January 1, 2025?

## When to prefer this

Choose this endpoint when you need to fetch Instagram profile and post data for multiple accounts (up to 25) in a single synchronous call, especially when you want near-real-time results without waiting for an async job. It is ideal for influencer research, competitive monitoring, content audits, or bulk account enrichment workflows. Prefer this over the single-handle endpoint when batching is needed for efficiency and cost-effectiveness at $0.0011 per handle.

## Known failure modes

- Handle not found or account deleted — result may be empty or omitted
- Private account — posts array may be empty, account metadata still returned
- Exceeding 25 handles in a single request — validation error
- Invalid since_ts format — posts may not be filtered correctly
- Both only_reels and exclude_reels set to true simultaneously — undefined behavior
- Rate limiting or Web Unlocker block — upstream fetch failure for one or more handles
- Network timeout for slow Instagram responses — partial results possible

## How this service works

Batch fetch 1–25 handles concurrently (sync, Web Unlocker). Each result carries account metadata + the first ~12 posts + pageInfo. Filters: since_ts, max_posts (1–12), only_reels, exclude_reels. Flat $0.0011 per handle.

## Output

Returns a structured JSON object with a results array, one entry per handle, each containing: account metadata (follower count, post count, verified status, private status, last post date), an array of up to 12 recent posts (with id, shortcode, URL, type, caption, like/comment/view counts, thumbnail, and timestamp), and pageInfo (hasNextPage, endCursor) for pagination. Also includes fetchedAt timestamp and apiVersion.

## Example request

```json
{
 "handles": [
  "natgeo",
  "nasa",
  "nike",
  "apple",
  "netflix"
 ],
 "since_ts": 1735689600,
 "max_posts": 12,
 "only_reels": true
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "handles"
 ],
 "properties": {
  "handles": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "maxItems": 25,
   "minItems": 1,
   "description": "Batch of 1–25 Instagram handles (with or without @)."
  },
  "since_ts": {
   "type": "integer",
   "description": "Unix seconds watermark — keep only posts with timestamp > since_ts."
  },
  "max_posts": {
   "type": "integer",
   "maximum": 12,
   "minimum": 1,
   "description": "Max posts per handle (default 12, cap 12)."
  },
  "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",
  "fetchedAt",
  "results"
 ],
 "properties": {
  "source": {
   "enum": [
    "sync"
   ],
   "type": "string"
  },
  "results": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "handle",
     "account",
     "posts",
     "pageInfo"
    ],
    "properties": {
     "error": {
      "type": "string"
     },
     "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"
     },
     "account": {
      "type": "object",
      "required": [
       "isPrivate",
       "followerCount",
       "postCount",
       "isVerified",
       "lastPostAt"
      ],
      "properties": {
       "isPrivate": {
        "type": "boolean"
       },
       "postCount": {
        "type": "number"
       },
       "isVerified": {
        "type": "boolean"
       },
       "lastPostAt": {
        "type": "string",
        "nullable": true
       },
       "followerCount": {
        "type": "number"
       }
      },
      "additionalProperties": false
     },
     "pageInfo": {
      "type": "object",
      "required": [
       "hasNextPage",
       "endCursor"
      ],
      "properties": {
       "endCursor"
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/instagram-data-withzero-ai-instagram-batch-profile-fetcher-sync-web-3a27f25e/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)
