# CrowdPull Instagram Scraper

> CrowdPull Instagram Scraper is a paid API for AI agents from crowdpull.click, paid per call via x402, $0.05/call, status unknown (last checked 2026-09-13).

Scrapes public Instagram profiles, hashtags, posts, and search results into structured datasets

## Facts

- Endpoint: POST https://crowdpull.click/api/actors/instagram-scraper/call
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/crowdpull-instagram-scraper-8e95737e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_MX0VDzn6onZmI2rok8MTO

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 crowdpull-instagram-scraper-8e95737e -d '<json body>'
```

Example prompt: Pull the last 50 public posts from Instagram username 'natgeo' and any posts tagged with #wildlife — give me the structured data including captions, likes, and timestamps.

## When to prefer this

Use this endpoint when you need structured data from public Instagram profiles, hashtags, or search results without building your own scraper. Prefer this over generic web scrapers when the target is specifically Instagram content. Best for use cases like competitor analysis, influencer research, hashtag monitoring, or social media dataset construction.

## Known failure modes

- Private or restricted Instagram profiles return no results
- Rate limiting or Instagram anti-bot measures cause empty or partial results
- Invalid username or URL returns an error or empty dataset
- Job timeout if maxPosts is large and waitForFinishSeconds is too short
- Job may return status 'running' if results not ready within waitForFinishSeconds

## How this service works

CrowdPull turns public web pages into useful datasets for marketplaces, housing, reviews, jobs, social posts, drug prices, video, and public records.

## Output

Returns a job token and job object with an ID, status, and resultSetId. The agent can use the resultSetId to retrieve the collected Instagram post data (captions, likes, timestamps, media URLs, profile info) once the job completes.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "input": {
   "type": "object",
   "required": [],
   "properties": {
    "url": {
     "type": "string",
     "description": "Single public URL accepted by the selected source."
    },
    "urls": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "description": "Public URLs accepted by the selected source."
    },
    "query": {
     "type": "string",
     "description": "Search query or keyword."
    },
    "places": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "hashtags": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "location": {
     "type": "string",
     "description": "City, ZIP, state, neighborhood, or source-supported location."
    },
    "maxItems": {
     "type": "integer",
     "default": 25,
     "maximum": 250,
     "minimum": 1
    },
    "maxPosts": {
     "type": "integer",
     "maximum": 250,
     "minimum": 1
    },
    "startUrls": {
     "type": "array",
     "items": {
      "type": "string"
     },
     "description": "Public source URLs to collect from."
    },
    "usernames": {
     "type": "array",
     "items": {
      "type": "string"
     }
    },
    "maxResults": {
     "type": "integer",
     "default": 25,
     "maximum": 250,
     "minimum": 1
    },
    "maxListings": {
     "type": "integer",
     "default": 25,
     "maximum": 250,
     "minimum": 1
    },
    "searchQuery": {
     "type": "string",
     "description": "Search query or keyword."
    },
    "includeDetails": {
     "type": "boolean",
     "default": false
    }
   },
   "description": "Instagram Scraper input. Pass the same public URLs, search terms, filters, and limits you would use on the source page. Extra source-specific fields are forwarded to the runner.",
   "additionalProperties": true
  },
  "options": {
   "type": "object",
   "properties": {
    "build": {
     "type": "string",
     "maxLength": 100,
     "minLength": 1
    },
    "memory": {
     "type": "integer",
     "maximum": 8192,
     "minimum": 128
    },
    "waitForFinishSeconds": {
     "type": "integer",
     "default": 10,
     "maximum": 60,
     "minimum": 0
    }
   },
   "description": "Optional CrowdPull job options. CrowdPull caps each paid job so low-cost agent calls cannot accidentally start a large collection.",
   "additionalProperties": false
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "type": "object",
  "required": [
   "token",
   "job"
  ],
  "properties": {
   "job": {
    "type": "object",
    "required": [
     "id",
     "status"
    ],
    "properties": {
     "id": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "resultSetId": {
      "type": "string"
     }
    },
    "additionalProperties": true
   },
   "token": {
    "type": "string"
   }
  },
  "additionalProperties": false
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/crowdpull-instagram-scraper-8e95737e/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from crowdpull.click](https://www.zero.xyz/host/crowdpull.click/llms.txt)
