This post was last Updated on by Himanshu Tyagi to reflect the accuracy and up-to-date information on the page.
As an SEO professional, I was looking for free SEO rank tracking software, but unfortunately, there aren’t many available to the community. You may find some tools and web applications to check rankings, but their free versions are generally good for nothing.
With this problem statement, I thought to develop a rank tracking tool of my own, and Python proved to be the ultimate boon. After researching a bit and applying some basic programming principles, I created a basic rank checker tool.
Above all, it opens a new world of opportunities for everyone as Python offers numerous libraries that you can use to extend this rank tracking tool’s functionality.
Before we start and learn how to create a rank tracking tool using Python, let’s first understand the basic concepts such as SEO rank tracking and different ways to build a rank checker.
What is rank tracking?
SEO stands for Search Engine Optimization and is a process to make a website rank on the first page of Google. As the website rankings keep fluctuating quite often, it is an important task for SEO professionals to track keyword positions. The process is known as rank checking or tracking.
Different ways to build a rank tracking tool using Python
The primary process for checking rank is to scrape Google Search Result Page and see if a domain is in the results or not. If the domain is in Google Search, then you will check the position and return it.
So, the only tricky part is to create a Google Search web scraper. Web scraping is a bit complex topic if you are beginning your Python journey. In case you are only interested in using this free rank tracking tool, feel free to skip to the next section.
I plan to cover the web scraping tutorial another day, and in this tutorial, I will share what’s required to build our Python rank tracking tool.
- Python web scraping library: You can use any Python web scraping library such as Beautifulsoup, lxml, Scrapy, Selenium, etc., to scrape Google Search Result Pages. But using these libraries will give you more control and add more features easily.
- Google-search Python library: If you don’t want to delve into web scraping details, you can use this ready-made Python library, which makes scraping Google Search results a cakewalk.
How to use this free SEO rank tracking software
Before we dig deep into using this free rank tracking tool, let’s first understand how it works. As mentioned, it is a Python script that you can run to get the results.
All you have to do is specify keywords or search queries for which you would like to check your website’s rank and specify your domain. After that, you can execute it, and it will display if your domain is in the top 50 results or not.
You can tweak the number of results you would like this tool to check. But, I will recommend you to keep it to a bare minimum.
Without further ado, let’s see how you can use KWchecker.
Step 1: Install googlesearch-python
Install the googlesearch-python library using this command.
python3 -m pip install googlesearch-python
Step 2: Specify your keywords
Now, copy-paste this script into any Python IDE of your choice. To find your domain’s rank for a particular keyword or set of keywords, you must change these two variables – keywordList and the search query.
## KWchecker by CodeItBro ## Support by visiting: https://www.codeitbro.com/free-seo-rank-tracking-software print("------------KWchecker by CodeItBro---------") from googlesearch import search import re keywordsList = ["soundboard software", "Manga Creator"] ## Define all your keywords here def Results(query): Results= search(query, num_results=30) # Change num_results value to check more or less search results for i in range(len(Results)): # print(Results[i]) x = re.search("codeitbro.com", Results[i]) ## Change your domain here if x: y = Results.index(Results[i]) print("There is a match at", y+1) else: continue for i in range(len(keywordsList)): query = keywordsList[i] print("\n-----Search Results of----->", query) Results(query)
keywordsList is a Python list where you can define search queries for which you want to check the rankings.
Change num_results parameter of the search() function if you would like to check more or less Google search results.
Step 3: Input your domain
After specifying all the keywords in the keywordsList variable, now input your domain. For this, you have to edit this line of code:
x = re.search("codeitbro", Results[i])
Change the codeitbro to your domain name. For example, if your domain is www.xyz.com, then you can change it to xyz.
Step 4: Get the results
In this final step, all you have to do is execute the Python script, and you will see the results in the terminal itself, as shown below.
Depending upon the number of keywords, KWchecker can take some time to process the results. There is a delay of a few seconds after checking each keyword to avoid the evil eyes of Google.
A few caveats
- Only supports Google search engine at the moment
- There is no location-support, but I plan to add it in the future
- A little trickier to use as it involves playing with the code itself. In the next update, you will get a GUI
- If you try to run a big set of keywords, then Google will detect it and start showing captchas. I plan to solve this issue in near future by using Proxies or a captcha solver.
What’s Next!
In the next update, I will add the following functionalities in this free rank tracking tool:
- Working with Excel files: The tool will support Excel files to track ranks.
- Location Support: Support of checking location-based SERPs to determine more accurate rank tracking.
- GUI and EXE: A basic GUI for the tool using tkinter and converting the Python script to an EXE file so that no one has to go through the pain of editing the script file.
Stay tuned for future updates, and in case you found any bugs or have any issues using the script file, please share in the comments section. I will try my best to help you. You can also share your suggestions, or if you would like to collaborate, then write to me at [email protected].