Run the same queries with a fixed country, language, startPage and endPage. Store each Dataset with its run timestamp, then compare position, url and title between runs.
Rankings are time-dependent observations. Keep every input setting unchanged when comparing periods.
Send commercial or informational keywords in the queries array. Group returned url values by hostname and compare how often each domain appears and at which position.
Use separate runs for different markets because one run has one country and language.
Put several keywords in the same queries array. Use examples/python/batch_google_search.py as a starting point and keep the query/page product under 10,000.
Inspect title, description and url to identify recurring topics and ranking domains. The Actor returns organic results, not paid ads or Google page modules.
Download CSV directly from the Apify Dataset or run examples/python/export_google_serp_csv.py against a JSON export. The script preserves the six public Dataset fields in a stable column order.
Use an Apify schedule with a stable input. Send the finished Dataset to a webhook or downstream store, then compare results by query, page and position. Google results change, so retain each run separately instead of overwriting historical data.