{"id":15177523,"url":"https://github.com/elymsyr/place-suggestion-api","last_synced_at":"2026-01-04T14:44:37.138Z","repository":{"id":256492487,"uuid":"855477013","full_name":"elymsyr/place-suggestion-api","owner":"elymsyr","description":"RESTful API that leverages Gemini AI to suggest places based on user prompts. Returns detailed place information including names, locations, and multimedia content. The API will be containerized with Docker and deployed on AWS services.","archived":false,"fork":false,"pushed_at":"2024-09-18T00:25:17.000Z","size":81,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-31T21:11:26.488Z","etag":null,"topics":["fastapi","gemini","gemini-api","google-maps-api","python","scraping","selenium","selenium-python","selenium-webdriver","threading"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elymsyr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-10T23:46:09.000Z","updated_at":"2025-01-31T20:16:42.000Z","dependencies_parsed_at":"2024-09-23T09:01:13.824Z","dependency_job_id":null,"html_url":"https://github.com/elymsyr/place-suggestion-api","commit_stats":{"total_commits":51,"total_committers":2,"mean_commits":25.5,"dds":0.1568627450980392,"last_synced_commit":"4c0ace996c589ca6d7178f14c148d18d3ad82c7d"},"previous_names":["elymsyr/place-suggestion-n-map-scraper"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elymsyr%2Fplace-suggestion-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elymsyr%2Fplace-suggestion-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elymsyr%2Fplace-suggestion-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elymsyr%2Fplace-suggestion-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elymsyr","download_url":"https://codeload.github.com/elymsyr/place-suggestion-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238366664,"owners_count":19460167,"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":["fastapi","gemini","gemini-api","google-maps-api","python","scraping","selenium","selenium-python","selenium-webdriver","threading"],"created_at":"2024-09-27T14:40:19.046Z","updated_at":"2025-10-26T16:30:40.548Z","avatar_url":"https://github.com/elymsyr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Place Suggestion API\n\nThis project aims to develop a RESTful API that uses Gemini AI to suggest places based on user prompts. The API will return detailed place information, including names, locations, and multimedia content, and will be deployed in a Docker environment on AWS.\n\n## Features\n\n- **AI-Powered Recommendations:** Suggest places based on user input.\n- **Docker Deployment:** Containerized for easy deployment.\n- **Detailed Place Information:** Includes scraped names, prices, starts, place features, locations, and multimedia etc.\n\n## Planned Features\n\n- **Google Maps API Implementation**: Google Maps API will be optional for fast and more accurate results.\n- **Cloud Deployment:** Planned deployment on services such as AWS. (The project was deployed on AWS ECS and Lambda but this feature has been postponed to a later date due to financial reasons.)\n\n## Usage\n\n**Pull and run from Docker Hub:**\n\n```\n    docker pull elymsyr/place-suggestion-api:latest\n    docker run -d -p 8000:8000 elymsyr/place-suggestion-api\n```\nTest container:\n```\nhttp://0.0.0.0:8000/scrap/?query=I%20need%20some%20quiet%20places%20to%20spend%20time%20in%20Amsterdam\u0026gemini_api_key={YOUR_API_KEY}\u0026language=en\u0026max_worker={MAX_WORKER_NUMBER}\n```\n\n## API Reference\n\n#### Get suggestion data\n\nSee, [API](API).\n\n```\n  GET /scrape\n```\n\n| Parameter | Type     | Description                |\n| :-------- | :------- | :------------------------- |\n| `query` | `string` | **Required** Query seach |\n| `gemini_api_key` | `string` | **Required** GEMINI API key [Get your key](https://aistudio.google.com/app/apikey)|\n| `maps_api_key` | `string` | Enter to use Google Maps API. (Planned Feature)|\n| `language` | `string` | **Defalut = str: 'en'** |\n| `max_worker` | `string` | **Defalut = int: 1** |\n\n## Usage/Examples\n\n**Results with the Query `I need some quiet places in Amsterdam to spend time` :**\n\n```\nHortus Botanicus: \n    {\n        \"url\": \"https://www.google.com/maps/place/Hortus+Botanicus/@52.3669189,4.907623,17z/dat...\",\n        \"place_name\": \"Hortus Botanicus\",\n        \"place_type\": \"Botanical garden\",\n        \"price\": \"$$\",\n        \"coordinate\": [52.3669189, 4.907623],\n        ...\n    }\nVondelpark: \n    {\n        \"url\": \"https://www.google.com/maps/place/Vondelpark/@52.3579946,4.8686484,17z/dat..\",\n        \"place_name\": \"Vondelpark\",\n        \"place_type\": \"Park\",\n        \"price\": \"$$\",\n        \"coordinate\": [52.3579946, 4.8686484],\n        ...\n    }\n    ...\n```\n## Optimizations\n\n**Fast response with asynchronous processing :** API scraps data as the Gemini produces response. Also, data scraping is proccessed asynchronously.\n\n**WebDriver Pool Tested :** Creating a pool for web drivers in order to avoid creating a new one for each dscraping process was tested but the results has shown that creating a new one is faster and cost efficient.\n\n## Running Tests\n\nSee [test](Test/test_main.py). Run `pytest -s Test/test_main.py` for testing the api.\n\n## Contributing\n\nContributions are welcome! Please check back for development and contributing guidelines and adhere to this project's `code of conduct`.\n\n# License\n\nGNU GENERAL PUBLIC LICENSE. See the [LICENSE](LICENSE.md) file for details.\n## Authors\n\n- [@elymsyr](https://www.github.com/elymsyr)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felymsyr%2Fplace-suggestion-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felymsyr%2Fplace-suggestion-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felymsyr%2Fplace-suggestion-api/lists"}