Case study — Technical SEO
Metro Manhattan
Mobile PageSpeed from 61 to 93, site errors from 2,339 to 2, and the #1 rankings that had been slipping back above where they started.
Metro Manhattan lists commercial office space across New York City. Rankings had been slowly declining and Search Console was reporting a high number of errors. A listing site of this shape generates URLs faster than it generates value: filters, pagination, neighbourhood combinations and listing archives all multiply. I audited the site and then implemented the fixes: duplicate content and canonicals, redirects, crawl budget waste, paginated pages, internal linking, page speed and site structure.
- Industry
- Commercial real estate
- Project type
- Technical SEO
- Site
- Listing site generating filter, pagination and neighbourhood URL patterns
- Platform
- WordPress, Cloudflare
- Focus
- Technical SEO, Core Web Vitals, AI search
- Mobile PageSpeed performance scoreCore Web Vitals: failed → passed
- 61 → 93
- Site errors in the Semrush auditHealth score 71 → 95
- 2,339 → 2
- Keywords ranking #1 on Google, United StatesMarch → September 2025
- 575 → 688
- Google AI Overviews citing the site as a sourceMeasured September 2026
- 818
Results
What changed.
Every tool that measures the site moved the same way. Real Chrome users went from a failing Core Web Vitals assessment to a passing one, two independent crawlers agree the error count collapsed, Google stopped refusing to index thousands of pages, and the #1 rankings that had been slipping for six months climbed back above where they started. A year later, Google's AI Overviews and ChatGPT both use the site as a source for Manhattan office space.
Page speed for real users, mobile
BeforeAfter
- Performance score+52%
- Before:61After:93
- Largest Contentful Paint−46% · lower is better
- Before:2.8 sAfter:1.5 s
- First Contentful Paint−50% · lower is better
- Before:2.4 sAfter:1.2 s
- Time to First Byte−63% · lower is better
- Before:1.9 sAfter:0.7 s
- Interaction to Next Paint−17% · lower is better
- Before:95 msAfter:79 ms
Site health in two independent audits
BeforeAfter
- Semrush health score+34%
- Before:71After:95
- Ahrefs health score+11%
- Before:89After:99
- Errors (Semrush)−99.9% · lower is better
- Before:2,339After:2
- Warnings (Semrush)−56% · lower is better
- Before:3,333After:1,466
- Total issues (Semrush)−94% · lower is better
- Before:29,837After:1,760
Keywords ranking #1 on Google, United States
575688Mar 2025 to Sep 2025
| Month | Keywords at #1 |
|---|---|
| Sep 2024 | 669 |
| Oct | 684 |
| Nov | 570 |
| Dec | 631 |
| Jan 2025 | 590 |
| Feb | 587 |
| Mar 2025 | 575 |
| Apr | 668 |
| May | 663 |
| Jun | 676 |
| Jul | 670 |
| Aug | 643 |
| Sep 2025 | 688 |
Commercial searches that moved into the top three
BeforeAfter
- medical office space for lease19 → 2
- loft office space for rent17 → 1
- good guy clause8 → 1
- good guy guarantee5 → 1
- new york office space for rent4 → 1
- office space in new york city$11.00 per click in Google Ads3 → 1
- office space financial district3 → 1
- chrysler building for sale3 → 1
- nyc office space2 → 1
Where AI assistants cite the site
- Google AI Overviews+83 in 6 months
- 120
- ChatGPT
- 40
- Gemini
- 32
- Perplexity
- 21
- Copilot
- 8
| Search | Monthly searches | Cost per click | Position |
|---|---|---|---|
| office space for rent | 22,200 | $12.70 | 1 |
| office to let | 12,100 | $12.92 | 1 |
| lease office space nyc | 1,900 | $20.04 | 1 |
| office in nyc | 1,600 | $18.18 | 1 |
| office space new york city | 1,000 | $25.22 | 1 |
| Question | ChatGPT | Perplexity | Claude | Gemini |
|---|---|---|---|---|
| best commercial real estate brokers for office space in nyc | Not used | Cited | Named | Cited |
| how to find office space for rent in manhattan | Cited | Cited | Cited | Not used |
| what is a good guy clause in a nyc office lease | Not used | Cited | Cited | Not used |
| medical office space for lease in manhattan | Not used | Cited | Cited | Cited |
In short
- Google Search clicks roughly doubled over six months, from about 1,100 a day in January 2025 to about 2,200 a day by July: 259,000 clicks and 19.3 million impressions in that period.
- Keywords ranking #1 in Google's United States results rose from 575 in March 2025 to 688 in September, after falling for the previous six months, measured in an index independent of the client's tools.
- Core Web Vitals went from failed to passed for real users, and all 909 tracked URLs now sit in Google's Good bucket on both mobile and desktop.
- Two independent audits agree: Semrush health 71 to 95 with errors down from 2,339 to 2, and Ahrefs health 89 to 99.
- The site is a source for AI answers. 818 Google AI Overviews and 309 recorded ChatGPT answers draw on it, and in a live check it was cited or named in 11 of 16 answers across ChatGPT, Perplexity, Claude and Gemini.
Before and after figures come from the client's Google PageSpeed Insights, Search Console, Semrush and Ahrefs accounts, on the dates shown. Ranking counts and AI answers were measured independently with DataForSEO, and the live assistant check was run on 14 September 2026, so both can be re-checked. Search Console daily click figures are read from its chart and given as approximate.
The challenge
What was wrong.
- Rankings slowly declining, with Search Console reporting a high number of errors and no single obvious cause.
- A listing architecture that produced far more crawlable URLs than genuinely distinct pages: duplicate URL variants, filters and pagination spreading crawl attention across pages that did not deserve it.
- Canonical, pagination and internal linking signals that did not agree with each other, leaving indexation decisions to Google rather than to the site.
- Slow mobile templates: a failing Core Web Vitals assessment, with nearly two seconds before the server sent its first byte.
- A WordPress stack behind Cloudflare where caching, redirects and plugin output interacted in ways that were not visible from the page source alone.
Approach
How I worked it out.
- Started from Search Console rather than from a crawler. Coverage and performance data say what Google has actually decided about a URL. A crawl only says what a crawler can reach.
- Segmented every URL pattern on the site by template and asked one question per pattern: does this page serve a distinct search, and would someone running that search be satisfied landing here?
- Reconciled three separate views of the site, the XML sitemaps, a full crawl, and the URLs Google reported knowing about, because the gaps between them are where indexation problems live.
- Verified every finding against the rendered page and the response headers, not against a tool's summary field. Caching and CDN layers make crawler output unreliable on a stack like this.
The work
What was done.
- 01Duplicate URLs and canonicalization
- Consolidated duplicate URL variants, including trailing-slash and www versions, onto one version of each page and made canonical tags, redirects and internal links agree. Link equity that had been split across copies now lands on a single URL, and Domain Rating rose as a result.
- 02Indexation and crawl budget
- Defined which listing, filter and pagination patterns should be indexable, which should be crawlable but not indexed, and which should not be linked at all, then applied the decision consistently. Pages Google had crawled but refused to index fell from over 25,000 to 2,880, and server errors from over 4,000 to 12.
- 03Pagination
- Rebuilt how paginated series declare themselves, ensuring page two and beyond are self-canonical and reachable rather than canonicalised away, while keeping the first page as the ranking target for category-level searches.
- 04Page speed and Core Web Vitals
- Traced delivery problems through the stack: caching rules that served stale or inconsistent responses, redirect chains introduced at more than one layer, and render-blocking assets injected by plugins. Time to First Byte fell from 1.9 to 0.7 seconds and every tracked URL moved into Google's Good bucket on mobile and desktop.
- 05Internal linking and site structure
- Restructured internal links so that authority flows from the homepage and high-authority pages into the commercially important neighbourhood and property-type pages, rather than being spread evenly across a large site-wide footer.
- 06Structured data
- Implemented and validated schema appropriate to a listing site so that organisation, breadcrumb and listing information is explicit rather than inferred, improving how the site is represented in results and in AI-generated answers.
Key takeaways
What this project demonstrates.
- 01On a large listing site the highest-leverage SEO work is usually subtraction. Fewer URLs competing for the same search did more than optimising all of them.
- 02Crawler output is evidence about the crawler. When a CDN and a caching layer sit in front of the application, findings have to be confirmed against the actual response.
- 03Technical work shows up in AI search too. The pages that became fast, canonical and clearly structured are the ones AI Overviews and ChatGPT now quote.
Have a similar SEO problem?
Let's discuss it. Describe what is happening on your site and I will tell you what I think is causing it, and whether it is the kind of work I am the right person for.
Or email directly
hello@ivanseo.com