POST
/api/public/v1/scrape/snapchat/profile#
Public profile details — name, bio, subscriber count, category, website.
Returns profile_api
Parameters
Request
cURL
Python
Node
Ruby
PHP
Go
Copy
curl -X POST https://socialholmes.com/api/public/v1/scrape/snapchat/profile \
-H "Authorization: Bearer $SOCIALHOLMES_KEY" \
-H "Content-Type: application/json" \
-d ' { "parameters" : { "username" : "nasa" }} '
import os
import requests
run = requests. post (
"https://socialholmes.com/api/public/v1/scrape/snapchat/profile" ,
headers={ "Authorization" : f"Bearer {os.environ['SOCIALHOLMES_KEY']}" },
json={ "parameters" : { "username" : "nasa" }},
). json ()
print ( run[ "id" ], run[ "status" ])
const response = await fetch ( "https://socialholmes.com/api/public/v1/scrape/snapchat/profile" , {
method: "POST" ,
headers: {
Authorization: `Bearer ${process.env.SOCIALHOLMES_KEY}` ,
"Content-Type" : "application/json" ,
},
body: JSON . stringify ({ parameters: { username: "nasa" } }),
})
const run = await response. json ()
console. log ( run. id, run. status)
require "net/http"
require "json"
response = Net:: HTTP . post (
URI ( "https://socialholmes.com/api/public/v1/scrape/snapchat/profile" ),
{ parameters: { username: "nasa" } }. to_json,
"Authorization" => "Bearer #{ENV.fetch('SOCIALHOLMES_KEY')}" ,
"Content-Type" => "application/json"
)
run = JSON . parse ( response. body)
puts run[ "id" ], run[ "status" ]
<?php
$ch = curl_init ( "https://socialholmes.com/api/public/v1/scrape/snapchat/profile" );
curl_setopt_array ( $ch, [
CURLOPT_POST => true ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv ( "SOCIALHOLMES_KEY" ),
"Content-Type: application/json" ,
],
CURLOPT_POSTFIELDS => json_encode ([ "parameters" => [ "username" => "nasa" ]]),
]);
$run = json_decode ( curl_exec ( $ch), true );
echo $run[ "id" ], " " , $run[ "status" ];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main () {
body, _ := json. Marshal ( map [ string ] any {
"parameters" : map [ string ] string { "username" : "nasa" },
})
req, _ := http. NewRequest ( "POST" , "https://socialholmes.com/api/public/v1/scrape/snapchat/profile" , bytes. NewReader ( body))
req. Header. Set ( "Authorization" , "Bearer " + os. Getenv ( "SOCIALHOLMES_KEY" ))
req. Header. Set ( "Content-Type" , "application/json" )
res, _ := http. DefaultClient. Do ( req)
defer res. Body. Close ()
var run map [ string ] any
json. NewDecoder ( res. Body). Decode (& run)
fmt. Println ( run[ "id" ], run[ "status" ])
}
Response
202 Accepted
Copy
{
"id" : "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21" ,
"status" : "queued" ,
"platform" : "snapchat" ,
"endpoint" : "profile" ,
"target" : "nasa" ,
"url" : "https://www.snapchat.com/@nasa" ,
"result_count" : 0 ,
"created_at" : "2026-08-27T17:55:19Z"
}
This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.
POST
/api/public/v1/scrape/snapchat/story#
Snaps in the live public story. Use `limit` to say how many.
Returns story_api
Parameters
Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.
Request
cURL
Python
Node
Ruby
PHP
Go
Copy
curl -X POST https://socialholmes.com/api/public/v1/scrape/snapchat/story \
-H "Authorization: Bearer $SOCIALHOLMES_KEY" \
-H "Content-Type: application/json" \
-d ' { "parameters" : { "username" : "nasa" }, "limit" : 25 } '
import os
import requests
run = requests. post (
"https://socialholmes.com/api/public/v1/scrape/snapchat/story" ,
headers={ "Authorization" : f"Bearer {os.environ['SOCIALHOLMES_KEY']}" },
json={ "parameters" : { "username" : "nasa" }, "limit" : 25 },
). json ()
print ( run[ "id" ], run[ "status" ])
const response = await fetch ( "https://socialholmes.com/api/public/v1/scrape/snapchat/story" , {
method: "POST" ,
headers: {
Authorization: `Bearer ${process.env.SOCIALHOLMES_KEY}` ,
"Content-Type" : "application/json" ,
},
body: JSON . stringify ({ parameters: { username: "nasa" }, limit: 25 }),
})
const run = await response. json ()
console. log ( run. id, run. status)
require "net/http"
require "json"
response = Net:: HTTP . post (
URI ( "https://socialholmes.com/api/public/v1/scrape/snapchat/story" ),
{ parameters: { username: "nasa" }, limit: 25 }. to_json,
"Authorization" => "Bearer #{ENV.fetch('SOCIALHOLMES_KEY')}" ,
"Content-Type" => "application/json"
)
run = JSON . parse ( response. body)
puts run[ "id" ], run[ "status" ]
<?php
$ch = curl_init ( "https://socialholmes.com/api/public/v1/scrape/snapchat/story" );
curl_setopt_array ( $ch, [
CURLOPT_POST => true ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv ( "SOCIALHOLMES_KEY" ),
"Content-Type: application/json" ,
],
CURLOPT_POSTFIELDS => json_encode ([ "parameters" => [ "username" => "nasa" ], "limit" => 25 ]),
]);
$run = json_decode ( curl_exec ( $ch), true );
echo $run[ "id" ], " " , $run[ "status" ];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main () {
body, _ := json. Marshal ( map [ string ] any {
"parameters" : map [ string ] string { "username" : "nasa" },
"limit" : 25 ,
})
req, _ := http. NewRequest ( "POST" , "https://socialholmes.com/api/public/v1/scrape/snapchat/story" , bytes. NewReader ( body))
req. Header. Set ( "Authorization" , "Bearer " + os. Getenv ( "SOCIALHOLMES_KEY" ))
req. Header. Set ( "Content-Type" , "application/json" )
res, _ := http. DefaultClient. Do ( req)
defer res. Body. Close ()
var run map [ string ] any
json. NewDecoder ( res. Body). Decode (& run)
fmt. Println ( run[ "id" ], run[ "status" ])
}
Response
202 Accepted
Copy
{
"id" : "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21" ,
"status" : "queued" ,
"platform" : "snapchat" ,
"endpoint" : "story" ,
"target" : "nasa" ,
"url" : "https://www.snapchat.com/@nasa" ,
"result_count" : 0 ,
"created_at" : "2026-08-27T17:55:19Z"
}
This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.
POST
/api/public/v1/scrape/snapchat/highlights#
Saved story highlights, each with the snaps inside it. Use `limit` for how many.
Returns highlight_tray_api
Parameters
Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.
Request
cURL
Python
Node
Ruby
PHP
Go
Copy
curl -X POST https://socialholmes.com/api/public/v1/scrape/snapchat/highlights \
-H "Authorization: Bearer $SOCIALHOLMES_KEY" \
-H "Content-Type: application/json" \
-d ' { "parameters" : { "username" : "nasa" }, "limit" : 25 } '
import os
import requests
run = requests. post (
"https://socialholmes.com/api/public/v1/scrape/snapchat/highlights" ,
headers={ "Authorization" : f"Bearer {os.environ['SOCIALHOLMES_KEY']}" },
json={ "parameters" : { "username" : "nasa" }, "limit" : 25 },
). json ()
print ( run[ "id" ], run[ "status" ])
const response = await fetch ( "https://socialholmes.com/api/public/v1/scrape/snapchat/highlights" , {
method: "POST" ,
headers: {
Authorization: `Bearer ${process.env.SOCIALHOLMES_KEY}` ,
"Content-Type" : "application/json" ,
},
body: JSON . stringify ({ parameters: { username: "nasa" }, limit: 25 }),
})
const run = await response. json ()
console. log ( run. id, run. status)
require "net/http"
require "json"
response = Net:: HTTP . post (
URI ( "https://socialholmes.com/api/public/v1/scrape/snapchat/highlights" ),
{ parameters: { username: "nasa" }, limit: 25 }. to_json,
"Authorization" => "Bearer #{ENV.fetch('SOCIALHOLMES_KEY')}" ,
"Content-Type" => "application/json"
)
run = JSON . parse ( response. body)
puts run[ "id" ], run[ "status" ]
<?php
$ch = curl_init ( "https://socialholmes.com/api/public/v1/scrape/snapchat/highlights" );
curl_setopt_array ( $ch, [
CURLOPT_POST => true ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv ( "SOCIALHOLMES_KEY" ),
"Content-Type: application/json" ,
],
CURLOPT_POSTFIELDS => json_encode ([ "parameters" => [ "username" => "nasa" ], "limit" => 25 ]),
]);
$run = json_decode ( curl_exec ( $ch), true );
echo $run[ "id" ], " " , $run[ "status" ];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main () {
body, _ := json. Marshal ( map [ string ] any {
"parameters" : map [ string ] string { "username" : "nasa" },
"limit" : 25 ,
})
req, _ := http. NewRequest ( "POST" , "https://socialholmes.com/api/public/v1/scrape/snapchat/highlights" , bytes. NewReader ( body))
req. Header. Set ( "Authorization" , "Bearer " + os. Getenv ( "SOCIALHOLMES_KEY" ))
req. Header. Set ( "Content-Type" , "application/json" )
res, _ := http. DefaultClient. Do ( req)
defer res. Body. Close ()
var run map [ string ] any
json. NewDecoder ( res. Body). Decode (& run)
fmt. Println ( run[ "id" ], run[ "status" ])
}
Response
202 Accepted
Copy
{
"id" : "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21" ,
"status" : "queued" ,
"platform" : "snapchat" ,
"endpoint" : "highlights" ,
"target" : "nasa" ,
"url" : "https://www.snapchat.com/@nasa" ,
"result_count" : 0 ,
"created_at" : "2026-08-27T17:55:19Z"
}
This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.
POST
/api/public/v1/scrape/snapchat/spotlight#
A creator's Spotlight videos, with view and share counts. Use `limit` for how many.
Returns reel_feed_api
Parameters
Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.
Request
cURL
Python
Node
Ruby
PHP
Go
Copy
curl -X POST https://socialholmes.com/api/public/v1/scrape/snapchat/spotlight \
-H "Authorization: Bearer $SOCIALHOLMES_KEY" \
-H "Content-Type: application/json" \
-d ' { "parameters" : { "username" : "nasa" }, "limit" : 25 } '
import os
import requests
run = requests. post (
"https://socialholmes.com/api/public/v1/scrape/snapchat/spotlight" ,
headers={ "Authorization" : f"Bearer {os.environ['SOCIALHOLMES_KEY']}" },
json={ "parameters" : { "username" : "nasa" }, "limit" : 25 },
). json ()
print ( run[ "id" ], run[ "status" ])
const response = await fetch ( "https://socialholmes.com/api/public/v1/scrape/snapchat/spotlight" , {
method: "POST" ,
headers: {
Authorization: `Bearer ${process.env.SOCIALHOLMES_KEY}` ,
"Content-Type" : "application/json" ,
},
body: JSON . stringify ({ parameters: { username: "nasa" }, limit: 25 }),
})
const run = await response. json ()
console. log ( run. id, run. status)
require "net/http"
require "json"
response = Net:: HTTP . post (
URI ( "https://socialholmes.com/api/public/v1/scrape/snapchat/spotlight" ),
{ parameters: { username: "nasa" }, limit: 25 }. to_json,
"Authorization" => "Bearer #{ENV.fetch('SOCIALHOLMES_KEY')}" ,
"Content-Type" => "application/json"
)
run = JSON . parse ( response. body)
puts run[ "id" ], run[ "status" ]
<?php
$ch = curl_init ( "https://socialholmes.com/api/public/v1/scrape/snapchat/spotlight" );
curl_setopt_array ( $ch, [
CURLOPT_POST => true ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv ( "SOCIALHOLMES_KEY" ),
"Content-Type: application/json" ,
],
CURLOPT_POSTFIELDS => json_encode ([ "parameters" => [ "username" => "nasa" ], "limit" => 25 ]),
]);
$run = json_decode ( curl_exec ( $ch), true );
echo $run[ "id" ], " " , $run[ "status" ];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main () {
body, _ := json. Marshal ( map [ string ] any {
"parameters" : map [ string ] string { "username" : "nasa" },
"limit" : 25 ,
})
req, _ := http. NewRequest ( "POST" , "https://socialholmes.com/api/public/v1/scrape/snapchat/spotlight" , bytes. NewReader ( body))
req. Header. Set ( "Authorization" , "Bearer " + os. Getenv ( "SOCIALHOLMES_KEY" ))
req. Header. Set ( "Content-Type" , "application/json" )
res, _ := http. DefaultClient. Do ( req)
defer res. Body. Close ()
var run map [ string ] any
json. NewDecoder ( res. Body). Decode (& run)
fmt. Println ( run[ "id" ], run[ "status" ])
}
Response
202 Accepted
Copy
{
"id" : "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21" ,
"status" : "queued" ,
"platform" : "snapchat" ,
"endpoint" : "spotlight" ,
"target" : "nasa" ,
"url" : "https://www.snapchat.com/@nasa" ,
"result_count" : 0 ,
"created_at" : "2026-08-27T17:55:19Z"
}
This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.
POST
/api/public/v1/scrape/snapchat/lenses#
AR lenses a creator publishes. Use `limit` to say how many.
Returns lens_feed_api
Parameters
Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.
Request
cURL
Python
Node
Ruby
PHP
Go
Copy
curl -X POST https://socialholmes.com/api/public/v1/scrape/snapchat/lenses \
-H "Authorization: Bearer $SOCIALHOLMES_KEY" \
-H "Content-Type: application/json" \
-d ' { "parameters" : { "username" : "nasa" }, "limit" : 25 } '
import os
import requests
run = requests. post (
"https://socialholmes.com/api/public/v1/scrape/snapchat/lenses" ,
headers={ "Authorization" : f"Bearer {os.environ['SOCIALHOLMES_KEY']}" },
json={ "parameters" : { "username" : "nasa" }, "limit" : 25 },
). json ()
print ( run[ "id" ], run[ "status" ])
const response = await fetch ( "https://socialholmes.com/api/public/v1/scrape/snapchat/lenses" , {
method: "POST" ,
headers: {
Authorization: `Bearer ${process.env.SOCIALHOLMES_KEY}` ,
"Content-Type" : "application/json" ,
},
body: JSON . stringify ({ parameters: { username: "nasa" }, limit: 25 }),
})
const run = await response. json ()
console. log ( run. id, run. status)
require "net/http"
require "json"
response = Net:: HTTP . post (
URI ( "https://socialholmes.com/api/public/v1/scrape/snapchat/lenses" ),
{ parameters: { username: "nasa" }, limit: 25 }. to_json,
"Authorization" => "Bearer #{ENV.fetch('SOCIALHOLMES_KEY')}" ,
"Content-Type" => "application/json"
)
run = JSON . parse ( response. body)
puts run[ "id" ], run[ "status" ]
<?php
$ch = curl_init ( "https://socialholmes.com/api/public/v1/scrape/snapchat/lenses" );
curl_setopt_array ( $ch, [
CURLOPT_POST => true ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv ( "SOCIALHOLMES_KEY" ),
"Content-Type: application/json" ,
],
CURLOPT_POSTFIELDS => json_encode ([ "parameters" => [ "username" => "nasa" ], "limit" => 25 ]),
]);
$run = json_decode ( curl_exec ( $ch), true );
echo $run[ "id" ], " " , $run[ "status" ];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main () {
body, _ := json. Marshal ( map [ string ] any {
"parameters" : map [ string ] string { "username" : "nasa" },
"limit" : 25 ,
})
req, _ := http. NewRequest ( "POST" , "https://socialholmes.com/api/public/v1/scrape/snapchat/lenses" , bytes. NewReader ( body))
req. Header. Set ( "Authorization" , "Bearer " + os. Getenv ( "SOCIALHOLMES_KEY" ))
req. Header. Set ( "Content-Type" , "application/json" )
res, _ := http. DefaultClient. Do ( req)
defer res. Body. Close ()
var run map [ string ] any
json. NewDecoder ( res. Body). Decode (& run)
fmt. Println ( run[ "id" ], run[ "status" ])
}
Response
202 Accepted
Copy
{
"id" : "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21" ,
"status" : "queued" ,
"platform" : "snapchat" ,
"endpoint" : "lenses" ,
"target" : "nasa" ,
"url" : "https://www.snapchat.com/@nasa" ,
"result_count" : 0 ,
"created_at" : "2026-08-27T17:55:19Z"
}
This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.
POST
/api/public/v1/scrape/snapchat/snap#
One Spotlight video's full record — creator, duration, view, share and comment counts.
Returns post_detail_api
Parameters
Request
cURL
Python
Node
Ruby
PHP
Go
Copy
curl -X POST https://socialholmes.com/api/public/v1/scrape/snapchat/snap \
-H "Authorization: Bearer $SOCIALHOLMES_KEY" \
-H "Content-Type: application/json" \
-d ' { "parameters" : { "snap_id" : "W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ" }} '
import os
import requests
run = requests. post (
"https://socialholmes.com/api/public/v1/scrape/snapchat/snap" ,
headers={ "Authorization" : f"Bearer {os.environ['SOCIALHOLMES_KEY']}" },
json={ "parameters" : { "snap_id" : "W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ" }},
). json ()
print ( run[ "id" ], run[ "status" ])
const response = await fetch ( "https://socialholmes.com/api/public/v1/scrape/snapchat/snap" , {
method: "POST" ,
headers: {
Authorization: `Bearer ${process.env.SOCIALHOLMES_KEY}` ,
"Content-Type" : "application/json" ,
},
body: JSON . stringify ({ parameters: { snap_id: "W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ" } }),
})
const run = await response. json ()
console. log ( run. id, run. status)
require "net/http"
require "json"
response = Net:: HTTP . post (
URI ( "https://socialholmes.com/api/public/v1/scrape/snapchat/snap" ),
{ parameters: { snap_id: "W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ" } }. to_json,
"Authorization" => "Bearer #{ENV.fetch('SOCIALHOLMES_KEY')}" ,
"Content-Type" => "application/json"
)
run = JSON . parse ( response. body)
puts run[ "id" ], run[ "status" ]
<?php
$ch = curl_init ( "https://socialholmes.com/api/public/v1/scrape/snapchat/snap" );
curl_setopt_array ( $ch, [
CURLOPT_POST => true ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv ( "SOCIALHOLMES_KEY" ),
"Content-Type: application/json" ,
],
CURLOPT_POSTFIELDS => json_encode ([ "parameters" => [ "snap_id" => "W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ" ]]),
]);
$run = json_decode ( curl_exec ( $ch), true );
echo $run[ "id" ], " " , $run[ "status" ];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main () {
body, _ := json. Marshal ( map [ string ] any {
"parameters" : map [ string ] string { "snap_id" : "W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ" },
})
req, _ := http. NewRequest ( "POST" , "https://socialholmes.com/api/public/v1/scrape/snapchat/snap" , bytes. NewReader ( body))
req. Header. Set ( "Authorization" , "Bearer " + os. Getenv ( "SOCIALHOLMES_KEY" ))
req. Header. Set ( "Content-Type" , "application/json" )
res, _ := http. DefaultClient. Do ( req)
defer res. Body. Close ()
var run map [ string ] any
json. NewDecoder ( res. Body). Decode (& run)
fmt. Println ( run[ "id" ], run[ "status" ])
}
Response
202 Accepted
Copy
{
"id" : "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21" ,
"status" : "queued" ,
"platform" : "snapchat" ,
"endpoint" : "snap" ,
"target" : "W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ" ,
"url" : "https://www.snapchat.com/spotlight/W7_EDlXWTBiXAEEniNoMPwAAYeG9xcGd0ZWd3AZ14BVv0AZ14BQkrAAAAAQ" ,
"result_count" : 0 ,
"created_at" : "2026-08-27T17:55:19Z"
}
This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.
POST
/api/public/v1/scrape/snapchat/trending#
The public Spotlight feed, newest and most watched. Use `limit` for how many.
Returns reel_feed_api
Parameters
None.
Takes limit — how many results you want. The run is sized from it, and you are billed for exactly that many.
Request
cURL
Python
Node
Ruby
PHP
Go
Copy
curl -X POST https://socialholmes.com/api/public/v1/scrape/snapchat/trending \
-H "Authorization: Bearer $SOCIALHOLMES_KEY" \
-H "Content-Type: application/json" \
-d ' { "limit" : 25 } '
import os
import requests
run = requests. post (
"https://socialholmes.com/api/public/v1/scrape/snapchat/trending" ,
headers={ "Authorization" : f"Bearer {os.environ['SOCIALHOLMES_KEY']}" },
json={ "limit" : 25 },
). json ()
print ( run[ "id" ], run[ "status" ])
const response = await fetch ( "https://socialholmes.com/api/public/v1/scrape/snapchat/trending" , {
method: "POST" ,
headers: {
Authorization: `Bearer ${process.env.SOCIALHOLMES_KEY}` ,
"Content-Type" : "application/json" ,
},
body: JSON . stringify ({ limit: 25 }),
})
const run = await response. json ()
console. log ( run. id, run. status)
require "net/http"
require "json"
response = Net:: HTTP . post (
URI ( "https://socialholmes.com/api/public/v1/scrape/snapchat/trending" ),
{ limit: 25 }. to_json,
"Authorization" => "Bearer #{ENV.fetch('SOCIALHOLMES_KEY')}" ,
"Content-Type" => "application/json"
)
run = JSON . parse ( response. body)
puts run[ "id" ], run[ "status" ]
<?php
$ch = curl_init ( "https://socialholmes.com/api/public/v1/scrape/snapchat/trending" );
curl_setopt_array ( $ch, [
CURLOPT_POST => true ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv ( "SOCIALHOLMES_KEY" ),
"Content-Type: application/json" ,
],
CURLOPT_POSTFIELDS => json_encode ([ "limit" => 25 ]),
]);
$run = json_decode ( curl_exec ( $ch), true );
echo $run[ "id" ], " " , $run[ "status" ];
package main
import (
"bytes"
"encoding/json"
"fmt"
"net/http"
"os"
)
func main () {
body, _ := json. Marshal ( map [ string ] any {
"limit" : 25 ,
})
req, _ := http. NewRequest ( "POST" , "https://socialholmes.com/api/public/v1/scrape/snapchat/trending" , bytes. NewReader ( body))
req. Header. Set ( "Authorization" , "Bearer " + os. Getenv ( "SOCIALHOLMES_KEY" ))
req. Header. Set ( "Content-Type" , "application/json" )
res, _ := http. DefaultClient. Do ( req)
defer res. Body. Close ()
var run map [ string ] any
json. NewDecoder ( res. Body). Decode (& run)
fmt. Println ( run[ "id" ], run[ "status" ])
}
Response
202 Accepted
Copy
{
"id" : "8f14e45f-ceea-467a-9c2e-1b0f5a4c7d21" ,
"status" : "queued" ,
"platform" : "snapchat" ,
"endpoint" : "trending" ,
"target" : null ,
"url" : "https://www.snapchat.com/spotlight" ,
"result_count" : 0 ,
"created_at" : "2026-08-27T17:55:19Z"
}
This endpoint errs towards returning more rather than less, so expect a few extra rows alongside what you asked for. Everything still comes back typed and parsed the same way.