π v2.0.0 - Complete Architecture Rewrite
β οΈ Breaking Changes - Migration Required
This is a major breaking release requiring code changes. Python 3.9+ now required.
Client Initialization
# β Old
from brightdata import bdclient
client = bdclient(api_token="your_token")
# β
New
from brightdata import BrightDataClient
client = BrightDataClient(token="your_token")API Structure - Hierarchical Methods
# β Old - Flat API
client.scrape_linkedin.profiles(url)
client.search_linkedin.jobs()
result = client.scrape(url, zone="my_zone")
# β
New - Hierarchical API
client.scrape.linkedin.profiles(url)
client.search.linkedin.jobs()
result = client.scrape_url(url, zone="my_zone")Platform-Specific Scraping
# β
New - Recommended approach
client.scrape.amazon.products(url)
client.scrape.amazon.reviews(url)
client.scrape.amazon.sellers(url)
client.scrape.linkedin.profiles(url)
client.scrape.instagram.profiles(url)
client.scrape.facebook.posts(url)Search Operations
# β Old
results = client.search(query, search_engine="google")
# β
New - Dedicated methods
client.search.google(query)
client.search.bing(query)
client.search.yandex(query)Async Support (New)
# β
Sync (still supported)
client = BrightDataClient(token="...")
result = client.scrape_url(url)
# β
Async (recommended for performance)
async with BrightDataClient(token="...") as client:
result = await client.scrape_url_async(url)
# β
Async batch operations
async def scrape_multiple():
async with BrightDataClient(token="...") as client:
tasks = [client.scrape_url_async(url) for url in urls]
results = await asyncio.gather(*tasks)Manual Job Control (New)
# β
Fine-grained control
job = await scraper.trigger(url)
# Do other work...
status = await job.status_async()
if status == "ready":
data = await job.fetch_async()Type-Safe Payloads (New)
# β Old - untyped dicts
payload = {"url": "...", "reviews_count": 100}
# β
New - structured with validation
from brightdata import AmazonProductPayload
payload = AmazonProductPayload(
url="https://amazon.com/dp/B123",
reviews_count=100
)
result = client.scrape.amazon.products(payload)Return Types
# β
New - structured objects with metadata
result = client.scrape.amazon.products(url)
print(result.data) # Actual scraped data
print(result.timing) # Performance metrics
print(result.cost) # Cost tracking
print(result.snapshot_id) # Job identifierCLI Tool (New)
# β
Command-line interface
brightdata scrape amazon products --url https://amazon.com/dp/B123
brightdata search google --query "python sdk"
brightdata search linkedin jobs --location "Paris"
brightdata crawler discover --url https://example.com --depth 3Configuration Changes
# β Old
client = bdclient(
api_token="token", # Changed parameter name
auto_create_zones=True, # Default changed to False
web_unlocker_zone="sdk_unlocker", # Default changed
serp_zone="sdk_serp", # Default changed
browser_zone="sdk_browser" # Default changed
)
# β
New
client = BrightDataClient(
token="token", # Renamed from api_token
auto_create_zones=False, # New default
web_unlocker_zone="web_unlocker1", # New default name
serp_zone="serp_api1", # New default name
browser_zone="browser_api1", # New default name
timeout=30, # New parameter
rate_limit=10, # New parameter (optional)
rate_period=1.0 # New parameter
)β¨ New Features
Platform Coverage
| Platform | Status | Methods |
|---|---|---|
| Amazon | β NEW | products(), reviews(), sellers() |
| β NEW | profiles(), posts(), comments(), reels() |
|
| β NEW | posts(), comments(), groups() |
|
| β Enhanced | Full scraping and search | |
| ChatGPT | β Enhanced | Improved interaction |
| Google/Bing/Yandex | β Enhanced | Dedicated services |
Performance
- β‘ 10x better concurrency - Event loop-based architecture
- π Advanced connection pooling - 100 total, 30 per host
- π― Built-in rate limiting - Configurable request throttling
β Upgrade Checklist
- Update Python to 3.9+
- Change imports:
bdclientβBrightDataClient - Update parameter:
api_token=βtoken= - Migrate method calls to hierarchical structure
- Handle new
ScrapeResult/SearchResultreturn types - Review zone configuration defaults
- Consider async for better performance
- Test in staging environment
π Resources
Full Changelog: v1.1.3...v2.0.0