eBay Seller Feedback Scraper avatar

eBay Seller Feedback Scraper

Pricing

from $2.99 / 1,000 seller feedbacks

Go to Apify Store
eBay Seller Feedback Scraper

eBay Seller Feedback Scraper

Bounded public-page metadata baseline for the $0.5/1K 🔥 eBay Sellers Feedback Scraper inventory entry. Target-specific fields are not claimed without a verified target URL.

Pricing

from $2.99 / 1,000 seller feedbacks

Rating

0.0

(0)

Developer

w3crawler

w3crawler

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

eBay Seller Feedback Profiles and Reviews

This Actor reads public eBay seller-feedback profile pages and returns typed profile aggregates plus recent feedback cards exposed by those pages. It accepts explicit /fdbk/feedback_profile/ URLs or constructs public profile URLs from usernames. It uses bounded anonymous public requests only: no login, private API, hidden identity resolution, access-control bypass, CAPTCHA evasion, or fabricated feedback.

Actor page: eBay Seller Feedback Profiles and Reviews on Apify

Public target: eBay feedback profiles

Value and use cases

Use it for public seller-quality research, marketplace catalog research, seller monitoring, and e-commerce due diligence. Profile rows preserve the visible seller aggregates; feedback rows preserve the public comment, masked buyer context, item link, price text, relative date, and bounded image URLs when present. Stable recordType and recordId values make the mixed dataset safe to consume.

Product boundary

The Actor reports only what a public feedback profile page exposes at run time. It does not promise a complete lifetime feedback history, private buyer identity, hidden ratings, or a result when eBay blocks or changes the page. A source failure or an empty public page becomes a diagnostic row instead of a fabricated profile or review.

Input

The input is a JSON object. Unknown top-level fields are rejected. Use startUrls, usernames, or both. Explicit URLs are processed before username-generated URLs, and duplicate normalized profile URLs are removed before maxProfiles is applied.

FieldType and limitsDefaultBehavior
startUrlsArray of at most 50 objects with an eBay HTTP(S) feedback-profile url[]Public /fdbk/feedback_profile/<username> pages to inspect first.
usernamesArray of at most 50 values matching letters, numbers, _, ., or -; each is at most 100 characters[]Usernames used to construct profile URLs on market.
marketus, uk, de, fr, it, es, ca, or auusHost used only for username-generated profiles.
feedbackTypeseller, buyer, or allsellerAdds the corresponding public filter to username-generated URLs. Explicit URLs keep their own query parameters.
maxProfilesSafe integer from 1 to 5010Global cap on unique profile pages after explicit URLs are placed first.
maxReviewsSafe integer from 1 to 20050Maximum feedback cards parsed from each fetched profile page.
timeoutMsSafe integer from 5,000 to 120,00030000Per-request timeout.
maxRetriesSafe integer from 0 to 31Bounded retries for transient errors, HTTP 429, and HTTP 5xx.
maxBytesSafe integer from 100,000 to 10,000,0005000000Maximum response bytes retained per profile request.
proxyConfigurationStandard Apify Proxy object; useApifyProxy is boolean and proxyUrls accepts at most 20 non-blank URLsdirect accessEnables Apify Proxy or custom proxy URLs.

Runnable input examples

Inspect one explicit public profile:

{
"startUrls": [
{
"url": "https://www.ebay.com/fdbk/feedback_profile/seller24"
}
],
"feedbackType": "seller",
"maxProfiles": 1,
"maxReviews": 25
}

Construct profiles from usernames on a marketplace:

{
"usernames": ["seller24", "camera_shop"],
"market": "uk",
"feedbackType": "all",
"maxProfiles": 2,
"maxReviews": 10
}

Combine explicit and generated profiles with bounded transport:

{
"startUrls": [
{
"url": "https://www.ebay.de/fdbk/feedback_profile/vintagestoree24"
}
],
"usernames": ["seller24"],
"market": "de",
"feedbackType": "seller",
"maxProfiles": 2,
"maxReviews": 5,
"timeoutMs": 20000,
"maxRetries": 0,
"maxBytes": 2000000,
"proxyConfiguration": {
"useApifyProxy": true
}
}

Use a custom proxy URL when the environment provides one:

{
"usernames": ["seller24"],
"maxProfiles": 1,
"maxReviews": 5,
"proxyConfiguration": {
"proxyUrls": ["http://proxy.example:8000"]
}
}

Output

The dataset mixes two normal row types and minimal diagnostics. Every normal row has recordType, a stable recordId, url, and scrapedAt; missing optional fields are omitted.

Profile rows

recordType: "seller_profile" rows describe the public profile aggregate. url is the public feedback-profile URL, and username is parsed from the visible page or the validated profile path when profile markup is present.

Feedback rows

recordType: "feedback_entry" rows describe one public feedback card. When a card exposes an item link, url and itemUrl point to that public listing; otherwise url remains the profile URL. The Actor does not fetch item pages for enrichment.

