Instagram Location Posts API
curl --request POST \
--url https://api.socq.ai/v1/instagram/location-posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"location_id": "<string>",
"callback_url": "<string>",
"results_limit": 20,
"sort_by": "top",
"url": "<string>"
}
'import requests
url = "https://api.socq.ai/v1/instagram/location-posts"
payload = {
"location_id": "<string>",
"callback_url": "<string>",
"results_limit": 20,
"sort_by": "top",
"url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
location_id: '<string>',
callback_url: '<string>',
results_limit: 20,
sort_by: 'top',
url: '<string>'
})
};
fetch('https://api.socq.ai/v1/instagram/location-posts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/instagram/location-posts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'location_id' => '<string>',
'callback_url' => '<string>',
'results_limit' => 20,
'sort_by' => 'top',
'url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/instagram/location-posts"
payload := strings.NewReader("{\n \"location_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"results_limit\": 20,\n \"sort_by\": \"top\",\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/instagram/location-posts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"location_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"results_limit\": 20,\n \"sort_by\": \"top\",\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/instagram/location-posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"location_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"results_limit\": 20,\n \"sort_by\": \"top\",\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}Instagram
Instagram Location Posts
Collect public posts tagged at an Instagram location.
POST
/
v1
/
instagram
/
location-posts
Instagram Location Posts API
curl --request POST \
--url https://api.socq.ai/v1/instagram/location-posts \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"location_id": "<string>",
"callback_url": "<string>",
"results_limit": 20,
"sort_by": "top",
"url": "<string>"
}
'import requests
url = "https://api.socq.ai/v1/instagram/location-posts"
payload = {
"location_id": "<string>",
"callback_url": "<string>",
"results_limit": 20,
"sort_by": "top",
"url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
location_id: '<string>',
callback_url: '<string>',
results_limit: 20,
sort_by: 'top',
url: '<string>'
})
};
fetch('https://api.socq.ai/v1/instagram/location-posts', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.socq.ai/v1/instagram/location-posts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'location_id' => '<string>',
'callback_url' => '<string>',
'results_limit' => 20,
'sort_by' => 'top',
'url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.socq.ai/v1/instagram/location-posts"
payload := strings.NewReader("{\n \"location_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"results_limit\": 20,\n \"sort_by\": \"top\",\n \"url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.socq.ai/v1/instagram/location-posts")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"location_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"results_limit\": 20,\n \"sort_by\": \"top\",\n \"url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.socq.ai/v1/instagram/location-posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"location_id\": \"<string>\",\n \"callback_url\": \"<string>\",\n \"results_limit\": 20,\n \"sort_by\": \"top\",\n \"url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"data": {
"task_id": "<string>",
"status": "<string>",
"created_time": "<string>"
}
}{
"code": 422,
"error": {
"message": "<string>",
"type": "<string>",
"details": {}
}
}Instagram Location Posts
Collect public posts tagged at an Instagram location, either the top posts or the newest ones, with captions, authors, like and comment counts and media. Submit an asynchronous task, then read its standard results.{
"location_id": "384695225271379",
"sort_by": "top",
"results_limit": 20
}
Standard Result Fields
Task results use the stable SocQ fields below. Source-specific field names and formats are normalized without inferring or enriching values that the source did not provide. To request a smaller field set, usefields for MCP queries, _result_fields for typed tools, or --result-fields in the CLI. Declared fields remain present when their value is null.
| Field | Type | Nullable | Description |
|---|---|---|---|
id | string | Yes | Unique identifier for this result item. |
platform | string | No | Platform the result belongs to, such as instagram or linkedin. |
resource | string | No | SocQ resource represented by the result, such as videos or comments. |
type | string | No | Category of the result item, such as video, post, or comment. |
url | string | Yes | Public URL of the result item when available. |
published_at | string | Yes | Time the source item was published, in ISO 8601 format when available. |
collected_at | string | No | Time SocQ collected or processed this result, in ISO 8601 format. |
text | string | Yes | Post body, caption, or message. |
author | object | Yes | Author or publisher of the content. |
author.id | string | Yes | Unique identifier of the author. |
author.username | string | Yes | Public username or handle of the account. |
author.name | string | Yes | Display name of the author. |
author.url | string | Yes | Public URL of the author when available. |
author.avatar_url | string | Yes | URL of the account avatar image. |
author.is_verified | boolean | Yes | Whether the account is verified on the platform. |
author.is_private | boolean | Yes | Whether the account is private. |
metrics | object | Yes | Counters and measurements available for the result item. |
metrics.likes_count | integer | Yes | Number of likes. |
metrics.comments_count | integer | Yes | Number of comments. |
metrics.shares_count | integer | Yes | Number of shares or reposts. |
metrics.views_count | integer | Yes | Number of views reported by the platform. |
media | array<object> | Yes | Images, videos, or other media attached to the result. |
media.type | string | Yes | Media kind, such as image or video. |
media.url | string | Yes | URL of the media asset. |
media.thumbnail_url | string | Yes | URL of the media preview image. |
media.width | integer | Yes | Media width in pixels. |
media.height | integer | Yes | Media height in pixels. |
media.duration_seconds | number | Yes | Media duration in seconds. |
hashtags | array<string> | Yes | Hashtags associated with the content, without changing their source spelling. |
mentions | array<string> | Yes | Accounts mentioned in the content. |
Completed Task Response
{
"code": 200,
"data": {
"task_id": "example-instagram-location-posts",
"status": "succeeded",
"public_id": "instagram/location-posts",
"result_count": 1,
"credits_amount": 0.5,
"results": {
"limit": 50,
"next_cursor": null,
"has_more": false,
"schema_id": "post",
"schema_version": "1.0",
"items": [
{
"id": "4026000000000000001",
"platform": "instagram",
"resource": "location-posts",
"type": "post",
"url": "https://www.instagram.com/p/EXAMPLE0001/",
"published_at": "2026-11-08T22:36:13Z",
"collected_at": "2026-11-09T06:37:43Z",
"text": "Evening lights in Times Square.",
"author": {
"id": "75500000001",
"username": "example_user",
"name": "Example User",
"url": "https://www.instagram.com/example_user/",
"avatar_url": "https://example.com/avatar.jpg",
"is_verified": false,
"is_private": false
},
"metrics": {
"likes_count": 219,
"comments_count": 7,
"shares_count": null,
"views_count": null
},
"media": [
{
"type": "video",
"url": "https://example.com/post.mp4",
"thumbnail_url": "https://example.com/post.jpg",
"width": 1080,
"height": 1920,
"duration_seconds": null
}
],
"hashtags": null,
"mentions": null
}
]
}
}
}
Authorizations
bearerAuthapiKeyAuth
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
application/json
- Option 1
- Option 2
Identify the location with either location_id or its location page url. Set sort_by to top (default) for the location's top posts or recent for the newest posts; results_limit sets how many posts to return (default 20, up to 100).
Numeric Instagram location ID, as returned by Instagram Location Search.
Pattern:
^[0-9]{1,32}$Required range:
1 <= x <= 100Available options:
recent, top Minimum string length:
1Instagram location page URL, such as https://www.instagram.com/explore/locations/212988663/.
Minimum string length:
1
