Piloterr Instagram API
The Instagram API from Piloterr — 2 operation(s) for instagram.
The Instagram API from Piloterr — 2 operation(s) for instagram.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/piloterr-com:piloterr-com-instagram-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Piloterr API Reference Instagram API
description: Complete API reference documentation.
version: 1.0.0
servers:
- url: https://api.piloterr.com
description: API Server
tags:
- name: Instagram
paths:
/v2/instagram/post/info:
get:
summary: Instagram Post Info
description: 'Monitor competitors and market trends by scraping Instagram posts for valuable data.
**Credit cost:** 1 credit per call'
operationId: get-instagram-post-info
security:
- ApiKeyAuth: []
parameters:
- name: query
in: query
required: true
description: "The Instagram post or reel to retrieve. Accepts a full URL or a shortcode.\n\n**Accepted formats:**\n- `https://www.instagram.com/p/CshTQQlMGMl`: full post URL\n- `CshTQQlMGMl`: post shortcode only\n\n**Example:**\n\n https://www.instagram.com/p/CshTQQlMGMl\n\n**Notes:**\n- **Private accounts:** Posts from private accounts cannot be retrieved.\n- **Deleted posts:** Returns a not-found error if the post no longer exists."
schema:
type: string
description: "The Instagram post or reel to retrieve. Accepts a full URL or a shortcode.\n\n**Accepted formats:**\n- `https://www.instagram.com/p/CshTQQlMGMl`: full post URL\n- `CshTQQlMGMl`: post shortcode only\n\n**Example:**\n\n https://www.instagram.com/p/CshTQQlMGMl\n\n**Notes:**\n- **Private accounts:** Posts from private accounts cannot be retrieved.\n- **Deleted posts:** Returns a not-found error if the post no longer exists."
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
id:
type: string
text:
type: string
is_video:
type: boolean
owner_id:
type: string
sponsors:
type: array
items: {}
shortcode:
type: string
text_lang:
type: string
text_tags:
type: array
items: {}
timestamp:
type: integer
like_count:
type: integer
location_id:
type: string
created_time:
type: string
product_type:
nullable: true
location_name:
type: string
location_slug:
type: string
related_posts:
nullable: true
comments_count:
type: integer
paid_partnership:
type: boolean
text_tagged_users:
type: array
items: {}
video_plays_count:
nullable: true
video_views_count:
nullable: true
is_comments_disabled:
type: boolean
attached_media_display_url:
type: string
attached_media_tagged_users:
type: array
items:
type: object
properties:
id:
type: string
username:
type: string
attached_carousel_media_urls:
type: array
items:
type: string
examples:
Lookup by post URL:
value:
id: '3859342446496501512'
text: 🇫🇷
is_video: false
owner_id: '4213518589'
sponsors: []
shortcode: DWPI4HmAs8I
text_lang: fr
text_tags: []
timestamp: 1774289493
like_count: 1337686
location_id: '375685686285802'
created_time: '2026-03-23 18:11:33'
product_type: null
location_name: Clairefontaine - Centre National Du Football
location_slug: clairefontaine-centre-national-du-football
related_posts: null
comments_count: 8331
paid_partnership: false
text_tagged_users: []
video_plays_count: null
video_views_count: null
is_comments_disabled: false
attached_media_display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/655936260_18460602253142590_4270314222914824377_n.jpg
attached_media_tagged_users:
- id: '253982730'
username: example-user
attached_carousel_media_urls:
- https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/655936260_18460602253142590_4270314222914824377_n.jpg
- https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/658867910_18460602280142590_6337465939339629136_n.jpg
- https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/657621742_18460602271142590_1605271971122095294_n.jpg
Lookup by shortcode:
value:
id: '3107849898061488933'
text: 🍿
is_video: false
owner_id: '4213518589'
sponsors: []
shortcode: CshTQQlMGMl
text_lang: en
text_tags: []
timestamp: 1684704600
like_count: 2604768
location_id: '12345912'
created_time: '2023-05-21T21:30:00'
product_type: null
location_name: Auxerre
location_slug: auxerre
related_posts: null
comments_count: 11566
paid_partnership: false
text_tagged_users: []
video_plays_count: null
video_views_count: null
is_comments_disabled: false
attached_media_display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.2885-15/347861207_1707687973014484_3649610220149539376_n.jpg
attached_media_tagged_users: []
attached_carousel_media_urls:
- https://scontent-cdg4-1.cdninstagram.com/v/t51.2885-15/347861207_1707687973014484_3649610220149539376_n.jpg
- https://scontent-cdg4-2.cdninstagram.com/v/t51.2885-15/347832052_2243608469163355_4814444542687724291_n.jpg
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Instagram
post:
summary: Instagram Post Info
description: 'Monitor competitors and market trends by scraping Instagram posts for valuable data.
**Credit cost:** 1 credit per call'
operationId: post-instagram-post-info
security:
- ApiKeyAuth: []
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: "The Instagram post or reel to retrieve. Accepts a full URL or a shortcode.\n\n**Accepted formats:**\n- `https://www.instagram.com/p/CshTQQlMGMl`: full post URL\n- `CshTQQlMGMl`: post shortcode only\n\n**Example:**\n\n https://www.instagram.com/p/CshTQQlMGMl\n\n**Notes:**\n- **Private accounts:** Posts from private accounts cannot be retrieved.\n- **Deleted posts:** Returns a not-found error if the post no longer exists."
required:
- query
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
id:
type: string
text:
type: string
is_video:
type: boolean
owner_id:
type: string
sponsors:
type: array
items: {}
shortcode:
type: string
text_lang:
type: string
text_tags:
type: array
items: {}
timestamp:
type: integer
like_count:
type: integer
location_id:
type: string
created_time:
type: string
product_type:
nullable: true
location_name:
type: string
location_slug:
type: string
related_posts:
nullable: true
comments_count:
type: integer
paid_partnership:
type: boolean
text_tagged_users:
type: array
items: {}
video_plays_count:
nullable: true
video_views_count:
nullable: true
is_comments_disabled:
type: boolean
attached_media_display_url:
type: string
attached_media_tagged_users:
type: array
items:
type: object
properties:
id:
type: string
username:
type: string
attached_carousel_media_urls:
type: array
items:
type: string
examples:
Lookup by post URL:
value:
id: '3859342446496501512'
text: 🇫🇷
is_video: false
owner_id: '4213518589'
sponsors: []
shortcode: DWPI4HmAs8I
text_lang: fr
text_tags: []
timestamp: 1774289493
like_count: 1337686
location_id: '375685686285802'
created_time: '2026-03-23 18:11:33'
product_type: null
location_name: Clairefontaine - Centre National Du Football
location_slug: clairefontaine-centre-national-du-football
related_posts: null
comments_count: 8331
paid_partnership: false
text_tagged_users: []
video_plays_count: null
video_views_count: null
is_comments_disabled: false
attached_media_display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/655936260_18460602253142590_4270314222914824377_n.jpg
attached_media_tagged_users:
- id: '253982730'
username: example-user
attached_carousel_media_urls:
- https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/655936260_18460602253142590_4270314222914824377_n.jpg
- https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/658867910_18460602280142590_6337465939339629136_n.jpg
- https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/657621742_18460602271142590_1605271971122095294_n.jpg
Lookup by shortcode:
value:
id: '3107849898061488933'
text: 🍿
is_video: false
owner_id: '4213518589'
sponsors: []
shortcode: CshTQQlMGMl
text_lang: en
text_tags: []
timestamp: 1684704600
like_count: 2604768
location_id: '12345912'
created_time: '2023-05-21T21:30:00'
product_type: null
location_name: Auxerre
location_slug: auxerre
related_posts: null
comments_count: 11566
paid_partnership: false
text_tagged_users: []
video_plays_count: null
video_views_count: null
is_comments_disabled: false
attached_media_display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.2885-15/347861207_1707687973014484_3649610220149539376_n.jpg
attached_media_tagged_users: []
attached_carousel_media_urls:
- https://scontent-cdg4-1.cdninstagram.com/v/t51.2885-15/347861207_1707687973014484_3649610220149539376_n.jpg
- https://scontent-cdg4-2.cdninstagram.com/v/t51.2885-15/347832052_2243608469163355_4814444542687724291_n.jpg
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Instagram
/v2/instagram/user/info:
get:
summary: Instagram User Info
description: 'Gather user insights efficiently from Instagram for targeted marketing strategies.
**Credit cost:** 1 credit per call'
operationId: get-instagram-user-info
security:
- ApiKeyAuth: []
parameters:
- name: query
in: query
required: true
description: "The Instagram user to look up. Accepts a full profile URL or a username.\n\n**Accepted formats:**\n- `https://www.instagram.com/example-user/`: full profile URL\n- `example-user`: username only\n\n**Example:**\n\n https://www.instagram.com/example-user/\n\n**Notes:**\n- **Private accounts:** Profile data is returned but posts array will be empty.\n- **Deactivated accounts:** Returns a not-found error."
schema:
type: string
description: "The Instagram user to look up. Accepts a full profile URL or a username.\n\n**Accepted formats:**\n- `https://www.instagram.com/example-user/`: full profile URL\n- `example-user`: username only\n\n**Example:**\n\n https://www.instagram.com/example-user/\n\n**Notes:**\n- **Private accounts:** Profile data is returned but posts array will be empty.\n- **Deactivated accounts:** Returns a not-found error."
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
id:
type: string
name:
type: string
posts:
type: array
items:
type: object
properties:
id:
type: string
likes:
type: integer
caption:
type: string
comments:
type: integer
is_video:
type: boolean
shortcode:
type: string
timestamp:
type: integer
display_url:
type: string
avatar:
type: string
gender:
type: string
private:
type: boolean
website:
nullable: true
username:
type: string
verified:
type: boolean
followers:
type: integer
following:
type: integer
description:
type: string
category_name:
type: string
business_account:
type: boolean
business_category_name:
type: string
examples:
Lookup by username. Alex Martin:
value:
id: '4213518589'
name: Alex Martin
posts:
- id: '3859342446496501512'
likes: 1337767
caption: 🇫🇷
comments: 8331
is_video: false
shortcode: DWPI4HmAs8I
timestamp: 1774289493
display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/655936260_18460602253142590_4270314222914824377_n.jpg
- id: '3855144622124864107'
likes: 1768534
caption: nos vemos en cuartos de final ¡HalaMadrid!
comments: 10146
is_video: false
shortcode: DWAOZu_gpJr
timestamp: 1773789073
display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/652735959_18458319658142590_2295182466998776037_n.jpg
- id: '3854258635190482004'
likes: 1527854
caption: back to business.
comments: 12098
is_video: false
shortcode: DV9E87XArRU
timestamp: 1773683455
display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/652806606_18457940533142590_3633003369562801254_n.jpg
avatar: https://scontent-cdg4-3.cdninstagram.com/placeholder/example-user.jpg
gender: ambiguous
private: false
website: null
username: example-user
verified: true
followers: 130723780
following: 498
description: Example profile.
category_name: Athlete
business_account: true
business_category_name: None
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Instagram
post:
summary: Instagram User Info
description: 'Gather user insights efficiently from Instagram for targeted marketing strategies.
**Credit cost:** 1 credit per call'
operationId: post-instagram-user-info
security:
- ApiKeyAuth: []
parameters:
- $ref: '#/components/parameters/fields'
- $ref: '#/components/parameters/is_async'
- $ref: '#/components/parameters/soft_fail'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
query:
type: string
description: "The Instagram user to look up. Accepts a full profile URL or a username.\n\n**Accepted formats:**\n- `https://www.instagram.com/example-user/`: full profile URL\n- `example-user`: username only\n\n**Example:**\n\n https://www.instagram.com/example-user/\n\n**Notes:**\n- **Private accounts:** Profile data is returned but posts array will be empty.\n- **Deactivated accounts:** Returns a not-found error."
required:
- query
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
id:
type: string
name:
type: string
posts:
type: array
items:
type: object
properties:
id:
type: string
likes:
type: integer
caption:
type: string
comments:
type: integer
is_video:
type: boolean
shortcode:
type: string
timestamp:
type: integer
display_url:
type: string
avatar:
type: string
gender:
type: string
private:
type: boolean
website:
nullable: true
username:
type: string
verified:
type: boolean
followers:
type: integer
following:
type: integer
description:
type: string
category_name:
type: string
business_account:
type: boolean
business_category_name:
type: string
examples:
Lookup by username. Alex Martin:
value:
id: '4213518589'
name: Alex Martin
posts:
- id: '3859342446496501512'
likes: 1337767
caption: 🇫🇷
comments: 8331
is_video: false
shortcode: DWPI4HmAs8I
timestamp: 1774289493
display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/655936260_18460602253142590_4270314222914824377_n.jpg
- id: '3855144622124864107'
likes: 1768534
caption: nos vemos en cuartos de final ¡HalaMadrid!
comments: 10146
is_video: false
shortcode: DWAOZu_gpJr
timestamp: 1773789073
display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/652735959_18458319658142590_2295182466998776037_n.jpg
- id: '3854258635190482004'
likes: 1527854
caption: back to business.
comments: 12098
is_video: false
shortcode: DV9E87XArRU
timestamp: 1773683455
display_url: https://scontent-cdg4-1.cdninstagram.com/v/t51.82787-15/652806606_18457940533142590_3633003369562801254_n.jpg
avatar: https://scontent-cdg4-3.cdninstagram.com/placeholder/example-user.jpg
gender: ambiguous
private: false
website: null
username: example-user
verified: true
followers: 130723780
following: 498
description: Example profile.
category_name: Athlete
business_account: true
business_category_name: None
'400':
description: Bad Request — missing or invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Bad Request
'401':
description: Unauthorized — the API key is missing, invalid, inactive, or expired, or a rate limit was exceeded (`Rate limit exceeded…` message).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
examples:
invalidKey:
value:
error: Invalid API Key
planRateLimit:
value:
error: 'Rate limit exceeded: You''ve exceeded the per second rate limit on your subscription'
keyQuota:
value:
error: 'Rate limit exceeded for the API key: quota monthly'
'402':
description: Payment Required — your subscription or credit balance is insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Payment required
'500':
description: Internal Server Error — something went wrong on our side.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: Internal Error
tags:
- Instagram
components:
parameters:
fields:
name: fields
in: query
required: false
description: Comma-separated list of response fields to return, with dot notation for nested fields (e.g. `name,location.city`).
schema:
type: string
is_async:
name: is_async
in: query
required: false
description: 'Run the request as a background job: the API answers `202` with a `job_id` to poll on `GET /v1/jobs/{id}`.'
schema:
type: boolean
default: false
soft_fail:
name: soft_fail
in: query
required: false
description: Return HTTP 200 even when the request fails; the error is in the `error` field of the body.
schema:
type: boolean
default: false
schemas:
ErrorResponse:
type: object
required:
- error
properties:
error:
type: string
description: Human-readable error message.
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: Your API key. Include it in the x-api-key header for every request.