mirror of
https://github.com/browser-use/browser-use
synced 2026-05-06 17:52:15 +02:00
75 lines
2.2 KiB
Python
75 lines
2.2 KiB
Python
"""
|
|
Simple Search API Example
|
|
|
|
This example shows how to use the Browser Use API to search and extract
|
|
content from multiple websites based on a query.
|
|
|
|
Usage:
|
|
# Copy this function and customize the parameters
|
|
result = await simple_search("your search query", max_websites=5, depth=2)
|
|
"""
|
|
|
|
import asyncio
|
|
import os
|
|
|
|
import aiohttp
|
|
from dotenv import load_dotenv
|
|
|
|
# Load environment variables
|
|
load_dotenv()
|
|
|
|
|
|
async def simple_search(query: str, max_websites: int = 5, depth: int = 2):
|
|
# Validate API key exists
|
|
api_key = os.getenv('BROWSER_USE_API_KEY')
|
|
if not api_key:
|
|
print('❌ Error: BROWSER_USE_API_KEY environment variable is not set.')
|
|
print('Please set your API key: export BROWSER_USE_API_KEY="your_api_key_here"')
|
|
return None
|
|
|
|
payload = {'query': query, 'max_websites': max_websites, 'depth': depth}
|
|
|
|
headers = {'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json'}
|
|
|
|
print('Testing Simple Search API...')
|
|
print(f'Query: {query}')
|
|
print(f'Max websites: {max_websites}')
|
|
print(f'Depth: {depth}')
|
|
print('-' * 50)
|
|
|
|
try:
|
|
async with aiohttp.ClientSession() as session:
|
|
async with session.post(
|
|
'https://api.browser-use.com/api/v1/simple-search',
|
|
json=payload,
|
|
headers=headers,
|
|
timeout=aiohttp.ClientTimeout(total=300),
|
|
) as response:
|
|
if response.status == 200:
|
|
result = await response.json()
|
|
print('✅ Success!')
|
|
print(f'Results: {len(result.get("results", []))} websites processed')
|
|
for i, item in enumerate(result.get('results', [])[:2], 1):
|
|
print(f'\n{i}. {item.get("url", "N/A")}')
|
|
content = item.get('content', '')
|
|
print(f' Content: {content}')
|
|
return result
|
|
else:
|
|
error_text = await response.text()
|
|
print(f'❌ Error {response.status}: {error_text}')
|
|
return None
|
|
except Exception as e:
|
|
print(f'❌ Exception: {str(e)}')
|
|
return None
|
|
|
|
|
|
if __name__ == '__main__':
|
|
# Example 1: Basic search
|
|
asyncio.run(simple_search('latest AI news'))
|
|
|
|
# Example 2: Custom parameters
|
|
# asyncio.run(simple_search("python web scraping", max_websites=3, depth=3))
|
|
|
|
# Example 3: Research query
|
|
# asyncio.run(simple_search("climate change solutions 2024", max_websites=7, depth=2))
|