eBay Seller Feedback Scraper
Pricing
from $2.99 / 1,000 seller feedbacks
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
Maintained by CommunityActor 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.
| Field | Type and limits | Default | Behavior |
|---|---|---|---|
startUrls | Array of at most 50 objects with an eBay HTTP(S) feedback-profile url | [] | Public /fdbk/feedback_profile/<username> pages to inspect first. |
usernames | Array of at most 50 values matching letters, numbers, _, ., or -; each is at most 100 characters | [] | Usernames used to construct profile URLs on market. |
market | us, uk, de, fr, it, es, ca, or au | us | Host used only for username-generated profiles. |
feedbackType | seller, buyer, or all | seller | Adds the corresponding public filter to username-generated URLs. Explicit URLs keep their own query parameters. |
maxProfiles | Safe integer from 1 to 50 | 10 | Global cap on unique profile pages after explicit URLs are placed first. |
maxReviews | Safe integer from 1 to 200 | 50 | Maximum feedback cards parsed from each fetched profile page. |
timeoutMs | Safe integer from 5,000 to 120,000 | 30000 | Per-request timeout. |
maxRetries | Safe integer from 0 to 3 | 1 | Bounded retries for transient errors, HTTP 429, and HTTP 5xx. |
maxBytes | Safe integer from 100,000 to 10,000,000 | 5000000 | Maximum response bytes retained per profile request. |
proxyConfiguration | Standard Apify Proxy object; useApifyProxy is boolean and proxyUrls accepts at most 20 non-blank URLs | direct access | Enables 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.
| Field | Meaning |
|---|---|
recordType | seller_profile or feedback_entry for normal rows. |
recordId | Stable seller or feedback identifier for downstream deduplication. |
feedbackId | Source feedback ID when the public card exposes one. |
url | Public source URL for the row. |
scrapedAt | ISO timestamp of the parsed profile page. |
username | Public seller username. |
feedbackScore | Visible aggregate feedback score on a profile row. |
positiveFeedbackPercent | Visible positive-feedback percentage on a profile row, from 0 to 100. |
ratingsLast12Months | Visible positive, neutral, and negative counts when the aggregate table exposes them. |
detailedSellerRatings | Visible detailed seller ratings, such as accurate description or shipping speed, from 0 to 5. |
reviewCountOnPage | Number of public feedback comment cards exposed on the fetched page. |
feedbackType | Card sentiment: positive, neutral, or negative. |
comment | Public feedback comment text. |
buyerMasked | Masked buyer label shown by eBay. |
buyerFeedbackCount | Buyer feedback count when visible. |
verifiedPurchase | Whether the card visibly labels the purchase as verified. |
itemTitle, itemId, itemUrl | Public item information from the feedback card. |
priceText | Public price text from the card. |
relativeDate | Public relative date text from the card. |
images | At most five public image URLs found on the feedback card. |
error, errorCode | Present 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
- Open the Actor page.
- Enter a valid input in the Input tab, using an explicit public profile URL or a username.
- Run the Actor and inspect profile, feedback, and diagnostic rows in the Dataset tab.
- Open the Key-value store and review
OUTPUT_SUMMARYbefore exporting.
API and CLI
Use the Apify API with Actor ID xKYbQ8TgxWzW7x7W8 or run the CLI from this directory:
npm installapify call xKYbQ8TgxWzW7x7W8 --input-file test/inputs/default.json
Local development
npm installnpm run lintnpm testapify validate-schemaapify run --purge --input-file test/inputs/default.jsonnpm 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.
Privacy, legal, and affiliation
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.