Business Insights API
Pull your review sentiment, competitor benchmarking and regional performance data programmatically. A read-only, key-authenticated REST API returning JSON.
/api/v1
Format JSON
Rate limit 120/min
Introduction
The Business Insights API gives you programmatic, read-only access to the same analytics you see in your dashboard: sentiment, competitor benchmarking and regional performance, returned as JSON. Every request is authenticated with your business API key and scoped to your business only.
All endpoints are GET requests under /api/v1.
curl https://www.ratecrest.com/api/v1/insights/sentiment-analysis \
-H "X-Api-Key: rc_your_key_here"
const res = await fetch( "https://www.ratecrest.com/api/v1/insights/sentiment-analysis", { headers: { "X-Api-Key": "rc_your_key_here" } } ); const data = await res.json();
$ch = curl_init("https://www.ratecrest.com/api/v1/insights/sentiment-analysis"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-Api-Key: rc_your_key_here"]); $data = json_decode(curl_exec($ch), true);
Get your API key
Your API key is tied to your business. Generate one from your business settings under API Access. The full key is shown once at generation, so copy it and store it safely. Lose it and you simply generate a new one; the old key stops working immediately.
Generate a key in Settings# Looks like:
rc_3f9a1c8e2b7d40a5e1f6c9b8a2d4e7f0
Authentication
Send your key with every request using any one of these three methods. Requests without a valid key for an active business return 401.
| Method | How |
|---|---|
| Header | X-Api-Key: KEY |
| Bearer | Authorization: Bearer KEY |
| Query | ?api_key=KEY |
# Header (recommended) curl https://www.ratecrest.com/api/v1/insights \ -H "X-Api-Key: rc_your_key_here" # Bearer curl https://www.ratecrest.com/api/v1/insights \ -H "Authorization: Bearer rc_your_key_here"
fetch("https://www.ratecrest.com/api/v1/insights", { headers: { "Authorization": "Bearer rc_your_key_here" } });
curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer rc_your_key_here" ]);
Selecting a period
By default an endpoint returns the most recent month that has data. Request a specific month, or an aggregated range, with query parameters.
| Parameter | Description |
|---|---|
year, month | A single month. Month is 1 to 12. |
year_from month_from year_to month_to | An aggregated range. All four required together. |
# A specific month curl "https://www.ratecrest.com/api/v1/insights?year=2026&month=3" \ -H "X-Api-Key: rc_your_key_here" # A range curl "https://www.ratecrest.com/api/v1/insights/sentiment-analysis/trends?year_from=2026&month_from=1&year_to=2026&month_to=3" \ -H "X-Api-Key: rc_your_key_here"
Response shape
Every successful response shares the same envelope: a success flag, a meta block describing the period, and a data block. Inside data you always get a summary, plus a nested data object holding the endpoint-specific fields.
"data": null and an explanatory message.{
"success": true,
"meta": {
"year": 2026, "month": 3,
"period_label": "March 2026",
"available_months": [
{ "year": 2026, "month": 3, "label": "March 2026" }
]
},
"data": {
"summary": {
"total_reviews": 352, "avg_rating": 3.7,
"net_sentiment_score": 45, "response_rate": 45.2,
"avg_response_time_hours": 38.12
},
"data": { /* endpoint-specific, see below */ }
}
}
Errors
Authentication failures return 401; exceeding the rate limit returns 429.
| Status | Meaning |
|---|---|
200 | Success. A period with no data is still 200 with a null data block. |
401 | Missing, invalid, or inactive-business key. |
429 | Rate limit exceeded (120/min). |
{
"success": false,
"message": "Invalid or inactive API key."
}
statsdistributionstatstrend_alertsaspectsemotionsemotion_alertstopicstonestone_alertsresponse_impactalertstrend_alertsemotion_alertstone_alerts{
"data": { "data": {
"stats": {
"total_reviews": 352, "net_sentiment": 45,
"avg_rating": 3.7, "response_rate": 45.2,
"response_rate_change": 2.1
},
"distribution": [
{ "label": "Positive", "percent": 63, "count": 221 }
]
} }
}
executivecomparison_tablestrengthsopportunitiesoverview_insightscomparison_tabletrends_insightsvelocitytheme_sentimenttheme_sentiment_insightsexecutiveregional_matrixregional_insightsinsightsmarket_positionleaderboardratings_leaderboardgrowth_leaderboardresponsiveness_leaderboardsentiment_leaderboardleaderboard_insights{
"data": { "data": {
"executive": {
"avg_rating": 3.7, "net_sentiment": 45,
"competitor_avg_rating": 3.3, "competitor_count": 4
},
"comparison_table": [
{ "name": "Your Business", "rating": 3.7,
"reviews": 352, "response_rate": "45%" }
]
} }
}
total_regionsmost_activefastest_growingavg_per_statestatesstatesstatesissue_frequencyrisk_alertsengagement_gapstrend_alerts{
"data": { "data": {
"total_regions": 32,
"most_active": "Ebonyi", "most_active_count": 18,
"fastest_growing": "Ebonyi", "avg_per_state": 11,
"states": [
{ "state": "Ebonyi", "total_reviews": 18,
"avg_rating": 3.8, "net_sentiment": 33 }
]
} }
}