I am mapping the geographic data of different IP Addresses using 2 different APIs and python

Ipstack
IPAPI

However, some of the results are showing different locations for a given IP. How does this happen?
what is the difference which I may encounter when using 2 or more different methodologies?
I think it happened because these addresses used NAT (Network Address Translation), when 2 different IP addresses use the same public IP to save IP address.
You can read more about NAT to understand it
Getting different locations as the source for a given IP when using 2 different APIs?