Bark Seller Profiles & Reviews Scraper avatar

Bark Seller Profiles & Reviews Scraper

Pricing

Pay per event

Go to Apify Store
Bark Seller Profiles & Reviews Scraper

Bark Seller Profiles & Reviews Scraper

Extract public Bark seller profiles and individual reviews into clean datasets for lead research, reputation monitoring, CRM enrichment, and competitor analysis.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Turn public Bark.com seller pages into structured business and customer-review data.

Paste one or more Bark seller profile URLs and receive two clean datasets: seller profiles and individual reviews. Use the results for lead enrichment, competitor research, reputation monitoring, local-market analysis, or recurring CRM updates.

  • 🏒 Capture business names, addresses, services, descriptions, ratings, and review counts.
  • ⭐ Export every review visible in the public profile response with author, rating, date, text, and verification status.
  • πŸ”— Join sellers and reviews with stable profile IDs.
  • ⚑ Use an HTTP-only workflow designed for quick, low-memory runs.
  • πŸ“€ Export through JSON, CSV, Excel, API, webhooks, Google Sheets, or your preferred Apify integration.

No Bark login is required. The Actor processes public seller profile URLs supplied by you; it does not access private leads or account data.

What does Bark Seller Profiles & Reviews Scraper do?

Bark Seller Profiles & Reviews Scraper visits public company pages such as:

https://www.bark.com/en/us/company/athena-playground/2noOY/

For each valid URL, it extracts the public seller record and the individual customer reviews rendered on that page. It normalizes whitespace, converts ratings and counts to numbers, resolves the canonical URL, and generates deterministic IDs that help you update rather than duplicate records on later runs.

The Actor writes different entity types to separate named datasets:

  1. Bark Seller Profiles β€” one row per successfully extracted company.
  2. Bark Seller Reviews β€” one row per unique customer review.

This separation keeps spreadsheet exports clean and makes seller-to-review joins straightforward.

Who is it for?

Sales and lead-generation teams

Enrich an existing list of Bark profile URLs before outreach. Add the public business name, address, service categories, description, rating, and review volume to CRM accounts.

Local-service agencies

Compare public positioning and customer feedback for groomers, photographers, builders, cleaners, tutors, and other service providers listed on Bark.

Reputation and customer-experience teams

Refresh review records on a schedule, upsert them by reviewId, and flag new feedback for analysis or follow-up.

Market researchers

Build source-linked datasets about local provider categories, geographic coverage, rating distribution, and review themes.

Data engineers and analysts

Feed normalized seller and review tables into a warehouse, dashboard, spreadsheet, or text-analysis pipeline without maintaining a custom Bark parser.

Why use this Bark scraper?

  • βœ… URL-driven scope β€” process the precise sellers you care about rather than crawling unrelated search pages.
  • βœ… Two normalized datasets β€” avoid mixing business rows and review rows with incompatible columns.
  • βœ… Stable identifiers β€” use profileId and reviewId for repeat-run deduplication.
  • βœ… Typed data β€” ratings and review counts are numbers, dates are source dates, and URLs are absolute.
  • βœ… Fail-safe behavior β€” invalid target URLs are rejected and total extraction failure exits non-zero.
  • βœ… Optional proxy support β€” normal prefilled runs avoid proxy cost, while advanced users can configure Apify Proxy.
  • βœ… Apify-native delivery β€” use datasets, schedules, API clients, webhooks, integrations, and MCP.

What Bark data can you extract?

Seller profile dataset

FieldTypeDescription
recordTypestringAlways seller
profileIdstringStable public profile identifier
businessNamestringSeller or company name
addressstringPublic location text, when present
categoriesarrayPublic Bark services or categories
descriptionstringPublic About description
aggregateRatingnumberAggregate star rating
reviewCountnumberPublic aggregate review count
profileUrlstringURL submitted in the input
canonicalUrlstringCanonical Bark profile URL
countryCodestringCountry segment from the Bark URL
scrapedAtstringUTC extraction timestamp