FieldMeaning
recordTypeseller_profile or feedback_entry for normal rows.
recordIdStable seller or feedback identifier for downstream deduplication.
feedbackIdSource feedback ID when the public card exposes one.
urlPublic source URL for the row.
scrapedAtISO timestamp of the parsed profile page.
usernamePublic seller username.
feedbackScoreVisible aggregate feedback score on a profile row.
positiveFeedbackPercentVisible positive-feedback percentage on a profile row, from 0 to 100.
ratingsLast12MonthsVisible positive, neutral, and negative counts when the aggregate table exposes them.
detailedSellerRatingsVisible detailed seller ratings, such as accurate description or shipping speed, from 0 to 5.
reviewCountOnPageNumber of public feedback comment cards exposed on the fetched page.
feedbackTypeCard sentiment: positive, neutral, or negative.
commentPublic feedback comment text.
buyerMaskedMasked buyer label shown by eBay.
buyerFeedbackCountBuyer feedback count when visible.
verifiedPurchaseWhether the card visibly labels the purchase as verified.
itemTitle, itemId, itemUrlPublic item information from the feedback card.
priceTextPublic price text from the card.
relativeDatePublic relative date text from the card.
imagesAt most five public image URLs found on the feedback card.
error, errorCodePresent only on a diagnostic row; normal rows do not contain them.

Example profile row:

{
"recordType": "seller_profile",
"recordId": "seller_profile:seller24",
"url": "https://www.ebay.com/fdbk/feedback_profile/seller24",
"scrapedAt": "2026-09-08T10:00:00.000Z",
"username": "seller24",
"feedbackScore": 315,
"positiveFeedbackPercent": 99.8,
"ratingsLast12Months": {
"positive": 168,
"neutral": 1,
"negative": 0
},
"detailedSellerRatings": {
"accurateDescription": 4.8,
"reasonableShippingCost": 4.7,
"shippingSpeed": 5,
"communication": 5
},
"reviewCountOnPage": 25
}

Example feedback row:

{
"recordType": "feedback_entry",
"recordId": "feedback_entry:seller24:3001",
"feedbackId": "3001",
"url": "https://www.ebay.com/itm/123456789012",
"scrapedAt": "2026-09-08T10:00:00.000Z",
"username": "seller24",
"feedbackType": "positive",
"comment": "Great seller",
"buyerMasked": "a***b",
"buyerFeedbackCount": 42,
"verifiedPurchase": true,
"itemTitle": "Vintage Camera",
"itemId": "123456789012",
"priceText": "USD 25.00",
"relativeDate": "Last month",
"itemUrl": "https://www.ebay.com/itm/123456789012"
}

Example profile-only fallback when the page exposes aggregates but no feedback cards:

{
"recordType": "seller_profile",
"recordId": "seller_profile:quiet-seller",
"url": "https://www.ebay.com/fdbk/feedback_profile/quiet-seller",
"scrapedAt": "2026-09-08T10:00:01.000Z",
"username": "quiet-seller",
"reviewCountOnPage": 0
}

Diagnostics

Diagnostics contain exactly url, error, errorCode, and scrapedAt. They make blocked, failed, empty, or missing-target outcomes explicit and never claim that unavailable feedback is empty.

Example missing-target diagnostic:

{
"url": "https://www.ebay.com/fdbk/feedback_profile/",
"error": "MISSING_PROFILES",
"errorCode": "MISSING_PROFILES",
"scrapedAt": "2026-09-08T10:00:02.000Z"
}

Example blocked-source diagnostic:

{
"url": "https://www.ebay.com/fdbk/feedback_profile/seller24",
"error": "SESSION_WARMUP_BLOCKED",
"errorCode": "SESSION_WARMUP_BLOCKED",
"scrapedAt": "2026-09-08T10:00:03.000Z"
}

Pagination, filtering, sorting, and source behavior

Profile selection and precedence

The Actor normalizes the input, keeps explicit startUrls first, appends URLs generated from usernames, removes duplicate normalized URLs, and truncates the combined list to maxProfiles. Username-generated URLs use the selected marketplace and add a public eBay filter for feedbackType: RECEIVED_AS_SELLER, RECEIVED_AS_BUYER, or RECEIVED_AS_ALL. feedbackType does not rewrite an explicit URL.

Pagination and limits

Each selected profile URL is fetched once. There is no maxPages, arbitrary pagination input, or hidden request queue. maxReviews limits the number of feedback cards parsed from that single public page; if eBay exposes fewer cards, fewer feedback rows are returned. The generated URL asks eBay for its recent sort (RECENTV2), while an explicit URL keeps its own source query. There is no user-configurable sort control.

Parsing, filtering, and deduplication

