Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sitejabber Scraper

A lightweight, dependency-minimal Python scraper for Sitejabber company reviews. Given a company domain, it fetches the company's aggregate rating and most recent reviews and returns clean, structured JSON or CSV.

Built and maintained by the team at Thunderbit.


Features

  • Lookup by domain — just pass amazon.com, walmart.com, nike.com, etc.
  • 📊 Aggregate rating — overall score and total review count
  • 📝 Recent reviews — rating, body, author, and (when present) headline, date, and URL
  • 📄 JSON or CSV output — pipe to a file or another tool
  • 🪶 Minimal dependencies — just requests + beautifulsoup4
  • 🧪 Tested — unit tests run against a saved JSON-LD fixture, no network needed

Installation

pip install sitejabber-reviews-scraper

Or from source:

git clone https://github.com/thunderbit-operations/sitejabber-scraper.git
cd sitejabber-scraper
pip install -e ".[dev]"

The PyPI package is named sitejabber-reviews-scraper, but the import package and CLI command are sitejabber_scraper / sitejabber.


Quick Start

CLI

# Scrape reviews for a company
sitejabber amazon.com

# Output CSV to a file
sitejabber walmart.com --format csv -o walmart_reviews.csv

# Limit the number of reviews
sitejabber nike.com --count 5

Python API

from sitejabber_scraper import SitejabberScraper

scraper = SitejabberScraper()
result = scraper.scrape("amazon.com")

print(result["company_name"], result["aggregate_rating"], result["review_count"])
for review in result["reviews"]:
    print(review["rating"], review["author_name"], review["review_body"])

Example output:

{
  "company_name": "Amazon",
  "company_domain": "amazon.com",
  "aggregate_rating": 3.4,
  "review_count": 5108,
  "best_rating": 5.0,
  "worst_rating": 1.0,
  "reviews": [
    {
      "rating": 1.0,
      "headline": null,
      "review_body": "Amazon used to provide good customer service, but ...",
      "date_published": null,
      "author_name": "Diane S.",
      "author_url": null,
      "url": null
    }
  ]
}

CLI Reference

usage: sitejabber [-h] [-f {json,csv}] [-o OUTPUT] [--count COUNT] company_domain

positional arguments:
  company_domain        Company domain to look up, e.g. amazon.com or walmart.com

options:
  -h, --help            show this help message and exit
  -f, --format          output format: json or csv (default: json)
  -o, --output          write output to a file instead of stdout
  --count COUNT         maximum number of reviews to return

Python API

from sitejabber_scraper import SitejabberScraper

scraper = SitejabberScraper(timeout=20)

# Full scrape (network)
result = scraper.scrape("amazon.com", count=10)

# Parse an already-downloaded page (no network) — useful for testing
with open("amazon.html", encoding="utf-8") as fh:
    result = scraper.parse(fh.read())

scrape() and parse() both return a dict with:

Field Type Notes
company_name str
company_domain str | None from JSON-LD sameAs
aggregate_rating float | None overall score
review_count int | None total reviews on Sitejabber
best_rating / worst_rating float | None rating scale bounds
reviews list[dict] see below

Each review dict: rating, headline, review_body, date_published, author_name, author_url, url. Fields that Sitejabber does not expose for a given review are returned as None.


How it works

Sitejabber embeds a <script type="application/ld+json"> block on every company page. This block contains an Organization / LocalBusiness object with the company's aggregateRating and an array of the most recent reviews. This scraper requests the company page (following redirects — some pages 301 to Sitejabber's smartcustomer.com mirror, which serves the same payload), then parses that JSON-LD with BeautifulSoup. Parsing structured data is faster and far more stable than scraping the visible HTML.

No special headers, cookies, or anti-bot handling are required — a normal browser User-Agent is enough.


Limitations

  • First page only. Sitejabber's JSON-LD includes only the most recent ~10–20 reviews shown on the first page of a company. Pulling the full review history requires paginating the site's internal endpoints, which this scraper does not do.
  • Sparse per-review fields. In practice Sitejabber populates rating, review_body, and author_name on every review, but headline, date_published, author_url, and url are often absent from the JSON-LD and will come back as None.
  • Undocumented structure. The JSON-LD layout is not a public API and may change without notice.
  • Be polite — don't hammer the site with rapid requests.

No-code alternative

💡 Don't want to write code or handle pagination? Thunderbit is an AI web scraper Chrome extension that scrapes Sitejabber reviews (and any site) in 2 clicks, no code.


Related tools


Legal

This tool is for educational and research purposes. Respect Sitejabber's Terms of Service and robots.txt. Don't use scraped data in ways that violate applicable laws or regulations.


License

MIT — see LICENSE.


Built by Thunderbit — AI-powered web scraping for everyone.

About

Scrape Sitejabber business reviews (rating, title, body, author, date) to CSV/JSON — Python CLI + API.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages