---
title: SerplyNewsSearchTool
description: A news article search tool powered by Serply API with configurable search parameters
icon: newspaper
---

## SerplyNewsSearchTool

The SerplyNewsSearchTool provides news article search capabilities using the Serply API. It allows for customizable search parameters including result limits and proxy location for region-specific news results.

## Installation

```bash
pip install 'crewai[tools]'
```

## Usage Example

```python
from crewai import Agent
from crewai_tools import SerplyNewsSearchTool

# Set environment variable
# export SERPLY_API_KEY='your-api-key'

# Basic initialization
news_tool = SerplyNewsSearchTool()

# Advanced initialization with custom parameters
news_tool = SerplyNewsSearchTool(
    limit=20,             # Return 20 results
    proxy_location="FR"   # Search from France
)

# Create an agent with the tool
news_researcher = Agent(
    role='News Researcher',
    goal='Find relevant news articles',
    backstory='Expert at news research and information gathering.',
    tools=[news_tool],
    verbose=True
)
```

## Input Schema

```python
class SerplyNewsSearchToolSchema(BaseModel):
    search_query: str = Field(
        description="Mandatory search query for fetching news articles"
    )
```

## Function Signature

```python
def __init__(
    self,
    limit: Optional[int] = 10,
    proxy_location: Optional[str] = "US",
    **kwargs
):
    """
    Initialize the news search tool.

    Args:
        limit (int): Maximum number of results [10-100] (default: 10)
        proxy_location (str): Region for local news results (default: "US")
            Options: US, CA, IE, GB, FR, DE, SE, IN, JP, KR, SG, AU, BR
        **kwargs: Additional arguments for tool creation
    """

def _run(
    self,
    **kwargs: Any
) -> str:
    """
    Perform news search using Serply API.

    Args:
        search_query (str): News search query

    Returns:
        str: Formatted string containing news results:
            - Title
            - Link
            - Source
            - Published Date
    """
```

## Best Practices

1. Set up API authentication:
   ```bash
   export SERPLY_API_KEY='your-serply-api-key'
   ```

2. Configure search parameters appropriately:
   - Set reasonable result limits
   - Select relevant proxy location for regional news
   - Consider time sensitivity of news content

3. Handle potential API errors
4. Process structured results effectively
5. Consider rate limits and quotas

## Integration Example

```python
from crewai import Agent, Task, Crew
from crewai_tools import SerplyNewsSearchTool

# Initialize tool with custom configuration
news_tool = SerplyNewsSearchTool(
    limit=15,             # 15 results
    proxy_location="US"   # US news sources
)

# Create agent
news_analyst = Agent(
    role='News Analyst',
    goal='Research breaking news and developments',
    backstory='Expert at analyzing news trends and developments.',
    tools=[news_tool]
)

# Define task
news_task = Task(
    description="""Research the latest developments in renewable 
    energy technology and investments, focusing on major 
    announcements and industry trends.""",
    agent=news_analyst
)

# The tool will use:
# {
#   "search_query": "renewable energy technology investments news"
# }

# Create crew
crew = Crew(
    agents=[news_analyst],
    tasks=[news_task]
)

# Execute
result = crew.kickoff()
```

## Advanced Usage

### Regional News Configuration
```python
# French news sources
fr_news = SerplyNewsSearchTool(
    proxy_location="FR",
    limit=20
)

# Japanese news sources
jp_news = SerplyNewsSearchTool(
    proxy_location="JP",
    limit=20
)
```

### Result Processing
```python
# Get news results
try:
    results = news_tool._run(
        search_query="renewable energy investments"
    )
    print(results)
except Exception as e:
    print(f"News search error: {str(e)}")
```

### Multiple Region Search
```python
# Search across multiple regions
regions = ["US", "GB", "DE"]
all_results = []

for region in regions:
    regional_tool = SerplyNewsSearchTool(
        proxy_location=region,
        limit=5
    )
    results = regional_tool._run(
        search_query="global tech innovations"
    )
    all_results.append(f"Results from {region}:\n{results}")

combined_results = "\n\n".join(all_results)
```

## Notes

- Requires valid Serply API key
- Supports multiple regions for news sources
- Configurable result limits (10-100)
- Returns structured news article data
- Thread-safe operations
- Efficient news search capabilities
- Handles API rate limiting automatically
- Includes source attribution and publication dates
- Follows redirects for final article URLs
