# FastSocial Instagram Data API

A read-only REST API for public Instagram data: profiles, posts, reels, stories, highlights, comments, likes, followers, hashtags, locations, audio and search, plus engagement insights and a handle check. One key, one header, clean JSON. Public data only; nothing logs in or posts.

Docs: https://fastsocial.co/instagram-api/docs  
OpenAPI: https://fastsocial.co/instagram-api/openapi.json

## Basics

- Base URL: `https://data.fastsocial.co`
- Auth: send your key in the `X-API-Key` header (or `Authorization: Bearer <key>`). Keys in the query string are rejected.
- All endpoints are `GET` and return JSON: `{"ok": true, "data": {...}, "meta": {...}}`.
- `meta.cache` is `hit`, `miss` or `stale`; `meta.age_seconds` is how old the data is. If Instagram is unreachable you get the last good copy with `meta.stale: true`.
- Credits: each call costs the credits listed on its endpoint. Failed calls and outages are not charged. `GET /v1/usage` is free.
- Headers on every success: `X-Credits-Used`, `X-Credits-Remaining`, `X-Cache`.
- Rate limits per plan: Free 10 requests/minute, Pro 60 requests/minute, Ultra 120 requests/minute. Over the limit you get `429 rate_limited` with a `Retry-After` header.
- Plans: Free $0/month for 50 credits, Pro $9.90/month for 5,000 credits, Ultra $29.90/month for 25,000 credits. Hard limits, no overage billing.

## Pagination

Paged endpoints return `next_cursor`. Pass it back as `cursor` for the next page; `null` means there are no more.

## Errors

Errors return `{"ok": false, "error": {"code": "...", "message": "..."}}`.

| Status | Code | Meaning |
|---|---|---|
| 400 | `invalid_username` | The handle isn't a valid Instagram username. |
| 400 | `invalid_post` | The post URL or shortcode can't be read. |
| 400 | `invalid_id` | The highlight id is malformed. |
| 400 | `invalid_cursor` | The cursor isn't one we issued. Pass next_cursor as is. |
| 401 | `missing_key` | No key sent. Use the X-API-Key header. |
| 401 | `invalid_key` | The key is wrong or disabled. |
| 404 | `not_found` | No account or post with that name. Charged, since it's a real answer. |
| 404 | `no_such_endpoint` | Unknown path. |
| 422 | `private_account` | The account is private, so there's nothing public to return. |
| 429 | `rate_limited` | Too many requests this minute. Wait for Retry-After seconds. |
| 429 | `quota_exceeded` | Monthly credits are used up. Upgrade or wait for the reset. |
| 451 | `opted_out` | The account owner asked to be excluded. |
| 502 | `upstream_error` | Instagram didn't answer. Not charged; retry shortly. |
| 503 | `capacity` | Temporarily at capacity. Not charged; retry shortly. |

## Endpoints

### GET /v1/profile: Get an Instagram profile

Follower, following and post counts, bio, links, category, verification and the HD profile picture of any public account.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |

```bash
curl "https://data.fastsocial.co/v1/profile?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/profile",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "id": "528817151",
    "username": "nasa",
    "full_name": "NASA",
    "biography": "Exploring the universe and our home planet.",
    "external_url": "https://www.nasa.gov",
    "bio_links": [
      "https://www.nasa.gov"
    ],
    "followers": 97000000,
    "following": 80,
    "posts_count": 4300,
    "is_private": false,
    "is_verified": true,
    "is_business": true,
    "category": "Government organization",
    "avatar_url": "https://scontent.cdninstagram.com/…/avatar.jpg"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/user-id: Instagram username to user id

The numeric user id for a handle. Every endpoint also accepts either one directly, so you rarely need this.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |

```bash
curl "https://data.fastsocial.co/v1/user-id?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/user-id",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "id": "528817151",
    "username": "nasa"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/username: Instagram user id to username

The current handle for a numeric user id, which still works after the account renames itself.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `user_id` | yes | Numeric Instagram user id. Pass this or username. |

```bash
curl "https://data.fastsocial.co/v1/username?user_id=528817151" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/username",
    params={"user_id": "528817151"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "id": "528817151",
    "username": "nasa"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/check: Check if an Instagram handle exists and is public

Does this handle exist, and is it public? States: ok, not_found, private, deactivated, memorialized, age_restricted, restricted_minor. Exact match only, so a typo never resolves to someone else.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | yes | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |

```bash
curl "https://data.fastsocial.co/v1/check?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/check",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "exists": true,
    "public": true,
    "state": "ok",
    "followers": 97000000
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/posts: Get recent Instagram posts

12 posts per page, newest first, with likes, comments, views, caption and media URLs. Page with cursor.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |
| `cursor` | no | next_cursor from the previous page of the same request. |

```bash
curl "https://data.fastsocial.co/v1/posts?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/posts",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "user_id": "528817151",
    "posts": [
      {
        "shortcode": "C8x1abcDEF0",
        "url": "https://www.instagram.com/p/C8x1abcDEF0/",
        "taken_at": 1758600000,
        "format": "reel",
        "likes": 412000,
        "comments": 1900,
        "views": 5400000,
        "caption": "Sunrise over the Pacific, seen from the station.",
        "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
        "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
        "pinned": false,
        "owner_username": "nasa",
        "owner_id": "528817151"
      }
    ],
    "next_cursor": "QVFE…",
    "is_private": false
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/reels: Get an account's Instagram reels

The reels tab of a public account: play counts, likes, comments, captions and video URLs. Page with cursor.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |
| `cursor` | no | next_cursor from the previous page of the same request. |

```bash
curl "https://data.fastsocial.co/v1/reels?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/reels",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "user_id": "528817151",
    "posts": [
      {
        "shortcode": "C8x1abcDEF0",
        "url": "https://www.instagram.com/p/C8x1abcDEF0/",
        "taken_at": 1758600000,
        "format": "reel",
        "likes": 412000,
        "comments": 1900,
        "views": 5400000,
        "caption": "Sunrise over the Pacific, seen from the station.",
        "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
        "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
        "pinned": false,
        "owner_username": "nasa",
        "owner_id": "528817151"
      }
    ],
    "next_cursor": "QVFE…",
    "is_private": false
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/tagged: Get posts an account is tagged in

Public posts by other accounts that tag this account. Useful for UGC, brand mentions and influencer tracking.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |
| `cursor` | no | next_cursor from the previous page of the same request. |

