Changelog

What's new in SerpPortal

Product updates, new features, and improvements. Newest first.

  1. Steadier ranks for your own site

    • NewNew `target_domain` parameter names your own site. With `recheck_volatile: true`, a result where your site suddenly disappears or drops sharply is checked twice more and the result where your site ranks best is returned, so one unusual Google answer no longer shows up as a rank crash. Off by default.
    • NewExperimental `warm_target_domain` parameter: before searching, the crawler looks up and opens your site once. This leans results toward your site the way a returning visitor sees them, so ranks are not neutral. Off by default.
  2. Consistent organic ranks

    • FixedOrganic results 1 to 100 now all come from the same Google results list. Page 1 used to follow a different ordering from pages 2 to 10, so a result or two near the end of page 1 could be missing and ranks after page 1 could be off by one or two positions.
    • NewNew `rank_mode` parameter picks which Google results list the ranks follow: `allfetch` (default) is the "All" tab you see in a browser, `allclick` is the same list loaded page by page, and `webfetch` is Google’s "Web" tab, which leaves out video and places blocks.
    • FixedAn AI Overview citation that stands for several sources ("Site (+2)") now lists all of them. Some sources were left out before.
  3. Google Images results

    • NewImage searches (`tbm=isch`) now return results: about 100 images per keyword, each with the page it sits on (`url`), the site (`source`), the full-size image (`original`, with `original_width` and `original_height`) and a `thumbnail`, plus the price on product images.
  4. Complete Shopping results

    • FixedShopping searches (`tbm=shop`) now return every product on each page, about 40, instead of only the few with a Google catalog entry, and no longer report pages as missing because of it.
    • FixedShopping prices and sellers are read in every interface language: an English search (`₫5,850,000`) now carries them just like a Vietnamese one (`5.850.000 ₫`).
    • NewShopping products carry `extracted_price` (the price as a number) and `currency` (an ISO code such as `VND`) next to the price as Google shows it.
  5. Every AI Overview source

    • FixedAI Overview `citations` now hold every card in Google's source panel, in the order Google shows them, including the long panels that load late and Facebook posts.
    • NewShopping products and Maps places that Google lists among the sources are citations too, marked with `kind` (`google_product`, `google_place`), since they link to Google rather than a website.
    • ChangedA search sent with AI Overview capture off (`capture_aio: false` or `collapse_aio: true`) no longer returns a partial AI Overview read from the first page.
  6. Complete AI Overviews

    • FixedAI Overviews that Google writes out gradually are now captured in full, with all their sources, instead of sometimes only the first sentence. On searches about AI Overviews themselves, an ordinary search result is no longer mistaken for the AI Overview.
    • ImprovedThe AI Overview now lists every link it shows: place websites, linked names in the text, videos and the pages behind its images, in both the Markdown and the references.
    • Fixed`output=html` no longer repeats page 1: the page that carries the AI Overview appears once.
  7. Faster no-AI-Overview searches

    • New`collapse_aio` is accepted as another name for `capture_aio` on search, the SerpApi-compatible endpoint and dataset items.
    • FixedDataset items now honour `capture_aio: false` and `no_cache: true`; both were previously ignored.
    • ImprovedA search with the AI Overview turned off is answered from a recent identical search that captured it, instead of crawling again. The response then includes the AI Overview.
  8. Check if a URL is in Google's index

    • NewNew Index check page: paste up to 100 URLs and see which ones Google has indexed. A URL counts as indexed only when it shows up itself on page 1 of `site:<url>`. Each newly checked URL costs 1,000 credits; a result from the last 24 hours is reused for free, and a check that could not reach Google is retried at no charge instead of being reported as not indexed.
    • NewThe same check is in the API (`POST /index/v1/check` and `/index/v1/status`) and in the MCP server as the `serp_index_check` tool.
  9. Clearer search results when a page is missing

    • ChangedA finished search now ends as either `done` or `failed`; the `partial` status is gone. When a result page could not be fetched, the search is still `done` and returns everything it collected, and three new fields say what is missing: `complete` (false), `coverage` (for example "46/100") and `missing_pages` (for example [6]). Positions after a missing page are shifted, so treat them as approximate. A keyword with fewer results than you asked for is complete, not missing anything. Searches that ended `partial` before now read as `done`.
    • ImprovedDatasets: asking again for a keyword we crawled completely in the last 6 hours returns that result straight away instead of crawling it again; add `"no_cache": true` to an item to force a new crawl. Every result item now carries `complete`, `coverage` and `missing_pages`, and the completion webhook carries `incomplete_items` and waits up to 30 seconds for your server to answer.
  10. Proxies have their own site

    Residential proxies are now sold at proxy.serpupdate.com.

    • ChangedBuying, renewing and managing proxy keys moved to proxy.serpupdate.com. Sign in there with the same email and password: your keys and your credit balance are already there. Old proxy links on this site take you to the new one.
  11. Locations with a country or region now work

    • FixedA location written with commas, such as "Ho Chi Minh City, Vietnam" or "Austin,Texas,United States", is now recognised and your search runs from that place. Before, only the bare place name was recognised, and a location with commas quietly ran as a country-wide search. Adding the region or country also picks the right place when several share a name.
  12. SerpPortal is now in Vietnamese

    The site, the app and our emails are in Vietnamese by default. English is at /en/.

    • NewEverything you use is now available in Vietnamese: the product pages, your dashboard, buying and managing proxy keys, topping up, checkout, and the sign-in and password screens. Prices, dates and data sizes follow the language of the page rather than your browser.
    • ChangedVietnamese is now what you see by default. The English site has moved to /en/ — for example serp.hoangha.shop/en/compare — and the language switcher in the header takes you between the two on whatever page you are on. Any /vi/ link you saved still works and redirects.
    • ImprovedEmails from us now arrive in your language, subject line included, and the links inside them open the screen in that same language.
    • ChangedThe API documentation stays in English at the same addresses, so nothing you have bookmarked or linked from your code changes. That is deliberate: the docs describe an API contract, and one authoritative version of it is safer than two.
  13. Clearer proxy availability and connection details

    The buy form now tells you exactly what it can deliver for the term you picked.

    • ImprovedThe quantity field now explains its cap for the term you chose, instead of accepting a number that would be refused at checkout. Larger orders can also be filled from our partner pool, and the form says so before you pay.
    • ImprovedA key served from our partner pool now shows the exact address it is reached at, right on the key. Always paste the connection details shown on the key itself — they are correct for that key whichever pool it came from.
  14. More proxy keys available to buy

    Ordering several keys at once now goes through.

    • FixedOrdering more than one proxy key at a time could fail, because nearly all of our residential capacity was allocated to our own crawling. A block of addresses is now set aside for customer keys, so multi-key orders complete. If an order ever did fail this way, it was never charged — keys are created before any credits are taken.
  15. Bank transfer checkout is more reliable

    Partial transfers now count, and a paid order always confirms on the page.

    • FixedPaying for proxy keys by bank transfer sometimes left the payment dialog waiting even though the keys had already been created. The page now confirms as soon as your keys exist.
    • FixedIf you transfer less than the full amount, the part you sent now counts toward the order — send the remainder with the same transfer note and it completes. The checkout page shows how much has arrived.
    • ImprovedA payment code is now marked as expired after 3 days so you always transfer against a current one. A transfer you already sent is still honoured at the price you were quoted.
  16. SerpPortal is now the SERP API and proxies; rank tracking moved to SerpUpdate

    Two products, one credit balance. Keyword campaigns and ranking history now live on serpupdate.com.

    • ChangedSerpPortal now sells two things: the SERP API (REST, MCP, and the batch Datasets API) and rotating residential proxies. Both are still paid from the same credit balance, and nothing about your API keys, proxy keys, or credits changes.
    • ChangedRank tracking — keyword campaigns for a domain, ranking history, and Share of Voice — is now a separate product at serpupdate.com. Links across the site and the signed-in overview point there.
    • ImprovedThe signed-in home page is now an overview of what you actually use: credit balance, active proxy keys, keys expiring within three days, and direct links into the SERP API quickstart, the MCP server, and your proxy keys.
  17. Empty results fixed, and downloaded HTML keeps the AI Overview with page 1

    Searches that came back with no results are fixed — Google changed how it writes result links and we were discarding every one of them.

    • FixedSearches are returning results again. Google changed the results page so that each link now points at a redirect instead of the destination, and we were rejecting those rows — so a search that had fetched a full page of results reported none, which looked like a failed crawl. We now recover the real destination for every result. If you ran searches earlier and got empty results, re-run them.
    • ImprovedResult links keep their full deep URL rather than falling back to the site homepage, and two results from the same site are still two separate rankings.
    • FixedIn a snapshot downloaded as raw HTML, the AI Overview capture now comes directly after page 1 instead of after the last page. If your parser takes page 1 as everything between the page 1 and page 2 markers, the AI Overview arrives with it — it was previously at the end of the file and easy to miss. Its marker is unchanged, so a parser that looks for the marker itself needs no change.
    • FixedA search that stopped short is now reported as partial instead of done. Google stopped publishing its result count on the page, which was how we told "this keyword only has 17 results" apart from "we missed pages", so short crawls were being labelled complete. Coverage is now judged on whether the full depth was actually attempted or Google ended the list. Expect to see more partial results — around one search in seven was mislabelled — while a complete search still averages about 97 results.
  18. Batch snapshots are faster, and none of them can get stuck

    The Datasets API now crawls on the same profile as a single search, and a snapshot always reaches a final status.

    • ImprovedBatch snapshots complete far sooner. Keywords submitted through the Datasets API were being crawled on a slower profile than the one a single search uses, so they were retried several times and a one-keyword snapshot could take 40 minutes. Both now use the same profile.
    • FixedA snapshot can no longer sit in "processing" indefinitely. In rare cases a snapshot outlived the crawl records it was waiting for and never reached a final status, so polling it never ended. It now completes, and any keyword still missing a result is re-crawled and the snapshot updated — with another webhook ping if you have one registered.
    • ImprovedA snapshot that finished with holes (keywords we could not crawl during an incident) is retried on its own and re-finalised, so an empty organic array is much less likely to be the last word.
  19. Pay in Vietnamese đồng, including direct payment for proxies

    Credit packs and proxy keys are now priced in ₫, and you can buy proxy keys with a bank transfer instead of credits.

    • NewProxies can now be paid for directly with a Vietnamese bank transfer (VietQR): pick your term and quantity, scan the QR, and the keys appear on the page once the transfer lands — no credit top-up needed.
    • ChangedAll prices are now shown and charged in Vietnamese đồng. A credit pack costs what it says: 100,000₫ buys 100,000 credits, plus any bonus credits on the pack.
  20. AI Overviews are captured, and searches return more results

    A search now returns about 97 results instead of 67, and AI Overviews are captured on the searches that have one.

    • FixedAI Overviews are now captured on searches that have one — around 9 in 10, up from almost none. We were detecting them with a rule that had stopped matching how Google builds the page, so the overview was in the results we fetched but we were not reading it out.
    • FixedDesktop searches now return about 97 results each, up from about 67. While capturing the AI Overview we were clicking a control on the results page that collapsed part of it, which cut roughly a third of the results before we read them.
    • ImprovedAI Overview source citations are slightly more complete, and the overview text is fuller on searches where we previously captured only a fragment.
    • ChangedNothing to change on your side, and no API change. If you compare a search run before and after today you should see more organic results and an ai_overview where one exists — the data was always on the page; we were not reading all of it.
  21. Mobile and tablet searches are working

    device=mobile and device=tablet are available again, and now return full results — this reverses yesterday’s notice.

    • FixedSearches with device=mobile and device=tablet now return complete results, around 90 per search, the same depth as desktop. They are accepted again, so the error added yesterday is gone.
    • FixedThe cause was on our side and nothing to do with your requests: we were fetching the mobile results page correctly but reading no results out of it, because mobile Google lays the page out differently from desktop.
    • ImprovedSponsored results are excluded from mobile rankings, so an ad never takes an organic result’s position — the same rule that already applied on desktop.
    • ChangedDesktop searches are unchanged. If you ran mobile searches before today and got empty results, re-run them; the results were always there to be read.
  22. Mobile and tablet searches now say so instead of coming back empty

    device=mobile and device=tablet are temporarily unavailable, and now return a clear error rather than an empty result.

    • ChangedSearches with device=mobile or device=tablet now return a 422 error naming the reason. They were previously accepted and answered with no results, which was indistinguishable from a query that genuinely has none — and the search still counted against your quota. The error costs you nothing.
    • FixedDesktop searches are unaffected. We are working on mobile and tablet, and will re-enable them here as soon as they return real results.
  23. Move over from SerpApi by changing one line

    We now answer on SerpApi’s own endpoints with their parameter names and response format — plus the full set of Google search parameters.

    • NewIf you already use SerpApi, point your existing client at us and keep everything else: the same /search endpoint, the same parameter names, the same JSON response. Both official Python clients need one line changed.
    • NewThe matching /searches/{id}, /account and /locations.json endpoints are there too, so archived searches, quota checks and location lookups keep working unchanged.
    • NewNew pages option (1-10) chooses how deep to crawl. Ask for one page when ten results are enough and the search comes back far sooner; leave it unset and you still get the full ~100 results as before.
    • ImprovedAsking for ten results now crawls one page instead of a hundred results and trimming, so small searches are much faster. If we already hold a recent full-depth crawl of the same query, a small request is served straight from it at no cost.
    • NewSearch from exact coordinates with lat and lon, plus an optional radius in metres — useful when the place you care about has no tidy name to look up.
    • NewTarget one specific place or entity with ludocid, lsig, kgmid, si, ibp and uds, copied straight from a Google result. Pass color_scheme to get the light or dark version of the page.
    • Newno_cache forces a fresh crawl when you need the SERP as it is right now rather than as it was a few minutes ago.
    • NewPage through results with start when you fetch them. Every search already collects the full depth, so paging is free: it never costs another crawl, and result positions stay as they rank on the real SERP.
    • ImprovedFetching results is now roughly 45x faster — around a tenth of a second instead of five or six seconds. Reading a finished search no longer re-does work the crawl already did.
    • FixedLinks inside the response (to the JSON and to the raw HTML of a search) now use https instead of http, so they open correctly.
    • FixedA blocking search no longer holds the connection open once it is certain the result cannot arrive in time. You get the polling details straight away instead of waiting out the timeout.
    • FixedThe search type (tbm) and the omitted-results filter now reach the crawler from the Playground, instead of being dropped on the way.
  24. Our own residential network, and a steadier sign-in

    Proxy keys now run on hardware we operate, plus accessibility and reliability fixes across the app.

    • ImprovedProxy keys are now served from our own residential lines rather than a reseller, so an IP belongs to one customer at a time and a rotation is a real line redial that completes in seconds.
    • FixedSign-in and password reset no longer fail when our rate-limit store is briefly unreachable. The abuse counters step aside instead of taking the whole auth flow down with them.
    • ImprovedText and chart colours across the app now meet WCAG AA contrast minimums, including the SERP result and feature badges.
    • ImprovedMarketing and docs pages are pre-rendered, so they load faster and are indexed properly by search engines and AI crawlers.
  25. Proxy management, out of beta

    Run a fleet of proxy keys instead of one at a time, and see what each is doing.

    • NewBulk proxy management: buy, renew, rotate, or revoke several keys at once, and export the whole set as a ready-to-paste credential list.
    • NewPer-key usage: live egress IP, traffic up and down, last-seen time, and a real countdown to when the key may next rotate.
    • NewSticky keys hold one IP until you rotate it yourself, alongside rotating keys that refresh on a timer.
    • FixedCopying a key password copied the masked placeholder rather than the password.
    • ChangedProxy traffic is recorded at destination-host level (host and port, never page addresses or content) and kept for 24 months, as Vietnamese law requires of the line holder. What is collected is spelled out on the residential proxies page and in the proxy docs.
  26. Domain Overview retired

    Campaign detail drops the domain comparison card as we move rank tracking onto our own crawler.

    • ChangedRemoved Domain Overview from campaign detail: the competitor comparison table, backlink metrics, and organic traffic and ranked-keyword estimates. Those figures came from a third-party web index we are retiring, and they cannot be produced from the live SERP data we crawl ourselves. Rank tracking, analytics, Share of Voice, and keyword ideas are unaffected.
  27. Dataset API, proxy access, and campaign sharing

    Query rankings programmatically at scale, buy rotating proxy access, and share campaigns with your team.

    • NewDataset API: trigger an async crawl of up to 200 keywords with an API key and poll for a completed snapshot, credit-metered per keyword.
    • NewProxy access (beta): buy rotating residential proxy keys with credits from /proxies, with one-click rotate and revoke.
    • NewReal campaign sharing: invite collaborators by email, manage their role, and see everything shared with you from a dedicated list.
    • NewDashboard rollups for Share of Voice, search-intent mix, and AI Overview citation rate across all your campaigns.
    • NewPer-keyword SERP history viewer: pick any past crawl date and see the full organic results, SERP features, and AI Overview for that day.
    • NewCompetitor domain comparison table on campaign detail, showing overview and backlink metrics side by side with your own domain.
    • ImprovedCrawl reliability: broader captcha-challenge coverage (checkbox, text, and image grids) means fewer blocked crawls.
    • FixedAccessibility, performance, and security cleanups across the app (missing labels, unsafe window.open targets, unchecked fetch responses).
  28. Accessibility and usability pass

    A sweep of the whole app for accessibility, form usability, and shareable URLs.

    • ImprovedInline field validation with focus-on-first-error across sign-up, account, and campaign creation forms, replacing toast-only errors.
    • ImprovedFilters, search, pagination, and tabs now sync to the URL on campaigns, admin tables, and the SERP console, so links stay shareable.
    • ImprovedScreen-reader and keyboard accessibility: labeled search and filter controls, live status regions for async updates, and real headings on checkout result pages.
  29. Session persistence, deeper rankings, and developer docs

    Stay signed in for the full 30 days, get complete organic results, and integrate faster with new API docs.

    • FixedSessions no longer log you out after 15 minutes; the app now refreshes your session in the background for the full 30-day window.
    • ImprovedThe SERP API now paginates past feature-heavy result pages so a full 100 organic results are returned instead of stopping short.
    • NewInteractive OpenAPI/Swagger explorer for the SERP API, plus ready-to-paste SDK snippets for Node, Python, PHP, Go, and Ruby.
    • Newllms.txt documentation bundle for AI coding assistants (Cursor, Windsurf, Claude, ChatGPT), linked from a new /docs/llms page.
  30. Competitor comparison & backlink authority

    See how SerpPortal stacks up against the competition and gauge your domain's backlink authority.

    • NewPublic /compare page: a feature and pricing matrix against SerpApi, DataForSEO, Semrush, Ahrefs, and OpenSEO.
    • NewBacklink authority metrics in Domain Overview: total backlinks, referring domains, domain rank, and spam score for your own domain.
    • NewAdmin capacity benchmark tool with side-by-side A/B crawl-mode comparison.
  31. AI Overview tracking & visibility analytics

    See where you stand in AI Overviews, measure Share of Voice, and call the SERP API from your agents.

    • NewAI Overview brand-citation tracking: campaign detail shows a green "Cited in AIO" badge when your domain is one of the sources Google cites in the AI Overview.
    • NewAccount-level visibility overview on the dashboard, aggregating every tracked keyword across your campaigns.
    • NewCampaign ranking-history charts and Share of Voice: position-bucket distribution, CTR-weighted visibility, and trend over time.
    • NewSERP feature detection: 9 feature types plus sitelinks captured per crawl and surfaced in a Features column.
    • NewMCP server exposing the SERP API as agent tools (serp_search, serp_get_results, serp_usage) for Claude and other MCP clients.
    • NewAdmin API-key dashboard to mint and revoke SERP API keys and review usage.
  32. SERP API console & admin portal

    A full in-portal console for the self-hosted SERP API, plus user and data administration.

    • NewIn-portal SERP API console: health, per-mode stats, proxy management, geo & locales, crawl & captcha settings, and benchmarks.
    • NewBenchmark and load-test runs that report throughput and estimated cost.
    • NewGoogle-like SERP preview that renders organic results and AI Overviews with A/B mode compare.
    • NewUser management: lock accounts, change plan, grant credit with history, reset passwords, and view relations.
    • NewAdmin CRUD over all data tables via a JSON editor.
    • ImprovedNew SERP API columns now auto-migrate on deploy, so schema changes ship without manual steps.
  33. Self-hosted SERP crawler

    A standalone Google SERP crawler with AI Overview capture, structured output, and quotas.

    • NewSelf-hosted Google SERP crawler returning the top 100 organic results with geo and device targeting.
    • NewAI Overview capture and a structured JSON parser with SerpApi-compatible output.
    • NewAPI keys with tiers and monthly quotas, plus per-locale rollout controls.
    • NewBulk geo-target ingest and proxy batch labelling/tagging.
    • ImprovedAutomated deploys for the SERP API service.
  34. New platform: faster, leaner, credit-based

    SerpPortal rebuilt on React 19 + Vite with a new crawl pipeline and bank-transfer billing.

    • ChangedRebuilt the app on React 19 + Vite for faster page loads.
    • NewNew crawl pipeline that keeps rankings fresh and finishes reliably instead of stalling on long runs.
    • NewSePay (VietQR) bank-transfer payments with automatic credit top-up on confirmation.
    • NewRebuilt admin module and a refreshed, branded dashboard theme.
    • ImprovedNew sign-ups are auto-verified and signed in when email delivery is unconfigured.