Get dataset rows
curl --request GET \
--url https://api.superx.so/v1/datasets/{id}/rows \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.superx.so/v1/datasets/{id}/rows"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.superx.so/v1/datasets/{id}/rows', 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.superx.so/v1/datasets/{id}/rows",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.superx.so/v1/datasets/{id}/rows"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.superx.so/v1/datasets/{id}/rows")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superx.so/v1/datasets/{id}/rows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"handle": "@levelsio",
"name": "levels.io",
"bio": "Indie maker",
"website": "https://levels.io",
"followers": 600000,
"following": 1200,
"location": "Everywhere",
"can_dm": true,
"verified": true,
"user_id": "944883311",
"avatar": "https://pbs.twimg.com/profile_images/example.jpg"
}
],
"pagination": {
"page": 1,
"limit": 50,
"has_more": true,
"total": 214
}
}{
"error": {
"code": "invalid_parameter",
"message": "since must be a UTC ISO-8601 timestamp"
}
}{
"error": {
"code": "invalid_api_key",
"message": "Unknown or revoked API key"
}
}{
"error": "subscription_required: The SuperX API requires an active subscription"
}{
"error": {
"code": "dataset_not_found",
"message": "No dataset with that id belongs to this key, or it has expired (datasets are kept for 30 days)"
}
}{
"error": {
"code": "dataset_not_ready",
"message": "This dataset is not ready yet. Check GET /v1/datasets/{id}: a collecting dataset finishes on its own, and a failed one has to be rebuilt in the SuperX app.",
"dataset_status": "collecting"
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded for the Pro plan (30 requests/min). Upgrade for higher limits.",
"retry_after": 42
}
}{
"error": {
"code": "internal_error",
"message": "Failed to fetch posts"
}
}Datasets
Get dataset rows
A page of a ready dataset’s rows.
Rows come back exactly as the collection stored them: the keys listed
in the dataset’s columns, plus user_id (the X account id as a
string) and avatar on people datasets. Text fields are not
shortened.
Each call parses the whole dataset (up to about 5MB), so page through
with limit and page rather than looping at limit=1. A dataset
that is not ready returns 409 dataset_not_ready.
GET
/
v1
/
datasets
/
{id}
/
rows
Get dataset rows
curl --request GET \
--url https://api.superx.so/v1/datasets/{id}/rows \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.superx.so/v1/datasets/{id}/rows"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.superx.so/v1/datasets/{id}/rows', 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.superx.so/v1/datasets/{id}/rows",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.superx.so/v1/datasets/{id}/rows"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.superx.so/v1/datasets/{id}/rows")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superx.so/v1/datasets/{id}/rows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"handle": "@levelsio",
"name": "levels.io",
"bio": "Indie maker",
"website": "https://levels.io",
"followers": 600000,
"following": 1200,
"location": "Everywhere",
"can_dm": true,
"verified": true,
"user_id": "944883311",
"avatar": "https://pbs.twimg.com/profile_images/example.jpg"
}
],
"pagination": {
"page": 1,
"limit": 50,
"has_more": true,
"total": 214
}
}{
"error": {
"code": "invalid_parameter",
"message": "since must be a UTC ISO-8601 timestamp"
}
}{
"error": {
"code": "invalid_api_key",
"message": "Unknown or revoked API key"
}
}{
"error": "subscription_required: The SuperX API requires an active subscription"
}{
"error": {
"code": "dataset_not_found",
"message": "No dataset with that id belongs to this key, or it has expired (datasets are kept for 30 days)"
}
}{
"error": {
"code": "dataset_not_ready",
"message": "This dataset is not ready yet. Check GET /v1/datasets/{id}: a collecting dataset finishes on its own, and a failed one has to be rebuilt in the SuperX app.",
"dataset_status": "collecting"
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded for the Pro plan (30 requests/min). Upgrade for higher limits.",
"retry_after": 42
}
}{
"error": {
"code": "internal_error",
"message": "Failed to fetch posts"
}
}Authorizations
A SuperX API key ("sxk_..."), created in the SuperX app under Account > API / MCP / CLI. Keys are server-side secrets.
Path Parameters
The dataset id from GET /v1/datasets.
Pattern:
^[A-Za-z0-9_-]{1,64}$Query Parameters
Rows per page, 1 to 100.
Required range:
1 <= x <= 1001-based page number.
Required range:
x >= 1