Skip to content
Browsabledocs
Staging API reference · Requests use https://api-ingress-worker-staging.browsable-staging.workers.dev
Documentation Instagram Profile Download API
Markdown ↗

Instagram Profile Download API

Export a public Instagram profile as a ZIP file with photos, reels, videos, captions, post metadata, manifest.json, and posts.csv. Authenticated runs are recommended in async mode and pricing depends on your account. Standard pricing is 80 credits for up to 1,000 posts, plus 10 credits for each additional started 1,000 posts. Grandfathered accounts retain 40 credits plus 5 per additional 1,000 posts. Before the new pricing launches, all accounts retain the original rates.

POST /v1/instagram/profile-download

Canonical execution route: /v1/tasks/instagram-profile-download/runs. For the live task contract, inspect GET /v1/tasks/instagram-profile-download.

Execution notes

  • Use authenticated API access for full-profile exports.
  • Async execution is recommended for large profiles.
  • The task catalogue shows your account’s starting price. The final charge depends on the posts included in the ZIP.
  • Set maxPosts to cap the export; omit it to attempt the full public profile.
  • Marketing-site free exports are capped separately to the first 20 posts and do not use this API route.

Parameters

Parameter Type Required Description
profile string Yes Instagram username, @handle, or full profile URL.
maxPosts number No Maximum number of posts to include. Omit to attempt the full public profile.
_run.async boolean No Set to true to return immediately with a run envelope and poll later.

Response

JSON
{
  "run_id": "00000000-0000-4000-8000-000000000001",
  "task_key": "instagram-profile-download",
  "task_name": "Instagram Profile Download",
  "run_status": "succeeded",
  "status_url": "/v1/runs/00000000-0000-4000-8000-000000000001",
  "result": {
    "success": true,
    "export_id": "054b71a5-9971-49ee-9470-2fe863901a44",
    "status": "completed",
    "file_name": "natgeo.zip",
    "download_url": "https://...",
    "download_url_expires_at": "2026-04-05T11:55:00.000Z",
    "expires_at": "2026-04-05T11:55:00.000Z",
    "truncated": false,
    "profile": {
      "id": "787132",
      "username": "natgeo",
      "full_name": "National Geographic",
      "is_private": false,
      "total_posts": 1000,
      "profile_pic_url": "https://..."
    },
    "result_summary": {
      "postsDiscovered": 84,
      "mediaDiscovered": 120,
      "estimatedBytes": 456789123,
      "downloadedFiles": 120,
      "failedFiles": 0,
      "skippedFiles": 0,
      "truncated": false
    }
  },
  "error": null
}
Result Fields
download_url - Temporary signed ZIP URL.
download_url_expires_at - Expiry for the signed download URL.
expires_at - Export artifact retention expiry.
truncated - Whether the final ZIP is partial.
result_summary - Counts for posts, media, downloads, skips, and estimated bytes.

Code Examples

curl -X POST "https://api-ingress-worker-staging.browsable-staging.workers.dev/v1/instagram/profile-download" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"profile":"natgeo","maxPosts":1000,"_run":{"async":true}}'

Try it Out

API Playground

Stored locally only

Instagram username or full profile URL

Maximum posts to include; omit for full profile

Error Codes

400 Bad Request
The JSON body does not match the task input schema.
401 Unauthorized
Missing or invalid API key.
403 Forbidden
Your account cannot execute the task, usually because of access or credits.
429 / upstream throttling
Instagram may temporarily limit full-profile exports. Poll the run and inspect the final error or partial ZIP result.