πRecent Searches & Cache
SEO Utils remembers every DataForSEO search you run across Keyword Explorer, Traffic Analytics, Backlink Analytics, Content Gap, and Backlink Gap. You can re-open past searches in one click, see how fresh the data is, and refresh it when you need the latest numbers β all without paying extra API credits for data you've already pulled.
Every search is stored locally in your SQLite database, so your history survives app restarts, machine reboots, and navigation away to other tools. No data leaves your machine unless you've also configured S3 Cache for DataForSEO Data.
Recent Searches List
Under every DataForSEO tool's search bar, you'll see a "Recent searches" card listing your past searches for that tool.

Each row shows:
Target: the domain, URL, or keyword you searched
Context badges: for Content Gap and Backlink Gap, the number of competitors; for Keyword Explorer, the search engine (Google or Bing)
Last accessed: when you last opened this search
Click any row to re-open it instantly β no API call is made if the data is still cached.
Managing History
Open a past search
Click the row
Delete one entry
Hover over the row and click the X that appears on the right
Clear all entries for this tool
Click the β― menu in the card header β Clear all
Show more entries
Click "Show N more" at the bottom (up to 25 rows)
Keyword Explorer Entries Name Their Source
A Keyword Explorer search that used Google Ads live and the same search on the DataForSEO Labs database are two different searches, with different figures and different prices. They get one entry each, and each entry carries a badge naming its source, so two rows for the same keyword are easy to tell apart.
Re-opening an entry uses the source it was run with, not your current default. Entries from before this feature existed re-open on the Labs database, which is what they were run with.
πKeyword Metrics Data SourceFreshness Widget
While viewing any DataForSEO result page, a small widget anchors to the bottom-right corner showing when the data was last fetched and a Refresh button.

Color Coding
The widget changes color to signal how stale the data is:
Under 1 day
Green
Fresh β recently fetched
1β14 days
Default (muted)
Normal working range
14β30 days
Amber
Stale β consider refreshing
30+ days
Red (with "Stale Β· " prefix)
Very stale β data is likely outdated
Collapsing the Widget
Click the chevron (βΊ) to collapse the widget into a small clock icon. Click the icon to expand it again. Your preference is remembered across sessions and tools.

Refresh Button
Clicking Refresh forces a fresh fetch from the DataForSEO API, bypassing all caches (local memory, local database, and your S3 shared tier if configured).
How Refresh Works Across Tabs
Backlink Analytics and Traffic Analytics have multiple tabs for the same target (Overview, Backlinks, Referring Domains, Organic Keywords, etc.). When you click Refresh on any tab:
All tabs' cached data is invalidated
The cache is wiped for every tab of that target β Overview, Backlinks, Referring Domains, Anchor Texts, Competitors, Organic Keywords, etc. If you have the S3 shared cache configured, matching S3 objects are also removed so your teammates see fresh data on their next visit.
Only the current tab re-fetches immediately
To save API credits, only the tab you're currently viewing actively re-fetches.
Other tabs re-fetch lazily on visit
When you switch to another tab (e.g., from Overview to Backlinks), that tab will hit the API because its cache is empty. This avoids spending credits on tabs you don't actually open.
Refreshing a paginated result resets pagination to page 1 and refetches only page 1. Other pages are re-fetched individually when you navigate to them.
A Keyword Explorer search on Google Ads live is not paginated, so refreshing it renews the whole set at once and paging through the refreshed results costs nothing. Refresh only affects the source you are looking at; the same keyword's results on the other source are left alone.
Settings
Go to Settings > Services and scroll to the DataForSEO Local Cache section.

The card shows:
Cached responses β how many API responses are stored locally
Search history entries β how many distinct past searches are in your history list
Storage used β approximate disk footprint
Auto-invalidate Cache After X Days
Set how long cached DataForSEO responses are kept in your local database before they are removed and refetched from the API on the next request. The default is 14 days.
Any positive number (e.g. 7, 14, 30)
Cached responses older than this many days are removed automatically. Cleanup runs hourly while the app is open and once at startup.
0
Auto-cleanup is disabled. Cached responses are kept indefinitely until you click Clear Cache & History below.
This setting only affects your local database. The shared S3 cache (if configured) is governed by its own 7-day rolling cleanup and is unaffected.
Clear Cache & History
The Clear Cache & History button removes every cached response and every search history entry from your local database at once. Use it if you want a completely clean slate β the next time you use any DataForSEO tool, data will be fetched fresh from the API.
This action cannot be undone. Any future searches that would have hit the cache will consume API credits instead.
Relationship with S3 Cache
If you've set up S3 Cache for DataForSEO Data, it works alongside the local cache as a third tier:
Memory
RAM (24h)
You only, this session
Local DB
Your SQLite file (14-day TTL by default, configurable)
You only, persists across restarts
S3 (optional)
Your configured S3 bucket (7-day TTL)
You + teammates with the same credentials
When a tool needs data, SEO Utils checks the tiers in order and falls through to the DataForSEO API only if all tiers miss.
Tips
Let the widget guide your refresh habits. If it's green, your data is fresh; if it's amber or red, consider refreshing before drawing conclusions.
Collapse the widget if you prefer more screen space β the clock icon still shows the age via tooltip on hover.
Use history instead of re-typing a domain. Clicking a history row reloads instantly and won't burn API credits on cached pages.
Tune the auto-invalidate setting to match how often you need fresh data. Lower it (e.g., 3β7 days) if you track fast-moving competitors, or raise it (e.g., 30 days) if you mostly review historical reports and want to minimize API usage.
For team workflows, pair this with S3 Cache for DataForSEO Data so your teammates also benefit from your API calls.
Last updated