Skip to content

Instagram APIs - Hashtag Posts Search (V1)

prod-global
GET
/api/instagram/search-hashtag-posts/v1

Searches public Instagram posts by keyword or hashtag. It returns a list of matched posts with metadata including caption, author profile, publish time, and media links.

Typical use cases:

  • Competitive analysis of trending topics and hashtags
  • Monitoring community discussions and public opinion on specific tags
  • Aggregating user-generated content for specific campaigns

Parameters

NameInTypeRequiredDescription
tokenquerystringYesAccess token for the API service.
hashtagquerystringYesThe hashtag or keyword to search for.
endCursorquerystringNoCursor used for retrieving the next page of results.

Code Samples

💡 Environment Note

Default samples use https://api.justoneapi.com (prod-global). For users in Mainland China, it is recommended to replace it with http://47.117.133.51:30015 (prod-cn) for better performance. See Environment Guide.

bash
# Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
curl -X GET "https://api.justoneapi.com/api/instagram/search-hashtag-posts/v1?token=YOUR_API_KEY&hashtag=VALUE"
text
I want to use the "Hashtag Posts Search (V1)" API from Just One API.
API Endpoint: https://api.justoneapi.com/api/instagram/search-hashtag-posts/v1
HTTP Method: GET
Authentication: Append "?token=YOUR_API_KEY" to the URL.
OpenAPI Definition: https://docs.justoneapi.com/openapi/instagram-apis/hashtag-posts-search-v1-en.json

Parameters:
- token (query): Access token for the API service. (Required)
- hashtag (query): The hashtag or keyword to search for. (Required)
- endCursor (query): Cursor used for retrieving the next page of results.

Return format: JSON

Response Handling & Error Codes:
1. Business results should be determined by the "code" field in the response body (code 0 means success).
2. Timeout Recommendation: Set request timeout to at least 60 seconds.
3. Business Code Reference:
   - 0: Success
   - 100: Invalid or Inactive Token
   - 301: Collection Failed. Please Retry.
   - 302: Rate Limit Exceeded
   - 303: Daily Quota Exceeded
   - 400: Invalid Parameters
   - 500: Internal Server Error
   - 600: Permission Denied
   - 601: Insufficient Balance

Please help me write a script in my preferred programming language to call this API and handle the response.
python
# Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
import requests

url = "https://api.justoneapi.com/api/instagram/search-hashtag-posts/v1?token=YOUR_API_KEY&hashtag=VALUE"
response = requests.get(url)
print(response.json())
js
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
const response = await fetch("https://api.justoneapi.com/api/instagram/search-hashtag-posts/v1?token=YOUR_API_KEY&hashtag=VALUE", {
  method: "GET"
});
const data = await response.json();
console.log(data);
java
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.justoneapi.com/api/instagram/search-hashtag-posts/v1?token=YOUR_API_KEY&hashtag=VALUE"))
            .method("GET", HttpRequest.BodyPublishers.noBody())
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.body());
    }
}
go
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	client := &http.Client{}
	url := "https://api.justoneapi.com/api/instagram/search-hashtag-posts/v1?token=YOUR_API_KEY&hashtag=VALUE"
	req, _ := http.NewRequest("GET", url, nil)
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
php
// Tip: For Mainland China, replace https://api.justoneapi.com with http://47.117.133.51:30015
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.justoneapi.com/api/instagram/search-hashtag-posts/v1?token=YOUR_API_KEY&hashtag=VALUE");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
$response = curl_exec($ch);
curl_close($ch);
echo $response;

Responses

json
{
  "code": 0,
  "data": {
    "data": {
      "hashtag": {
        "id": "17841530446091919",
        "name": "deepseek",
        "allow_following": false,
        "is_following": false,
        "is_top_media_only": false,
        "profile_pic_url": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.82787-15/579689328_18507022591068689_53115386940599104...",
        "edge_hashtag_to_media": {
          "count": 152454,
          "page_info": {
            "has_next_page": true,
            "end_cursor": "QVFBcFVjWTBLN2xjRkRHNkR0ZXhSNHlORXVaaU1DUXVwdlRXaElZMFJySWNZTEthOV9UOUtYUmZZZWxtN3M5dzBnXzRTaTlzd3ZY..."
          },
          "edges": [
            {
              "node": {
                "comments_disabled": false,
                "__typename": "GraphImage",
                "id": "3849054895698537931",
                "edge_media_to_caption": {
                  "edges": [
                    {
                      "node": {
                        "text": "New Zero Downtime episode is live.\n\nThis week we break down:\n\nApple MacBook Neo\nDeepSeek vs Claude A..."
                      }
                    }
                  ]
                },
                "shortcode": "DVqlwjTFu3L",
                "edge_media_to_comment": {
                  "count": 0
                },
                "taken_at_timestamp": 1773063127,
                "dimensions": {
                  "height": 607,
                  "width": 1080
                },
                "display_url": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.82787-15/649240667_18392995117198184_25118883566993737...",
                "edge_liked_by": {
                  "count": 0
                },
                "edge_media_preview_like": {
                  "count": 0
                },
                "owner": {
                  "id": "5904382183"
                },
                "thumbnail_src": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.82787-15/649240667_18392995117198184_25118883566993737...",
                "thumbnail_resources": [
                  {
                    "src": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.82787-15/649240667_18392995117198184_25118883566993737...",
                    "config_width": 150,
                    "config_height": 150
                  }
                ],
                "is_video": false,
                "accessibility_caption": "Photo by Advanced Network Professoinals on March 09, 2026. May be an image of microphone and text th..."
              }
            }
          ]
        },
        "edge_hashtag_to_top_posts": {
          "edges": [
            {
              "node": {
                "__typename": "GraphSidecar",
                "id": "3559360150651202917",
                "edge_media_to_caption": {
                  "edges": [
                    {
                      "node": {
                        "text": "👨‍💻 Der Informatiker Antonio Krüger leitet das Deutsche Forschungszentrum für Künstliche Intelligenz..."
                      }
                    }
                  ]
                },
                "shortcode": "DFlYzLfPu1l",
                "edge_media_to_comment": {
                  "count": 35
                },
                "taken_at_timestamp": 1738528819,
                "dimensions": {
                  "height": 1350,
                  "width": 1080
                },
                "display_url": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.2885-15/476124833_610656135002583_7756050468390038718_...",
                "edge_liked_by": {
                  "count": 1827
                },
                "edge_media_preview_like": {
                  "count": 1827
                },
                "owner": {
                  "id": "39955484"
                },
                "thumbnail_src": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.2885-15/476124833_610656135002583_7756050468390038718_...",
                "thumbnail_resources": [
                  {
                    "src": "https://instagram.fbcn2-1.fna.fbcdn.net/v/t51.2885-15/476124833_610656135002583_7756050468390038718_...",
                    "config_width": 150,
                    "config_height": 150
                  }
                ],
                "is_video": false,
                "accessibility_caption": "Photo by Frankfurter Allgemeine on February 02, 2025."
              }
            }
          ]
        },
        "edge_hashtag_to_content_advisory": {
          "count": 0,
          "edges": []
        },
        "edge_hashtag_to_null_state": {
          "edges": []
        }
      }
    },
    "status": "ok",
    "attempts": "6777"
  }
}

💡 Note: For list data, the example shows only 1-2 items for simplicity. The actual count depends on the API response.