Pick an example, add your key and start building. No SDK required.
Attribution is required. Whenever you display, share or reuse API content, include a visible GrooveGauge credit linked to the matching original page. Copyright in our original editorial content remains with GrooveGauge. Read the attribution and AI integration guidance.
Base URL: https://groovegauge.com/en/api/v1
Jump to an example
Your first working request
Need an API key? Start here.
Create a free account and an API key. Confirm your email, choose your first name, username and password, then create a named key for your project.
Replace YOUR_API_KEY in the example below. The key is shown only once when you create it.
Run the example on your server or in your terminal. The next request gets a real review.
Terminal examples use Bash and cURL. Other options: Node.js with built-in fetch, PHP with cURL enabled, or Python 3 using its standard library.
Set GROOVEGAUGE_API_KEY in your server environment. The cURL example includes the export command.
IDs, artist names, titles and scores are shared. Switch the base URL to choose the language of excerpts and page links. A missing Dutch publication returns no list match or 404 for its detail URL.
Follow links.next until it is null. To reuse the loop for /artists, /releases or /genres, change the starting URL and use the filters that endpoint accepts. Remove artist_id=20 to walk the full review index. Fetch one page at a time.
Node.js
// paginate.mjs: server-side, using the same environment variable
import { setTimeout as sleep } from 'node:timers/promises';
const key = process.env.GROOVEGAUGE_API_KEY;
if (!key) throw new Error('Set GROOVEGAUGE_API_KEY first');
async function getPage(url) {
for (let attempt = 0; attempt < 3; attempt++) {
const response = await fetch(url, {
headers: { Authorization: `Bearer ${key}` },
signal: AbortSignal.timeout(15000),
});
if (response.status === 429 && attempt < 2) {
const seconds = Number(response.headers.get('Retry-After') ?? '5');
if (!Number.isFinite(seconds) || seconds > 60) {
throw new Error('Quota reached. Try again later.');
}
await sleep(Math.max(1, seconds) * 1000);
continue;
}
const body = await response.json();
if (!response.ok) throw new Error(`${response.status}: ${body.error?.message}`);
return body;
}
}
let url = 'https://groovegauge.com/en/api/v1/reviews?artist_id=20&per_page=50';
while (url) {
const page = await getPage(url);
for (const review of page.data) console.log(review.title, 'Source: GrooveGauge', review.url);
url = page.links.next;
if (url) await sleep(1100);
}
The pause avoids hammering the API. Limits are shared with your other keys and both languages, so a busy account can still return 429. This example waits briefly, then stops rather than waiting all day for a daily quota reset.
Show a small review card
Use the review’s url for the public link. Escape titles and excerpts as text. The visible GrooveGauge source credit is required, including in apps built with AI. Keep the credit and original score scale beside the content.
The Autumn Effect makes a strong case for atmosphere inside a fairly direct rock song. 10 Years have the heavy guitars and large choruses, but the quieter passages often carry as much interest. A repeating guitar line, a little space around the drums and Jesse Hasek's voice can create tension well before the band increase the volume. Waking Up introduces that balance immediately. The vocal has a…
An empty list is a successful response, not an error. It can mean that the artist is not in the catalogue yet, a filter has no matches, or a Spotify link has not been verified.
Default limits: 60 requests per UTC minute, 10 per five-second UTC window and 5,000 per UTC day. Your account dashboard and response headers show your actual limits. All your keys and both languages share the account quota.
RateLimit-Reset is a number of seconds, not a Unix timestamp. Keep X-Request-ID when investigating a failed request.
Use conditional requests
Read ETag from a response and send it in If-None-Match for the same URL. A matching resource returns HTTP 304 with no JSON body. Check the status before calling response.json(). Authentication and quota checks still apply to HEAD and 304 requests.
cURL
curl --include --silent --show-error \
--header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
'https://groovegauge.com/en/api/v1/reviews/103'
# Replace this with the ETag value from the first response, including its quotes.
GROOVEGAUGE_ETAG='"ETAG_FROM_FIRST_RESPONSE"'
curl --include --silent --show-error \
--header "Authorization: Bearer $GROOVEGAUGE_API_KEY" \
--header "If-None-Match: $GROOVEGAUGE_ETAG" \
'https://groovegauge.com/en/api/v1/reviews/103'
Quick reference
Endpoint
Accepted filters
/reviews
page, per_page, q, artist_id, release_id, genre_id, type, spotify_id, spotify_type
/artists
page, per_page, q, genre_id, spotify_id, spotify_type=artist
/releases
page, per_page, q, artist_id, genre_id, type, spotify_id, spotify_type
/genres
page, per_page
/search
page, per_page, q, spotify_id, spotify_type
GET /reviews/103, /artists/20, /releases/87 and /genres/30 return one object in data. Detail URLs accept no query parameters.
Lists return an array in data, with meta, links and attribution. Default per_page=20, maximum 50. Search defaults to 10 per group, maximum 20. page is 1 to 10,000.
q is a literal, case-insensitive substring of 2 to 120 characters. Search requires q or spotify_id. spotify_type requires spotify_id.
Review types: album, single. Release types also include ep, live and compilation.
A GrooveGauge ID is an integer. A Spotify ID is a 22-character string. Keep them separate.
A review score is a number or null, on a scale of 10. A release without a review has reviews: []; never treat that as a zero score.
Review excerpts contain at most 400 Unicode characters including the ellipsis. Short reviews expose at most 60% of their text; under 40 characters the excerpt is empty. Full review text is not available through the API.
Dates use their known precision. release_date can be a year, a month, a full date or null. Check date_precision. published_at is the review publication date.
A release’s url points to its review when one is published, otherwise to its release page. Related artist links may use English while a Dutch bio is unavailable. JSON field names remain English.
Data endpoints and the JSON API index require a Bearer key. These docs, the OpenAPI file and OPTIONS preflight requests are public. Only GET, HEAD and OPTIONS are supported.
Every use of content from this API requires attribution to GrooveGauge. Put a visible GrooveGauge credit beside each review excerpt, score, artist description or release item you display, share or reuse. Link it to that item’s original GrooveGauge page using its url. Use the homepage only when no item-specific page is available. A credit hidden in code, JSON, an About page or a general footer does not replace the credit beside the content.
If an output cannot contain clickable links, include the original page URL in plain text. Keep the attribution when exporting or sharing content elsewhere.
Copyright in GrooveGauge’s original editorial texts remains with GrooveGauge. Access to the API does not transfer that copyright or make these texts public domain. Artwork, photographs, artist names and information supplied by other providers remain subject to their own rights; GrooveGauge does not claim ownership of them.
Building with AI
The same source requirement applies to apps built with AI and to AI-generated summaries, translations or rewrites based on our content. Preserve the GrooveGauge credit and original page link when you shorten, reformat, translate or paraphrase. Keep your own adaptations clearly separate from our original text.
Include the following instruction when asking an AI tool to build your integration:
Instruction for your AI tool
Whenever this integration displays, shares or reuses GrooveGauge API content,
show a visible "Source: GrooveGauge" credit beside each item and link it to
that item's original GrooveGauge page using its url field, not its API URL.
Preserve this credit and link in summaries, translations, rewrites and exports.
Copyright in GrooveGauge's original editorial text remains with GrooveGauge.
If an output cannot contain links, include the original page URL as plain text.
A credit you can copy
This link belongs next to the content it credits. Replace the example URL with the item’s returned url.
Each successful data response includes an attribution object. Pass it through your backend and preserve it in cached or exported responses. Your interface must still render the source credit and original page link for the reader.
Keep scores on their original scale of 10. The API provides compact metadata and review previews, not full articles, biographies or submission/contact details.
Your API dashboard shows usage, errors, rate limits, response times and cache hits. Request details are kept for 30 days and daily totals for 366 days. API logs do not store raw keys, authorization headers or search text; IP addresses are stored only as keyed hashes.
JSON examples are snapshots of published data. Results and totals can change as the catalogue grows.