Review dataset

FieldTypeDescription
recordTypestringAlways review
reviewIdstringDeterministic ID for repeat-run upserts
profileIdstringJoin key to the seller dataset
businessNamestringReviewed seller name
authorstringPublic reviewer name or Anonymous
ratingnumberReview star rating, when present
datePublishedstringSource publication date
textstringNormalized public review text
servicestringReview service/category, when shown
verifiedbooleanWhether Bark displays verified text
profileUrlstringCanonical seller profile URL
scrapedAtstringUTC extraction timestamp

Optional fields are omitted when Bark does not publish them. The Actor does not invent missing contact details.

How to scrape Bark seller profiles

  1. Open the Actor input page.
  2. Add one or more public Bark company profile URLs under Bark seller profile URLs.
  3. Set Maximum seller profiles to bound the batch.
  4. Choose how many public reviews to save per profile.
  5. Leave proxy disabled for a normal first run.
  6. Click Start.
  7. Open the Bark Seller Profiles and Bark Seller Reviews datasets.
  8. Export the data or connect it to your workflow.

For a cheap smoke test, keep the prefilled one-profile input unchanged.

Input parameters

startUrls (required)

An array of public Bark company profile URLs. Supported URLs follow this pattern:

https://www.bark.com/en/{country}/company/{seller-slug}/{profile-id}/

Current Bark profiles using /en/{country}/b/{seller-slug}/{profile-id}/ are also supported.

Category pages, search pages, arbitrary Bark pages, and other domains fail validation. This prevents accidental out-of-scope crawling.

maxProfiles

Maximum number of unique profiles to process. Default: 20. Prefill: 1. Allowed range: 1–200.

Duplicate URLs are removed before requests begin.

maxReviewsPerProfile

Maximum reviews saved from each profile response. Default: 100. Set it to 0 for profile-only enrichment.

This is a safety limit, not a promise that every public profile contains that many reviews.

proxyConfiguration

Optional Apify Proxy settings. The prefill disables proxy use because the proven public profile route works anonymously over direct HTTP. If Bark returns region-specific behavior for your target profiles, enable a matching proxy configuration.

Example input

{
"startUrls": [
{
"url": "https://www.bark.com/en/us/company/athena-playground/2noOY/"
}
],
"maxProfiles": 1,
"maxReviewsPerProfile": 10,
"proxyConfiguration": {
"useApifyProxy": false
}
}

To collect only the seller record, change maxReviewsPerProfile to 0.

Example seller output

{
"recordType": "seller",
"profileId": "2noOY",
"businessName": "Athena Playground",
"address": "4724 Melrose Avenue, Los Angeles, CA",
"categories": ["Dog & Pet Grooming"],
"aggregateRating": 5,
"reviewCount": 2,
"canonicalUrl": "https://www.bark.com/en/us/company/athena-playground/2noOY/",
"countryCode": "US",
"scrapedAt": "2026-07-17T00:00:00.000Z"
}

Example review output

{
"recordType": "review",
"reviewId": "deterministic-24-character-id",
"profileId": "2noOY",
"businessName": "Athena Playground",
"author": "AmandaW",
"rating": 5,
"datePublished": "2023-10-09",
"text": "My fur baby always looks like a superstar after a visit here...",
"verified": false,
"profileUrl": "https://www.bark.com/en/us/company/athena-playground/2noOY/",
"scrapedAt": "2026-07-17T00:00:00.000Z"
}

Actual values come from the live public profile and can change between runs.

How much does it cost to scrape Bark seller profiles and reviews?

The Actor uses pay-per-event pricing:

  • Start: $0.005 once per run.
  • Dataset record: tiered price for each seller or review record; the BRONZE rate is $0.00022661 per record, with plan discounts down to $0.00006345.

A one-profile example with one seller and two review rows charges the start plus three records: about $0.00568 at the BRONZE rate. Apify platform usage treatment depends on your plan and the active Store pricing display.

