Agency Vista Scraper
Pricing
from $4.00 / 1,000 agency profile saveds
Agency Vista Scraper
Extract structured marketing agency profiles from Agency Vista — name, services, industries, location, ratings, team size, social links, badges, clients, and verification status. 47K+ agencies. Pay only for valid records ($0.005 each). No login required, no API key, JSON or CSV output.
Pricing
from $4.00 / 1,000 agency profile saveds
Rating
0.0
(0)
Developer
Alex Lowe
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
Extract agency profiles, services, locations, ratings, industries, social links, and badges from Agency Vista.
What does Agency Vista Scraper do?
Visits Agency Vista's public agency directory and returns clean, structured records you can drop into a CRM, sales tool, BI dashboard, or recruiting workflow. With detail enrichment enabled (the default), each result includes the full agency name, slug, full description, website, services array, industries array, client list, location, team size, rating, social links, badges, and verification status.
Why use it?
Agency Vista has no public API. This Actor is the fastest path to clean agency-directory data for outbound, partnerships, recruiting, and competitive intelligence.
Example use cases
- Martech sales teams building outbound lists of digital agencies.
- White-label SaaS vendors looking for agency partners.
- Recruiters sourcing marketing firms by service or location.
- Competitive intelligence teams tracking agency positioning.
- Freelancers researching agencies by niche.
How does it work?
Agency Vista is a Next.js application that embeds full agency data as JSON in two page types:
- Search/list pages (e.g.
/agency/all/all) embed up to 50 list-stub agencies with id, name, slug, description preview, city, social profiles, badges, and rating. - Detail pages (
/agency/{slug}/summary) embed a single rich agency object with services breakdown, industry focus, full client list, full description, verification, and more.
By default, the Actor follows the list → detail flow: visit a list URL, then for each list-stub fetch its /summary detail page and merge the two into the final record. Set includeProfileDetails: false for the cheaper list-only mode.
You can drive the scrape three ways:
- Default: defaults to
/agency/all/all(Agency Vista's public top-50 list) and enriches each profile. - Filter axes: supply
searchTerms,services,locations,industries— these stampsearchContextmetadata on each record. Note: Agency Vista's public SSR doesn't actually filter by service/search-term/industry via URL, so these axes are metadata-only.locationsslightly varies the URL path;searchTerms/services/industriesdo not. To extract more than 50 distinct agencies, supplystartUrls. - Direct startUrls: paste specific Agency Vista URLs:
- List URLs (e.g.
https://agencyvista.com/agency/all/all) — yields up to 50 stubs. - Detail URLs (e.g.
https://agencyvista.com/agency/aj-marketing/marketing-agency-singapore-sg/summary) — single record. Pair with the Agency Vista sitemap (47K+ URLs) to enumerate the full directory.
- List URLs (e.g.
Input
{"startUrls": [],"searchTerms": [],"services": [],"locations": ["United States"],"industries": [],"minRating": 0,"includeProfileDetails": true,"includeSocialLinks": true,"includeContactFields": true,"maxItems": 1000,"maxConcurrency": 3,"proxyConfiguration": { "useApifyProxy": true },"debugMode": false}
Output (one item per agency)
{"recordId": "agency_vista_38595","source": "agency_vista","sourceUrl": "https://agencyvista.com/agency/all/all","profileUrl": "https://agencyvista.com/agency/page-1-media/marketing-agency-boca-raton-florida-us","agencyName": "Page 1 Media","description": "The team at Page 1 Media come from the Automotive, Law, E-commerce, Beauty...","website": "https://page1.media/","email": null,"phone": null,"location": { "raw": "Boca Raton, Florida, US", "city": "Boca Raton", "region": "Florida", "country": "US" },"services": ["Search Engine Optimization", "Reputation Management", "Growth Strategies"],"industries": ["Accounting", "Real Estate", "Health, Wellness & Fitness"],"teamSize": { "raw": "5", "min": 5, "max": 5 },"rating": { "value": 5, "count": 41 },"socialLinks": { "linkedin": null, "facebook": null, "instagram": null, "twitter": null },"badges": [],"clients": ["Your Choice Caregivers", "Other Client Inc."],"verified": true,"claimed": true,"searchContext": { "sourceUrl": "https://agencyvista.com/agency/all/all" },"scrapedAt": "2026-04-29T00:00:00.000Z"}
Sample output
A real 25-record sample run is pinned for reference (agency-vista-sample-2026-04-30):
- HTML preview (rendered table, no login): https://api.apify.com/v2/datasets/sJNdjQE9RhKLtceU8/items?signature=MC4xNzc4NzM1MTIxNDQzLjE3UTdMeE90c3VreloyNFJKYTdMWg&format=html&clean=true
- JSON (clean): https://api.apify.com/v2/datasets/sJNdjQE9RhKLtceU8/items?signature=MC4xNzc4NzM1MDc1MzI4LjFHMDZmSkpQNVBpem1OVGhxQkJhdA&format=json&clean=true
- CSV: https://api.apify.com/v2/datasets/sJNdjQE9RhKLtceU8/items?signature=MC4xNzc4NzM1MDc1MzI4LjFHMDZmSkpQNVBpem1OVGhxQkJhdA&format=csv&clean=true
- Console preview (logged-in): https://console.apify.com/storage/datasets/sJNdjQE9RhKLtceU8
Run input: {"searchTerms":["seo"],"locations":["United States"],"maxItems":25,"maxConcurrency":2}. Every record has populated teamSize, services, industries, rating, and verified: true.
Pricing
$0.005 per agency result. You only pay for valid records actually written to the dataset; duplicates and validation failures are free.
Limits and notes
- A single Agency Vista list URL returns up to 50 list-stubs. To extract more than 50 distinct agencies, supply
startUrlspopulated from the Agency Vista sitemap (~47K profile URLs). - Email addresses and phone numbers are not exposed by Agency Vista's public payload. The corresponding fields are returned as
null. - Detail enrichment makes a second HTTP request per profile. Set
includeProfileDetails: falsefor fast list-only extraction (no services/industries/clients). - This Actor only scrapes publicly available data. It does not bypass authentication or scrape login-gated content.
FAQ
Why does my run only return ~50 results when I have maxItems: 1000? A single list URL returns at most 50 stubs. Supply additional startUrls (e.g. profile URLs from the sitemap) to extract more.
Why does the result count drop slightly when includeProfileDetails: true? A small fraction of detail pages return unexpected shapes (e.g. unclaimed/disabled agencies). The Actor degrades gracefully — those records are skipped, never written with corrupt data.
Are there filters I can apply per record? minRating is enforced at extraction time using the list-stub's reviewsScore. Other filters happen post-hoc on the dataset.
Support
Issues, feature requests, or buyer questions: open a support ticket in the Apify Console.
Changelog
- 0.1.5 — Fix:
teamSizewas null for every record because the list-page JSON shape changed to{total: N}and the spread-merge clobbered it with the detail page's empty employees array. Both code paths handled now. - 0.1.3 — Tighter run defaults (1024MB / 1h timeout) and
includeContactFieldsdefaults to false (always null in v1). - 0.1 — Initial release. Two-stage
__NEXT_DATA__extraction (list → detail). Detail enrichment is on by default. Sitemap-based full-directory crawl supported viastartUrls.