TrustRadius API

Read TrustRadius B2B software reviews with one API

The TrustRadius API returns B2B software reviews as clean JSON.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a TrustRadius endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
T
/trustradius/v1

3 active endpoints, on 0 and 1 credit tiers.

  • POST/trustradius/v1/product/reviews
  • POST/trustradius/v1/product/detail
  • POST/trustradius/v1/product/resolve

What TrustRadius endpoints does ReefAPI ship?

3 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

3 endpoints

product/reviews

1 cr

Fetch verified user reviews and ratings for a B2B software product from TrustRadius (up to 63…

required
product_slug
optional
source, skip, limit, fetch_all, include_non_public, category_path

product/detail

1 cr

product metadata (name, description, rating, category).

required
product_slug
optional
source, category_path

product/resolve

0 cr

resolve a TrustRadius/GetApp/Capterra/G2 URL → source + slug.

required
url
optional

Every parameter, every allowed value →

TrustRadius API

2 of 3 endpoints, ready to run

View docs ↗

The reviews themselves: star rating, title, full verbatim text, the reviewer's years of experience, and the reviewing company's industry and headcount.

1 credit1 required · 4 optional
POST/trustradius/v1/product/reviews
ok2778 ms · 14 records · sample
{
  "ok": true,
  "meta": {
    "api": "trustradius",
    "endpoint": "product/reviews",
    "mode": "live",
    "latency_ms": 2778.3,
    "record_count": 14,
    "cache_hit": false,
    "completeness_pct": 2.18
  },
  "data": {
    "source": "trustradius",
    "product_slug": "slack",
    "reviews": [
      {
        "id": "56ec12ca8318e90d002b7858",
        "source": "trustradius",
        "origin_site": "TRUSTRADIUS",
        "title": "Team communication is a breeze with Slack",
        "text": "In our organization we use slack for all of our internal team communications. We have channels for each client where we can talk about client specific items (the client is never invited into these). Then we have fun channels for group chat where we can post ideas, articles etc.",
        "pros": null,
        "cons": null,
        "rating_overall": 5,
        "sub_ratings": {},
        "grade": "B",
        "published_at": "2016-03-18T20:24:16.894Z",
        "company_industry": "Marketing and Advertising",
        "company_size": "1-10 employees",
        "is_public": true,
        "slug": "slack-2016-03-18-09-38-02"
      },
      {
        "id": "56ec02b354b3d30c00feb8b8",
        "source": "trustradius",
        "origin_site": "TRUSTRADIUS",
        "title": "Cut your team some communication slack...with Slack. (puns!)",
        "text": "Slack is used extensively across our entire organization. We use it to share files, communicate efficiently, and replace email. We created different channels for different departments, as well as general and \"random\" groups for people to post general news or general silliness depending on what that particular individual feels like sharing.",
        "pros": null,
        "cons": null,
        "rating_overall": 5,
        "sub_ratings": {},
        "grade": "B",
        "published_at": "2016-03-18T19:48:42.359Z",
        "company_industry": "Printing",
        "company_size": "11-50 employees",
        "is_public": true,
        "slug": "slack-2016-03-18-08-29-23"
      },
      {
        "id": "56e8440149fccf0c00c3e676",
        "source": "trustradius",
        "origin_site": "TRUSTRADIUS",
        "title": "Slack isn't slack in functionality at all!",
        "text": "Slack is used as a major avenue for communication both within and across teams and departments.  Slack makes my job much easier because I have immediate access to anyone, whether remote or in the office, that I need to communicate with to do my work.  I feel that Slack is a very important tool here.",
        "pros": null,
        "cons": null,
        "rating_overall": 5,
        "sub_ratings": {},
        "grade": "B",
        "published_at": "2016-03-18T16:19:46.233Z",
        "company_industry": "Information Technology and Services",
        "company_size": "201-500 employees",
        "is_public": true,
        "slug": "slack-2016-03-15-12-18-57"
      }
    ],
    "pagination": {
      "skip": 0,
      "limit": 20,
      "returned": 14,
      "total": 642,
      "api_returned": 14,
      "next_skip": 14,
      "api_mode": "skip_limit",
      "offset_param_broken": true
    },
    "stop_reason": null,
    "completeness_pct": 2.18,
    "public_only": true
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the TrustRadius API works

TrustRadius is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 184 engines.

02
Call
POST /trustradius/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
0 or 1 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Take the whole set in one call, or jump to the tail

The order these reviews arrive in decides how you ask. Page one is 2012. So either pull everything at once and sort it yourself, or skip straight to the end — what you must not do is read page one and call it current.

01reviews
POST/trustradius/v1/product/reviews
{"product_slug": "jira", "fetch_all": true}

One call, one credit-metered pass, no offset arithmetic. On a product reporting 254 reviews this returned 112 rows with completeness 100 percent — the whole public set, 2013 to 2025 — in 1.7 seconds.

02reviews
POST/trustradius/v1/product/reviews
{"product_slug": "zoom", "limit": 1}

If the catalogue is large and you only want the recent end, read pagination.total first. That number is your offset arithmetic.

03reviews
POST/trustradius/v1/product/reviews
{"product_slug": "zoom", "skip": 1040, "limit": 20}

total minus your page size. A run at skip 1040 of 1058 returned rows dated February and March 2026; skip 0 returned 2013.

fetch_all is the right default and the one most people miss. Reach for the skip arithmetic only when the product has thousands of reviews and you want the last hundred rather than all of them.

request
curl -X POST https://api.reefapi.com/trustradius/v1/product/reviews \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"source":"trustradius","product_slug":"slack","fetch_all":true}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "trustradius",
    "endpoint": "product/reviews",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

The rating scale, what a review actually contains, and the company-size buckets

The number one assumption people bring to TrustRadius is that ratings are out of ten, because that is what the site displays. The API does not work that way. Every figure below comes from a live product/reviews call for product_slug slack on 2026-08-27, which returned 63 reviews out of a reported 642.

FieldMeasured on slack, 63 reviewsNote
rating_overall5.0 on 31 reviews, 4.5 on 18, 4.0 on 11, 3.5 on 2, 3.0 on 1A five-point scale in half steps. Not the /10 trScore shown on trustradius.com, which is a computed aggregate
gradeB on 42, C on 15, A on 6A separate letter grade that does not track rating_overall. A 3.0 and a 4.0 both graded B
pros / consnull on all 63Structured pros and cons are not exposed. The full verbatim is in text
sub_ratings{} on all 63An empty object, not null. Per-criterion scores do not come through
id5665ad4604981e0d00f5e0f3A 24-character hex id
slugslack-2015-12-07-10-01-10The product slug plus the timestamp the review was written
published_at2015-12-08T22:16:32.805ZISO 8601 with milliseconds. Reviews in the sample go back to 2015
company_size1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10,000 and 10,001+ employeesEight fixed buckets, always suffixed " employees", with a comma in the two largest
reviewer{years_experience: 1, current_experience: "current"}No name and no job title in the measured sample. company_industry sits alongside, e.g. "Computer Software"
paginationtotal 642, limit 100 returned 63, next_skip 63Page with skip. The response sets offset_param_broken true, so do not use offset

product_slug is a URL segment, and product/resolve turns a URL into one: https://www.trustradius.com/products/slack/reviews resolved to {source: "trustradius", product_slug: "slack"}. It also parses foreign platforms, but only to tell you they are closed. A Capterra URL resolved to product_id 135003 with quarantined true and recommended_source "getapp", and a G2 URL likewise came back quarantined. Capterra and G2 cannot be fetched through this engine; GetApp can, but source=getapp additionally requires category_path and returns a partial page snapshot rather than full pagination.

Did I get the right product, and are these all the reviews?

Measured on 2026-08-28 against slack, zoom, hubspot, salesforce and jira, plus a deliberately invented slug. The first two rows are the ones that change how you write the loop.

The identity check is one field

On product/reviews a slug that does not exist does not return an error and it does not return somebody else's product: it returns total 0 with an empty list. So pagination.total is your check. Non-zero means the product resolved; zero means your slug is wrong. Nothing here ever answered with a different company's reviews.

Against us: page one is the OLDEST reviews

Rows arrive oldest first. HubSpot page one ran 2012-12 to 2014-03; Zoom at skip 1040 of 1058 ran 2026-02 to 2026-03. If you read page one and conclude the data is stale, you have read the wrong end of it.

Against us: you get fewer rows than you ask for

Public-only is the default and that filter is applied after the page is assembled, so a 50-row request returned 21 rows on salesforce and 41 on hubspot, and a 3-row request on salesforce returned 0 while total said 471. That is not a wall: pass include_non_public true and the same two calls returned the full 3 and the full 50.

What each row actually carries

On 41 consecutive HubSpot rows: id, title, body text, overall rating, letter grade, publish date, company size and the reviewer block were 41 of 41; company industry 24 of 41. Against us: pros, cons and the per-criterion sub-ratings were empty on all 41 — the substance is in the single text field.

The reviewer is not a person here

Unlike a consumer review site, the reviewer block carries only years of experience and whether they are a current or former user. No name, no photograph and no profile link come back. What identifies a review is the reviewing company's industry and headcount, which is what B2B buyers filter on anyway.

Against us: product/detail has nothing in it

It is no longer failing — it is empty, and the endpoint list above still advertises it as returning rating, category and vendor. It does not. A slug the site does not publish now answers a clean NOT_FOUND with retryable false, saying where the slug comes from, instead of the retryable 404 it used to give; that part is a real improvement. But the two products of five that answered ok:true returned only the slug echoed back inside a product object — no rating, no review count, no vendor, nothing. Do not build on it. The rating, the review count and the product identity are all reachable through product/reviews and its pagination block.

What people build with TrustRadius

The jobs this data is most often used for.

3

endpoints

0/1

credits per call

01

B2B teams call product/reviews to monitor their own TrustRadius reviews.

02

Competitor research pulls a rival product's reviews and rating.

03

Analysts use product/resolve to lift the slug out of a product URL, then product/reviews to read the profile.

What TrustRadius data costs

The cheapest call here is 0 credits, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 184 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/trustradius/v1/product/reviews \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"source":"trustradius","product_slug":"slack","fetch_all":true}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/trustradius/v1/product/reviews",
    headers={"x-api-key": REEF_KEY},
    json={
  "source": "trustradius",
  "product_slug": "slack",
  "fetch_all": true
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up TrustRadius.

Get a free key →
Is the TrustRadius rating out of 10?

Not in the API. The trScore you see on trustradius.com is a computed aggregate on a ten-point scale, but the per-review rating this API returns is five-point in half steps. Across 63 live reviews for slack on 2026-08-27 the only values that appeared were 5.0, 4.5, 4.0, 3.5 and 3.0, with 5.0 the most common at 31 reviews. If you are averaging rating_overall, divide by 5, not by 10.

What is the grade field, and does it follow the rating?

It is a separate letter grade, and no, it does not follow the rating. In the same 63 reviews, 42 were graded B, 15 C and 6 A, while 31 of those reviews carried a perfect 5.0 rating_overall. A 3.0 review and a 4.0 review both came back graded B. Treat grade as an independent TrustRadius signal rather than a bucketed version of the star score.

Why did limit 100 return only 63 reviews?

The upstream page caps below the limit you ask for. A live call with limit 100 returned 63 rows with pagination.total 642 and pagination.next_skip 63, so nothing was lost, the page was just shorter than requested. Keep paging with skip until returned comes back as zero, or set fetch_all true to have the engine walk the whole set in one pass.

Which review fields come back empty?

Three, consistently. pros and cons were null on all 63 reviews measured, and sub_ratings was an empty object rather than null on every one. The prose is not lost, it is all in the text field, which carried full multi-sentence verbatims. Do not build a schema that requires pros, cons or a per-criterion breakdown from this source.

What does the reviewer object tell me about the person?

Very little about the person and quite a lot about their context. reviewer carried only years_experience and current_experience, for example 1 and "current", meaning they use the product now. What is genuinely useful sits next to it on the review: company_industry, with values like "Staffing and Recruiting" and "Computer Software", and company_size as one of eight employee-count buckets. That pairing is what makes this source usable for B2B segmentation.

Can I pull G2 or Capterra reviews through this API?

No. The source enum accepts capterra and g2, but they are not available. product/resolve will parse their URLs and hand back what it can: a Capterra product URL resolved to product_id 135003 with product_slug "Slack", quarantined true and recommended_source "getapp", and a G2 URL came back quarantined as well. trustradius is the full-fidelity source here, and getapp is a partial snapshot that also needs category_path.

Should I page with skip or offset?

skip. The response itself flags this: pagination comes back with api_mode "skip_limit" and offset_param_broken true. The offset alias exists on the parameter but does not move the window upstream, so passing it will hand you the same first page over and over. Take next_skip from each response and feed it back as skip.

Does it return non-public reviews?

Not by default. include_non_public defaults to false and every row measured came back with is_public true, which the response confirms with public_only true in the data block and public_count in meta. Setting include_non_public true widens the set to reviews TrustRadius has not marked public. The pagination total, 642 for slack, is the upstream count before that filter, which is why the returned public count can be lower.

What is the TrustRadius API?

TrustRadius API is a ReefAPI endpoint group for b2b software reviews and ratings. It returns live JSON through POST requests under /trustradius/v1.

Is the TrustRadius API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. TrustRadius calls use the same shared credit balance as every other ReefAPI engine.

Do I need a TrustRadius login or account?

No login to TrustRadius is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the TrustRadius data?

The page example is captured from a live product/reviews call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the TrustRadius API use?

TrustRadius actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call TrustRadius from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call trustradius actions with the same key, credit pool and JSON envelope used by normal REST requests.

14 Reputation & Reviews APIs on the same key

One key, one credit pool, one response envelope. If you are pulling TrustRadius, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 183 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-08-28.