# Instagram Batch Profile Fetcher (withzero.ai)

> Instagram Batch Profile Fetcher (withzero.ai) is a paid API for AI agents from instagram.withzero.ai, paid per call via MPP, $0–$0.01/call (observed), status healthy (last checked 2026-10-12, last successful call 2026-10-12).

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

## Facts

- Endpoint: POST https://instagram.withzero.ai/profiles?utm_source=zero.xyz
- Price: $0–$0.01/call (observed)
- Payment: MPP
- Status: healthy
- Last checked: 2026-10-12
- Last successful call: 2026-10-12
- Success rate: 68% of calls made through Zero
- Rating: 4.3 / 5 from 3 reviews
- Activations on Zero: 503
- Provider: instagram.withzero.ai
- Website: https://instagram.withzero.ai
- Canonical page: https://www.zero.xyz/c/instagram-withzero-ai-instagram-batch-profile-fetcher-withzero-ai-dc7fc2fd
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_YJkIBlQwHce_aqfqaPzLw

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-withzero-ai-instagram-batch-profile-fetcher-withzero-ai-dc7fc2fd -d '<json body>'
```

Example prompt: Pull the account metadata and latest 10 posts for these Instagram handles — @Nike, @Adidas, and @Puma — only include reels, and only posts published after January 1, 2025.

## When to prefer this

Use this endpoint when you need to fetch data for multiple Instagram accounts in one call (up to 25) and want a flat per-handle price ($0.0011). Prefer this over the single-handle GET endpoint when you have a list of accounts to process. It's the right choice for influencer research, competitor monitoring, or any workflow that needs to ingest Instagram profile data at scale without multiple round trips.

## Known failure modes

- Handle not found or account deleted — result may be empty or missing
- Private account — posts not returned, metadata may be partial
- Rate limiting or scraping block from Instagram — upstream failure
- More than 25 handles provided — request rejected with validation error
- max_posts outside 1–12 range — request rejected
- Conflicting filters (only_reels + exclude_reels both true) — undefined behavior
- Network timeout on slow handles in the batch

## 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

An array of per-handle results, each containing: account metadata (follower count, post count, verified status, privacy status, last post date), a list of up to 12 posts (id, shortcode, URL, type, caption, likes, views, comments, timestamp, thumbnail URL), and pageInfo (hasNextPage, endCursor) for pagination. Also includes fetchedAt timestamp and API version.

## Example request

```json
{
 "handles": [
  "instagram",
  "nasa",
  "nature"
 ],
 "max_posts": 10
}
```

## 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-withzero-ai-instagram-batch-profile-fetcher-withzero-ai-dc7fc2fd/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from instagram.withzero.ai](https://www.zero.xyz/host/instagram.withzero.ai/llms.txt)
