RooVello

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/categories

Categories 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.