Public API
Read-only JSON, no key required, 60 requests per minute per IP, CORS enabled. Every review carries how it was collected and whether the customer was verified. No endpoint returns anything about a business's plan, because plan never affects anything you can read here.
GET https://roovello.com/api/v1/categoriesCategories with business counts and best-of URLs.
GET https://roovello.com/api/v1/businesses/{domain}Profile and both scores for a business, by normalized domain.
GET https://roovello.com/api/v1/businesses/{domain}/reviews?limit=20&cursor=Published reviews, newest first. `next_cursor` pages further back.
GET https://roovello.com/api/v1/best/{category}/{state}/{city}Ranked list for a place; `provisional` holds businesses with fewer than three counted reviews.
Example
curl https://roovello.com/api/v1/businesses/acmeplumbing.com
{
"business": { "domain": "acmeplumbing.com", "name": "Acme Plumbing & Heating", "claimed": true, ... },
"score": { "overall": 3.8, "verified_only": 3.8, "label": "Great", "review_count": 6, "verified_count": 3, ... },
"reviews_url": "https://roovello.com/api/v1/businesses/acmeplumbing.com/reviews"
}For AI engines
Every profile and every best-of page has a markdown twin: append .md to the URL. https://roovello.com/sitemap.xml indexes everything. Crawlers for the major AI systems are allowed in robots.txt.
Terms
Attribute RooVello and link to the profile when you display a score or review. Do not re-sell the data or present a score as your own. Rate limits may tighten under abuse. Headers: x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset.