{"id":16759461,"url":"https://github.com/pogzyb/tourist","last_synced_at":"2026-01-12T09:49:17.152Z","repository":{"id":251425664,"uuid":"829762996","full_name":"pogzyb/tourist","owner":"pogzyb","description":"Open-source, LLM-ready SERP and web scraping service","archived":false,"fork":false,"pushed_at":"2024-11-01T00:05:16.000Z","size":422,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-24T15:02:15.442Z","etag":null,"topics":["langchain","llama","llamaindex","llm-tool-call","llm-tools","llmops","search-engine","selenium-python","serpapi","web-scraping"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pogzyb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-17T01:57:07.000Z","updated_at":"2024-12-07T02:10:48.000Z","dependencies_parsed_at":null,"dependency_job_id":"afb25a34-a31e-4117-b711-0b1a1d60403c","html_url":"https://github.com/pogzyb/tourist","commit_stats":null,"previous_names":["pogzyb/tourist"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pogzyb%2Ftourist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pogzyb%2Ftourist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pogzyb%2Ftourist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pogzyb%2Ftourist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pogzyb","download_url":"https://codeload.github.com/pogzyb/tourist/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248261916,"owners_count":21074225,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["langchain","llama","llamaindex","llm-tool-call","llm-tools","llmops","search-engine","selenium-python","serpapi","web-scraping"],"created_at":"2024-10-13T04:08:12.580Z","updated_at":"2026-01-05T19:24:17.436Z","avatar_url":"https://github.com/pogzyb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tourist🤳\n\n[![PyPI version](https://badge.fury.io/py/tourist.svg)](https://badge.fury.io/py/tourist)\n\nAn open-source, low-cost, serverless application for SERP extraction and web scraping. \n\nWork on LLM projects without worrying about credits, subscriptions, or rate-limits. Tourist is a free alternative to many mainstream SERP API services. Run Tourist on your machine or deploy it into your own AWS account.  \n\n\u003e [!IMPORTANT]  \n\u003e Tourist is in early development. Features and API's may change unexpectedly.\n\n## Overview\n![tourist-architecture](./docs/touristv020.png \"Overview\")\n\nTourist has both Service and Client components. The Service (HTTP API) handles requests from the Client (your app, agent, or scraper scripts). You're in control of both components! None of your data is ever processed or stored by third parties.\n\n## Service\n\n### Local deployment (for testing...)\n\n\u003e [!TIP]  \n\u003e Docker is recommended for running Tourist locally to handle dependencies for headless browsing.\n\n1. `docker run -e X_API_KEY=\"whatever\" -p 8000:8000 ghcr.io/pogzyb/tourist:latest`\n\nIf the service came up correctly, you should see:\n```\nINFO:     Started server process [1]\nINFO:     Waiting for application startup.\nINFO:     Application startup complete.\nINFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)\n```\n\nCheck the docs at `http://localhost:8000/docs`\n\n### AWS deployment (for real...)\n\nPrerequisites:\n1. AWS Account and Credentials\n2. S3 Bucket for storing an OpenTofu statefile\n3. Docker Daemon\n\nRead about the deployment container in the [deploy/](./deploy/DEPLOY.md) folder.\n\nExample deployment command:\n\n```\ndocker run \\\n    -v /var/run/docker.sock:/var/run/docker.sock \\\n    --env-file .env \\\n    ghcr.io/pogzyb/tourist-deploy:latest \\\n    apply \\\n    -b tourist-statefile \\\n    -k SeCretTK3y\n```\n\nUse your endpoint: `https://xxxxxxxx.lambda-url.us-east-1.on.aws` (available the deployment outputs)\n\n\u003e [!WARNING]  \n\u003e Tourist uses serverless infrastructure to keep costs extremely low; however these costs will not be $0.00 depending on how heavily you use your API.\n\n\u003e [!IMPORTANT]  \n\u003e Tourist uses the X-API-KEY authorization header to protect your API, you should set this value when deploying.\n\n## Client\n\nBuild your own LLM tools, web scraping apps, or automated testing workflows with the Tourist client.\n\n#### Python\n\nYou can use the python client to interact with your Tourist service.\nCheck out the [examples](https://github.com/pogzyb/tourist/tree/main/examples) folder for the complete code.\n\n```\npip install tourist\n```\n\n##### LLM Tools\nFor example, create a LangChain Tool for your LLM Agent.\n\n```\nfrom tourist.core import TouristScraper\nfrom langchain_core.tools import tool\n\n# Assumes you're running locally,\n# change this to your cloud endpoint if you've deployed via terraform.\nscraper = TouristScraper(\n    \"http://localhost:8000\",\n    x_api_key=\"doesntmatterlocally\",  # authorization secret  \n)\n\n\n@tool\ndef search_tool(query: str) -\u003e str:\n    \"\"\"\n    A search tool.\n    Useful for when you need to answer questions about current events, people, places, or things.\n    Input should be a search query.\n    \"\"\"\n    return scraper.get_serp(query, max_results=3):\n\n\n# ... use the tools\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpogzyb%2Ftourist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpogzyb%2Ftourist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpogzyb%2Ftourist/lists"}