{"id":15374421,"url":"https://github.com/ivan-sincek/nagooglesearch","last_synced_at":"2026-04-01T19:04:48.178Z","repository":{"id":62163896,"uuid":"558435678","full_name":"ivan-sincek/nagooglesearch","owner":"ivan-sincek","description":"Not another Google searching tool.","archived":false,"fork":false,"pushed_at":"2025-03-22T11:26:58.000Z","size":10,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T21:01:29.847Z","etag":null,"topics":["bug-bounty","ethical-hacking","google","google-dorking","google-dorks","google-hack","google-hacking","google-search-scraper","offensive-security","penetration-testing","python","red-team-engagement","requests","search-engine","security","threat-hunting","threat-intelligence","web-penetration-testing"],"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/ivan-sincek.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":"2022-10-27T14:43:01.000Z","updated_at":"2025-03-22T11:19:19.000Z","dependencies_parsed_at":"2023-12-29T16:24:10.622Z","dependency_job_id":"cced8604-93cd-4e3a-9273-604c48662bed","html_url":"https://github.com/ivan-sincek/nagooglesearch","commit_stats":{"total_commits":11,"total_committers":1,"mean_commits":11.0,"dds":0.0,"last_synced_commit":"86954554baa631730a0d767f93825cd5644129f4"},"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivan-sincek%2Fnagooglesearch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivan-sincek%2Fnagooglesearch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivan-sincek%2Fnagooglesearch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ivan-sincek%2Fnagooglesearch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ivan-sincek","download_url":"https://codeload.github.com/ivan-sincek/nagooglesearch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249061224,"owners_count":21206471,"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":["bug-bounty","ethical-hacking","google","google-dorking","google-dorks","google-hack","google-hacking","google-search-scraper","offensive-security","penetration-testing","python","red-team-engagement","requests","search-engine","security","threat-hunting","threat-intelligence","web-penetration-testing"],"created_at":"2024-10-01T13:58:45.432Z","updated_at":"2026-04-01T19:04:48.167Z","avatar_url":"https://github.com/ivan-sincek.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Not Another Google Search\n\nNot another Google searching library. Just kidding - it is.\n\nMade for educational purposes. I hope it will help!\n\n## Table of Contents\n\n* [How to Install](#how-to-install)\n\t* [Standard Install](#standard-install)\n\t* [Build and Install From the Source](#build-and-install-from-the-source)\n* [Usage](#usage)\n\t* [Standard](#standard)\n\t* [Shortest Possible](#shortest-possible)\n\t* [Time Sensitive Search](#time-sensitive-search)\n\t* [User Agents](#user-agents)\n\n## How to Install\n\n### Standard Install\n\n```bash\npip3 install nagooglesearch\n\npip3 install --upgrade nagooglesearch\n```\n\n### Build and Install From the Source\n\n```bash\ngit clone https://github.com/ivan-sincek/nagooglesearch \u0026\u0026 cd nagooglesearch\n\npython3 -m pip install --upgrade build\n\npython3 -m build\n\npython3 -m pip install dist/nagooglesearch-8.7-py3-none-any.whl\n```\n\n## Usage\n\n### Standard\n\nDefault values:\n\n```python\nnagooglesearch.GoogleClient(\n\ttld = \"com\",\n\thomepage_parameters = {\n\t\t\"btnK\": \"Google+Search\",\n\t\t\"source\": \"hp\"\n\t},\n\tsearch_parameters = {\n\t},\n\tcookies = {\n\t},\n\tuser_agent = \"\",\n\tproxy = \"\",\n\tmax_results = 100,\n\tmin_sleep = 8,\n\tmax_sleep = 18,\n\tdebug = False\n)\n```\n\n**Only domains without they keyword `google` and not ending with the keyword `goo.gl` are accepted as valid results. The final output is a unique and sorted list of URLs.**\n\n**Google frequently changes cookies, so default ones might not work; specify new ones using the `cookies` parameter.**\n\nDefault cookies can be found [here](https://github.com/ivan-sincek/nagooglesearch/blob/main/src/nagooglesearch/nagooglesearch.py#L169).\n\nExample, standard:\n\n```python\nimport nagooglesearch\n\n# the following query string parameters are set only if 'start' query string parameter is not set or is equal to zero\n# simulate a homepage search\nhomepage_parameters = {\n\t\"btnK\": \"Google+Search\",\n\t\"source\": \"hp\"\n}\n\n# search the internet for additional query string parameters\n# https://brightdata.com/blog/web-data/google-search-url-parameters\nsearch_parameters = {\n\t\"q\": \"site:*.example.com intext:password\", # search query\n\t\"tbs\": \"li:1\", # specify 'li:1' for verbatim search (no alternate spellings, etc.)\n\t\"hl\": \"en\",\n\t\"lr\": \"lang_en\",\n\t\"cr\": \"countryUS\",\n\t\"udm\": \"14\", # only web results\n\t\"filter\": \"0\", # specify '0' to display hidden results\n\t\"safe\": \"images\" # specify 'images' to turn off safe search, or specify 'active' to turn on safe search\n}\n\n# if the default cookies no longer work, specify new ones here\n# if left empty, the default ones will be used\ncookies = {\n}\n\nclient = nagooglesearch.GoogleClient(\n\ttld = \"com\", # top level domain, e.g., www.google.com or www.google.hr\n\thomepage_parameters = homepage_parameters, # 'search_parameters' will override 'homepage_parameters'\n\tsearch_parameters = search_parameters,\n\tcookies = cookies,\n\tuser_agent = \"curl/3.30.1\", # a random user agent will be set if none is provided\n\tproxy = \"socks5://127.0.0.1:9050\", # supported URL schemes are 'http[s]', 'socks4[h]', and 'socks5[h]'\n\tmax_results = 200, # maximum unique URLs to return\n\tmin_sleep = 15, # minimum sleep between page requests\n\tmax_sleep = 30, # maximum sleep between page requests\n\tdebug = True # enable debug output\n)\n\nurls = client.search()\n\nif client.get_error() == nagooglesearch.Error.REQUEST:\n\tprint(\"[ Request Exception ]\")\n\t# do something\nelif client.get_error() == nagooglesearch.Error.RATE_LIMIT:\n\tprint(\"[ HTTP 429 Too Many Requests ]\")\n\t# do something\n\nfor url in urls:\n\tprint(url)\n\t# do something\n```\n\nCheck the list of user agents [here](https://github.com/ivan-sincek/bot-safe-agents/blob/main/src/bot_safe_agents/user_agents.txt). For more user agents, check [scrapeops.io](https://scrapeops.io).\n\n### Shortest Possible\n\nExample, shortest possible:\n\n```python\nimport nagooglesearch\n\nurls = nagooglesearch.GoogleClient(search_parameters = {\"q\": \"site:*.example.com intext:password\"}).search()\n\n# do something\n```\n\n### Time Sensitive Search\n\nExample, do not show results older than 6 months:\n\n```python\nimport nagooglesearch, dateutil.relativedelta as relativedelta\n\ndef get_tbs(months: int):\n\ttoday = datetime.datetime.today()\n\treturn nagooglesearch.get_tbs(today, today - relativedelta.relativedelta(months = months))\n\nsearch_parameters = {\n\t\"tbs\": get_tbs(6)\n}\n\n# do something\n```\n\n### User Agents\n\nExample, get all user agents:\n\n```python\nimport nagooglesearch\n\nuser_agents = nagooglesearch.get_all_user_agents()\nprint(user_agents)\n\n# do something\n```\n\nExample, get a random user agent:\n\n```python\nimport nagooglesearch\n\nuser_agent = nagooglesearch.get_random_user_agent()\nprint(user_agent)\n\n# do something\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-sincek%2Fnagooglesearch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivan-sincek%2Fnagooglesearch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivan-sincek%2Fnagooglesearch/lists"}