List input pairs results with URLs by position, so a result carries another input's data; every result is success=True · Issue #60 · brightdata/sdk-python · GitHub
You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
List input pairs results with URLs by position, so a result carries another input's data; every result is success=True #60
When a scraper method is given a list of URLs, the SDK pairs the returned rows with the input URLs by position. The API does not return rows in input order, so each ScrapeResult can carry one input's url and a different input's data. Every result is also marked success=True, including error rows.
On LinkedIn this attaches one person's profile to a different identity. The dataset marks those fields as personal data (pii: true), so this is a data-integrity problem, not only a wrong-label one.
The same code is in six scrapers: amazon (2 places), facebook (2), instagram, linkedin, pinterest, tiktok.
So correct pairing needs no guesswork: match each row on input_url, falling back to input.url.
Other shapes of the same bug
If the API returns fewer rows than inputs, zip stops at the shorter list and those inputs get no result at all, with nothing to say one is missing.
When the job fails or times out, result.data is not a list, so the method returns one ScrapeResult instead of a list. A caller iterating the list-input return gets a single object.
Affected
grep -c "zip(url_list, result.data)" across scrapers/*/scraper.py:
scraper
occurrences
amazon
2
facebook
2
instagram
1
linkedin
1
pinterest
1
tiktok
1
Expected
Pair each row with its input by input_url / input.url, not by position.
Set success from the row: False when the row has an error key.
Return one result per input even when a row is missing, with success=False, rather than dropping it.
Return a list for list input on every path, including failure and timeout.
Workaround
Ignore ScrapeResult.url on list input. Flatten every result.data and match rows to inputs on input_url or input.url yourself.
Activity