HubSpot Solutions Partner Directory and RevOps Agency Scraper
Pricing
from $2.10 / 1,000 agencies
HubSpot Solutions Partner Directory and RevOps Agency Scraper
Extract accredited HubSpot Solutions Partner agencies from the official HubSpot Ecosystem Marketplace Solutions Directory, with partner tier, rating and review count, certification count, catalog services, industries, budget range, office locations (city, state, country) and agency website URL.
Pricing
from $2.10 / 1,000 agencies
Rating
0.0
(0)
Developer
Groundplane Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
HubSpot Solutions Partner Directory & RevOps Agency Scraper
Extract accredited HubSpot Solutions Partner agencies from the official HubSpot Ecosystem Marketplace Solutions Directory, including partner tier (Elite, Diamond, Platinum, Gold), verified client rating, review count, HubSpot Academy certification count, catalog services provided, industries served, client budget range, office locations, and agency website URL.
What it does
- Queries the official HubSpot Ecosystem Marketplace directory (
PersonalizationPublicRpc/search) with server-side filters for Partner Tier, Catalog Services, and Country, reconciling delivered results against the directory's reported total. - Filters candidate partner agencies by Minimum Verified Reviews Count and Minimum Average Rating.
- Enriches each qualifying agency via
MarketplaceListingDetailsRpc/getListingDetailsV3at a polite rate limit ($\le 3\text{ requests/second}$) to extract full HubSpot Academy credentials, catalog services, industry specializations, minimum budget ranges, physical and remote office locations, and external website URLs. - Emits
agencyPhoneandagencyContactEmailonly when published directly on the HubSpot directory profile itself; never crawls external websites.
Who it's for
- B2B SaaS Channel & Ecosystem Teams recruiting certified HubSpot implementation and RevOps agencies for co-selling and referral partnerships.
- Enterprise Procurement & RevOps Buyers benchmarking HubSpot Elite and Diamond implementation partners by service capability, verified review volume, and budget tier.
- Market Researchers analyzing regional distribution, certification density, and industry focus across the HubSpot Solutions Partner ecosystem.
Input
| Field | Type | Default | Description |
|---|---|---|---|
partnerTiers | string[] | ["Elite", "Diamond", "Platinum", "Gold"] | Partner tiers to include. Empty means all tiers. |
servicesOffered | string[] | ["CRM Implementation", "Inbound Marketing", "Custom API Integrations", "RevOps"] | HubSpot catalog service names. Empty means all services. |
countries | string[] | ["United States", "United Kingdom", "Canada", "Australia"] | Full country names or ISO-2 codes. Empty means all countries. |
minReviewsCount | integer | 5 | Keep only agencies with at least this many verified client reviews. |
minRating | number | 4.5 | Keep only agencies with at least this average client rating (0.0 to 5.0). |
maxItems | integer | 1500 | Maximum agency profiles to return. |
Note on RevOps: HubSpot's live service catalog has no RevOps service. In this actor, RevOps maps to Revenue Hub Implementation OR Sales and Marketing Alignment.
Example input (with default spending protection "maxTotalChargeUsd": 50 in run options). Note: the maxItems value of 150 in this example is non-default; the schema default is 1500:
{"partnerTiers": ["Elite", "Diamond", "Platinum", "Gold"],"servicesOffered": ["CRM Implementation","Inbound Marketing","Custom API Integrations","RevOps"],"countries": ["United States","United Kingdom","Canada","Australia"],"minReviewsCount": 5,"minRating": 4.5,"maxItems": 150}
Recommended Apify run options set a default maximum charge of $50 ("maxTotalChargeUsd": 50).
Output
| Field | Type | Description |
|---|---|---|
partnerId | string | Unique HubSpot Solutions Partner profile ID |
agencyName | string | Agency display name on the HubSpot Solutions Directory |
partnerTier | string|null | Partner tier (Elite, Diamond, Platinum, Gold) |
averageRating | number|null | Average client rating (0.0 to 5.0) |
reviewsCount | integer | Count of verified client reviews |
certificationsCount | integer | Count of HubSpot Academy certifications and accreditations |
servicesProvided | string[] | Catalog services offered by the agency |
industriesServed | string[] | Target industries served by the agency |
budgetMinimumRange | string|null | Supported client budget range ($0 - 2,500, $2,500 - 5,000, $5,000+, Any budget) |
officeLocations | string[] | Office locations as city, state, country only. Street addresses and ZIP codes from the source payload are never emitted. |
agencyWebsiteUrl | string|null | External website URL of the agency |
agencyPhone | string|null | Published agency phone number on the HubSpot profile, if present |
agencyContactEmail | string|null | Published agency inquiry email on the HubSpot profile, if present |
hubspotDirectoryUrl | string | Direct URL to the HubSpot Solutions Partner profile |
Sample output row (synthetic example)
{"partnerId": "284910","agencyName": "RevOps Growth Partners","partnerTier": "Diamond","averageRating": 4.9,"reviewsCount": 84,"certificationsCount": 42,"servicesProvided": ["CRM Implementation","Custom API Integrations","Programmable Automation"],"industriesServed": ["Technology - software","Banking/financial services","Manufacturing"],"budgetMinimumRange": "$5,000+","officeLocations": ["Austin, TX, USA","London, United Kingdom"],"agencyWebsiteUrl": "https://www.revopsgrowth.example.com","agencyPhone": null,"agencyContactEmail": null,"hubspotDirectoryUrl": "https://ecosystem.hubspot.com/marketplace/solutions/revops-growth"}
How pricing works
Pay per result. You only pay for rows returned.
Data source and terms
- Official Source: HubSpot Ecosystem Marketplace - Solutions Directory
- Terms of Use: Subject to the HubSpot Legal & Website Terms of Use.
- Update Frequency: Partner tiers, verified client reviews, and Academy credentials update continuously on HubSpot's directory.
- This Actor is an independent tool and is not affiliated with or endorsed by HubSpot, Inc.
Compliance
All business directory attributes are published on the public HubSpot Solutions Directory. Users are solely responsible for complying with the Telephone Consumer Protection Act (TCPA), the National Do-Not-Call Registry, the CAN-SPAM Act, GDPR, CCPA, and all applicable federal, state, and international privacy and outreach regulations before initiating any business communication. Not for consumer or individual targeting.
Limits and FAQ
- Rate limiting: Requests are throttled to $\le 3\text{ requests/second}$ with automatic exponential-backoff retries to respect HubSpot's storefront gateway.
- Phone and email availability: Most HubSpot Solutions Partner profiles route inquiries through an embedded HubSpot form rather than displaying a raw phone number or email address;
agencyPhoneandagencyContactEmailare populated only when explicitly published on the directory profile itself and arenullotherwise. - Found a problem or need a field? Open an issue on the Issues tab; we respond quickly.
Canary input (labeled)
{"partnerTiers": ["Elite"],"servicesOffered": ["CRM Implementation"],"countries": ["United States"],"minReviewsCount": 50,"minRating": 4.8,"maxItems": 5}
Expected: 5 rows, Complete status, in under 30 seconds at review time.
Troubleshooting
- Zero matches: a healthy source with no agencies passing your filters ends as
Complete: 0 ... matched your filters. LowerminReviewsCountorminRating, or widen tiers, services, or countries. - PARTIAL status: the run hit a source problem (search, detail, schema, or value-format drift). The status states the counts and the reason. If this keeps happening, please open an issue on this actor's Issues tab and we'll fix it fast.
- Caps: hitting
maxItemsor the charge cap stops the run early and the status says so; raise the limit to get more rows. - Phone and email are usually null: the HubSpot V3 detail payload reviewed on 2026-11-01 carries no phone or email keys at all, so both fields are null unless HubSpot starts publishing them on the directory profile itself. External websites are never crawled to fill them.
Data path note
This actor uses the HubSpot Chirp gateway (PersonalizationPublicRpc/search). The Chirp gateway is an undocumented internal storefront RPC, not a published HubSpot API: it is publicly reachable without a key, but HubSpot can change or remove it silently and without notice, and that silent-change risk stands for as long as the actor relies on it. It was confirmed live at build and review time. It does not use a server-rendered initial-state payload: the directory HTML served on 2026-11-01 contains no __NEXT_DATA__ payload (that name in the original draft was wrong) and no equivalent SSR partner payload, so the sentinel is pinned to the JSON gateway instead: the filter-config keys, the integer search total, the first-card shape (name, reviewSummary.reviewCount, products[].partnerTier, slug), and every V3 detail payload's core fields (tier, companyName, services, credentials, urlSlug), checked per row for presence and substance (non-empty text for tier, companyName and urlSlug; a list with substantive entries for services and credentials).
Changelog
- v0.2.5 - The credential entry substance test is now anchored to identifying content: a credential entry in object form counts only when one of the credential schema's identifying keys (name, title, internalName, id) holds a non-empty name or a positive identifier. An entry carrying only ancillary values (an icon URL, a description, a topic, a type, a grantee entity, or any unrelated key) is hollow: it no longer produces a certificationsCount under a Complete status; an all-hollow credentials list skips the row as before, and a hollow entry in a mixed list is dropped and stated as unparsed drift. Bare numeric credential entries now count only when positive, matching the identifier rule used for profile ids.
- v0.2.4 - The per-row core detail check now tests the substance of the entries inside the services and credentials lists, not only the container type: a services entry counts only when it yields a non-empty service name, and a credential entry counts only when it carries a name or an identifier. A list whose entries are all hollow now skips the row, counts toward the 20 percent skip rule, and ends the run PARTIAL with the reason stated and the Issues CTA, instead of shipping fabricated enrichment (including a positive certificationsCount counted from empty credential objects) under a Complete status. In a mixed list the row is kept with only the contributing entries counted, and the hollow entries are stated as unparsed fields in the status line. A non-positive profileId now falls back to the search card listingId instead of being emitted as a negative partnerId.
- v0.2.3 - The per-row core detail check now tests substance, not only key presence: tier, companyName and urlSlug must be non-empty text (whitespace alone does not count), services must be a list, and credentials must be a list. A detail payload whose core fields are present but empty or null now skips that row, counts toward the 20 percent skip rule, and ends the run PARTIAL with the reason stated and the Issues CTA, instead of shipping a row built from the search card alone under a Complete status. The search card fallbacks for tier, companyName and urlSlug now apply only when the detail value is absent, so an empty or null detail value can no longer be masked by the card.
- v0.2.2 - H1 closed in full: a detail response whose listing is an empty object now counts as a detail failure instead of a successful enrichment; a per-row core sentinel now checks every hydrated profile (tier, companyName, services, credentials, urlSlug) with no truthiness guard, so an empty or truncated detail payload skips that row, counts toward the 20 percent skip rule, and ends the run PARTIAL with the reason stated and the Issues CTA; an absent credentials key is now treated the same as an unparseable credentials value and the row is skipped instead of shipping certificationsCount 0. The terminal over-20-percent failure message now names all three skip categories: detail fetch, schema validation, and enrichment skips.
- v0.2.1 - Rows whose detail enrichment failed or whose credentials value was unparseable are now skipped and counted toward the 20 percent skip rule instead of being emitted with fabricated 0/empty enrichment fields; an unrecognized partner tier value is now emitted as null instead of being capitalized through; the dataset-count reconciliation now logs a warning and ends the run PARTIAL on a mismatch instead of never firing; README now discloses the RevOps service mapping, lists input defaults (the example
maxItems150 is non-default; the schema default is 1500), showsagencyPhoneandagencyContactEmailas null in the sample row, and states that the Chirp gateway is an undocumented internal storefront RPC; fixture suite extended to the CODING_RULES section 7 minimums. - v0.2 - Reconstructed the empty .actor files (actor, input, dataset, output schemas) from the spec; retry standard unified to 6 tries with jittered backoff (computed backoff 2 to 32 s; the actual sleep is half to the full computed value, so the first retry can sleep 1 s), 120 s cap, and Retry-After honored; zero matches now end Complete: 0 instead of failing; value-format drift is counted and stated as unparsed fields, never silent; skipped rows over 20 percent fail loudly; office locations emit city, state, country only (street addresses scrubbed); sentinel expanded to first search card and first V3 detail payload.
- v0.1 - Initial release with HubSpot Chirp storefront search, total reconciliation, V3 profile enrichment, and schema validation.