API reference
Instagram Sampled Engagement API
One profile plus one posts page. Computes mean likes plus comments divided by current followers, with paired sample size and formula. Missing metrics excluded. No account-wide or historical inference. Each fresh component call costs at least 5 credits; cache hits use their lower normal price.
Endpoint
/v1/instagram/engagementlive · proven10 creditsParameters
Query parameters
Useful optional inputs
dry_run— Read a free estimate before fetching sources or scheduling paid work.Zero credits; cache status and availability are snapshots rather than guarantees.
| Name | Required | Description | Example |
|---|---|---|---|
handle | yes | Instagram username without @. An optional leading @ is accepted and removed before lookup. | nasa |
dry_run | no | Read a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable. | 1 |
Examples
Make the request
curl "https://www.monocrawl.com/v1/instagram/engagement?handle=nasa" \ -H "x-api-key: mn_your_key_here"
TypeScript
const key = process.env.MONOCRAWL_API_KEY;
if (!key) throw new Error('Set MONOCRAWL_API_KEY on your server.');
const res = await fetch(
"https://www.monocrawl.com/v1/instagram/engagement?handle=nasa",
{ headers: { "x-api-key": key } },
);
const body = await res.json();
if (!body.success) {
// one error shape for every endpoint — see /docs/errors
throw new Error(`${body.error.type}: ${body.error.message}`);
}
console.log(body.data, "credits left:", body.credits_remaining);Python
import os
import requests
res = requests.get(
"https://www.monocrawl.com/v1/instagram/engagement?handle=nasa",
headers={"x-api-key": os.environ["MONOCRAWL_API_KEY"]},
timeout=60,
)
body = res.json()
if not body["success"]:
# one error shape for every endpoint — see /docs/errors
raise RuntimeError(f"{body['error']['type']}: {body['error']['message']}")
print(body["data"], "credits left:", body["credits_remaining"])Response
Response fields and example
This example is illustrative, not a captured live response. Variable-cost operations may settle a charge different from the list price below. A successful response puts the platform payload in data and reports the exact credits used, remaining balance, request id and cache status beside it.
{
"success": true,
"platform": "instagram",
"endpoint": "/v1/instagram/engagement",
"data": {
"items": [],
"computed": {
"followers": 1200,
"posts_observed": 3,
"posts_with_both_metrics": 2,
"average_interactions": 24,
"engagement_rate_percent": 2
}
},
"credits_used": 10,
"credits_remaining": 99,
"request_id": "req_…",
"cached": false
}The example is illustrative and shows a documented subset of data. The fields below are optional across supported sources; nullable fields can also be absent. Preserve unknown values and accept additional fields.
Schema basis: reviewed response shaper. See schema coverage and validation limits.
Download the data JSON Schema. Validate response.data, not the whole envelope. A valid shape does not establish that every field or source record was returned.
| Field inside data | Type | Meaning |
|---|---|---|
profile | object | Nested response fields; optional unless explicitly documented. |
profile.id | string | null | Source identifier. Preserve its exact string value; do not convert large IDs to numbers. |
profile.handle | string | null | Public account username. |
profile.name | string | null | Display name. |
profile.url | string | null | Original source URL when supplied. |
profile.bio | string | null | Public biography. |
profile.bio_link | string | null | Original source URL when supplied. |
profile.avatar_url | string | null | Original source URL when supplied. |
profile.followers | number | null | Followers reported by the source; null or absent is unknown, not zero. |
profile.following | number | null | Following reported by the source; null or absent is unknown, not zero. |
profile.verified | boolean | null | Source verification flag; meaning depends on the platform. |
profile.posts_count | number | null | Explicit source account media total; null when only a timeline page count is supplied. |
profile.business | boolean | null | Business-account flag. |
profile.private | boolean | null | Account privacy flag. |
profile.last_post_at | string | null | Latest publication time among the returned profile timeline or bounded public posts, ignoring pinned order; not a full-history guarantee. |
profile.last_post_scope | string | null | returned_timeline or returned_profile_posts when an observed date is available; otherwise null. |
items | array | Nested response fields; optional unless explicitly documented. |
items[].id | string | null | Source identifier. Preserve its exact string value; do not convert large IDs to numbers. |
items[].url | string | null | Original source URL when supplied. |
items[].caption | string | null | Post caption. |
items[].created_at | string | null | Source publication time, normalized to an ISO date-time when available. |
items[].author | object | Nested response fields; optional unless explicitly documented. |
items[].author.id | string | null | Source identifier. Preserve its exact string value; do not convert large IDs to numbers. |
items[].author.handle | string | null | Public account username. |
items[].author.name | string | null | Display name. |
items[].author.url | string | null | Original source URL when supplied. |
items[].author.avatar_url | string | null | Original source URL when supplied. |
items[].author.verified | boolean | null | Explicit source verification flag. |
items[].coauthors | array | Nested response fields; optional unless explicitly documented. |
items[].coauthors[].id | string | null | Source identifier. Preserve its exact string value; do not convert large IDs to numbers. |
items[].coauthors[].handle | string | null | Public account username. |
items[].coauthors[].name | string | null | Display name. |
items[].coauthors[].url | string | null | Original source URL when supplied. |
items[].stats | object | Nested response fields; optional unless explicitly documented. |
items[].stats.likes | number | null | likes reported by the source; null or absent is unknown, not zero. |
items[].stats.comments | number | null | comments reported by the source; null or absent is unknown, not zero. |
items[].stats.plays | number | null | plays reported by the source; null or absent is unknown, not zero. |
items[].stats.shares | number | null | shares reported by the source; null or absent is unknown, not zero. |
items[].stats.saves | number | null | saves reported by the source; null or absent is unknown, not zero. |
items[].stats.reposts | number | null | reposts reported by the source; null or absent is unknown, not zero. |
items[].stats.remix_count | number | null | remix_count reported by the source; null or absent is unknown, not zero. |
items[].audio_cluster_id | string | null | Exact Instagram audio cluster identifier, grouping uploads of a sound. Can feed instagram/audio-reels; unknown remains null. |
items[].music | object | null | Nested response fields; optional unless explicitly documented. |
items[].music.id | string | null | Source identifier. Preserve its exact string value; do not convert large IDs to numbers. |
items[].music.title | string | null | Source sound title. |
items[].music.author | string | null | Source artist display name. |
items[].music.is_original | boolean | null | Source original-audio flag; null when absent. |
items[].music.audio_cluster_id | string | null | Exact Instagram audio cluster identifier, grouping uploads of a sound. Can feed instagram/audio-reels; unknown remains null. |
items[].music.audio_asset_id | string | null | Exact source identifier for this audio asset. Different uploads may share an audio cluster. |
items[].music.duration_s | number | null | Audio asset duration in seconds, separate from reel duration. |
items[].music.is_explicit | boolean | null | Source explicit-content flag for the audio asset. |
items[].music.is_trending | boolean | null | Source trending-in-Reels flag supplied with this reel. Time-sensitive; null or absent is unknown, not false. |
items[].music.canonical_id | string | null | Source identifier. Preserve its exact string value; do not convert large IDs to numbers. |
items[].music.artist_id | string | null | Source identifier. Preserve its exact string value; do not convert large IDs to numbers. |
items[].music.author_handle | string | null | Public artist handle when supplied. |
items[].music.spotify_track_id | string | null | Spotify track identifier supplied by the source. |
items[].music.spotify_url | string | null | Original source URL when supplied. |
items[].music.is_licensed | boolean | null | Explicit source licensed-audio flag; not a licence granted to the caller. |
items[].music.licensed_music_subtype | string | null | Source music classification, not a grant of usage rights. |
items[].music.allows_saving | boolean | null | Source saving flag. |
items[].music.cover_url | string | null | Original source URL when supplied. |
items[].music.audio_url | string | null | Original source URL when supplied. |
items[].music.preview_url | string | null | Original source URL when supplied. |
items[].music.play_url | string | null | Original source URL when supplied. |
computed | object | Nested response fields; optional unless explicitly documented. |
computed.followers | number | null | Current followers reported by the source; null or absent is unknown, not zero. |
computed.posts_observed | number | null | Observed posts reported by the source; null or absent is unknown, not zero. |
computed.posts_with_both_metrics | number | null | Posts with both likes and comments reported by the source; null or absent is unknown, not zero. |
computed.average_interactions | number | null | Mean likes + comments over usable pairs. |
computed.engagement_rate_percent | number | null | 100 × average_interactions / followers; null for missing or zero followers, or no usable pair. |
partial | boolean | null | Whether collection was partial. |
complete | boolean | null | Source completion flag; this operation is a bounded sample. |
_warnings | array | Collection limitations or component warnings. Read before interpreting coverage. |
One profile and one posts page, with no continuation. This is a followers-based percentage, not a views-based ratio.
Failures use the typed error envelope. A confirmed uncharged or refunded failure reports zero; a pending reconciliation can report an unknown charge. Read credits_used and error.details.billing_status, and keep request_id for recovery. Response contract · Error reference