curl --request GET \
--url https://api.recoupable.dev/api/research/tracks/{id}/measurementsimport requests
url = "https://api.recoupable.dev/api/research/tracks/{id}/measurements"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.recoupable.dev/api/research/tracks/{id}/measurements', 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.recoupable.dev/api/research/tracks/{id}/measurements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.recoupable.dev/api/research/tracks/{id}/measurements"
req, _ := http.NewRequest("GET", url, nil)
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.recoupable.dev/api/research/tracks/{id}/measurements")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recoupable.dev/api/research/tracks/{id}/measurements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "success",
"id": "USQY51771120",
"platform": "spotify",
"metric": "platform_displayed_play_count",
"series": [
{
"date": "2026-06-12",
"value": 297289495,
"data_source": "apify_spotify_playcount"
}
],
"aggregate": {
"kind": "run_rate",
"window_days": 365,
"delta": 42000000,
"run_rate_annualized": 42000000
}
}{
"status": "error",
"error": "Missing required parameter: artist"
}{
"status": "error",
"error": "Missing required parameter: artist"
}{
"error": "insufficient_credits",
"remaining_credits": 0,
"required_credits": 5,
"billingUrl": "https://app.recoupable.dev"
}{
"status": "error",
"error": "Missing required parameter: artist"
}Track measurements
Time-series of a track’s measured counts.
curl --request GET \
--url https://api.recoupable.dev/api/research/tracks/{id}/measurementsimport requests
url = "https://api.recoupable.dev/api/research/tracks/{id}/measurements"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.recoupable.dev/api/research/tracks/{id}/measurements', 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.recoupable.dev/api/research/tracks/{id}/measurements",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.recoupable.dev/api/research/tracks/{id}/measurements"
req, _ := http.NewRequest("GET", url, nil)
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.recoupable.dev/api/research/tracks/{id}/measurements")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.recoupable.dev/api/research/tracks/{id}/measurements")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "success",
"id": "USQY51771120",
"platform": "spotify",
"metric": "platform_displayed_play_count",
"series": [
{
"date": "2026-06-12",
"value": 297289495,
"data_source": "apify_spotify_playcount"
}
],
"aggregate": {
"kind": "run_rate",
"window_days": 365,
"delta": 42000000,
"run_rate_annualized": 42000000
}
}{
"status": "error",
"error": "Missing required parameter: artist"
}{
"status": "error",
"error": "Missing required parameter: artist"
}{
"error": "insufficient_credits",
"remaining_credits": 0,
"required_credits": 5,
"billingUrl": "https://app.recoupable.dev"
}{
"status": "error",
"error": "Missing required parameter: artist"
}Path Parameters
Provider-neutral track id — ISRC or Spotify track id.
Query Parameters
Platform to read. Currently spotify.
Metric to read.
Inclusive start date (ISO) for the series.
Inclusive end date (ISO) for the series.
Series granularity. daily returns the per-day cumulative series.
daily Return a derived aggregate instead of the raw series. run_rate returns the trailing-window annualized run-rate (a projection of the series).
run_rate Trailing window for aggregate=run_rate (e.g. 365d).
Response
The measurement series (or the requested aggregate).
A track's measured series, or — when aggregate is set — the derived projection.
"success"
The provider-neutral track id queried.
"USQY51771120"
"spotify"
"platform_displayed_play_count"
Present unless aggregate is set.
Show child attributes
Show child attributes
Present when aggregate=run_rate.
Show child attributes
Show child attributes
Was this page helpful?
