Instagram Search API
Add Instagram search to your product. One query returns matching users, hashtags and places, with verification badges, follower counts and whether a user currently has a story.
Request
GET /v1/search ·
1 credit per successful call
curl "https://api.igramapi.com/v1/search?q=example" \
-H "Authorization: Bearer YOUR_API_KEY" import requests
response = requests.get(
"https://api.igramapi.com/v1/search?q=example",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
response.raise_for_status()
print(response.json()) const response = await fetch("https://api.igramapi.com/v1/search?q=example", {
method: "GET",
headers: {
Authorization: "Bearer YOUR_API_KEY",
},
});
if (!response.ok) throw new Error((await response.json()).error.message);
console.log(await response.json()); <?php
$ch = curl_init("https://api.igramapi.com/v1/search?q=example");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_API_KEY",
],
]);
$data = json_decode(curl_exec($ch), true);
print_r($data); Response
{
"query": "example",
"users": [
{
"pk": "1234567890",
"username": "example_creator",
"full_name": "Example Creator",
"profile_picture_url": "https://scontent.cdninstagram.com/v/example/avatar.jpg",
"is_verified": true,
"is_private": false,
"follower_count": 182400,
"social_context": "182K followers",
"has_story": true
}
],
"hashtags": [
{
"id": "17843000000000000",
"name": "example",
"media_count": 1250000,
"subtitle": "1.2M posts",
"profile_picture_url": ""
}
],
"places": [
{
"pk": "213000000",
"name": "Example Square",
"address": "1 Main Street",
"city": "Lisbon",
"lat": 38.7139,
"lng": -9.1394
}
],
"cached": false
} All values above are made-up examples. Media links are temporary Instagram CDN addresses.
Parameters
| Name | In | Description |
|---|---|---|
qrequired | query | Name, username or hashtag. |
limit | query | Maximum items per category, 1 to 50 (default 20). |
Response fields
| Field | Type | Description |
|---|---|---|
users[] | object[] | pk, username, full_name, profile_picture_url, is_verified, is_private, follower_count, social_context, has_story. |
hashtags[] | object[] | id, name, media_count, subtitle, profile_picture_url. |
places[] | object[] | pk, name, address, city, lat, lng. |
query | string | The normalized query. |
Users, tags and places together
Three result lists in one response, each limited to the size you ask for.
Built for typeahead
Short responses with the fields a search box needs: name, picture, verification and counts.
Story indicator
has_story shows whether a user currently has an active story.
1 credit per search
Repeated searches may be answered from a short cache.
Finding the right account
Creator discovery usually starts with a name, not a username. Use the Search API to turn a name into candidate accounts, show the user a pick list with pictures and verification badges, then call the Profile API for the full details of the chosen account.
Tips for good results
Debounce the search box so you send one query per pause in typing, not one per key press. Leading @ and # characters are ignored, so you can pass the text exactly as typed.
Frequently asked questions
Does the search need an Instagram login?
No. You only authenticate with your IGramAPI key.
Can I use it for autocomplete as the user types?
Yes, but debounce requests. Each call uses one credit.
Why might a query return no places?
Place results appear only when Instagram has a matching location for the text.
Is the search result order the same as in the app?
It follows Instagram's own ranking for the query.
Errors cost nothing. Any response with a status of 400 or above is refunded, and every error has the same shape. See error handling and credits and rate limits.
Try the Search API free
Create a key and make your first request in minutes. 100 free credits every month.