Oxylabs Tools
Search Google through Oxylabs and summarize the top results with OxylabsTools.
Web scraping toolkit for Google search, Amazon products, and website scraping.
"""
Oxylabs Tools
=============================
Web scraping toolkit for Google search, Amazon products, and website scraping.
Requirements:
pip install oxylabs
Environment variables:
OXYLABS_USERNAME: Your Oxylabs username
OXYLABS_PASSWORD: Your Oxylabs password
"""
from agno.agent import Agent
from agno.tools.oxylabs import OxylabsTools
# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------
agent = Agent(
tools=[OxylabsTools()],
markdown=True,
)
# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
# Example 1: Google Search
agent.print_response(
"Search for 'latest iPhone reviews' and summarize the top 3 results.",
)
# Example 2: Amazon Product Search
# agent.print_response(
# "Get details for Amazon product with ASIN 'B07FZ8S74R' (Echo Dot).",
# )
# Example 3: Multi-Domain Amazon Search
# agent.print_response(
# "Use search_amazon_products to search for 'gaming keyboards' on both:\n"
# "1. Amazon US (domain='com')\n"
# "2. Amazon UK (domain='co.uk')\n"
# "Compare the top 3 results from each region including pricing and availability."
# )
# Example 4: Website Scraping with Markdown Output
# Use markdown=True on OxylabsTools to get full Markdown content instead of parsed HTML
# agent_markdown = Agent(
# tools=[OxylabsTools(markdown=True)],
# markdown=True,
# )
# agent_markdown.print_response(
# "Scrape the content from https://example.com and summarize it.",
# )The active call uses Google search result descriptions. To use the commented Amazon examples, ask for domain_code="com" or domain_code="co.uk"; domain is not the Agno tool argument. Website scraping returns a JSON envelope: the default parsed content is capped at 1,000 characters, while markdown=True returns the full Markdown content inside that envelope.
Run the Example
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activateInstall dependencies
uv pip install -U agno openai oxylabsExport environment variables
export OPENAI_API_KEY="your_openai_api_key_here"
export OXYLABS_PASSWORD="your_oxylabs_password_here"
export OXYLABS_USERNAME="your_oxylabs_username_here"Run the example
Save the code above as oxylabs_tools.py, then run:
python oxylabs_tools.pyFull source: cookbook/91_tools/oxylabs_tools.py