Website Phrase and Business Model Classifier
Pricing
from $3.82 / 1,000 domain classifieds
Website Phrase and Business Model Classifier
Classify any company website from its own pages. Enter domains and get B2B or B2C, whether the site is SaaS, an online store, an agency, a manufacturer, a wholesaler, a distributor, or a marketplace, and whether your own phrases appear, with the quoted text and page as evidence.
Pricing
from $3.82 / 1,000 domain classifieds
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Classify company websites from their own pages. Enter a list of domains and get one row per company: B2B, B2C, or both; whether the site presents itself as SaaS, an online store, an agency, a manufacturer, a wholesaler, a distributor, or a marketplace; and whether the phrases you care about appear on the site. Every verdict carries the quoted text and the page it came from, so you can check it in one click.
The rules are fixed and written out, not a language model. The same pages always give the same answer, and nothing is guessed: a site that does not say enough comes back unknown.
Rows are flat and snake_case, so they load straight into a spreadsheet, a CRM, or a Clay table.
✨ Features
- Your own phrases. Ask whether a site says "clay agency", "market research agency", "private label", or anything else. Whole words, plurals included, case ignored.
- Negations do not count. "We are not an agency" or "an alternative to wholesale" never matches.
- B2B or B2C with the reasons. Business signals ("request a demo", "contact sales", "request a quote") against consumer signals ("add to cart", "free shipping", "shop now"), with the signals listed.
- Seven business categories. SaaS, online store, agency, manufacturer, wholesaler, distributor, marketplace.
- Evidence on every row. The quoted text and the page URL behind the first matched phrase or category, plus full JSON evidence per category and per phrase.
- More than the homepage. The homepage plus up to 5 pages it links to: about, products, services, wholesale, manufacturing, industries, and pricing.
- Batch input. Up to 500 domains per run.
📥 Input
| Field | Type | Description |
|---|---|---|
domains | list | Company domains or website addresses, one per line, up to 500 |
domain | string | One domain, for a single lookup or a Clay column |
phrases | list | Your buyer phrases, up to 25 |
categories | list | Any of saas, ecommerce, agency, manufacturer, wholesaler, distributor, marketplace; empty means all |
max_pages | string | Pages per site, homepage included, 1 to 10. Default 6 |
max_charge_usd | string | Optional cost cap for the run |
proxy_mode | string | auto (default): a site that refuses a direct request is retried through the Apify proxy. direct: never use a proxy. A reliability setting; it does not change what you pay |
Example:
{ "domains": ["lodgecastiron.com", "hubspot.com"], "phrases": ["cast iron"] }
📤 Output
One row per domain. Every row carries every field; a field that does not apply is null.
| Field | Example | Notes |
|---|---|---|
domain, final_url, site_title | lodgecastiron.com | |
business_model | b2c | b2b, b2c, both, unknown |
business_model_confidence | 0.9 | 0 to 1, null when unknown |
b2b_score, b2c_score | 0, 7 | Weighted signal counts |
b2b_evidence, b2c_evidence | ["Add to cart","free shipping"] | The signals found |
is_saas, is_ecommerce, is_agency, is_manufacturer, is_wholesaler, is_distributor, is_marketplace | true | Null when you did not ask for that category |
categories_matched | ["ecommerce","manufacturer"] | |
category_evidence_json | Per category: score, threshold, up to 3 quoted texts with their pages | |
phrases_checked, phrases_matched, phrases_negated, phrase_match_count | 1, ["cast iron"], [], 12 | |
phrase_matches_json | Per phrase: matched, hit count, section, quoted text, page | |
top_evidence_text, top_evidence_url | The quote behind the first match | |
pages_read, page_urls | 5 | |
robots_note | What the site's robots.txt said | |
row_status | ok | ok, no_text, unreachable, blocked, robots_disallowed, error |
error_reason | null | Why a row is not ok |
billable_events_json | {"domain-classified":1} | What the row was billed as; {} is free |
source, checked_at |
📏 Measured accuracy
Measured on 25 company sites on 2026-10-21 (software companies, agencies, online stores, manufacturers, and distributors, labeled by hand before the run):
- 23 of 25 sites were readable. 2 answered HTTP 403 to every request and came back
blocked, free. - Business model: 17 of 23 readable sites got a verdict, and 16 of those 17 matched the hand label. The other 6 came back
unknown, mostly large catalog sites that render their pages in JavaScript. - Categories: SaaS matched 6 of 6 software companies, agency 4 of 4 agencies, manufacturer 2 of 3 manufacturers. 2 sites drew a category they do not hold (an automation platform read as an online store, an agency read as SaaS).
- Average time: about 18 seconds per site with 4 sites read at a time.
💵 Pricing
Pay per event. You pay for each domain whose site was read and classified, plus a small start fee per run.
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
Domain classified (domain-classified), per domain | $0.0045 ($4.50 per 1,000) | $0.004275 ($4.275 per 1,000) | $0.00405 ($4.05 per 1,000) | $0.003825 ($3.825 per 1,000) |
Actor start (apify-actor-start), per run | $0.0005 | $0.0005 | $0.0005 | $0.0005 |
- A row for a site that is unreachable, blocked, disallowed by robots.txt, or carries no readable text costs nothing.
- A run stops at the maximum cost per run you set in Apify, and at
max_charge_usdif you set it. - Free Apify plan: 1.50 USD of evaluation a month, which is 333 classified domains at the free plan price. Any paid Apify plan removes the cap.
- The events above are all you pay this actor. Mamba Labs pays the platform costs of your run, Apify proxy traffic included.
🚀 Usage examples
Console or API. POST https://api.apify.com/v2/acts/mambalabs~website-phrase-business-model-classifier/runs with the input above, then read the default dataset.
Find the agencies in a list.
{ "domains": ["fabrikbrands.com", "ogilvy.com", "hubspot.com"], "categories": ["agency"], "phrases": ["clay agency", "outbound agency"] }
Split a store list into B2B and B2C.
{ "domains": ["faire.com", "allbirds.com", "uline.com"], "categories": ["ecommerce", "wholesaler"] }
Clay. Call the actor from a Clay column with the domain column mapped to domain. Clay sends every field as a string, which this actor expects.
MCP. The @mambalabsdev/mcp-website-phrase-business-model-classifier server exposes the tool classify_website to AI agents.
⚠️ Error handling
| Situation | What you get |
|---|---|
| The domain does not resolve or the site does not answer | One free row, row_status unreachable |
| The site refuses the request, also through the proxy | One free row, blocked |
| robots.txt disallows all crawlers | One free row, robots_disallowed; no page is read |
| The pages carry almost no readable text | One free row, no_text |
| The site does not say enough to decide | business_model unknown, charged as a classified domain, with the scores it found |
| Anything else | One free error row with the reason |
⚠️ Limitations
- The actor reads what the site says about itself. A company that does not describe itself on its own pages comes back
unknown. - Sites built only in JavaScript, and large catalog sites that load their text after the page opens, give little text to read. See the measured numbers above.
- Phrase matching is literal: "clay agency" does not match "agency for Clay users". Add each wording you care about as its own phrase.
- English vocabulary only for the business model and the categories. Your own phrases work in any language.
- robots.txt is read and honored on every site, including its crawl delay, and no logins or cookies are used.
🧩 Want other GTM data?
Mamba Labs builds custom actors for B2B go-to-market teams. The public versions of that work live here on the Store.
Every actor in the suite takes a domain, a company, or a person and returns flat rows, so they stack in the same table without reshaping anything.
🛠️ Need something custom built? Talk to Mamba Labs.
🆘 Support
Found a bug? Open an issue on the Issues tab. Response time is typically within 48 hours.
ℹ️ Sourcing. Every verdict comes from the company's own public web pages, read directly. You are responsible for how you use the output.
Built by Mamba Labs.