Browse the API docs
Endpoint reference

View Tracker: Raw (manage it yourself)

The Crayo View Tracker raw endpoints read a profile, post, feed, comment page or follower list live from Instagram, YouTube, TikTok, Twitter or Facebook for 1 tracker credit per request. You call, you schedule and you store the readings.

Raw: you call, you schedule, you store. Managed: we refresh on your cadence, keep every reading, and push webhooks. Same credits either way.

Look up a profile

GET/v1/view-tracker/raw/{platform}/profile

Reads an account live and returns the shared profile object: followers, following, post count, bio and links. Works on all five platforms. Use it to resolve a handle before you track it, or as your own scheduled poll.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramyoutubetiktoktwitterfacebook
urlquerystringNoProfile URL. Send url or handle; one of the two is required. Must belong to the platform in the path.
handlequerystringNoProfile handle without the @, instead of url.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/profile?url=https%3A%2F%2Fwww.instagram.com%2Fmornings.with.ada%2F" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "profile": {
    "id": "58291034577",
    "username": "mornings.with.ada",
    "display_name": "Ada | Morning routines",
    "url": "https://www.instagram.com/mornings.with.ada/",
    "bio": "Three habits a week that make your mornings easier.",
    "avatar_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg",
    "is_verified": false,
    "is_private": false,
    "external_url": "https://example.com/mornings",
    "links": [
      {
        "title": "Newsletter",
        "url": "https://example.com/mornings"
      }
    ],
    "followers_count": 182400,
    "following_count": 312,
    "content_count": 418,
    "total_likes": null,
    "observed_at": "2026-10-14T09:12:44.000Z",
    "source": "live"
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

Instagram profile posts

GET/v1/view-tracker/raw/instagram/profile/posts

Returns the newest feed posts of an Instagram profile with the profile that owns them. One request for one page: pass limit to choose the page size and cursor to continue. Counts are the platform's numbers right now.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
urlquerystringNoProfile URL. Send url or handle; one of the two is required. Must belong to the platform in the path.
handlequerystringNoProfile handle without the @, instead of url.
limitqueryintegerNoHow many items to return. 1 to 200.default 24
cursorquerystringNoThe pagination.next_cursor of the previous page of items, passed back unchanged. It only works for the same target and route, from the same account.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/profile/posts?url=https%3A%2F%2Fwww.instagram.com%2Fmornings.with.ada%2F" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "profile": {
    "id": "58291034577",
    "username": "mornings.with.ada",
    "display_name": "Ada | Morning routines",
    "url": "https://www.instagram.com/mornings.with.ada/",
    "bio": "Three habits a week that make your mornings easier.",
    "avatar_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg",
    "is_verified": false,
    "is_private": false,
    "external_url": "https://example.com/mornings",
    "links": [
      {
        "title": "Newsletter",
        "url": "https://example.com/mornings"
      }
    ],
    "followers_count": 182400,
    "following_count": 312,
    "content_count": 418,
    "total_likes": null,
    "observed_at": "2026-10-14T09:12:44.000Z",
    "source": "live"
  },
  "items": [
    {
      "content_id": "3412345678901234567",
      "shortcode": "C9xAbCdEfGh",
      "url": "https://www.instagram.com/reel/C9xAbCdEfGh/",
      "play_count": 1284500,
      "view_count": 1284500,
      "like_count": 96210,
      "comment_count": 1430,
      "share_count": 8120,
      "save_count": 21480,
      "create_time": 1760250000,
      "caption": "Three habits that quietly ruin your mornings",
      "title": null,
      "duration": 31.4,
      "product_type": "clips",
      "video_url": null,
      "thumbnail_url": "https://cdn.example.com/thumbs/C9xAbCdEfGh.jpg",
      "owner": {
        "id": "58291034577",
        "username": "mornings.with.ada",
        "full_name": "Ada | Morning routines",
        "is_verified": false,
        "profile_pic_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg"
      },
      "audio": {
        "id": "1203948572",
        "artist": "mornings.with.ada",
        "song": "Original audio",
        "is_original": true
      },
      "is_video": true,
      "is_sponsored": false,
      "is_pinned": false,
      "tags": [
        "morningroutine",
        "habits"
      ],
      "images": null,
      "observed_at": "2026-10-14T09:12:44.000Z",
      "source": "live"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "vtc1.k3Jx9Qm2Lw8aTn0ZpR5dYvUe.4f1c9e07a2b6"
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

Profile reels

GET/v1/view-tracker/raw/{platform}/profile/reels

Returns the newest reels of an Instagram profile or Facebook page with the profile that owns them. One request for one page: pass limit to choose the page size and cursor to continue. Counts are the platform's numbers right now.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
  • Facebook reels come back without likes, comments or dates: like_count, comment_count and create_time are null on every item, and limit is ignored. Look a reel up with the post endpoint to fill them in.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramfacebook
urlquerystringNoProfile URL. Send url or handle; one of the two is required. Must belong to the platform in the path.
handlequerystringNoProfile handle without the @, instead of url.
limitqueryintegerNoHow many items to return. 1 to 200.default 24
cursorquerystringNoThe pagination.next_cursor of the previous page of items, passed back unchanged. It only works for the same target and route, from the same account.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/profile/reels?url=https%3A%2F%2Fwww.instagram.com%2Fmornings.with.ada%2F" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "profile": {
    "id": "58291034577",
    "username": "mornings.with.ada",
    "display_name": "Ada | Morning routines",
    "url": "https://www.instagram.com/mornings.with.ada/",
    "bio": "Three habits a week that make your mornings easier.",
    "avatar_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg",
    "is_verified": false,
    "is_private": false,
    "external_url": "https://example.com/mornings",
    "links": [
      {
        "title": "Newsletter",
        "url": "https://example.com/mornings"
      }
    ],
    "followers_count": 182400,
    "following_count": 312,
    "content_count": 418,
    "total_likes": null,
    "observed_at": "2026-10-14T09:12:44.000Z",
    "source": "live"
  },
  "items": [
    {
      "content_id": "3412345678901234567",
      "shortcode": "C9xAbCdEfGh",
      "url": "https://www.instagram.com/reel/C9xAbCdEfGh/",
      "play_count": 1284500,
      "view_count": 1284500,
      "like_count": 96210,
      "comment_count": 1430,
      "share_count": 8120,
      "save_count": 21480,
      "create_time": 1760250000,
      "caption": "Three habits that quietly ruin your mornings",
      "title": null,
      "duration": 31.4,
      "product_type": "clips",
      "video_url": null,
      "thumbnail_url": "https://cdn.example.com/thumbs/C9xAbCdEfGh.jpg",
      "owner": {
        "id": "58291034577",
        "username": "mornings.with.ada",
        "full_name": "Ada | Morning routines",
        "is_verified": false,
        "profile_pic_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg"
      },
      "audio": {
        "id": "1203948572",
        "artist": "mornings.with.ada",
        "song": "Original audio",
        "is_original": true
      },
      "is_video": true,
      "is_sponsored": false,
      "is_pinned": false,
      "tags": [
        "morningroutine",
        "habits"
      ],
      "images": null,
      "observed_at": "2026-10-14T09:12:44.000Z",
      "source": "live"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "vtc1.k3Jx9Qm2Lw8aTn0ZpR5dYvUe.4f1c9e07a2b6"
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

Profile videos

GET/v1/view-tracker/raw/{platform}/profile/videos

Returns the newest videos of a TikTok profile or YouTube channel with the profile that owns them. One request for one page: pass limit to choose the page size and cursor to continue. Counts are the platform's numbers right now.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.tiktokyoutube
urlquerystringNoProfile URL. Send url or handle; one of the two is required. Must belong to the platform in the path.
handlequerystringNoProfile handle without the @, instead of url.
limitqueryintegerNoHow many items to return. 1 to 200.default 24
cursorquerystringNoThe pagination.next_cursor of the previous page of items, passed back unchanged. It only works for the same target and route, from the same account.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/tiktok/profile/videos?url=https%3A%2F%2Fwww.tiktok.com%2F%40mornings.with.ada" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "profile": {
    "id": "58291034577",
    "username": "mornings.with.ada",
    "display_name": "Ada | Morning routines",
    "url": "https://www.instagram.com/mornings.with.ada/",
    "bio": "Three habits a week that make your mornings easier.",
    "avatar_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg",
    "is_verified": false,
    "is_private": false,
    "external_url": "https://example.com/mornings",
    "links": [
      {
        "title": "Newsletter",
        "url": "https://example.com/mornings"
      }
    ],
    "followers_count": 182400,
    "following_count": 312,
    "content_count": 418,
    "total_likes": null,
    "observed_at": "2026-10-14T09:12:44.000Z",
    "source": "live"
  },
  "items": [
    {
      "content_id": "3412345678901234567",
      "shortcode": "C9xAbCdEfGh",
      "url": "https://www.instagram.com/reel/C9xAbCdEfGh/",
      "play_count": 1284500,
      "view_count": 1284500,
      "like_count": 96210,
      "comment_count": 1430,
      "share_count": 8120,
      "save_count": 21480,
      "create_time": 1760250000,
      "caption": "Three habits that quietly ruin your mornings",
      "title": null,
      "duration": 31.4,
      "product_type": "clips",
      "video_url": null,
      "thumbnail_url": "https://cdn.example.com/thumbs/C9xAbCdEfGh.jpg",
      "owner": {
        "id": "58291034577",
        "username": "mornings.with.ada",
        "full_name": "Ada | Morning routines",
        "is_verified": false,
        "profile_pic_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg"
      },
      "audio": {
        "id": "1203948572",
        "artist": "mornings.with.ada",
        "song": "Original audio",
        "is_original": true
      },
      "is_video": true,
      "is_sponsored": false,
      "is_pinned": false,
      "tags": [
        "morningroutine",
        "habits"
      ],
      "images": null,
      "observed_at": "2026-10-14T09:12:44.000Z",
      "source": "live"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "vtc1.k3Jx9Qm2Lw8aTn0ZpR5dYvUe.4f1c9e07a2b6"
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

YouTube channel shorts

GET/v1/view-tracker/raw/youtube/profile/shorts

Returns the newest Shorts of a YouTube channel with the profile that owns them. One request for one page: pass limit to choose the page size and cursor to continue. Counts are the platform's numbers right now.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
urlquerystringNoProfile URL. Send url or handle; one of the two is required. Must belong to the platform in the path.
handlequerystringNoProfile handle without the @, instead of url.
limitqueryintegerNoHow many items to return. 1 to 200.default 24
cursorquerystringNoThe pagination.next_cursor of the previous page of items, passed back unchanged. It only works for the same target and route, from the same account.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/youtube/profile/shorts?url=https%3A%2F%2Fwww.youtube.com%2F%40morningswithada" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "profile": {
    "id": "58291034577",
    "username": "mornings.with.ada",
    "display_name": "Ada | Morning routines",
    "url": "https://www.instagram.com/mornings.with.ada/",
    "bio": "Three habits a week that make your mornings easier.",
    "avatar_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg",
    "is_verified": false,
    "is_private": false,
    "external_url": "https://example.com/mornings",
    "links": [
      {
        "title": "Newsletter",
        "url": "https://example.com/mornings"
      }
    ],
    "followers_count": 182400,
    "following_count": 312,
    "content_count": 418,
    "total_likes": null,
    "observed_at": "2026-10-14T09:12:44.000Z",
    "source": "live"
  },
  "items": [
    {
      "content_id": "3412345678901234567",
      "shortcode": "C9xAbCdEfGh",
      "url": "https://www.instagram.com/reel/C9xAbCdEfGh/",
      "play_count": 1284500,
      "view_count": 1284500,
      "like_count": 96210,
      "comment_count": 1430,
      "share_count": 8120,
      "save_count": 21480,
      "create_time": 1760250000,
      "caption": "Three habits that quietly ruin your mornings",
      "title": null,
      "duration": 31.4,
      "product_type": "clips",
      "video_url": null,
      "thumbnail_url": "https://cdn.example.com/thumbs/C9xAbCdEfGh.jpg",
      "owner": {
        "id": "58291034577",
        "username": "mornings.with.ada",
        "full_name": "Ada | Morning routines",
        "is_verified": false,
        "profile_pic_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg"
      },
      "audio": {
        "id": "1203948572",
        "artist": "mornings.with.ada",
        "song": "Original audio",
        "is_original": true
      },
      "is_video": true,
      "is_sponsored": false,
      "is_pinned": false,
      "tags": [
        "morningroutine",
        "habits"
      ],
      "images": null,
      "observed_at": "2026-10-14T09:12:44.000Z",
      "source": "live"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "vtc1.k3Jx9Qm2Lw8aTn0ZpR5dYvUe.4f1c9e07a2b6"
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

Look up a post

GET/v1/view-tracker/raw/{platform}/post

Reads one post live and returns the shared post object: views, plays, likes, comments, shares, saves, caption, duration, thumbnail and owner. Works on all five platforms.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramyoutubetiktoktwitterfacebook
urlquerystringYesPost URL.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/post?url=https%3A%2F%2Fwww.instagram.com%2Freel%2FC9xAbCdEfGh%2F" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "post": {
    "content_id": "3412345678901234567",
    "shortcode": "C9xAbCdEfGh",
    "url": "https://www.instagram.com/reel/C9xAbCdEfGh/",
    "play_count": 1284500,
    "view_count": 1284500,
    "like_count": 96210,
    "comment_count": 1430,
    "share_count": 8120,
    "save_count": 21480,
    "create_time": 1760250000,
    "caption": "Three habits that quietly ruin your mornings",
    "title": null,
    "duration": 31.4,
    "product_type": "clips",
    "video_url": null,
    "thumbnail_url": "https://cdn.example.com/thumbs/C9xAbCdEfGh.jpg",
    "owner": {
      "id": "58291034577",
      "username": "mornings.with.ada",
      "full_name": "Ada | Morning routines",
      "is_verified": false,
      "profile_pic_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg"
    },
    "audio": {
      "id": "1203948572",
      "artist": "mornings.with.ada",
      "song": "Original audio",
      "is_original": true
    },
    "is_video": true,
    "is_sponsored": false,
    "is_pinned": false,
    "tags": [
      "morningroutine",
      "habits"
    ],
    "images": null,
    "observed_at": "2026-10-14T09:12:44.000Z",
    "source": "live"
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

List post comments

GET/v1/view-tracker/raw/{platform}/post/comments

Reads a page of comments on a post. YouTube honours sort; the other platforms return their default order.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramyoutubetiktok
urlquerystringYesPost URL.
limitqueryintegerNoHow many items to return. 1 to 100.default 20
sortquerystringNoOrder of the comments. Only YouTube honours it.topnewest
cursorquerystringNoThe pagination.next_cursor of the previous page of comments, passed back unchanged. It only works for the same target and route, from the same account.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/post/comments?url=https%3A%2F%2Fwww.instagram.com%2Freel%2FC9xAbCdEfGh%2F" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "comments": [
    {
      "id": "17912345678901234",
      "text": "Number two is exactly why I never made it to the gym",
      "created_at": "2026-10-13T18:22:10.000Z",
      "like_count": 412,
      "reply_count": 9,
      "is_pinned": false,
      "is_hearted": true,
      "author": {
        "id": "40128839012",
        "username": "late.riser.lena",
        "display_name": "Lena",
        "avatar_url": "https://cdn.example.com/avatars/late.riser.lena.jpg",
        "is_verified": false,
        "url": "https://www.instagram.com/late.riser.lena/"
      },
      "fetched_at": "2026-10-14T09:12:44.000Z"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "vtc1.k3Jx9Qm2Lw8aTn0ZpR5dYvUe.4f1c9e07a2b6"
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

Check a post's status

GET/v1/view-tracker/raw/{platform}/post/status

Asks the platform whether a post is still up. Answers with a status instead of failing when the post is gone or hidden, so it is the right call for checking removals.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
  • status is one of exists, deleted, private, restricted or unknown.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramyoutubetiktoktwitter
urlquerystringYesPost URL.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/post/status?url=https%3A%2F%2Fwww.instagram.com%2Freel%2FC9xAbCdEfGh%2F" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "status": "exists"
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

Look up YouTube videos by id

GET/v1/view-tracker/raw/youtube/videos

Reads up to 50 YouTube videos in one request. One credit covers the whole batch.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
idsquerystringYesComma-separated YouTube video ids. 1 to 50 ids, 11 characters each.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/youtube/videos?ids=dQw4w9WgXcQ%2C9bZkp7q19f0" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "items": [
    {
      "content_id": "3412345678901234567",
      "shortcode": "C9xAbCdEfGh",
      "url": "https://www.instagram.com/reel/C9xAbCdEfGh/",
      "play_count": 1284500,
      "view_count": 1284500,
      "like_count": 96210,
      "comment_count": 1430,
      "share_count": 8120,
      "save_count": 21480,
      "create_time": 1760250000,
      "caption": "Three habits that quietly ruin your mornings",
      "title": null,
      "duration": 31.4,
      "product_type": "clips",
      "video_url": null,
      "thumbnail_url": "https://cdn.example.com/thumbs/C9xAbCdEfGh.jpg",
      "owner": {
        "id": "58291034577",
        "username": "mornings.with.ada",
        "full_name": "Ada | Morning routines",
        "is_verified": false,
        "profile_pic_url": "https://cdn.example.com/avatars/mornings.with.ada.jpg"
      },
      "audio": {
        "id": "1203948572",
        "artist": "mornings.with.ada",
        "song": "Original audio",
        "is_original": true
      },
      "is_video": true,
      "is_sponsored": false,
      "is_pinned": false,
      "tags": [
        "morningroutine",
        "habits"
      ],
      "images": null,
      "observed_at": "2026-10-14T09:12:44.000Z",
      "source": "live"
    }
  ]
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

Get a YouTube transcript

GET/v1/view-tracker/raw/youtube/post/transcript

Returns the caption track of a YouTube video as timed segments.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
urlquerystringYesYouTube video URL.
langquerystringNoLanguage code of the caption track, for example en or pt-BR.default en

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/youtube/post/transcript?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DdQw4w9WgXcQ" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "language": "en",
  "segments": [
    {
      "text": "Three habits that quietly ruin your mornings",
      "start_ms": 120,
      "end_ms": 2410
    },
    {
      "text": "The first one starts before you wake up",
      "start_ms": 2410,
      "end_ms": 4980
    }
  ]
}

Errors

  • 400VALIDATION_ERRORThe url is not a YouTube video URL, or lang is not a language code.
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe video does not exist, or it has no caption track in that language. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

Get an account's public bio

GET/v1/view-tracker/raw/{platform}/account/about

Reads the public bio and headline stats of an account. Use it to check that a handle exists before you build on it.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramyoutubetiktoktwitterfacebook
handlequerystringYesAccount handle without the @.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/account/about?handle=mornings.with.ada" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "account": {
    "id": "58291034577",
    "display_name": "Ada | Morning routines",
    "bio": "Three habits a week that make your mornings easier.",
    "is_verified": false,
    "stats": {
      "followers_count": 182400,
      "following_count": 312,
      "content_count": 418,
      "total_likes": null
    }
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

Verify account ownership

GET/v1/view-tracker/raw/{platform}/account/verify

Proves that someone controls an account. Ask them to put a one-time code in their bio, then call this with the handle and the code: verified is true when the code is in the bio right now.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramyoutubetiktoktwitterfacebook
handlequerystringYesAccount handle without the @.
codequerystringYesThe code you asked the account owner to add to their bio. 1 to 64 characters, no spaces.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/account/verify?handle=mornings.with.ada&code=crayo-4F7K2Q" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "verified": true,
  "account": {
    "id": "58291034577",
    "display_name": "Ada | Morning routines",
    "bio": "Three habits a week that make your mornings easier.",
    "is_verified": false,
    "stats": {
      "followers_count": 182400,
      "following_count": 312,
      "content_count": 418,
      "total_likes": null
    }
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

List followers

GET/v1/view-tracker/raw/{platform}/profile/followers

Lists a page of the accounts in a profile's followers list on Instagram or TikTok. One credit per page. Pass cursor to walk the list.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit per page
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramtiktok
urlquerystringNoProfile URL. Send url or handle; one of the two is required. Must belong to the platform in the path.
handlequerystringNoProfile handle without the @, instead of url.
user_idquerystringNoInstagram only: the numeric account id from a profile lookup. Sending it saves a call on the first page.
cursorquerystringNoThe pagination.next_cursor of the previous page of accounts, passed back unchanged. It only works for the same target and route, from the same account.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/profile/followers?url=https%3A%2F%2Fwww.instagram.com%2Fmornings.with.ada%2F" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "items": [
    {
      "id": "40128839012",
      "username": "late.riser.lena",
      "display_name": "Lena",
      "avatar_url": "https://cdn.example.com/avatars/late.riser.lena.jpg",
      "is_verified": false,
      "is_private": false,
      "url": "https://www.instagram.com/late.riser.lena/"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "vtc1.k3Jx9Qm2Lw8aTn0ZpR5dYvUe.4f1c9e07a2b6"
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

List following

GET/v1/view-tracker/raw/{platform}/profile/following

Lists a page of the accounts in a profile's following list on Instagram or TikTok. One credit per page. Pass cursor to walk the list.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit per page
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramtiktok
urlquerystringNoProfile URL. Send url or handle; one of the two is required. Must belong to the platform in the path.
handlequerystringNoProfile handle without the @, instead of url.
user_idquerystringNoInstagram only: the numeric account id from a profile lookup. Sending it saves a call on the first page.
cursorquerystringNoThe pagination.next_cursor of the previous page of accounts, passed back unchanged. It only works for the same target and route, from the same account.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/profile/following?url=https%3A%2F%2Fwww.instagram.com%2Fmornings.with.ada%2F" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "items": [
    {
      "id": "40128839012",
      "username": "late.riser.lena",
      "display_name": "Lena",
      "avatar_url": "https://cdn.example.com/avatars/late.riser.lena.jpg",
      "is_verified": false,
      "is_private": false,
      "url": "https://www.instagram.com/late.riser.lena/"
    }
  ],
  "pagination": {
    "has_more": true,
    "next_cursor": "vtc1.k3Jx9Qm2Lw8aTn0ZpR5dYvUe.4f1c9e07a2b6"
  }
}

Errors

  • 400VALIDATION_ERRORA parameter is missing, mistyped or out of range, or the cursor is not valid for this request (invalid cursor).
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDThe profile or post does not exist or was deleted. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.

60-day history

GET/v1/view-tracker/raw/{platform}/history

Returns the readings we already hold for a profile or post, up to 60 days back, newest first. A profile URL returns profile snapshots and a post URL returns post snapshots. It covers anything any Crayo user has tracked, so a brand new target does not start with an empty chart.

  • Charged 1 tracker credit before the platform is called. A lookup that fails on our side is refunded; a missing or private target keeps the credit.
Credits:
1 credit
Rate limit:
Raw lookups tier, 5/s and 200/min

Parameters

NameInTypeRequiredDescription
platformpathstringYesWhich platform to read.instagramyoutubetiktoktwitterfacebook
urlquerystringYesProfile or post URL.
fromquerystringNoOldest reading to return. ISO 8601 or Unix seconds.
toquerystringNoNewest reading to return. ISO 8601 or Unix seconds.

Request

curl
curl "https://api.crayo.ai/v1/view-tracker/raw/instagram/history?url=https%3A%2F%2Fwww.instagram.com%2Freel%2FC9xAbCdEfGh%2F" \
  -H "Authorization: Bearer $CRAYO_API_KEY"

Response

200 application/json
{
  "success": true,
  "snapshots": [
    {
      "observed_at": "2026-10-14T09:12:44.000Z",
      "counts": {
        "views": 1284500,
        "plays": 1284500,
        "likes": 96210,
        "comments": 1430,
        "shares": 8120,
        "saves": 21480
      }
    },
    {
      "observed_at": "2026-10-13T09:12:44.000Z",
      "counts": {
        "views": 1284500,
        "plays": 1284500,
        "likes": 96210,
        "comments": 1430,
        "shares": 8120,
        "saves": 21480
      }
    }
  ]
}

Errors

  • 400VALIDATION_ERRORThe url is missing, or from is after to.
  • 400UNKNOWN_FIELDThe query carries a parameter this endpoint does not define. There is no provider parameter anywhere.
  • 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
  • 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
  • 402INSUFFICIENT_CREDITSYou have no tracker credits left. error.credit_type is tracker, and error.remaining and error.required are numbers inside the error object. Nothing was charged.
  • 403TARGET_PRIVATEThe account or post is private or restricted. The credit is kept.
  • 404NOT_FOUNDThe platform in the path does not support this lookup. Nothing was charged.
  • 404TARGET_NOT_FOUNDWe hold no readings for that url. The credit is kept.
  • 429RATE_LIMITEDOver this tier's limit, counted per account. Raw lookups also answer this when 10 are already in flight. Wait the number of seconds in the Retry-After header.
  • 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
  • 500SERVER_ERRORSomething failed on our side. Retry with backoff.
  • 502UPSTREAM_ERRORThe platform could not be read. The credit is refunded when the failure was on our side.
  • 503UPSTREAM_BUSYLookups are saturated right now. Retry after the Retry-After header. The credit is refunded.
New to the Crayo API? See what it is forUse cases, pricing and the console walkthrough live on the API feature page.

FAQs

Frequent questions

1 tracker credit is charged before the platform is called. A lookup that fails on our side is refunded, and a missing or private target keeps the credit.

Profile, post, status, about, verify and history lookups cover instagram, youtube, tiktok, twitter and facebook, with the platform in the path. Feed, comment and follower endpoints support the platforms listed on each one.

Every raw lookup shares the raw tier of 5 requests per second and 200 per minute per account. When platform capacity is saturated you get 503 UPSTREAM_BUSY with a Retry-After header and the credit is refunded.

Paged responses carry a pagination object with has_more and next_cursor. Pass next_cursor back unchanged as the cursor query parameter and stop when has_more is false. Feeds return up to 200 items per page and comments up to 100.

Still have questions?

Contact our 24/7 support team for any concerns or inquiries.

Get in touch