Software Review API: Pull Capterra and G2 Reviews by Product
Pull software reviews with pros and cons split, for one product or a list, from Capterra and G2 with one key, billed per call.

Get the reviews of a software product, pros and cons already split, in one prompt. Paste this into your agent:
Set up https://monid.ai/SKILL.md, and then use Monid to find Slack on Capterra, pull its reviews, and give me a table with date, rating, the pros, the cons and how many of the cons mention notifications.
One prompt reads a product's reviews. 1 min setup · 12-30 hrs saved.
You are comparing software, or researching competitors, and the most useful evidence is what buyers wrote about each product in their own words. Searches like "g2 api" and "capterra api" are people looking for exactly that: reviews as data instead of pages to read. This guide shows the quickest way to get them into your agent or a spreadsheet, what a record contains (we ran it live on 2026-10-16), and the traps in the output. It runs through Monid, the OpenRouter for agent tools: one key, one balance, every tool priced per call.
What is the easiest way to get software review data through an API?
Monid. Install it once, add a key, and your agent searches a review catalogue and pulls a product's reviews as typed JSON, with no vendor account to open and no plan to choose.
- Pay per call. Each call is billed on its own, at $0.01 for a Capterra search and $0.01 for a page of reviews (Verified 2026-10-16 on the company reviews tools page). Buy calls as you need them: no monthly plan and no minimum top-up. Discovery and inspection are free; only a run bills.
- One install, every API. The same key and the same balance call the review endpoints and every other tool on Monid. Reviews of the employer instead of the product are another call on the same balance, as in the Glassdoor employee reviews guide.
- Lives inside your agent. Install the CLI, add your key, run the prompt above, and the tools are there whenever your agent needs them, on demand, with nothing to keep running. Your agent reads
SKILL.mdand learns the rest, so setup is about a minute.
At that price, finding a product and reading its first 25 reviews is two calls, $0.02 (Verified 2026-10-16).
How do you pull reviews for a list of software products?
Search once per product to get its id, then call the reviews endpoint with that id and the product slug, and loop both over your list. The search takes a query; the reviews call takes product_id and product_name, which is the URL slug from the search row, and an optional page.
| Route | What you get | Cost shape | Fits |
|---|---|---|---|
| Copy reviews by hand | A few products, read by a person | Your hours | One-off research |
| Build your own scraper | Whatever your parser covers | Your hours, plus upkeep | A fixed list you will maintain |
| Marketplace scraper | A run per product, often a flat fee per run | Run or subscription fees | Occasional bulk exports |
| Monid review endpoints | A page of typed reviews per call, ids from a search call | Pay per call, buy flexibly | Lists of competitors, repeated checks, agents |
Monid fits a list because the work is the same two calls repeated, and you pay for the products you check and nothing between runs.
For agents
Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:
set up https://monid.ai/SKILL.md
It learns the whole discover, inspect, run workflow itself. More in the agent quickstart.
For humans
npm install -g @monid-ai/cli
monid keys add -k <your-api-key> -l main
Step 1. Resolve the product to an id
monid run -p capterra -e /search_software --query '{"query": "project management"}'
The answer is a list of rows with name, id, slug and url. Read the whole list rather than taking the first row.
Step 2. Pull the reviews
monid run -p capterra -e /get_product_reviews \
--query '{"product_id": "135003", "product_name": "Slack"}'
product_id and product_name are both required. Add page to move past the first page.
Step 3. Loop it over your list
Put one id slug pair per line in products.txt, then run:
mkdir -p out
while read -r id slug; do
monid run -p capterra -e /get_product_reviews \
--query "{\"product_id\":\"$id\",\"product_name\":\"$slug\"}" > "out/$slug.json"
done < products.txt
Each product writes one file with its first page. Fetch further pages only for the products where the first page is not enough. When you also watch what competitors charge, the same loop pattern runs the price side, as in monitoring competitor prices automatically.
Or hand the whole job to an agent
Give this to your agent![]()
Set up https://monid.ai/SKILL.md, and then use Monid to pull the Capterra reviews for these 8 competitors, count how often pricing and support appear in the cons, and show the number of reviews next to each.Can you scrape Capterra or G2 reviews yourself with Python?
Yes, people do it with Requests, BeautifulSoup or Playwright, and it works until the page changes. A scraper you write is yours to keep alive: when the markup or the blocking changes, your job breaks, and your competitor table is only as fresh as your last successful run.
There is a rules side too. Review sites publish terms of use, and what you may collect depends on those terms and on where you operate, so read them before you build anything.
In Python the work is a browser or proxy setup, parsing code for the review blocks, paging logic, retries, and a repair every time a page changes. That is hours before the first useful row, and the upkeep never ends. A review page costs $0.01 (Verified 2026-10-16). Set against hours of your own time, pick Monid for anything you will run more than once: the collection is maintained for you and the output is typed JSON instead of HTML you parse. The TripAdvisor guide walks through the same scrape-or-call choice for another review source. Marketplace scrapers fit an occasional export, but they bill by the run and sit outside your agent's one key and one balance.
What does a software review record look like, and what can you build with it?
A review is a short record with five fields, and the product is found through a search row with four. We ran both on 2026-10-16, so what follows is what came back.
The review record
One call for Slack on Capterra returned a data.reviews array of 25 reviews, plus data.page and data.product_id. A record, with the prose trimmed:
{
"title": "Efficient Team Communication and Collaboration Tool",
"date": "June 18, 2026",
"rating": "5.0",
"pros": "Slack makes team communication fast and organized with...",
"cons": "Notifications can become overwhelming, and..."
}
rating and date are strings, so convert them before you average or sort. The product search row has name, id, slug and url.
The field that matters most
pros and cons arrive as separate fields. The review form asks for them separately, so the reviewer did the splitting, not a classifier. That is a structured sentiment axis you do not have to infer. Most review-mining pipelines start by running a model over prose to separate praise from complaint; here the first cut is already made.
What is not on the record
No reviewer name, job title, company size, industry or verified flag came back, and the review has no id. If you need to segment by reviewer type, this endpoint does not give you that join key.
What you can build with it
- A complaint map for a competitor. Count themes in
conswithout a sentiment model. In the 25 Slack reviews we pulled, notifications appear in the cons of 16. - A trend line. Every record has a
date, so bucket by quarter and watch whether a theme is growing. - A shortlist table. Pull the same page for each product on your list and put rating, count and top complaint side by side, in one place instead of ten tabs.
- Sales objections. The recurring complaints about a rival are the objections your buyers repeat to you.
from collections import Counter
themes = ["notification", "pricing", "search", "support"]
hits = Counter()
for r in reviews:
cons = (r["cons"] or "").lower()
for t in themes:
if t in cons:
hits[t] += 1
share = {t: hits[t] / len(reviews) for t in themes}
Start with a fixed theme list rather than open-ended extraction. It is cheaper, it repeats exactly across runs, and it gives you a series you can compare next month.
What goes wrong when you pull software reviews at scale?
Five things show up when you read the output of more than one product. All five are from the 2026-10-16 runs.
Why does a niche product return no reviews?
Because coverage follows attention. We searched "project management", took the first row, Project Management Business Intelligence (PMBI), and asked for its reviews. The call returned reviews: [], billed as one call. Slack returned 25.
A pipeline that averages ratings across a competitor list will silently weight the products that have reviews, because the others contribute nothing. Record the count beside every aggregate:
if len(reviews) < 10:
result = {"rating": None, "n": len(reviews), "note": "too few reviews"}
A rating without its sample size is not a measurement.
Why is the first search row not the product you meant?
Search is text matching, not a ranking by fame. For "project management" the 20 rows included Project Management Cloud, a golf tournament tool and a contact-centre product from Cisco, and none of them was a household project tool. Match on the exact name and the id, never on position, and for a famous product take its id and slug from the search result once and store them.
Is the order of reviews the order of dates?
No. Page 1 for Slack ran from September 3 to June 18 to August 24 to September 9, and the span was February 12 to September 29, 2026. Sort on the date yourself, after parsing it:
from datetime import datetime
reviews.sort(key=lambda r: datetime.strptime(r["date"], "%B %d, %Y"), reverse=True)
Can a pro end up in the cons field?
Yes. One Slack review had a long write-up in pros and, in cons, a paragraph praising the integration ecosystem. The split is the reviewer's, which makes it better than a model's guess on average and still not perfect. Count themes, then read a handful of the matching rows before you act on a number.
How slow is a call?
A page of reviews took about 27 seconds for Slack and about 15 seconds for the empty one, and the search took about 19 seconds, against a listed typical of about 14 seconds. Run a list in the background and write each result to a file as it lands, as the loop above does.
Which endpoint should I use for which job?
| Endpoint | What it does | Input | Returns | Latency | Billing |
|---|---|---|---|---|---|
capterra/search_software | Find products by keyword | query | name, id, slug, url | About 14 s typical | Per call |
capterra/get_product_reviews | One page of reviews, up to 25 | product_id, product_name, page | title, date, rating, pros, cons | About 15 s typical | Per call |
capterra/get_category_products | Products in a category | A category slug | name, id, slug, url | Not measured | Per call |
g2/search_software | Find products on G2 | query | name, slug, rating, review count | About 33 s typical | Per call |
The Capterra search and reviews rows were run on 2026-10-16. The category and G2 rows were inspected with monid inspect the same day: the G2 search is $0.02 a call (Verified 2026-10-16). Billing shape is given here, and the current figure is on monid.ai/tools.
Use the search row to find the id, the reviews row to read the corpus, and the category row when you want a competitive set rather than one product. For a different kind of review, Amazon reviews have their own endpoints and trade-offs.
When is another route a better fit?
You need a representative sample. Reviews are written by people who chose to write them. For anything that must generalise to a whole customer base, a survey is the right instrument.
You need to segment by reviewer. The record we pulled carries no company size, industry or role. If your analysis depends on those, pick a source that returns them or run interviews.
You are comparing across sites. Ratings on different sites are computed from different populations on different scales. A 4.5 on one is not a 4.5 on another, so keep them in separate columns.
The product is niche. Zero reviews is a normal answer for a long-tail product, as the PMBI call showed. For a small competitor you need customer conversations, and no endpoint fixes that.
You want to republish the text. The words are the reviewer's, and terms of use and copyright rules differ by country and by site, so check yours before you quote competitor reviews in your own material.
And the disclosure: we resell these endpoints. The most useful thing in this post is the sample size you should store next to every rating, which costs nothing whoever you buy the data from.
Conclusion
The quickest way to get software reviews into your agent is two calls through Monid: a search for the product id and a reviews call for the page, $0.01 each (Verified 2026-10-16), one key for this and everything else, and about a minute to set up. Doing it yourself works until the page changes, and costs hours of setup.
Two things matter more than which source you pick. Store the review count beside every rating, because a product can return none and a missing product silently drops out of an average. And parse and sort the data yourself: ratings and dates are strings, page 1 was not in date order, and a pro can land in the cons.
How we estimated the time saved: building and maintaining a scraper for one review site is roughly 6 to 15 hours for the fetch handling, the parser, paging and the first month of upkeep. Two sources, Capterra and G2, make 12 to 30 hours. The 1 minute is the install, key and first call once you already have a Monid key.
Free next step: run monid inspect -p capterra -e /get_product_reviews, search your own product category, read the whole result list, then pull one product and print the number of reviews returned. Start at monid.ai.
FAQ
Is there a G2 or Capterra API?
You can call review data from both through Monid with one key. Capterra has a search endpoint, a category endpoint and a reviews endpoint, and G2 has its own search and category endpoints, each billed per call, with discovery and inspection free.
How much does it cost to pull reviews?
For Capterra, a search is $0.01 and a page of up to 25 reviews is $0.01 (Verified 2026-10-16). Eight competitors is 16 calls, $0.16, or 8 calls, $0.08, if you already have the ids.
Can you export Capterra reviews to a CSV?
Yes, once you have the reviews as JSON. Loop the reviews call over your products, keep title, date, rating, pros and cons, and write them to a CSV with whatever tool you like, or ask your agent to do it in the same prompt.
Why does a product return zero reviews?
Because that product has none on the site. A product with no reviews returns an empty reviews array and is still billed as one call. We saw it on 2026-10-16 with a niche project management product, while Slack returned 25.
How many reviews before a rating means anything?
More than most products have. Below about ten, one enthusiastic customer moves the average by half a star. Treat anything under ten as no rating, show the count next to everything else, and only compare products with similar counts.
Published September 2026.