Profile aggregates come from visible public profile selectors such as the user line, overall rating table, detailed seller ratings, and feedback-card container. Feedback entries come from public card rows, including visible comments, sentiment labels, masked buyer text, verified-purchase labels, item links, prices, dates, and image URLs. The Actor does not make a second request to item pages and does not infer missing values.

Normal rows are stable by seller username for profiles and by source feedback ID plus username for feedback cards. When a feedback ID is absent, the Actor uses a bounded content-based hash of the public card fields. Duplicate profile URLs are removed before requests; the same public feedback ID is not intentionally emitted twice in one normalized profile response.

Proxy, blocked, empty, and partial runs

Direct access is the default. proxyConfiguration.useApifyProxy: true enables Apify Proxy, and non-empty proxyUrls are passed to Apify's proxy configuration. Proxy use is reported as proxyUsed in the run summary; it does not provide credentials or bypass a source decision. The Actor warms a normal public help page and uses bounded retries only; it does not use stealth or CAPTCHA evasion.

HTTP 401, 403, and 429 responses, common challenge markers such as bm-verify or /_sec/verify, and failed warm-up requests become diagnostics. A public profile page with no recognizable profile or feedback markup becomes NO_PUBLIC_FEEDBACK_DATA. A profile aggregate with zero visible feedback cards is still a normal seller_profile row when the page exposes profile markup. Other successful profiles remain in the dataset if a later profile fails, and the summary becomes COMPLETED_WITH_DIAGNOSTICS when any diagnostic is emitted.

Run summary and downloads

The key-value store record OUTPUT_SUMMARY contains status, hasData, normalRecords, diagnosticRecords, datasetItems, profileItems, reviewItems, diagnosticItems, uniqueItems, requestedProfiles, processedProfiles, proxyUsed, source, and finishedAt. processedProfiles counts normal profile rows; reviewItems counts feedback rows. The status is SUCCEEDED only when no diagnostic rows were emitted, otherwise it is COMPLETED_WITH_DIAGNOSTICS.

Example OUTPUT_SUMMARY:

{
"status": "SUCCEEDED",
"hasData": true,
"normalRecords": 6,
"diagnosticRecords": 0,
"datasetItems": 6,
"profileItems": 1,
"reviewItems": 5,
"diagnosticItems": 0,
"uniqueItems": 6,
"requestedProfiles": 1,
"processedProfiles": 1,
"proxyUsed": false,
"source": "ebay-public-feedback",
"finishedAt": "2026-09-08T10:00:04.000Z"
}

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Cost and limits

Apify compute, network, proxy, and dataset-storage usage depends on the number of profiles, response sizes, retries, and emitted rows. The Actor does not promise a fixed current price in this README; check the Actor page for the current account-visible pricing. The documented 50-profile and 200-review bounds are intentionally finite.

Running the Actor

Apify Console

  1. Open the Actor page.
  2. Enter a valid input in the Input tab, using an explicit public profile URL or a username.
  3. Run the Actor and inspect profile, feedback, and diagnostic rows in the Dataset tab.
  4. Open the Key-value store and review OUTPUT_SUMMARY before exporting.

API and CLI

Use the Apify API with Actor ID xKYbQ8TgxWzW7x7W8 or run the CLI from this directory:

npm install
apify call xKYbQ8TgxWzW7x7W8 --input-file test/inputs/default.json

Local development

npm install
npm run lint
npm test
apify validate-schema
apify run --purge --input-file test/inputs/default.json
npm run validate

The local test input is a bounded live public probe. A fixture or diagnostic-only run does not prove normal profile or feedback records; validate the actual dataset and summary from a fresh run. Generated storage/ output is local run state and should not be committed.

Troubleshooting

The run contains only diagnostics

Read errorCode and OUTPUT_SUMMARY. SOURCE_BLOCKED, SESSION_WARMUP_BLOCKED, and transport failures describe access or request problems; NO_PUBLIC_FEEDBACK_DATA means the fetched page had no recognizable public profile or feedback markup. Try a different public profile or a compliant proxy configuration, but do not add credentials or attempt to evade eBay controls.

A profile row is present but review rows are missing

The public profile can expose aggregates without feedback cards, or its current page can expose fewer cards than maxReviews. This is a truthful profile-only result, not evidence that the seller has no historical feedback.

The run returns fewer profiles than requested

Check duplicate URLs, maxProfiles, invalid usernames, source redirects, and diagnostics. Explicit URLs consume the cap before username-generated URLs. A source can also expose different markup by marketplace or access state.

Public feedback comments, masked buyer labels, and seller aggregates may be personal data. You are responsible for a lawful purpose, respecting eBay's terms and access policies, complying with privacy and data-protection law, and honoring applicable deletion or opt-out requirements. Do not use this Actor to identify masked buyers or collect private/login-only data. This independent community Actor is not affiliated with, endorsed by, or sponsored by eBay Inc.

For defects or contract questions, use the Issues tab on Apify and include the input shape, run ID, summary, and diagnostic code without sharing private data.