Analytics
Get revenue breakdown
Where your revenue comes from and how it develops: daily revenue for the last two years, revenue per plan for each of the last 12 months, and revenue per country and per region for the last 12 months compared with the 12 months before.
Shape
| Field | Description |
|---|---|
daily | One entry per day for the last 730 days (UTC): revenue, accounts sold and amount paid out |
plans | months lists the last 12 months (YYYY-MM, oldest first); each series entry has a plan’s revenue and accounts sold per month, highest revenue first |
countryMonths | Revenue and accounts sold per country for each of the 12 months in plans.months, highest revenue first |
countries | Revenue, accounts sold and previous-period revenue per country (ISO 3166-1 alpha-2) over the last 365 days; country is null when the trader has not set one |
regions | The same per US state (CA, TX) and Canadian province (CA-ON), with its name |
unmappedRegionRevenue | Revenue in the United States and Canada whose region could not be recognised |
Revenue is the amount paid for each account, or the plan’s list price when no price was recorded. Location is the trader’s profile country and region. Results refresh at most every 15 minutes.
Error codes
| HTTP | Code | When |
|---|---|---|
| 401 | UNAUTHORIZED | Missing or invalid API key |
| 403 | FORBIDDEN | Credentials do not belong to any organization |
| 500 | REVENUE_BREAKDOWN_ERROR | Internal error |
Example
curl -X GET "https://api.hyperprop.com/platform/v1/organization/analytics/revenue" \
-H "X-API-Key: hp_live_your_key_here"
Authentication: send your organization API key in the X-API-Key header.
GET
/
v1
/
organization
/
analytics
/
revenue
Get revenue breakdown
curl --request GET \
--url https://api.hyperprop.com/platform/v1/organization/analytics/revenue \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hyperprop.com/platform/v1/organization/analytics/revenue"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hyperprop.com/platform/v1/organization/analytics/revenue', 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.hyperprop.com/platform/v1/organization/analytics/revenue",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.hyperprop.com/platform/v1/organization/analytics/revenue"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.hyperprop.com/platform/v1/organization/analytics/revenue")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperprop.com/platform/v1/organization/analytics/revenue")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"organizationId": "a6fcc0ce-eb28-4f43-b256-96a3144b0d34",
"organizationName": "Acme Trading",
"generatedAt": "2026-10-11T10:30:00.000Z",
"daily": [
{
"date": "2026-10-10",
"revenue": 12840,
"accountsSold": 96,
"paidOut": 4100
}
],
"plans": {
"months": [
"2025-11",
"2025-12"
],
"series": [
{
"planId": "6f1c2b4e-0b0a-4c55-9d1e-2f7b3c9a1d10",
"name": "50K Evaluation",
"revenue": [
18200,
20450
],
"accountsSold": [
182,
205
]
}
]
},
"countries": [
{
"country": "US",
"revenue": 3483948,
"accountsSold": 21757,
"previousRevenue": 2210400
}
],
"countryMonths": [
{
"country": "US",
"revenue": [
268400,
301250
],
"accountsSold": [
1680,
1902
]
}
],
"regions": [
{
"country": "US",
"id": "TX",
"name": "Texas",
"revenue": 301500,
"accountsSold": 1877,
"previousRevenue": 198000
}
],
"unmappedRegionRevenue": {
"US": 1240,
"CA": 0
}
}
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Invalid or expired token",
"code": "UNAUTHORIZED"
}{
"statusCode": 403,
"error": "Forbidden",
"message": "You do not belong to any organization",
"code": "FORBIDDEN"
}{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An error occurred fetching the revenue breakdown",
"code": "REVENUE_BREAKDOWN_ERROR"
}⌘I
Get revenue breakdown
curl --request GET \
--url https://api.hyperprop.com/platform/v1/organization/analytics/revenue \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.hyperprop.com/platform/v1/organization/analytics/revenue"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.hyperprop.com/platform/v1/organization/analytics/revenue', 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.hyperprop.com/platform/v1/organization/analytics/revenue",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$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.hyperprop.com/platform/v1/organization/analytics/revenue"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.hyperprop.com/platform/v1/organization/analytics/revenue")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hyperprop.com/platform/v1/organization/analytics/revenue")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"organizationId": "a6fcc0ce-eb28-4f43-b256-96a3144b0d34",
"organizationName": "Acme Trading",
"generatedAt": "2026-10-11T10:30:00.000Z",
"daily": [
{
"date": "2026-10-10",
"revenue": 12840,
"accountsSold": 96,
"paidOut": 4100
}
],
"plans": {
"months": [
"2025-11",
"2025-12"
],
"series": [
{
"planId": "6f1c2b4e-0b0a-4c55-9d1e-2f7b3c9a1d10",
"name": "50K Evaluation",
"revenue": [
18200,
20450
],
"accountsSold": [
182,
205
]
}
]
},
"countries": [
{
"country": "US",
"revenue": 3483948,
"accountsSold": 21757,
"previousRevenue": 2210400
}
],
"countryMonths": [
{
"country": "US",
"revenue": [
268400,
301250
],
"accountsSold": [
1680,
1902
]
}
],
"regions": [
{
"country": "US",
"id": "TX",
"name": "Texas",
"revenue": 301500,
"accountsSold": 1877,
"previousRevenue": 198000
}
],
"unmappedRegionRevenue": {
"US": 1240,
"CA": 0
}
}
}{
"statusCode": 401,
"error": "Unauthorized",
"message": "Invalid or expired token",
"code": "UNAUTHORIZED"
}{
"statusCode": 403,
"error": "Forbidden",
"message": "You do not belong to any organization",
"code": "FORBIDDEN"
}{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An error occurred fetching the revenue breakdown",
"code": "REVENUE_BREAKDOWN_ERROR"
}