Check the Actor pricing tab for your exact plan tier.

Review monitoring workflow

Run the same URL list daily or weekly with an Apify schedule:

  1. Store the stable input in an Apify task.
  2. Schedule the task at your preferred interval.
  3. Send dataset items to a webhook or integration.
  4. Upsert sellers by profileId.
  5. Upsert reviews by reviewId.
  6. Treat unseen review IDs as new feedback.

Because a review ID incorporates the profile, author, date, and text, repeat runs produce the same identifier for unchanged review content.

CRM enrichment workflow

A sales operations team can maintain the Bark URL in each CRM company record, run a batch export, and map:

  • businessName to account name;
  • address to public business location;
  • categories to service tags;
  • aggregateRating and reviewCount to reputation fields;
  • canonicalUrl to source URL;
  • scrapedAt to enrichment timestamp.

Use individual reviews as related records rather than flattening them into the company table.

Integrations

Google Sheets

Use the Google Sheets integration to send seller rows to an account sheet and review rows to a feedback sheet. Join them with profileId.

Webhooks and automation platforms

Trigger Make, Zapier, n8n, or your backend when a run succeeds. Fetch the dataset IDs from the run storage metadata and process each named dataset.

Data warehouses

Load seller and review exports into separate warehouse tables. Partition review snapshots by scrapedAt and deduplicate by reviewId.

AI review analysis

Send review text, rating, service, and businessName to a classification or sentiment model. Retain profileUrl for source traceability.

JavaScript API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/bark-seller-profiles-reviews-scraper').call({
startUrls: [{ url: 'https://www.bark.com/en/us/company/athena-playground/2noOY/' }],
maxProfiles: 1,
maxReviewsPerProfile: 10,
proxyConfiguration: { useApifyProxy: false }
});
console.log(run.id, run.status);

Named dataset IDs are available in the completed run's storage metadata.

Python API example

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/bark-seller-profiles-reviews-scraper').call(run_input={
'startUrls': [{'url': 'https://www.bark.com/en/us/company/athena-playground/2noOY/'}],
'maxProfiles': 1,
'maxReviewsPerProfile': 10,
'proxyConfiguration': {'useApifyProxy': False},
})
print(run['id'], run['status'])

cURL API example

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~bark-seller-profiles-reviews-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"startUrls": [{"url":"https://www.bark.com/en/us/company/athena-playground/2noOY/"}],
"maxProfiles": 1,
"maxReviewsPerProfile": 10,
"proxyConfiguration": {"useApifyProxy": false}
}'

Poll the returned run ID until it reaches a terminal status, then inspect its datasets.

Use with Apify MCP

Expose the Actor to Claude Code:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/bark-seller-profiles-reviews-scraper"

For Claude Desktop, Cursor, or VS Code, add an HTTP MCP server:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/bark-seller-profiles-reviews-scraper"
}
}
}

Example prompts:

  • β€œExtract this Bark seller profile and summarize its customer feedback.”
  • β€œRun the Bark review monitor for these profile URLs and list newly seen review IDs.”
  • β€œCompare service categories, ratings, and review themes for this Bark seller list.”

Tips for reliable runs

  • πŸ”— Copy the canonical public company page, not a Bark search or category URL.
  • πŸ§ͺ Start with one profile and verify both datasets before increasing the batch.
  • πŸ’Έ Leave proxy disabled unless direct access is regionally restricted.
  • 🧱 Split very large URL inventories into bounded scheduled tasks.
  • πŸ” Upsert with stable IDs rather than appending full snapshots blindly.
  • πŸ“… Use datePublished for source chronology and scrapedAt for extraction chronology.
  • πŸ“ Treat missing optional fields as β€œnot publicly shown,” not as empty business facts.

