Key Insights in 60 Seconds
Skim the highlights first, then jump to the section that matches what is actually connected to your store.
What You'll Learn
You searched something like Shopify REST API deprecated, and the results told you to prepare, migrate and not wait. None of them told you whether any of it is your bill. That depends on one thing — what is actually connected to your store — and for a large share of merchants the honest answer is that nothing here needs your budget at all.
The Quick Verdict
Key takeaway
Find your own situation in the first column; everything after it is the evidence underneath.
What this costs you, by what you actually run
| Your situation | What to do | Why |
|---|---|---|
| Your theme plus apps you installed from the App Store, or a headless front end — nothing built to order | Nothing to budget | The February 1, 2025 deadline landed on public app vendors, not on the merchants running their apps, and Shopify's docs say the Storefront API a headless front end reads is available only in GraphQL, with no REST API for storefronts. |
| A custom app or script that writes products, with every product under 100 variants | Wait, with a named watcher | Shopify's changelog lets these keep calling the deprecated REST product endpoints, and no page we found carries a removal date. |
| You are already commissioning a rebuild, a new integration or a new app | Scope it into that build | New work is built on GraphQL anyway, so leaving the old integration out of that scope is how the same job arrives later as a second invoice. |
| A custom app or script that writes products, but one of your products needs more than 100 variants | Budget it this quarter | The same changelog says merchants on those APIs cannot raise their variant limit past 100. |
| Nobody owns the code, or you cannot list what is connected to your store | Buy an inventory, not a migration | The documented notice channel is the developer changelog, so an unwatched wait is not a decision. |
What Shopify Actually Published
Key takeaway
The record is short and it is public. Four things were announced, each with its own audience, and one thing was never announced at all. That fifth row is the one doing the most work in this table, because almost every urgent-sounding article you have read about this topic depends on it not being read closely.
The published record, and the gap in it
| What Shopify published | When | Who it applied to | Where it's published |
|---|---|---|---|
| The REST Admin API is a legacy API | October 1, 2024 | The whole REST Admin API, with no carve-out by app type | Admin REST versioning doc |
| Public apps had to move to the new GraphQL product APIs | February 1, 2025 | Public apps in the App Store, product and variant endpoints only | Developer changelog |
| Custom apps on the existing GraphQL product APIs had to move | April 1, 2025 | Custom apps already using the older GraphQL product fields — not custom apps on REST | Developer changelog |
| New public apps submitted to the App Store must use GraphQL only | April 1, 2025 | Submissions on or after that date; apps already listed are not covered | Developer changelog |
| A general removal or shutdown date for the REST Admin API | Not published | Would apply to everyone — which is why its absence matters | No page we found carries one — see the note below for what we read |
Rows 1–4 from Shopify's Admin REST versioning documentation and developer changelog. Row 5 records an absence we checked for in August 2026 — see the box below for the pages we read.
The Two Dates That Already Passed — and Who They Hit
Key takeaway
The February date was aimed at public apps — the ones listed in the App Store. Shopify required them to move off the deprecated product endpoints and onto the new GraphQL product APIs. If you install apps rather than commission them, that deadline was a bill your vendors paid, and you would only have noticed it if one of them failed to.
The April date carried two separate rules that share a calendar and nothing else. One covered custom apps already built on the existing GraphQL product APIs, telling them to move to the newer ones — note that this is a GraphQL-to-GraphQL move, not a message to anyone still on REST. The other set the rule for App Store submissions: all new public apps submitted after April 1, 2025 must use GraphQL only.
There is a practical check hiding in the first of those. If an app you rely on has gone quiet, its App Store listing shows a Launched date with a Changelog link next to it. Opening that changelog tells you when the vendor last shipped anything — which is a more useful signal about your risk than any deprecation date, because an abandoned app is a problem regardless of which API it speaks.
Is "Legacy" the Same as "Removed"?
Key takeaway
This distinction is the whole article. A status describes where something sits in a product's lifecycle; an event has a date attached and something stops working on it. Shopify assigned the status and published the sentence in its own versioning documentation, in the plainest possible terms.
The REST Admin API is a legacy API as of October 1, 2024.
Read what that sentence does and does not do. It applies to the whole REST Admin API, with no carve-out by app type — so nobody gets to say their integration is exempt from the status. And it stops there. It names no consequence, no deadline and no removal, which is precisely why the sentence has survived unchanged for as long as it has.
What Shopify Has Not Published
Key takeaway
An absence is a weaker claim than a fact, so it is worth being exact about what we can and cannot say. We can say that we looked in the places where such a date would live and did not find one. We cannot say Shopify will never publish one — and when it does, the top of this article changes.
What does exist is narrower and much less dramatic: individual deprecated calls can carry their own migration deadline, field by field. That is a mechanism for retiring specific endpoints on their own schedules, and it is not the same as a plan to switch off an API.
Several claims in this article are absences, and they all rest on the same reading, done in August 2026. The pages we went through: Shopify's Admin REST versioning documentation, the REST Admin API landing page, the changelog entry on the new GraphQL product APIs, the general API versioning page, the deprecated API calls reference and the changelog's deprecation feed. We also read the Help Center's apps, managing apps and custom apps pages.
On those pages we found no removal or shutdown date for the REST Admin API; no merchant-facing explanation of the API's status anywhere in the Help Center, where two likely URLs redirect to the developer site instead; and no statement that organisations created after any date may only use GraphQL for custom apps. This box is the single place those boundaries live — when Shopify publishes any of them, this is the paragraph that gets rewritten first.
Which of These Do You Actually Have?
Key takeaway
Before any of the dates matter, you need to know what category your store is in. Most merchants have more than one of these, which is fine — the point is to name them separately, because they carry completely different obligations. If you want the wider picture of what commissioned Shopify work involves, our guide to custom Shopify development covers the project types and the stack behind them.
If Your Paperwork Says "Private App"
Key takeaway
If the contract from the developer who built your integration calls it a private app, nothing is wrong and nothing has changed underneath you — Shopify's current name for that is a custom app. The Help Center page on about apps describes them the way a merchant meets them: built for one store, installed only there, granted access through Shopify's APIs.
Worth noticing what that page does not do. It never mentions REST, GraphQL, deprecation or legacy status. That is not an oversight so much as a division of labour — this entire topic is documented on the developer site, for developers, which is why a merchant trying to answer a budgeting question ends up reading versioning documentation written for someone else.
Three Shopify Deprecations This Is Not
Key takeaway
Three separate stories get folded into this one, and each mix-up sends a merchant somewhere unproductive. The table separates them. The last row matters most for stores on Shopify Plus, because checkout logic really did have a hard deadline — our guide to the Scripts to Functions migration covers what replaced what.
Different API, different deprecation
| What people mix it up with | What it actually is | Whose problem it is |
|---|---|---|
| The Storefront API | A separate API for building shop fronts. Shopify's docs say it plainly: "The Storefront API is available only in GraphQL. There's no REST API for storefronts." | Headless merchants — and it means this deprecation never touched them |
| The Customer Account API | The interface behind customer login and account pages, with its own deprecation story running on its own timetable. | Stores still on legacy customer accounts |
| Shopify Scripts and Functions | Checkout logic — discounts, shipping and payment rules. It is a different technology with different dates, not part of the Admin API. | Plus stores that ran Scripts at checkout |
Storefront API wording quoted from Shopify's Storefront API documentation, read August 2026.
The Storefront API row is worth a second read if you run a headless setup. Shopify's own Storefront API documentation says there is no REST version of it and never was — so a headless storefront had nothing to migrate, and any advice telling you otherwise is describing a different API.
Does This Touch Your Store?
Key takeaway
You now know the categories and the dates. Answer five questions about your own store and the quiz will name the lane that matches what you actually run — anywhere from "this isn't your bill" to "budget it this quarter" — with what to check, what to ask for, and what would end that lane. There is no wrong answer here — the routes are genuinely different situations, not grades.
What Still Works Today — and the Ceiling It Comes With
Key takeaway
This is the sentence that most coverage of the topic leaves out, and it is the reason a great many stores can genuinely do nothing. Shopify wrote a carve-out into the same changelog entry that set the February and April deadlines, and it is addressed to exactly the merchant this article is written for.
Custom apps built on REST that do not need to support more than 100 variants can continue to use the deprecated REST product APIs
Note the two conditions bolted to that permission. It covers custom apps, not public ones, and it covers the product and variant endpoints specifically rather than the REST Admin API as a whole. Within those bounds the arrangement is open-ended: no expiry is attached to it, and none has been published since.
Because the record contradicts the tone of most search results on this topic, it is worth hearing it from outside our own prose. This short explainer was published in July 2025 by API2Cart, an integration vendor rather than Shopify, and it reaches the same conclusion about who has to move and when.
What the 100-Variant Line Does and Doesn't Mean
Key takeaway
The carve-out has a second half, and it is the part that turns a permission into a decision. In the same changelog entry Shopify writes that "any merchant using custom apps built with these deprecated APIs will not be able to increase their variant limit past 100". So the arrangement holds until your catalog needs it not to — and at that point the migration stops being optional, without any date being involved.
100 — the threshold in the REST carve-out. Shopify's wording is custom apps "that do not need to support more than 100 variants", and merchants using those apps cannot raise a variant limit past it.
2,048 — the number of variants a Shopify product can carry on the platform itself, raised from a historical limit of 100 in October 2025. The ceiling is a product limit rather than an API one, but the same changelog warns that merchants whose apps are not on the in-support GraphQL product APIs may see a downgraded or broken experience above 100 variants.
"Up to 2000 variants" — a figure the text of that changelog entry never states. It survives only inside the web address of the companion entry it links to, whose own title now reads 2048.
These are three numbers about two different things, and the gap between the last two is a wrinkle in Shopify's own text rather than something you can resolve. Quote whichever one applies to your question and do not do arithmetic between them.
What Maintenance Mode Promises — and What It Doesn't
Key takeaway
Maintenance mode is a promise and a limit at once. The promise is continuity: the endpoints keep answering, the versioning policy keeps applying, and support continues within it. The limit is that development has moved on — Shopify states that all new features and support are being built only for the new GraphQL product APIs.
For a store that is not changing, that trade is close to free. For a store that is growing, it quietly converts into a schedule: every new capability you want becomes a reason to migrate, and the date that forces your hand is set by your own roadmap rather than by Shopify's.
The Only Deadline That Actually Exists
Key takeaway
Merchants looking for a deadline usually find the wrong one. The genuine timetable in this topic is not about REST at all — it is the versioning policy, which applies to every Admin API client. Shopify releases a new version at the start of each quarter, and the same versioning page sets out how long each one lasts: a minimum of 12 months of support, with at least nine months of overlap between two consecutive stable versions.
The part worth internalising is what happens at the end of that window, because it is not what most people expect. The same page describes it:
"Shopify falls forward and responds to your request with the same behaviour as the oldest supported stable version."
Nothing errors — and an alert does exist: Shopify's Help Center says that when an app in your store uses an unsupported API, a notification is shown in your Shopify admin, and Shopify's REST versioning page says falling forward is what happens when your selected API version becomes unsupported. Your integration keeps working, against slightly different rules than the ones it was written for — which is why a quiet change in a familiar report is a more realistic symptom in this topic than an outage, and why "it still works" is not by itself evidence that a version is current.
The Consequences Shopify Names — and Who They Apply To
Key takeaway
Shopify names delisting from the App Store for a public app or sales channel that keeps using unsupported resources after the upgrade deadline. That sounds severe, and for an app publisher it is.
Delisting itself cannot happen to you. A custom app was never listed anywhere, so there is no listing to remove. But the same page names consequences that do reach custom apps: users are blocked from installing the app for a minimum of seven days, and they see warnings in the Shopify admin until seven days after the last detected use of unsupported resources — all of it conditioned on calls to unsupported resources after the upgrade deadline, not on the REST carve-out. That boundary is the most useful thing a merchant can take from the versioning page, and it is exactly the detail that gets dropped when the topic is summarised as "REST apps are at risk".
What Makes This Urgent, and What Lets You Wait
Key takeaway
Once you accept that there is no removal date, the question changes shape. It stops being "when is the deadline" and becomes "what would make this urgent for me" — and that question has five concrete answers, none of which is a date.
Five Triggers That Turn This Into a Bill
Key takeaway
What actually forces the decision
| Trigger | What you would notice | What it forces | Where it's documented |
|---|---|---|---|
| A product needs more than 100 variants | You cannot raise the variant limit on that product | Moving the product-writing part off the deprecated REST endpoints | The product APIs changelog entry |
| You are commissioning new Shopify work | A quote lands for a rebuild, a new integration or a new app | Building on GraphQL, and pricing the old integration inside that scope | New App Store submissions have been GraphQL-only since April 1, 2025 |
| You want a capability the old endpoints never got | What you asked for is not available the way your integration works today | Migrating before the capability can ship | The deprecated product APIs are in maintenance mode |
| Your integration's API version ages out of support | Behaviour shifts with no error and no announcement | Raising the version, which for product calls can mean moving to GraphQL | Versioning doc: 12 months minimum support, then fall-forward |
| You publish a public app yourself | An upgrade deadline lands on your App Store listing | Upgrading, or losing the listing | Versioning doc: unsupported resources after the deadline mean delisting |
What a Deliberate Wait Looks Like
Key takeaway
Waiting is a legitimate answer here, but only when someone is actually holding it. The first requirement is a name: one person — you, your developer, whoever holds the retainer — who owns the question. An unowned wait is indistinguishable from having forgotten about it, right up until it is not.
The second is the channel. Shopify's own guidance to developers on this topic is to follow the developer changelog for breaking changes, and that is the documented place where a removal date would appear if one is ever set. The one merchant-facing signal Shopify documents arrives late — a notification appears in your Shopify admin only once an app in your store uses an unsupported API — so for a removal date the changelog is the surface, and somebody has to read it.
The third is knowing what would flip the decision. Your trigger list is the table above, plus one external event: Shopify publishing a removal date. If that happens, this becomes a scheduling problem instead of a judgement call. There is precedent for how these deprecations run — legacy customer accounts were deprecated with no sunset date announced either, and stores that treated the announcement as the moment to plan came out ahead of the ones that waited for a date.
What Each Road Costs
Key takeaway
Waiting costs you nothing in fees. Migrating has exactly one public number attached to it: one UK agency, No7 Software, published in May 2026 that migrating a legacy custom app from REST to GraphQL typically costs between £15,000 and £40,000, depending on complexity — a single dated estimate from one vendor, not a market benchmark.
No agency page we read puts a per-complexity ladder on this work — nothing that separates a simple overnight sync from a mid-sized custom app from a heavy continuous integration. None of them attaches a timeline to it either.
The pages we found end in an invitation to get in touch rather than a second number. So the range above is the only public figure this article can honestly hand you, and it describes one complexity class from one vendor on one date.
We are not going to invent the missing figures. If your own quote lands well outside that range, the range is the weaker evidence, not your quote — one vendor's published estimate is a reference point rather than a benchmark to argue against. For what Shopify work costs more broadly, our guide to Shopify store development cost breaks budgets down by scenario.
What waiting actually costs is harder to price, because it is not a fee at all. What you spend is optionality: a migration you choose is scoped, quoted and scheduled against your calendar, while a migration triggered by a catalog change or a stalled project is bought under pressure. The same work, at a worse moment, is simply a worse deal.
What Actually Drives the Bill
Key takeaway
The same agency is specific about where the money goes, and its answer is not the obvious one. In its words, the primary engineering expense is not rewriting the queries but re-architecting the queueing system to handle calculated query costs instead of simple request counting. That is the agency's characterisation of the work, not a Shopify statement, and it comes from the same single source as the price range.
The reason to care is that it tells you which merchants the big number is really about. A nightly script that touches a few hundred products has no queueing system to re-architect. A continuous sync moving thousands of records does — and if that is your setup, the decision belongs in a wider conversation about Shopify ERP integration, where throughput is the main design constraint rather than a side effect.
How to Check Your Own Store Without Writing Code
Key takeaway
You do not need to know what an endpoint is to do the useful part of this. Six steps, most of them phone calls and a spreadsheet, and at the end you have something almost no store has: a written list of what talks to your Shopify data and who is responsible for each piece. If your store was inherited or has changed hands, our guide to a Shopify store code audit goes deeper on tracing what previous developers left behind.
Your integration inventory
Work top to bottom. Steps 1–3 you can do alone; steps 4 and 5 are questions you send to whoever maintains each integration.
Write down every system that touches your Shopify data other than your theme and the apps you installed yourself from the App Store.
Before you tick this off
- Listed every app that was built for you rather than installed from the App Store
- Listed every script, sync or scheduled job that moves data in or out
- Noted which of them you pay for and which simply run
- Cross-checked that list against the apps list in your Shopify admin
For every line on that list, record who built it and who is on the hook for it today — the two are often different people.
Before you tick this off
- Named the agency, freelancer or staff member responsible for each item
- Confirmed you still have a working contact for each name
- Flagged every line where the honest answer is nobody
Separate the integrations that create or update products and variants from the ones that only move orders, inventory or customers.
Before you tick this off
- Marked each integration as product-writing or not
- Checked whether any product in your catalog needs more than 100 variants
- Flagged any plan to grow a product past that line
Send the owner of each integration one question: which Admin API version does this call, and when was it last raised?
Before you tick this off
- Got a version string back for each integration
- Asked when that version was last updated
- Recorded the answers somewhere the next person will find them
Only a developer can answer this one, so ask it in writing and keep the reply with the rest of the inventory.
Before you tick this off
- Asked, per integration, whether it calls REST product or variant endpoints
- Asked whether any of its calls come back flagged with a migration deadline
- Filed the answers with the list rather than in an inbox
Choose one of three outcomes for each line: wait with a named watcher, fold the work into a build you are already paying for, or budget the migration now.
Before you tick this off
- Recorded a decision for every line of the inventory
- Named the person who reads Shopify's developer changelog
- Set the date you will read this list again
The quiz above routes you to a lane, and the lane changes where this list matters most. If you landed in buy an inventory, not a migration, steps 1 and 2 are the whole job as long as no removal date exists — which, as of August 2026, is still the case. If you landed on the variant ceiling, step 3 is the one that decides your timing. If the answer was that this is not your bill, one pass through step 1 is enough to confirm it.
Where the DIY Ends
Key takeaway
There is a clean line where self-service stops. Shopify's reference on deprecated API calls describes a migration deadline attached to individual deprecated calls, and points developers at the changelog to stay ahead of breaking changes. Neither of those surfaces is in your admin — the deadline appears in an API response and the changelog is a developer feed. The one thing Shopify does put in your admin is a notification, and only once an app in your store is on an unsupported API.
There is one more tool, and it is worth knowing it exists so you can ask for its output by name. Shopify's API Health report "on the Partner dashboard shows the deprecated API calls your apps are making, along with documentation and timelines". That dashboard belongs to whoever built your app, not to your store admin — so the merchant move is to ask your developer to send you what it shows.
Six Questions That Tell a Real Need From Billable Hours
Key takeaway
You do not need to evaluate the code — you need to notice whether the answers are specific. Ask these in writing and keep the replies with your inventory. If you are choosing who to ask in the first place, our guide on how to hire a Shopify developer covers the wider process.
Six questions, and how the answers sound
| Ask this | What a straight answer sounds like | What a sales answer sounds like |
|---|---|---|
| Which of my integrations call the REST Admin API at all? | A list, integration by integration, with the endpoints named | "All of them — REST is deprecated, so everything needs rewriting" |
| Do any of them call the deprecated product or variant endpoints? | A yes or no per integration, and how they can tell | "Anything on REST is at risk" |
| Does anything I run need more than 100 variants on a product? | A straight answer checked against the actual catalog | "You'll hit platform limits sooner or later" |
| Which Admin API version does each one pin, and when was it last raised? | A version string per integration and the date it last changed | "It's on an old version, we should modernise it" |
| Is this migration inside our retainer, or a separate quote? | A clear answer either way, with what the retainer does and does not cover written down | "Let's see how much time it takes" |
| What breaks for my store if we do nothing for six months? | A specific consequence tied to a documented rule — or an honest "nothing we can point at" | "Shopify could switch REST off at any time" |
The retainer question deserves the extra attention it gets in that table. Whether a migration falls inside an existing retainer or arrives as a separate quote is a real money question with no default answer, and what you are listening for is a clear position either way rather than a particular one. An arrangement that cannot say where its own boundary sits is the finding.
The Bottom Line
Key takeaway
The urgency in the search results is not coming from the record. What the record shows is a status change, three narrow deadlines aimed largely at app vendors, an explicit carve-out for custom apps on REST, and — nearly two years on — no published date for switching anything off. If your question turns out to be a broader one about who to hire and what Shopify work costs, our Shopify development guide routes you in about a minute.
Frequently Asked Questions
Front-end developer specializing in Shopify since 2017. Experienced in building custom Liquid themes, optimizing storefront performance, and integrating third-party apps. Writes in-depth, data-driven e-commerce guides based on hands-on experience with real merchant stores.
What to Read Next
Shopify Store Code Audit: Before You Fix or Rebuild
Inherited a messy Shopify store? Audit the theme code, ghost code, ScriptTags and access yourself — then decide fix vs rebuild, and what an audit costs.
Read articleShopify Agentic Commerce: Costs & When You Need a Dev
AI agents can now buy from your Shopify store. What agentic commerce costs today, what's automatic, and when you actually need a developer.
Read articleShopify Customer Accounts Migration: Legacy Is Deprecated
Shopify legacy customer accounts are deprecated. See what breaks, the passwordless switch, your migration route, and when to hire a developer.
Read article