--- title: SerplyJobSearchTool description: A tool for searching US job postings using the Serply API icon: briefcase --- ## SerplyJobSearchTool The SerplyJobSearchTool provides job search capabilities using the Serply API. It allows for searching job postings in the US market, returning structured information about positions, employers, locations, and remote work status. ## Installation ```bash pip install 'crewai[tools]' ``` ## Usage Example ```python from crewai import Agent from crewai_tools import SerplyJobSearchTool # Set environment variable # export SERPLY_API_KEY='your-api-key' # Initialize the tool search_tool = SerplyJobSearchTool() # Create an agent with the tool job_researcher = Agent( role='Job Market Researcher', goal='Find relevant job opportunities', backstory='Expert at analyzing job market trends and opportunities.', tools=[search_tool], verbose=True ) ``` ## Input Schema ```python class SerplyJobSearchToolSchema(BaseModel): search_query: str = Field( description="Mandatory search query for fetching job postings" ) ``` ## Function Signature ```python def __init__(self, **kwargs): """ Initialize the job search tool. Args: **kwargs: Additional arguments for RagTool initialization Note: Requires SERPLY_API_KEY environment variable """ def _run( self, **kwargs: Any ) -> str: """ Perform job search using Serply API. Args: search_query (str): Job search query **kwargs: Additional search parameters Returns: str: Formatted string containing job listings with details: - Position - Employer - Location - Link - Highlights - Remote/Hybrid status """ ``` ## Best Practices 1. Set up API authentication: ```bash export SERPLY_API_KEY='your-serply-api-key' ``` 2. Use specific search queries 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 SerplyJobSearchTool # Initialize tool job_search = SerplyJobSearchTool() # Create agent recruiter = Agent( role='Technical Recruiter', goal='Find relevant job opportunities in tech', backstory='Expert at identifying promising tech positions.', tools=[job_search] ) # Define task search_task = Task( description="""Search for senior software engineer positions with remote work options in the US. Focus on positions requiring Python expertise.""", agent=recruiter ) # The tool will use: # { # "search_query": "senior software engineer python remote" # } # Create crew crew = Crew( agents=[recruiter], tasks=[search_task] ) # Execute result = crew.kickoff() ``` ## Advanced Usage ### Handling Search Results ```python # Example of processing structured results results = search_tool._run( search_query="machine learning engineer" ) # Results format: """ Search results: Position: Senior Machine Learning Engineer Employer: TechCorp Inc Location: San Francisco, CA Link: https://example.com/job/123 Highlights: Python, TensorFlow, 5+ years experience Is Remote: True Is Hybrid: False --- Position: ML Engineer ... """ ``` ### Error Handling ```python try: results = search_tool._run( search_query="data scientist" ) if not results: print("No jobs found") else: print(results) except Exception as e: print(f"Job search error: {str(e)}") ``` ## Notes - Requires valid Serply API key - Currently supports US job market only - Returns structured job information - Includes remote/hybrid status - Thread-safe operations - Efficient job search capabilities - Handles API rate limiting automatically - Provides detailed job highlights