Apify says a compromised credential reached related accounts; its incident page lists no exposed data fields
Apify's incident page says an unauthorized third party used a compromised credential on 9 and 10 November. Its first public post came 7 hours 33 minutes after the detection time it prints (derived), and the page lists no exposed data fields: those sit in customer emails.
By Parminder Kumar Sharma · LinkedIn · · 16 min read
Apify's first public post came 7 hours 33 minutes after the detection time it prints (derived)
Apify's status page, headed "Security incident", says the company detected the activity "on 11th November at 12:13 UTC". Its first public post is stamped 20:46 CET on 11 November 2026. The page's own machine readable stamp for that post is 19:46:21 UTC, which confirms that the printed CET is UTC plus one hour. From 12:13 to 19:46 is 7 hours 33 minutes (derived). The same page puts the access on "9 and 10 November" with no hours and no time zone, so the time between the intrusion and the detection cannot be worked out from it.
What that does not establish. The 7 hours 33 minutes is a gap between two stamps on one page. It does not show that anything was held back. The page does not say when Apify decided to post, whether customers were told by email before the post went up, or what the post was waiting for. The first post carries no field list and no promised time for the next update. A second derived figure sits in the timeline below: the fourth post came 24 hours 20 minutes after a post that promised an update within 24 hours. Both are arithmetic on stamps, not findings about conduct.
Vendor interest, once. Apify sells the platform and writes and controls this page, so every statement on it is the company's own account of itself. SecurityWeek's report is a secondary source, and the field list it prints comes from a customer's notification posted on Reddit, which this site did not read.
The four updates in order, with what each adds and what it drops
The page holds four stamped updates. The table copies the wording and sets each update against the one before it. UTC is derived from the printed CET at one hour, as the page's own stamps confirm. Apify's words are in quotation marks; the right hand column is this site's reading of what changed.
The four updates on Apify's incident page, wording as printed, read from the lead's saved copy on 13 November 2026; UTC derived by this site.
| Stamp as printed (UTC, derived) | What the update says | What it adds or drops |
|---|---|---|
| 11 Nov, 20:46 CET (19:46 UTC). Label: Investigating | "an unauthorized third party gained access to parts of Apify's internal systems" on 9 and 10 November. Detected 11 November 12:13 UTC; access cut off. "We are currently investigating the scope of the incident, including what user data may have been affected." OAuth connections revoked "including GitHub". "If our investigation shows that your tokens were affected, we will rotate them on your behalf and notify you." | First post. No credential, mechanism, field or count. Scope and user data are open questions. |
| 12 Nov, 12:08 CET (11:08 UTC) | "used a compromised credential to obtain a number of account credentials and accessed related Apify accounts". "This access path is closed, and we have detected no further activity from the attacker since 11 November." "We are notifying affected users individually." Internal secrets rotated, authorities notified, GitHub reconnect steps. | Adds the credential, the account credentials and the related accounts. The OAuth sentence no longer names GitHub. The open question about what user data may have been affected is no longer asked. |
| 12 Nov, 17:16 CET (16:16 UTC) | "We have notified customers whose personal information or stored data was accessed in this incident." "Details are in the email they received." "If you haven't received an email from us, we have not identified your account as affected so far." | Adds the one statement about data: personal information or stored data. No field, no count. Drops the access path, the dates and the GitHub steps. |
| 13 Nov, 17:36 CET (16:36 UTC) | "API tokens are now stored only as hashes, which limits the impact of any similar incident." Network restrictions between internal services, stronger authentication on internal systems, a review of "our entire stack". Advice to set Console resource access to Restricted and to beware of phishing. | Adds hardening and advice. Says "attack paths" in the plural where 12 November said "This access path". Does not repeat the dates, the customer notification or the authorities. |
The promised windows against the stamps. Three of the updates print a time for the next one. The table sets each promise against the next stamp, using the printed minutes. All differences are derived.
Promised next update against the next stamp on Apify's page, arithmetic by this site from the printed CET stamps, read on 13 November 2026.
| Update | Promise printed | Next stamp, gap (derived) |
|---|---|---|
| 11 Nov, 20:46 CET | None printed | 12 Nov 12:08 CET, after 15 h 22 min |
| 12 Nov, 12:08 CET | "Next update within 6 hours" | 12 Nov 17:16 CET, after 5 h 08 min, inside the window |
| 12 Nov, 17:16 CET | "Next update within 24 hours" | 13 Nov 17:36 CET, after 24 h 20 min, 20 minutes past the window |
| 13 Nov, 17:36 CET | Next update "within 72 hours" and a post-mortem "within a week" | Due by 16 Nov 17:36 CET for the update, and by 20 Nov 17:36 CET for the post-mortem if the week is counted from the post; the page does not say when the week starts |
Cautions on the arithmetic. A stamp is the time of a post. A status page can be edited after posting, and this site sees only the saved copy, so a gap here is a gap between stamps, not between events. The 24 hours may have been meant loosely; the page does not say. The page's own second level stamps give 24 hours 19 minutes 27 seconds for the same gap, so the minute level figure of 24 hours 20 minutes and the second level figure both put the post just over the window. The access dates add one more calendar count: from 9 November to the fourth post on 13 November is four calendar days (derived), and the page states no end date for the access beyond "9 and 10 November".
What happened, in the order the page gives it
Apify's second update states the mechanism in one sentence: an unauthorized third party "used a compromised credential to obtain a number of account credentials and accessed related Apify accounts". That is three steps with no detail in any of them. The page does not say where the first credential came from or whose it was, how many account credentials were obtained, what "related" means, or what was done inside the accounts. The incident is tagged as affecting "API (api.apify.com), Actors, and General"; those are the page's component labels, and the page does not say what each one means for the data.
Two wordings that may or may not be the same thing. The first post says access was gained to "parts of Apify's internal systems". The second says the access reached "related Apify accounts". The page does not say whether the internal systems and the related accounts are the same thing, one inside the other, or two findings. It also says the investigation "has not found that these connections could be used as an attack vector" about the revoked OAuth connections. That is the absence of a finding, not a finding of absence, and Apify frames the revocation as "As a precaution".
What closed, and what was added. The second update says "This access path is closed, and we have detected no further activity from the attacker since 11 November." The fourth update says Apify "Added additional security layers to block the attack paths", naming network restrictions between internal services and stronger authentication on internal systems, and describes "Continuing log analysis and monitoring for any suspicious activity." The page does not say whether there was more than one path, whether the attacker has been identified, or whether any activity before 11 November, other than on 9 and 10 November, has been ruled out.
The page names no data fields; a relayed notification does
The only sentence about what was taken is in the third update: customers were notified "whose personal information or stored data was accessed". The page adds "Details are in the email they received." It prints no field, no data class and no count. SecurityWeek, published at 12:41 UTC on 13 November, reports the same two categories and then relays a list, attributing it to a notification "According to an Apify customer who shared a breach notification on Reddit". This site did not read that notification and prints SecurityWeek's list only as SecurityWeek's relay.
Apify's page set against SecurityWeek's report of 13 November 2026 (published 12:41 UTC), both read from the lead's saved copies. The right hand column is a secondary relaying a customer's notification, not Apify's page.
| Topic | Apify's page | SecurityWeek, relaying a notification |
|---|---|---|
| Data accessed | personal information or stored data; no field named | Names, email addresses, billing details, account activity and IP addresses, and, listed as more important, salted password hashes, 2FA recovery codes, phone numbers and authentication tokens associated with Google and GitHub sign-ins |
| Card data | Not mentioned | Limited to cardholder names, expiration dates and the last four digits; full numbers and security codes not exposed, per SecurityWeek |
| Number affected | Not stated | Not stated: SecurityWeek says Apify has not disclosed the number of compromised customer accounts |
| The 91,000 | Not on the page | SecurityWeek says Apify "says it has 91,000 customers worldwide": a total customer count by that wording, not the number affected |
| Tokens | "API tokens are now stored only as hashes"; earlier, tokens would be rotated if affected | Authentication tokens associated with Google and GitHub sign-ins, among the data in the notification |
| Passwords | Only that Apify will never ask for one | Salted password hashes |
| Latest stamp | 13 Nov 17:36 CET (16:36 UTC) | 13 Nov 12:41 UTC, 3 h 55 min before the page's fourth update (derived), so it cannot reflect that update |
The tokens, reported both ways and not resolved. The fourth update says "API tokens are now stored only as hashes, which limits the impact of any similar incident." The relayed notification lists "authentication tokens associated with Google and GitHub sign-ins". These are described as different things: one is Apify's API tokens, the other is sign-in tokens tied to Google and GitHub. The page does not say how API tokens were stored before the change, whether any plaintext token was read, or whether the sign-in tokens in the notification are among the OAuth connections it revoked. The first post does say that if tokens were affected Apify would rotate them for the customer. Whether it did for any customer is not stated. This briefing reaches no conclusion about the link.
What the page leaves to email. The third update's final sentence is the page's only answer to a customer who wants to know about their own account: "If you haven't received an email from us, we have not identified your account as affected so far." The words so far matter: the page itself says more customers may be contacted. A customer who got no email has no public list to check against.
Labels doing the work of evidence
"As a precaution." Apify uses it for the OAuth revocations and the rotated internal secrets. A precaution is an action, not a finding. The page does not say any of the rotated secrets were read.
"Stored only as hashes." The sentence is about the future: it "limits the impact of any similar incident". It says nothing about how tokens were stored on 9 and 10 November. Inference, labelled as such: hashing a token generally means a copy of the store does not directly hand over working tokens; the page does not describe Apify's scheme.
"Restricted." The advice is to set Console resource access to Restricted, because "While it's open, anyone who knows a storage ID can read that storage." The page does not say any storage was read by the attacker, whether the attacker held storage IDs, or what a given account's setting was. Inference: the setting is a hardening step for any account, and the page does not tie it to the intrusion.
"Not identified as affected so far." It describes what Apify has found, not what happened. The same applies to "we have detected no further activity from the attacker since 11 November".
What Apify's page states, and what it does not
Stated and not stated on Apify's incident page, read from the lead's saved copy on 13 November 2026. The third column is this site's list of what the page leaves open.
| Topic | Stated on the page | Not stated |
|---|---|---|
| The intrusion | An unauthorized third party; 9 and 10 November; a compromised credential; account credentials obtained; related accounts accessed | Where the first credential came from; whose it was; the hours of access; how the attacker got in |
| Detection and response | Detected 11 Nov at 12:13 UTC; access cut off; OAuth connections revoked as a precaution; internal secrets rotated; authorities notified; API tokens now hashed; network restrictions and stronger authentication added | Which authorities; which secrets; how tokens were stored before; whether other attack paths existed |
| Who was affected | Customers whose personal information or stored data was accessed, notified by email; no email means not identified so far | How many accounts or users; the exact fields; whether stored data (Actor datasets, key value stores) was read; whether any data was copied out |
| The attacker | Described only as an unauthorized third party; no activity detected since 11 November | Whether the attacker is identified; any group name; the objective |
| Downstream effects | GitHub reconnect for Actors built from private repositories; other integrations to be reconnected if prompted | Whether any customer's downstream accounts were reached beyond the OAuth precaution |
| Cause and next steps | Next update within 72 hours; a post-mortem with root cause and remediation within a week | The root cause; when the week starts; whether the post-mortem will list fields or counts |
What Apify tells customers to do, exactly as printed
Apify's advice to customers is two console instructions and an email to follow. The wording is copied below as printed, with what a customer does with each. Alongside them sits one statement about Apify's own systems, which a customer cannot check. Nothing here was visited or tested.
The customer actions as printed on Apify's incident page, read from the lead's saved copy on 13 November 2026.
| Action | Where on the page | Setting or path as printed |
|---|---|---|
| Restrict storage access | 13 Nov, 17:36 CET | Settings → General resource access, set to Restricted |
| Reconnect GitHub | 12 Nov, 12:08 CET | Actor built from GitHub → "Change provider" → GitHub → authorize; once per account and per organization |
| Reconnect other integrations | 12 Nov, 12:08 CET | If prompted |
| Follow the email | 12 Nov, 12:08 CET and 17:16 CET | Instructions in the email Apify sent to affected users |
The storage setting. It lives in the Apify Console under account settings. A defender opens it, checks the value, and sets Restricted if it is open; the page's stated reason is that an open setting lets anyone who knows a storage ID read that storage.
Restrict access to your storages. In Console, go to Settings → General resource access and set it to Restricted. While it's open, anyone who knows a storage ID can read that storage.
The GitHub reconnect. It applies to Actors built from private GitHub repositories, because Apify revoked some OAuth connections including GitHub. A defender repeats it for each Apify account and each GitHub organization that feeds Actors, then checks that builds still run.
If you build Actors from private GitHub repos, reconnect GitHub: open an Actor built from GitHub → "Change provider" → GitHub → authorize (once per account and per organization).
The token statement. It is a claim about Apify's systems, not a setting a customer can check. A customer can use it as a question for Support (how were tokens stored before, and was any token read) and as a comparison point for their own platform.
API tokens are now stored only as hashes, which limits the impact of any similar incident.
What to do, in order
The first four items are Apify's own advice from the page. The rest are this site's suggestions, labelled as such. Nothing here assumes any of your data was read: Apify has not said that for any account that has not been emailed.
Take this with you
Checklist for Apify customers, and a line for platform operators
- Apify's advice: if an email from Apify arrived, follow its instructions.
- Apify's advice: if you build Actors from private GitHub repositories, reconnect GitHub through the Change provider option, once per account and per organization; reconnect other integrations if prompted.
- Apify's advice: in Console, open Settings, General resource access, and set it to Restricted.
- Apify's advice: treat any message that asks for your password, 2FA codes or payment details as phishing; the page says Apify will never ask.
- This site's suggestion: rotate your own Apify API tokens, and any secrets held in Actor inputs or environment variables, as a precaution. Apify has not said any were read.
- This site's suggestion: if the same password is used anywhere else, change it there too.
- This site's suggestion: review the credentials held in webhooks and integrations connected to your Apify account.
- This site's suggestion: contact Apify Support, or reply to the email you received, and ask whether your account is in the notified set and which fields were affected. Keep the reply.
- This site's suggestion for platform operators: check how your own API tokens are stored, whether an internal credential could reach customer accounts, and whether internal services are separated by network restrictions.
The question the page leaves open
Apify's page tells customers that no email means their account is not identified as affected so far, and that the details are in the email. So the question for a customer who received nothing is the one the page cannot answer: if no public page lists the fields and a promised post-mortem is the first place the root cause will appear, how does anyone check that not identified so far means not accessed?
Key facts
Sources
- PrimarySecurity incident, Apify's status page incident report with four stamped updates (11 Nov 20:46 CET to 13 Nov 17:36 CET). The primary, written by the company itself, read in full from the lead's saved copy of 13 November 2026 (page issued stamp 17:26:37 UTC)Apifyaccessed 2026-11-13
- Reported byApify Confirms Customer Data Accessed in Cyberattack, published 13 November 2026 at 12:41 UTC (printed 7:41 AM ET). A secondary: the field list it prints is relayed from a customer's notification posted on Reddit, which this site did not read; read from the lead's saved copySecurityWeekaccessed 2026-11-13