```bash
curl "https://data.fastsocial.co/v1/tagged?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/tagged",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "user_id": "528817151",
    "posts": [
      {
        "shortcode": "C8x1abcDEF0",
        "url": "https://www.instagram.com/p/C8x1abcDEF0/",
        "taken_at": 1758600000,
        "format": "reel",
        "likes": 412000,
        "comments": 1900,
        "views": 5400000,
        "caption": "Sunrise over the Pacific, seen from the station.",
        "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
        "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
        "pinned": false,
        "owner_username": "nasa",
        "owner_id": "528817151"
      }
    ],
    "next_cursor": "QVFE…",
    "is_private": false
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/post: Get one Instagram post or reel

Likes, comments, views, caption, owner and media URLs for a single post, reel or IGTV video.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `url` | no | Post, reel or IGTV URL. Pass this or shortcode. |
| `shortcode` | no | The code in the post URL (instagram.com/p/<code>/). |

```bash
curl "https://data.fastsocial.co/v1/post?url=https://www.instagram.com/reel/DdhFkS7KGkZ/" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/post",
    params={"url": "https://www.instagram.com/reel/DdhFkS7KGkZ/"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "shortcode": "C8x1abcDEF0",
    "url": "https://www.instagram.com/p/C8x1abcDEF0/",
    "taken_at": 1758600000,
    "format": "reel",
    "likes": 412000,
    "comments": 1900,
    "views": 5400000,
    "caption": "Sunrise over the Pacific, seen from the station.",
    "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
    "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
    "pinned": false,
    "owner_username": "nasa",
    "owner_id": "528817151"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/media: Download URLs for a post, reel or carousel

Direct image and video file URLs for every slide of a post, in the best quality available. URLs are signed Instagram CDN links that expire after a few hours.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `url` | no | Post, reel or IGTV URL. Pass this or shortcode. |
| `shortcode` | no | The code in the post URL (instagram.com/p/<code>/). |

```bash
curl "https://data.fastsocial.co/v1/media?url=https://www.instagram.com/reel/DdhFkS7KGkZ/" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/media",
    params={"url": "https://www.instagram.com/reel/DdhFkS7KGkZ/"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "shortcode": "C8x1abcDEF0",
    "owner_username": "nasa",
    "files": [
      {
        "type": "video",
        "url": "https://www.instagram.com/p/C8x1abcDEF0/",
        "thumbnail_url": "https://scontent.cdninstagram.com/…/thumb.jpg"
      }
    ]
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/comments: Get comments on an Instagram post

The top comments on a post with author, text, time, likes and reply count, plus the total comment count.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `url` | no | Post, reel or IGTV URL. Pass this or shortcode. |
| `shortcode` | no | The code in the post URL (instagram.com/p/<code>/). |

```bash
curl "https://data.fastsocial.co/v1/comments?url=https://www.instagram.com/reel/DdhFkS7KGkZ/" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/comments",
    params={"url": "https://www.instagram.com/reel/DdhFkS7KGkZ/"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "shortcode": "C8x1abcDEF0",
    "total": 581,
    "comments": 1900,
    "next_cursor": "QVFE…"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/comment-replies: Get replies to an Instagram comment

Replies under one comment. Page with cursor.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `url` | no | Post, reel or IGTV URL. Pass this or shortcode. |
| `shortcode` | no | The code in the post URL (instagram.com/p/<code>/). |
| `comment_id` | yes | id of a comment from /v1/comments. |
| `cursor` | no | next_cursor from the previous page of the same request. |

```bash
curl "https://data.fastsocial.co/v1/comment-replies?url=https://www.instagram.com/reel/DdhFkS7KGkZ/&comment_id=17935912383123296" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/comment-replies",
    params={"url": "https://www.instagram.com/reel/DdhFkS7KGkZ/", "comment_id": "17935912383123296"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "shortcode": "C8x1abcDEF0",
    "total": 581,
    "comments": 1900,
    "next_cursor": "QVFE…"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/likers: Get accounts that liked an Instagram post

A sample of accounts that liked a post, plus the total like count.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `url` | no | Post, reel or IGTV URL. Pass this or shortcode. |
| `shortcode` | no | The code in the post URL (instagram.com/p/<code>/). |

```bash
curl "https://data.fastsocial.co/v1/likers?url=https://www.instagram.com/reel/DdhFkS7KGkZ/" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/likers",
    params={"url": "https://www.instagram.com/reel/DdhFkS7KGkZ/"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "user_id": "528817151",
    "total": 581,
    "users": [
      {
        "id": "528817151",
        "username": "nasa",
        "full_name": "NASA",
        "is_private": false,
        "is_verified": true,
        "avatar_url": "https://scontent.cdninstagram.com/…/avatar.jpg"
      }
    ],
    "next_cursor": "QVFE…"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/insights: Instagram engagement rate calculator

Engagement rate (mean and median), posting cadence, format mix, best posting hours (UTC) and a percentile against the Instagram Benchmarks report, from the latest 12 posts. Pinned posts are excluded.

Cost: 2 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |

```bash
curl "https://data.fastsocial.co/v1/insights?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/insights",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "followers": 97000000,
    "follower_bucket": "1m+",
    "sample_size": 12,
    "confidence": "good",
    "avg_likes": 412000.0,
    "avg_comments": 1900.0,
    "engagement_rate_pct": 0.427,
    "engagement_rate_median_pct": 0.391,
    "posts_per_week": 9.1,
    "format_share": {
      "reel": 0.42,
      "carousel": 0.33,
      "image": 0.25
    },
    "best_hours_utc": [
      {
        "hour_utc": 16,
        "posts": 3,
        "score": 1.21
      }
    ],
    "last_post_at": 1758600000,
    "benchmark_percentile": 38,
    "benchmark_month": "2026-10"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 2,
    "credits_remaining": 4812
  }
}
```

### GET /v1/followers: Get an account's followers

Public follower list of a public account, with the total follower count. Page with cursor where available.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |
| `cursor` | no | next_cursor from the previous page of the same request. |

```bash
curl "https://data.fastsocial.co/v1/followers?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/followers",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "user_id": "528817151",
    "total": 581,
    "users": [
      {
        "id": "528817151",
        "username": "nasa",
        "full_name": "NASA",
        "is_private": false,
        "is_verified": true,
        "avatar_url": "https://scontent.cdninstagram.com/…/avatar.jpg"
      }
    ],
    "next_cursor": "QVFE…"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/following: Get accounts an account follows

Who a public account follows, with the total. Page with cursor.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |
| `cursor` | no | next_cursor from the previous page of the same request. |

```bash
curl "https://data.fastsocial.co/v1/following?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/following",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "user_id": "528817151",
    "total": 581,
    "users": [
      {
        "id": "528817151",
        "username": "nasa",
        "full_name": "NASA",
        "is_private": false,
        "is_verified": true,
        "avatar_url": "https://scontent.cdninstagram.com/…/avatar.jpg"
      }
    ],
    "next_cursor": "QVFE…"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/similar: Find similar Instagram accounts

Accounts Instagram considers related to this one. Handy for competitor research and influencer discovery.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |

```bash
curl "https://data.fastsocial.co/v1/similar?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/similar",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "user_id": "528817151",
    "total": 581,
    "users": [
      {
        "id": "528817151",
        "username": "nasa",
        "full_name": "NASA",
        "is_private": false,
        "is_verified": true,
        "avatar_url": "https://scontent.cdninstagram.com/…/avatar.jpg"
      }
    ],
    "next_cursor": "QVFE…"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/stories: View Instagram stories anonymously

Stories posted in the last 24 hours by a public account, with image and video URLs. Signed CDN links that expire after a few hours.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |

```bash
curl "https://data.fastsocial.co/v1/stories?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/stories",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "count": 3,
    "stories": [
      {
        "id": "3474581261890123456",
        "is_video": false,
        "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
        "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
        "taken_at": 1758600000,
        "expires_at": 1758686400,
        "width": 1080,
        "height": 1920
      }
    ]
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/highlights: Get Instagram story highlights

Title, cover image and item count for each highlight. Pass an id to /v1/highlight for its items.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `username` | no | Instagram handle, with or without @. A profile URL also works. Pass this or user_id. |
| `user_id` | no | Numeric Instagram user id. Pass this or username. |

```bash
curl "https://data.fastsocial.co/v1/highlights?username=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/highlights",
    params={"username": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "count": 3,
    "highlights": [
      {
        "id": "highlight:17960293069066406",
        "title": "Artemis",
        "cover_url": "https://scontent.cdninstagram.com/…/cover.jpg",
        "item_count": 24
      }
    ]
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/highlight: Get the items in one highlight

Every photo and video inside one highlight, with signed CDN URLs.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `id` | yes | For example highlight:17960293069066406. |

```bash
curl "https://data.fastsocial.co/v1/highlight?id=highlight:17960293069066406" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/highlight",
    params={"id": "highlight:17960293069066406"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "id": "highlight:17960293069066406",
    "count": 3,
    "items": [
      {
        "id": "3474581261890123456",
        "is_video": false,
        "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
        "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
        "taken_at": 1758600000,
        "expires_at": 1758686400,
        "width": 1080,
        "height": 1920
      }
    ]
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/search: Search Instagram accounts, hashtags and places

One search box, three result types: matching accounts, hashtags (with post counts) and places (with location ids).

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `q` | yes | Search text. |

```bash
curl "https://data.fastsocial.co/v1/search?q=nasa" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/search",
    params={"q": "nasa"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "query": "nasa",
    "users": [
      {
        "id": "528817151",
        "username": "nasa",
        "full_name": "NASA",
        "is_private": false,
        "is_verified": true,
        "avatar_url": "https://scontent.cdninstagram.com/…/avatar.jpg"
      }
    ],
    "hashtags": [
      {
        "id": "528817151",
        "name": "NASA Johnson Space Center",
        "media_count": 28604
      }
    ],
    "places": [
      {
        "id": "528817151",
        "name": "NASA Johnson Space Center",
        "address": "2101 E NASA Pkwy",
        "city": "Houston, TX",
        "lat": 29.5519,
        "lng": -95.0981
      }
    ]
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/hashtag: Get posts for an Instagram hashtag

Recent posts under a hashtag and its total post count. Page with cursor.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `tag` | yes | Hashtag, with or without #. |
| `cursor` | no | next_cursor from the previous page of the same request. |

```bash
curl "https://data.fastsocial.co/v1/hashtag?tag=space" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/hashtag",
    params={"tag": "space"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "tag": "space",
    "hashtag": {
      "id": "528817151",
      "name": "NASA Johnson Space Center",
      "media_count": 28604
    },
    "posts": [
      {
        "shortcode": "C8x1abcDEF0",
        "url": "https://www.instagram.com/p/C8x1abcDEF0/",
        "taken_at": 1758600000,
        "format": "reel",
        "likes": 412000,
        "comments": 1900,
        "views": 5400000,
        "caption": "Sunrise over the Pacific, seen from the station.",
        "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
        "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
        "pinned": false,
        "owner_username": "nasa",
        "owner_id": "528817151"
      }
    ],
    "next_cursor": "QVFE…"
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/place: Get an Instagram location

Name, category, address, city, phone, website and post count of a location page. Find ids with /v1/search.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `id` | yes | Numeric location id. |

```bash
curl "https://data.fastsocial.co/v1/place?id=311693088" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/place",
    params={"id": "311693088"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "id": "311693088",
    "name": "NASA Johnson Space Center",
    "category": "Government organization",
    "address": "2101 E NASA Pkwy",
    "city": "Houston, TX",
    "zip": "77058",
    "lat": 29.5519,
    "lng": -95.0981,
    "phone": "+1 281-483-0123",
    "website": "https://www.nasa.gov",
    "media_count": 28604
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/place-posts: Get posts tagged at an Instagram location

Recent posts geotagged at a location. Page with cursor.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `id` | yes | Numeric location id. |
| `cursor` | no | next_cursor from the previous page of the same request. |

```bash
curl "https://data.fastsocial.co/v1/place-posts?id=311693088" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/place-posts",
    params={"id": "311693088"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "user_id": "528817151",
    "posts": [
      {
        "shortcode": "C8x1abcDEF0",
        "url": "https://www.instagram.com/p/C8x1abcDEF0/",
        "taken_at": 1758600000,
        "format": "reel",
        "likes": 412000,
        "comments": 1900,
        "views": 5400000,
        "caption": "Sunrise over the Pacific, seen from the station.",
        "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
        "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
        "pinned": false,
        "owner_username": "nasa",
        "owner_id": "528817151"
      }
    ],
    "next_cursor": "QVFE…",
    "is_private": false
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/audio: Get an Instagram audio track and the reels using it

Title, artist, duration and a preview URL for an original sound or song, plus reels that use it. Audio ids come from reels.

Cost: 1 credit per call.

| Parameter | Required | Description |
|---|---|---|
| `id` | yes | Numeric audio id. |

```bash
curl "https://data.fastsocial.co/v1/audio?id=28784844067777520" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/audio",
    params={"id": "28784844067777520"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "audio": {
      "id": "28784844067777520",
      "title": "Artemis",
      "artist": "Imagine Dragons",
      "duration_ms": 204345,
      "is_original": false,
      "is_explicit": false,
      "cover_url": "https://scontent.cdninstagram.com/…/cover.jpg",
      "audio_url": "https://scontent.cdninstagram.com/…/audio.mp4"
    },
    "posts": [
      {
        "shortcode": "C8x1abcDEF0",
        "url": "https://www.instagram.com/p/C8x1abcDEF0/",
        "taken_at": 1758600000,
        "format": "reel",
        "likes": 412000,
        "comments": 1900,
        "views": 5400000,
        "caption": "Sunrise over the Pacific, seen from the station.",
        "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
        "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
        "pinned": false,
        "owner_username": "nasa",
        "owner_id": "528817151"
      }
    ]
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 1,
    "credits_remaining": 4812
  }
}
```

### GET /v1/audio-search: Search Instagram music and sounds

Find songs and sounds by title or artist, with ids you can pass to /v1/audio.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `q` | yes | Search text. |

```bash
curl "https://data.fastsocial.co/v1/audio-search?q=believer" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/audio-search",
    params={"q": "believer"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "query": "nasa",
    "tracks": [
      {
        "id": "528817151",
        "title": "Artemis",
        "artist": "Imagine Dragons",
        "duration_ms": 204345,
        "is_original": false,
        "is_explicit": false,
        "cover_url": "https://scontent.cdninstagram.com/…/cover.jpg",
        "audio_url": "https://scontent.cdninstagram.com/…/audio.mp4"
      }
    ]
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/reels-search: Search Instagram reels by keyword

Reels matching a keyword. Page with cursor.

Cost: 3 credits per call.

| Parameter | Required | Description |
|---|---|---|
| `q` | yes | Search text. |
| `cursor` | no | next_cursor from the previous page of the same request. |

```bash
curl "https://data.fastsocial.co/v1/reels-search?q=space" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/reels-search",
    params={"q": "space"},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

Response:

```json
{
  "ok": true,
  "data": {
    "username": "nasa",
    "user_id": "528817151",
    "posts": [
      {
        "shortcode": "C8x1abcDEF0",
        "url": "https://www.instagram.com/p/C8x1abcDEF0/",
        "taken_at": 1758600000,
        "format": "reel",
        "likes": 412000,
        "comments": 1900,
        "views": 5400000,
        "caption": "Sunrise over the Pacific, seen from the station.",
        "image_url": "https://scontent.cdninstagram.com/…/1080.jpg",
        "video_url": "https://scontent.cdninstagram.com/…/clip.mp4",
        "pinned": false,
        "owner_username": "nasa",
        "owner_id": "528817151"
      }
    ],
    "next_cursor": "QVFE…",
    "is_private": false
  },
  "meta": {
    "cache": "hit",
    "age_seconds": 812,
    "stale": false,
    "credits": 3,
    "credits_remaining": 4812
  }
}
```

### GET /v1/usage: Your usage this month

Credits used and left this month.

Cost: 0 credits per call.

```bash
curl "https://data.fastsocial.co/v1/usage" \
  -H "X-API-Key: $FASTSOCIAL_API_KEY"
```

```python
import os
import requests

r = requests.get(
    "https://data.fastsocial.co/v1/usage",
    params={},
    headers={"X-API-Key": os.environ["FASTSOCIAL_API_KEY"]},
    timeout=30,
)
r.raise_for_status()
print(r.json()["data"])
```

## Use policy

Public data only. No follower or liker lists. Don't use it to track or harass people, to build bulk datasets of individuals, or to collect data about minors. Account owners can opt out, after which the API returns 451 for that account.
