Bark Scraper — Pros, Reviews & Category Coverage — $4/1k
Pricing
from $4.00 / 1,000 records
Bark Scraper — Pros, Reviews & Category Coverage — $4/1k
Bark.com scraper for 10 countries incl. US: category coverage and gap finder per city, pros with ratings and reviews, and profile URL enrichment. Phone numbers are not collected. No login or cookies. MCP-ready for AI agents. $4 per 1,000 records.
Pricing
from $4.00 / 1,000 records
Rating
0.0
(0)
Developer
Khrystyna Skotte
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Bark Scraper: Pros, Reviews & Category Coverage
Scrape Bark.com in 10 countries, including the United States. Get the service professionals listed in a city, their ratings, reviews, response times and profile details, or run the cheap coverage mode to see which services Bark has a page for in which city, and where it has none.
No Bark account, no cookies, no API key, no proxy. The actor reads the same public pages a visitor sees, over plain HTTP, so runs are fast and small (512 MB).
What you get
The actor has three modes.
| Mode | One row is | Use it for |
|---|---|---|
coverage (default) | one city x service pair | Market-gap research: where does Bark have no page, a state page only, or a thin city page |
listings | one professional found on a city x service page | Lead lists, competitor mapping, rating and review benchmarks |
profiles | one Bark company profile URL | Enriching a list of Bark profile links |
An empty input ({}) runs a small coverage sample: San Diego, CA for "cake", "dog grooming" and "house cleaning". Any other input runs the mode you set (default coverage).
Coverage row fields
Coverage is built to answer one question: is a service covered in a city? Bark answers with the URL it redirects to, and the actor reads that.
| Field | Example | Meaning |
|---|---|---|
recordType | coverage | Row type |
marketplace, country | bark, us | Source and Bark country site |
city, service | San Diego, CA, dog grooming | The pair you asked for, exactly as typed |
categoryExists | true | Bark has this service category at all (false = no such category) |
cityPageExists | true | Bark has a page for this service in this city |
coverageLevel | city | city, region, country or none (see below) |
matchedSlug, matchType, matchedCategory | pet-grooming, all-words, Dog & Pet Grooming | Which Bark category your words resolved to |
resolvedCity, regionSlug, citySlug | San Diego, California, california, san-diego | How the city was resolved |
proCount | null | Always null: Bark does not print a pro count anywhere (see Limits) |
resultCount | 12 | Pros listed on the city page |
avgRating, ratingReviewCount | 4.58, 2919 | City-page aggregate rating and review count |
priceRange, priceMin, priceMax, priceAvg | $125 - $250 (Avg: $160), 125, 250, 160 | Price range Bark shows (US pages) |
topPros, topProUrls | names and profile links | First three pros on the page |
pageUrl | Bark URL | The page that was checked |
nearbyPlaces, relatedServices | ["Chula Vista", "Coronado"] | Other cities and related categories Bark links |
slugsTried | [{"slug":"cake-makers","path":"california/san-diego","status":301,...}] | Every URL tried and the HTTP result |
error, scrapedAt | null, ISO time | Failure text (if any) and timestamp |
How to read coverageLevel
| Value | What Bark did | Meaning |
|---|---|---|
city | The city page returned 200 | Bark has a page for the service in that city. resultCount says how many pros it lists (it can still be 0) |
region | The city URL redirected to the state or province page | The category exists in the region, but Bark has no page for this city |
country | Redirected to the national category page | The category exists only nationally, nothing local |
none | The category URL does not exist | Bark has no such category. This is a visible gap |
A miss still produces a row, so gaps show up in your dataset instead of being silently dropped.
Listing row fields
| Field | Example |
|---|---|
recordType, marketplace, country | listing, bark, us |
searchCity, searchService, matchedSlug | Austin, TX, dog grooming, pet-grooming |
category, city, listingUrl | Dog & Pet Grooming, Austin, city page URL |
cityAvgRating, cityPriceRange, position | 5, $85 - $125 (Avg: $110), 2 |
providerId, sellerProfileId | 4GqZp, 1132005 |
providerName, profileUrl, profileImageUrl | Virtuous Pet Care, Bark URL, image URL |
location | Austin, TX |
description, about | Card blurb and the full About text |
providerRating, reviewCount | 5, 2 (rating is null when the pro has no reviews) |
hiresCount, responseTime | 10, 3+ day response time (hires only when Bark shows it) |
yearsInBusiness, companySize, remoteServices | when Bark shows them |
isElite, badges | false, ["Certificate of Excellence 2021"] |
categories | [{"name":"Dog & Pet Grooming","slug":"pet-grooming"}] |
services | ["Overnight pet sitting", "In-home pet grooming"] |
photosCount, photoUrls | 5, up to 20 image URLs |
websiteUrl, links | website and social links the pro published |
publicPhoneNumbers, publicEmails | only numbers or addresses written in the pro's own text |
qa | [{"question": "...", "answer": "..."}] |
featuredReview | one review quoted on the city page |
reviews | with Include reviews: author, rating, date, text, platform |
detailError, scrapedAt | profile-fetch failure text (if any), timestamp |
Fields a profile does not show are left out of the row rather than invented. Treat every field as optional when you load the data.
Why this one
- 10 countries: US, UK (
gb), Canada, Ireland, Australia, New Zealand, South Africa, Singapore, France, Germany. The best-known Bark scraper on the Store covers GB and IE only, so US data was not available from it. - Coverage mode: one cheap row per city x service with
categoryExists,cityPageExistsandcoverageLevel. I found no other Bark actor on the Store that offers this. - Plain-English services: type "dog grooming" and the actor resolves it with Bark's own service search to
pet-grooming, and reports the match type. You can also pass Bark slugs or category URLs. - Bulk input: lists of cities and services, or a CSV or Google Sheet link.
- Compatible input names:
categories,locationsandtargetTypework as aliases ofservices,citiesandmode, so inputs written for other Bark scrapers run unchanged. - Partial results kept: if one target fails, the others still return, and a summary record lists the status per target.
Use cases
- Find service gaps in a city. Run coverage for a city against a long list of services. Rows with
coverageLevelofregion,countryornoneare services Bark does not serve locally there. - Compare supply across cities. Run the same service across many cities and sort by
resultCount,avgRatingandpriceAvg. - Build a local-pro lead list. Listings mode returns names, ratings, review counts, response times, websites and profile links for the pros on each city page.
- Benchmark pricing. Coverage rows carry the price range Bark shows for the city and service (US pages).
- Monitor competitors' reputations. Re-run profiles mode on a list of Bark profile URLs on a schedule and track
providerRating,reviewCountandhiresCount. - Research reviews. Turn on Include reviews to get the reviews shown on each profile with their source platform (Bark, Facebook, Google Maps, Houzz and others).
- Market entry research for a marketplace or directory. Cross-check Bark coverage with another marketplace's supply to find categories with demand and no listings.
Input
| Input | Type | Default | Meaning |
|---|---|---|---|
mode | select | coverage | coverage, listings or profiles |
country | select | us | us, gb, ca, ie, au, nz, za, sg, fr, de |
cities | string list | none | "San Diego, CA", "Austin", "Leeds", "Toronto, ON", "west-yorkshire/leeds", or a Bark city page URL |
services | string list | none | Plain names ("dog grooming"), Bark slugs ("pet-grooming") or category URLs |
listUrl | string | none | CSV or Google Sheet link. Rows can be city,service pairs, a single city, or Bark URLs |
startUrls | string list | none | Bark city x category pages (listings) or company URLs (profiles) |
profileUrls | string list | none | Bark company profile URLs (profiles mode) |
maxItems | integer | 10 | Cap on provider rows in listings and profiles modes. Coverage always returns every city x service |
fetchDetails | boolean | true | Listings: open each profile for the full detail set. Off = only what the city card shows (faster) |
includeReviews | boolean | false | Add the reviews array to each provider row. No extra requests |
maxReviewsPerProvider | integer | 20 | Cap on reviews per provider |
includeNearby | boolean | false | Listings: also collect from the Nearby Places pages until maxItems is reached |
maxConcurrency | integer | 4 | Parallel workers. Requests are still spaced out globally |
proxyConfiguration | proxy | none | Not needed. Set one only if you see HTTP 403 or 429 errors |
categories, locations, targetType | Aliases of services, cities, mode (discovery = listings) |
Example: coverage across several cities
{"mode": "coverage","country": "us","cities": ["San Diego, CA", "Austin, TX", "Denver, CO"],"services": ["dog grooming", "house cleaning", "cake", "goat yoga"]}
This returns 12 rows, one per city x service. A service Bark has no category for returns categoryExists: false and coverageLevel: "none".
Example: providers with reviews
{"mode": "listings","country": "us","cities": ["Austin, TX"],"services": ["dog grooming"],"maxItems": 25,"includeReviews": true,"includeNearby": true}
Example: UK
{"mode": "coverage","country": "gb","cities": ["London", "Leeds", "Manchester"],"services": ["electrician", "wedding cake"]}
For UK and Canadian cities, Bark puts a region in the URL. The actor finds it for you, but each city that needs a region lookup costs extra time (about 45 seconds for Leeds in a cloud run). Pass "west-yorkshire/leeds" or "Toronto, ON" to skip the lookup.
Example: enrich profile URLs
{"mode": "profiles","profileUrls": ["https://www.bark.com/en/us/company/virtuous-pet-care/4GqZp/"],"includeReviews": true}
Example: from a spreadsheet
{"mode": "coverage","listUrl": "https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/edit?usp=sharing"}
Share the sheet as "anyone with the link". Use city,service rows, or a single city column and put the services in the services input.
Example: input written for another Bark scraper
{"targetType": "discovery","categories": ["electricians"],"locations": ["london"],"country": "gb","maxItems": 2,"includeReviews": true}
Real output rows
These rows come from real cloud runs.
Coverage: city page found
{"recordType": "coverage","marketplace": "bark","country": "us","city": "San Diego, CA","service": "house cleaning","categoryExists": true,"cityPageExists": true,"coverageLevel": "city","matchedSlug": "cleaners","matchType": "exact","matchedCategory": "House Cleaning","categoryId": 1212,"resolvedCity": "San Diego, California","regionSlug": "california","citySlug": "san-diego","proCount": null,"resultCount": 12,"avgRating": 4.58,"ratingReviewCount": 2919,"priceRange": "$125 - $250 (Avg: $160)","priceMin": 125,"priceMax": 250,"priceAvg": 160,"topPros": ["Remedy Cleaning", "Stephanie's Detailed Cleaning Services", "Truth Cleaning Services"],"topProUrls": ["https://www.bark.com/en/us/company/remedy-cleaning/9jZQO/","https://www.bark.com/en/us/company/stephanies-detailed-cleaning-services/mzmpy/","https://www.bark.com/en/us/company/truth-cleaning-services/Xm0Zm/"],"pageUrl": "https://www.bark.com/en/us/cleaners/california/san-diego/","nearbyPlaces": ["Chula Vista", "Coronado", "El Cajon", "Escondido", "Imperial Beach", "La Jolla"],"relatedServices": ["Commercial & Office Cleaning", "Deep Cleaning Services", "End of Tenancy Cleaning", "Carpet Cleaning", "Window Cleaners", "Oven Cleaning"],"slugsTried": [{"slug": "cleaners", "path": "california/san-diego", "status": 200, "redirectedTo": null}],"error": null,"scrapedAt": "2026-10-22T02:30:50.944Z"}
Coverage: a gap
In the same run, "cake" in San Diego returned categoryExists: true, cityPageExists: false, coverageLevel: "region", matchedSlug: "cake-makers", resultCount: 0 and pageUrl: https://www.bark.com/en/us/cake-makers/california/. Bark's category exists for California, but not for the city. The wedding-cakes category it also tried redirected to its national page.
Listing row
{"recordType": "listing","marketplace": "bark","country": "us","searchCity": "Austin, TX","searchService": "dog grooming","matchedSlug": "pet-grooming","category": "Dog & Pet Grooming","city": "Austin","listingUrl": "https://www.bark.com/en/us/pet-grooming/texas/austin/","cityAvgRating": 5,"cityPriceRange": "$85 - $125 (Avg: $110)","position": 2,"providerId": "4GqZp","sellerProfileId": 1132005,"providerName": "Virtuous Pet Care","profileUrl": "https://www.bark.com/en/us/company/virtuous-pet-care/4GqZp/","location": "Austin, TX","providerRating": 5,"reviewCount": 2,"responseTime": "3+ day response time","remoteServices": false,"isElite": false,"badges": [],"categories": [{"name": "Dog & Pet Grooming", "slug": "pet-grooming"},{"name": "Pet Care", "slug": "pet-services"},{"name": "Dog Training", "slug": "dog-training"}],"services": ["Overnight pet sitting", "In-home pet grooming", "Puppy training", "Pet taxi"],"photosCount": 5,"publicPhoneNumbers": [],"publicEmails": [],"qa": [{"question": "What do you love most about your job?", "answer": "I love getting to spoil beloved fur-family members. ..."}],"reviews": [{"author": "Corinne Mason", "rating": 5, "date": "2020-06-24", "text": "Stephanie does a wonderful job and takes her time with our fur babies. ...", "platform": "Facebook"}],"scrapedAt": "2026-10-22T02:28:21.348Z"}
Long text fields, the description, the About text, photoUrls and links are shortened here. Real rows carry them in full.
Run summary
Every run also stores an OUTPUT record in the key-value store with the mode, country, number of records, number of targets, number failed, and one status line per target (city_page, no_city_page with the fallback level, no_category, ok or error).
Pricing
Pay per event, no subscription.
| Event | Price |
|---|---|
| Actor start | $0.001 |
| Record (one coverage row or one provider row) | $0.004 |
That is $4.00 per 1,000 rows, plus the start event. A coverage check of 50 cities x 20 services is 1,000 rows, about $4. A listings run of 200 providers costs about $0.80. Reviews are embedded in the provider row and cost nothing extra. Apify's free plan credits cover small tests.
Compare like with like: a listings row here includes the full profile (about text, services, Q&As, photos, badges), not just the card. Set fetchDetails to false if you only want the card fields.
Runs in cloud testing used 512 MB and took seconds for the default sample. Set a max charge per run in the Apify run options if you want a hard spending cap.
Limits and FAQ
Does Bark show how many pros a city has? No. Bark prints no total count on city pages, in its structured data, or in its APIs that I could find. proCount is therefore always null. resultCount is the number of pros listed on the page.
How many pros per city page? A city page lists up to about 12 pros, in an order Bark reshuffles on each request. There is no paging. To go beyond one page, turn on includeNearby to collect from the Nearby Places pages for the same service, or list more cities.
Are phone numbers included? No. On Bark, phone numbers sit behind a "Reveal phone number" button, and the actor does not click it. publicPhoneNumbers and publicEmails only contain numbers or addresses a pro wrote in their own About or Q&A text, so they are often empty.
Is coverageLevel: none always a true gap? It means the category URL Bark would use does not exist. Service names are matched with Bark's own service search, and matchType and slugsTried show what was tried. If your wording is unusual, pass the Bark slug or category URL directly.
Why is a UK city slow? Bark puts a region in UK and Canadian URLs. When a bare city name is given, the actor scans region pages to find the link. This is cached per city for the run. A town that no region page of that category links to (Bromley for electricians in my test) comes back at region level, and slugsTried shows why. Give "region/city" to be exact.
Can it be blocked? In cloud runs without a proxy, Bark returned data. From one home IP, bursts of about 300 requests per minute got HTTP 403 for a few minutes. The actor spaces requests 350 ms apart and retries 403 with a growing delay. A proxy input exists if you ever need it.
India? Not supported: Bark's India site is not a working marketplace the actor can read.
Not collected: phone reveals, accreditations (rendered client-side with no data in the page), and review owner replies (not present in the profile pages I inspected).
Is this legal? The actor reads publicly visible pages and does not log in. Bark's robots.txt disallows crawling of /company/ paths, so decide for yourself whether that fits your use and your jurisdiction, and follow Bark's terms. Do not use the data to send unsolicited messages in ways your local law forbids.
Integrations
- API: start runs and fetch the dataset with the Apify API. Example:
POST https://api.apify.com/v2/acts/chimerical_quicklime~bark-scraper/runs?token=YOUR_TOKENwith the input JSON as the body, thenGET /v2/datasets/{datasetId}/items?format=csv. - Python and JavaScript: use the
apify-clientpackage:client.actor("chimerical_quicklime/bark-scraper").call(run_input=...). - Schedules: run coverage weekly on the same city list and diff the datasets to see when Bark adds or drops a category in a city.
- Webhooks: trigger a webhook when a run succeeds to push rows into your own system.
- Make, Zapier, n8n: use the Apify app or HTTP module to run the actor and read the dataset.
- Google Sheets: export the dataset as CSV or use the Apify Sheets integration. The same sheet can feed
listUrl. - AI agents (MCP): the actor can be called through Apify's MCP server, so an agent can ask "which services are missing in Austin on Bark?" and receive coverage rows.
Output views
In the Apify console the dataset has two tables: Pros (name, rating, reviews, hires, response time, location, badges, website, profile) and Coverage (city, service, coverage level, category and city-page flags, pros listed, rating, price range, top pros, page URL).
Support
Found a city or service that returns the wrong thing? Open an issue on the actor page with the input and the run link. Bark changes its pages from time to time, and issues with reproducible inputs get fixed fastest.