Limitations

  • The Actor is URL-driven; it does not discover sellers by category or location.
  • It extracts reviews present in Bark's public server-rendered profile response. Bark can change how many reviews it renders or how pagination works.
  • Private lead details, account-only contacts, and authenticated dashboards are not accessed.
  • Public profiles can omit addresses, descriptions, ratings, categories, dates, or review metadata.
  • Bark can change HTML markup, regional availability, or anti-bot controls without notice.
  • A successful seller row does not guarantee review rows when the seller has no public reviews.
  • maxReviewsPerProfile caps extracted rows; it does not make hidden or unavailable reviews public.

Error handling

Invalid target URLs fail before scraping so category pages or unrelated websites cannot bypass product scope.

For a mixed valid batch, one profile-level fetch or parse error is logged and skipped. If every profile fails, the Actor exits with a failed status rather than silently returning an empty success.

HTTP requests use realistic browser headers, a 45-second request timeout, and two bounded retries. This avoids infinite retry loops and keeps failures observable.

This Actor extracts information from public seller pages. Web-scraping laws and contractual restrictions vary by country and use case.

You are responsible for:

  • having a lawful purpose and legal basis for processing the data;
  • respecting Bark's terms, applicable robots guidance, and access restrictions;
  • following privacy, direct-marketing, database, and consumer-protection laws;
  • minimizing collection and retention of personal data;
  • honoring deletion, objection, and suppression requirements;
  • avoiding harassment, spam, discrimination, or automated decisions with harmful effects.

This documentation is general information, not legal advice. Consult qualified counsel for regulated or high-risk workflows.

Troubleshooting

Why did my run reject a URL?

Confirm that it is a public Bark company profile under /en/{country}/company/{slug}/{id}/ or /en/{country}/b/{slug}/{id}/. Search results, category pages, lead forms, shortened URLs, and non-Bark domains are intentionally unsupported.

Why is the reviews dataset empty?

The seller may have no public reviews, maxReviewsPerProfile may be 0, or Bark may not render review blocks in that profile response. Check the seller's reviewCount, run log, and live public page.

Why did the whole run fail?

The Actor fails when no seller profile can be extracted. Inspect logs for HTTP status codes, validation messages, or missing profile markup. Test one known public profile and consider a region-matched proxy only when direct access is restricted.

Why are some fields absent?

Optional fields are emitted only when Bark publishes them. This avoids misleading empty strings and fabricated values.

FAQ

Do I need a Bark account?

No. v1 uses public seller profile pages and does not log in.

Can I search Bark by category and location?

No. This Actor accepts precise seller profile URLs. Use a discovery product to build a URL list, then pass those URLs here for profile and review enrichment.

Can I extract only seller details?

Yes. Set maxReviewsPerProfile to 0.

Can I run it on a schedule?

Yes. Save the input as an Apify task and attach a daily, weekly, or monthly schedule.

How do I prevent duplicate reviews?

Upsert rows by reviewId. Unchanged public reviews keep the same deterministic ID across runs.

Does it scrape emails or phone numbers?

It only emits the documented public profile and review fields. It does not claim or infer contact details that are not part of the proven public response.

What happens if one URL is unavailable?

The URL is logged and skipped if another seller succeeds. If none succeed, the run fails visibly.

Extend a local-services research workflow with other Automation Lab actors:

Choose related actors only when their source and data-use terms fit your workflow.

Data quality checklist

Before operationalizing a batch:

  1. Confirm each input is the intended seller.
  2. Review sample seller and review rows.
  3. Verify ratings and dates are typed correctly.
  4. Confirm join behavior with profileId.
  5. Decide how missing optional fields should map downstream.
  6. Deduplicate historical reviews by reviewId.
  7. Retain canonical source URLs for auditability.
  8. Set a retention policy appropriate to your use case.

Support

If a current public Bark seller profile fails, include the run ID, the affected public URL, and the relevant log message in your Apify issue. Do not share private credentials, lead details, or personal account data.

For input questions, compare your payload with the prefilled example and schema descriptions. For API questions, include the client language and sanitized request body.