"""
Search URL API Example
This example shows how to use the Browser Use API to extract specific
content from a given URL based on your query.
Usage:
# Copy this function and customize the parameters
result = await search_url("https://example.com", "what to find", depth=2)
"""
import asyncio
import os
import aiohttp
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
async def search_url(url: str, query: str, 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 = {'url': url, 'query': query, 'depth': depth}
headers = {'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json'}
print('Testing Search URL API...')
print(f'URL: {url}')
print(f'Query: {query}')
print(f'Depth: {depth}')
print('-' * 50)
try:
async with aiohttp.ClientSession() as session:
async with session.post(
'https://api.browser-use.com/api/v1/search-url',
json=payload,
headers=headers,
timeout=aiohttp.ClientTimeout(total=300),
) as response:
if response.status == 200:
result = await response.json()
print('✅ Success!')
print(f'URL processed: {result.get("url", "N/A")}')
content = result.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: Extract pricing info
asyncio.run(search_url('https://browser-use.com/#pricing', 'Find pricing information for Browser Use'))
# Example 2: News article analysis
# asyncio.run(search_url("https://techcrunch.com", "latest startup funding news", depth=3))
# Example 3: Product research
# asyncio.run(search_url("https://github.com/browser-use/browser-use", "installation instructions", depth=2))