Package: seo-position-tracker
Sponsor of the project:API to get search engine results with ease.SEO Position Tracker 📡A simple Python CLI and in-code SEO position tracking tool for Google and 6 other search engines.This project usesSerpApi🔎 Current search engines supportGoogle Search - first 100 organic results.Baidu Search - first 50 organic results.Bing Search - first 50 organic results.DuckDuckGo Search - up to 30 organic results.Yahoo! Search - first 10 organic results.Yandex Search - up to 15 organic results.Naver Search - first 15 organic results.⚙️Installation$pipinstallseo-position-trackerInstall from source:Windows:$gitclonehttps://github.com/dimitryzub/seo-position-tracking.git
$cdseo-position-tracker/
$python-mvenvenv
$env/Scripts/activate
$pipinstallpoetry
$poetryinstallIf you get an error, try:$pipinstallchardet$poetryinstall🤹‍♂️UsageYou can envoke script by this two commands.Examples below will show usage withpoetry run seo <command>, but you can usepython main.py <command>instead.$cdseo_position_tracker# dive inside the module folder$pythonmain.py-h$poetryrunseo-hAvailable arugmentsSerpApi SEO position tracker [-h] [-q] [-tk  [...]] [-tw  [...]] [-se  [...]] [-ak] [-hl] [-gl] [-loc] [-d] [-st]

A simple Python CLI for SEO position tracking from Google, Baidu, Bing, DuckDuckGo, Yahoo, Yandex and Naver.

optional arguments:
  -h, --help            show this help message and exit
  -q , --query          Search query. Default "coffee".
  -tk  [ ...], --target-keywords  [ ...]
                        Target keywords to track. Default "['coffee']".
  -tw  [ ...], --target-websites  [ ...]
                        Target websites to track. Default "['starbucks.com']".
  -se  [ ...], --search-engine  [ ...]
                        Choosing a search engine to track: "google", "baidu", "bing", "duckduckgo", "yahoo", "yandex", "naver". You can select multiple search engines. All search   
                        engines are selected by default.
  -ak , --api-key       Your SerpApi API key: https://serpapi.com/manage-api-key. Default is a test API key to test CLI.
  -hl , --lang          Language of the search. Supported only for "google", "baidu", "yahoo" and "yandex" engines. Default "None". Find more by Googling: "SerpApi supported        
                        <engine> languages"
  -gl , --country       Country of the search. Supported only for "google", "bing" and "yahoo" engines. Default "None". Find more by Googling: "SerpApi supported <engine>
                        countries"
  -loc , --location     Location of the search. Supported only for "google", "bing", "duckduckgo" and "yandex" engines. Default "None". Find more by Googling: "SerpApi supported    
                        <engine> locations"
  -d , --domain         Search engine domain to use. Supported only for "google", "yahoo" and "yandex" engines. Default "None". Find more by Googling: "SerpApi supported <engine>   
                        domains"
  -st , --save-to       Saves the results in the current directory in the selected format (CSV, JSON, TXT). Default CSV.


Found a bug? Open issue: https://github.com/dimitryzub/seo-position-tracker/issues🤹‍♂️ExamplesExtracting positions from all search engines for a given query with a target website and a target keyword:$poetryrunseo--api-key=<your_serpapi_api_key>\-q"minecraft"\-tkofficial\-twminecraft.net[{"engine":"google","position":1,"title":"Welcome to the Minecraft Official Site | Minecraft","link":"https://www.minecraft.net/en-us"},{"engine":"bing","position":1,"title":"Minecraft - Official Site","link":"https://minecraft.net/"},{"engine":"bing","position":2,"title":"Welcome to the Minecraft Official Site | Minecraft","link":"https://www.minecraft.net/en-us"},{"engine":"bing","position":10,"title":"Minecraft Official Site | Minecraft Education","link":"https://education.minecraft.net/en-us"},{"engine":"duckduckgo","position":1,"title":"Minecraft - Official Site","link":"https://minecraft.net/"},{"engine":"duckduckgo","position":2,"title":"Welcome to the Minecraft Official Site | Minecraft","link":"https://www.minecraft.net/en-us"},{"engine":"yahoo","position":1,"title":"Minecraft - Official Site","link":"https://minecraft.net/"},{"engine":"yahoo","position":2,"title":"Welcome to the Minecraft Official Site | Minecraft","link":"https://www.minecraft.net/en-us"},{"engine":"yandex","position":2,"title":"Welcome to the Minecraft Official Site | Minecraft","link":"https://www.minecraft.net/"}]Extracting positions from 3 search engines with default arguments and saving to JSON:$poetryrunseo--api-key=<your_serpapi_api_key>\-segooglebingduckduckgo\-stJSON[{"engine":"google","position":6,"title":"Starbucks Coffee Company","link":"https://www.starbucks.com/"},{"engine":"bing","position":12,"title":"The Best Coffee from Starbucks Coffee: Starbucks Coffee Company","link":"https://www.starbucks.com/coffee/"},{"engine":"duckduckgo","position":11,"title":"The Best Coffee from Starbucks Coffee: Starbucks Coffee Company","link":"https://www.starbucks.com/coffee/"}]Extracting positions from one engine with all arguments for it:$poetryrunseo--api-key=<your_serpapi_api_key>\-qserpapi\-tkserpapi\-twhttps://serpapi.com/https://github.com/\-segoogle\-hlde\-glde\-locGermany\-dgoogle.de\-stTXT[{"engine":"google","position":1,"title":"SerpApi: Google Search API","link":"https://serpapi.com/"},{"engine":"google","position":3,"title":"SerpApi - GitHub","link":"https://github.com/serpapi"}]Extracting positions from all search engines manually (without CLI):fromseo_position_tracker.seo_position_trackerimportSeoPositionTrackerimportjsontracker=SeoPositionTracker(query='coffee',api_key='<your_serpapi_api_key>',keywords=['coffee','starbucks'],websites=['starbucks.com'])position_data=[]google_results=tracker.scrape_google(lang='en',country='us',location='United States',domain='google.com')position_data.extend(google_results)baidu_results=tracker.scrape_baidu(lang='1')position_data.extend(baidu_results)bing_results=tracker.scrape_bing(country='us',location='United States')position_data.extend(bing_results)duckduckgo_results=tracker.scrape_duckduckgo(location='us-en')position_data.extend(duckduckgo_results)yahoo_results=tracker.scrape_yahoo(lang='lang_en',country='us',domain='uk')position_data.extend(yahoo_results)yandex_results=tracker.scrape_yandex(lang='en',domain='yandex.com')position_data.extend(yandex_results)naver_results=tracker.scrape_naver()position_data.extend(naver_results)print(json.dumps(position_data,indent=2,ensure_ascii=False))💡Issues or suggestionsVisitissuespage.📜 LicenceSEO Position Tracker is released under theBSD-3-Clause Licence.