Create Account
Log In
Dark
chart
exchange
Premium
Terminal
Screener
Stocks
Crypto
Forex
Trends
Depth
Close
Check out our Level2View

OUT
OUTFRONT Media Inc.
stock NYSE

At Close
May 1, 2026 3:59:59 PM EDT
31.70USD+2.771%(+0.85)1,506,201
0.00Bid   0.00Ask   0.00Spread
Pre-market
0.00USD-100.000%(-30.85)0
After-hours
May 1, 2026 4:00:30 PM EDT
31.71USD+0.016%(+0.01)1,420
OverviewOption ChainMax PainOptionsPrice & VolumeSplitsDividendsHistoricalExchange VolumeDark Pool LevelsDark Pool PrintsExchangesShort VolumeShort Interest - DailyShort InterestBorrow Fee (CTB)Failure to Deliver (FTD)ShortsTrendsNewsTrends
OUT Reddit Mentions
Subreddits
Limit Labels     

We have sentiment values and mention counts going back to 2017. The complete data set is available via the API.
Take me to the API
OUT Specific Mentions
As of May 2, 2026 8:49:41 PM EDT (1 min. ago)
Includes all comments and posts. Mentions per user per ticker capped at one per hour.
54 min ago • u/vassman86 • r/wallstreetbets • first_day_at_jp_morgan • C
IF YOU DON'T FUCK MY BRAINS OUT TONIGHT, I'M GONNA SABOTAGE YOUR PROMOTION
sentiment -0.64
2 hr ago • u/peanuts-in-my-jelly • r/wallstreetbets • weekend_discussion_thread_for_the_weekend_of_may • C
I'M OUT HERE DOING DEALS
sentiment 0.00
7 hr ago • u/peanuts-in-my-jelly • r/wallstreetbets • weekend_discussion_thread_for_the_weekend_of_may • C
GET OUT THERE AND MAKE SOME DEALS🫴
sentiment 0.00
10 hr ago • u/JoeSandero • r/Pmsforsale • wts_mfing_silver_hand_pours_silver_mint_sets • B
**I HAVE BEEN MADE AWARE SOMEONE IS IMPERSONATING ME AND IS LABELED AS A MOD. I WILL NEVER MESSAGE FIRST ASKING FOR PAYMENT INFO! PLEASE MAKE SURE YOU CLICK MY NAME ABOVE, WHEN REACHING OUT TO ME!**
Just have a small selection up for grabs, this weekend! Please feel free to hit me up with any questions!
[PROOF](https://imgur.com/a/pXnc4Oe)
**.999 SILVER**
2x "One Mother Fucking Troy Ounce" Hand Poured/Stamped "Stackable" Bars- **$100 ea.**
**.900 SILVER**
1x 1964 Mint Set (Sealed, but somehow got milky splotch on Half Dollar)- **$45**
1x 2003 10 Coin Silver Proof Mint Set- **$105**
1x 2004 11 Coin Silver Proof Mint Set- **$115**
**Shipping:** is $6 for ground shipping, $11 for priority. I will provide tracking numbers, pictures of packaging, and confirmation of the package being sent. 
**Payment:** I accept Zelle, Venmo, Cashapp, and Paypal
sentiment 0.88
10 hr ago • u/NewArborist64 • r/FluentInFinance • billionaires_just_want_more • C
CEOs that are billionaires are normally the ones who built the company... and if the company goes public, then they DO get voted in... or voted out. Do you recall Steve Jobs being voted OUT of Apple?
sentiment 0.00
10 hr ago • u/Williamnguyen62838 • r/wallstreetbets • weekend_discussion_thread_for_the_weekend_of_may • C
BREAKING NEWS: 120% TARIFF IS OUT NOW CHECK IT OUT
sentiment 0.00
10 hr ago • u/bewareofthenapkins • r/Daytrading • i_fed_up • C
NEVER deal premarket, I also learned that lesson the hard way. Set yourself a profit goal, 10% 20% 50% whatever, and once you’ve reached that goal, GET OUT with your profits, as someone else mentioned on this thread don’t get greedy. And use the STOP LOSS so you don’t lose too much if the stock tanks. The best rule I think is never invest what you’re not willing to lose. If you invest 1k in stock then you need to be willing to lose it all if the stock tanks, because nothing is certain. I hope you manage to build it back up and recover your losses. And stay away from FOMO (fear of missing out) stocks, a lot of people see a stock rising quickly and jump in thinking they’re going to make a fortune, then the stock immediately sinks and you’re left holding the bag.
sentiment -0.75
15 hr ago • u/Grouchy_Finding7756 • r/Wallstreetsilver • yawn_upsydownsy_i_do_what_the_chinese_govt_does • :STRONGhands::Spacer:STRONG HANDS • T
YAWN, UPSY/DOWNSY. I do what the CHINESE GOV'T DOES. WHAT COMES IN-NEVER GOES OUT. _JOHNLGALT🦘.
sentiment 0.00
17 hr ago • u/Rude-Appearance1571 • r/investingforbeginners • confused_on_the_purpose_of_investing • C
Investing is for the long haul !!!! It is not just for you !!!! People who invests thInks of GENERATION WEALTH !!!! At retirement you have tax breaks when you take out your money !!!! All money invested you have beaten that system we call TAXATION !!!!
INVESTING IS FOR LATER IN LIFE WHEN YOU CANT GO OUT AN WORK FOR IT !!!! YET COLLECT IT AS YOUR BENEFIT !!!!
sentiment 0.51
22 hr ago • u/relentlessoldman • r/GME • reposting_for_discussion_cohens_merger_of_the • C
Everyone on these subs thinks this is brilliant and so great for shareholders. No. It's dilutive and risky as hell. If that smelly article actually isn't BS, I'm definitely OUT.
sentiment 0.14
1 day ago • u/Toankst • r/wallstreetbets • ill_be_at_the_next_car_rally • DD • B
*Disclaimer: Not financial advice, I just like the company/stock and the opportunity to make more money. This post does not discuss a short squeeze, just basic supply and demand.*
Whether you joined the last rally or not, I’ll be in for the next $CAR rally.
https://preview.redd.it/16y0zozocmyg1.png?width=1311&format=png&auto=webp&s=3f9edf7a657213a9f8e1c318b63499ebc1a355c6
Brief intro about me. I know this is unusual for a DD post, especially on reddit where doxing is a real concern, but I want people to understand who I am and my background, not just see another random regard posting DD.
I am a former security (R&D) dev who left the rat race in Feb to start my own hedge fund, along with a separate investment fund for friends and family. The riskier plays are done strictly in my own fund.
For context, I played the last one by shorting with spreads at the top, then picking up 4,200 shares in the low $200s, and hedging ER with puts and covered calls since it was definitely wild. You can see the profits from the short play at the very last peak, followed by about a \~20% drawdown.
https://preview.redd.it/fh54nnvh9myg1.png?width=2369&format=png&auto=webp&s=cb3c3d762d4813f7630b04b57e172bd4a5352f8a
The play definitely affected my performance in the short term, but you can see I’ve only been in BIG plays, ranging from shorting scam companies like $DJT, quantum (scam) companies, and Trump circle stocks, to going long on undervalued companies like $INTC, $G\*\*, $EIX, $PCG, and $HPE. I pick a side, time it well, and build my position around that.
https://preview.redd.it/bmu6nl2lamyg1.png?width=833&format=png&auto=webp&s=5831b8ed66d0b43c18a7a408d9af925cc7b9c8cf
I think that is enough to establish that I am a regard who has something loose in his head and is addicted to adrenaline. I also opened my post history for everyone to dig around. Here comes the actual DD.
# I. Management not selling shares
Management has not been selling shares, especially at this price level, because it is currently below what they believe it should be.
From the Earnings Call transcript: [https://ir.avisbudgetgroup.com/static-files/33eb82e8-bdc5-4390-9711-24faf5d52a4a](https://ir.avisbudgetgroup.com/static-files/33eb82e8-bdc5-4390-9711-24faf5d52a4a)
We believe that this significant increase in ownership, combined with the high short interest in our name resulted in a short squeeze. That much is well understood. Here's what we're absorbing just now. After market closed yesterday, Pentwater disclosed the sale of 4.3 million shares for gross proceeds of $1.75 billion on April 22 and April 23. Given the quantum of shares sold in such a short span of time, our stock price experienced a significant decline.

It is important to note that Avis has not bought or sold a share since 2024. Our largest shareholder, SRS, has not bought or sold a share since 2023. So it seems the only insider active during this period of excess volatility was Pentwater Capital. Pentwater has acknowledged that its sale of Avis stock, at least in part, was violative of the SEC Section 16 short swing profit rules. Avis has requested Pentwater furnish it all relevant information concerning the trades and Avis will aggressively pursue all rights on behalf of our stockholders.
I can tell you this much. We have no intention of issuing shares anywhere near these levels. And more broadly speaking, Listen, I bought my first shares in Avis in 2010. So I've been involved with this company for 16 years now. Back then, and you've covered us for a while, but you know that the Avis had 129 million fully diluted shares outstanding.

And since then, in my capacity as a large shareholder, a Board member, a CFO, I've been very consistent in my belief that our shares are undervalued and have advocated for buying back stock. So our shares outstanding today are 35 million shares.

So we've retired 94 million or 73% of those original shares outstanding. I've not seen public companies reduce their share count by anything close to that order of magnitude. So we are true believers of this business. And on a fundamental basis, we were repurchasing our shares as high as $300 post-pandemic. So the thought of doing the opposite and issuing shares never entered my mind until this situation arose.

Now you're right, we put an ATM in place because it'd be irresponsible not to. We've done this in the past as well, and we haven't issued any shares. So I'm not here to trade Avis for value extraction. We're going to put in the hard work and create value by building a better business. It might not be as flashy as making a quick buck, but that's the journey we're on, and we take pride in that.
# II. Pentwater situation
Even though management stated they would go after Pentwater for $1.75B in profits (see the transcript), since Pentwater was an insider and subject to the Section 16(b) short swing profit rule, I did some further digging and suspected that they only sold the \~10% they held BEFORE becoming a 10% holder.
Meaning, if those shares were held long enough, they could sell them without forfeiting the profits to Avis Budget Group, and that is exactly what they did.
What happened:
* Pentwater already sold all the shares they held prior to becoming a 10% insider (and held for longer than 6 months), meaning they planned this for a while. They are currently around 11-12%.
* They cannot sell the newly bought shares (in March - April) and keep the profits until around Sep - Oct. Otherwise, all gains would fall under Section 16(b), meaning the profits would be returned to Avis.
* Again, they already sold ALL shares that were held longer than 6 months, and even sold \~100k extra (dipping into the newly bought shares). The profits from those \~100k shares will go to Avis. Both sides’ lawyers are likely already discussing this.
My estimate is about $30M of free money going to Avis from those extra 100k shares, assuming the profit was $300 - $400 per share on average.
Sources:
See the footnotes of the two Form 4 filings, where Pentwater acknowledges that some of the sales are subject to the Section 16(b) short swing profit rule:
1. [https://www.sec.gov/Archives/edgar/data/1425851/000090266426002181/xslF345X06/ownership.xml](https://www.sec.gov/Archives/edgar/data/1425851/000090266426002181/xslF345X06/ownership.xml)
2. [https://www.sec.gov/Archives/edgar/data/1425851/000090266426002182/xslF345X06/ownership.xml](https://www.sec.gov/Archives/edgar/data/1425851/000090266426002182/xslF345X06/ownership.xml)
That means they RAN OUT of shares that can be sold without giving back all the profits to AVIS.
# III. Float + pressure mechanics
The pressure Pentwater released was about \~3M shares, roughly 10% of the float.
They made BILLIONS selling at the top. Again, they brought 3M shares IN and 3M shares OUT, tripling the profit. That means EVERYONE can theoretically do the same. I am not discussing a short squeeze here, since it is prohibited in this sub, but my regarded math is definitely mathing that the price could go up when supply is scarce, which is common sense.
3M shares =
* 3,000 people holding 1,000 shares each, or
* 30,000 people holding 100 shares each
Just an example to show how thin the float is.
Also, if this is profitable, what prevents Pentwater from doing a second round, buying again to release their 12% once they have held it long enough? That would be around the Sep - Oct time frame. In the meantime, it is MY turn to play.
Last but not least, management has earned my respect, just read the ER transcript to understand why for yourself. And the strong season for car rentals, with the World Cup happening in the U.S., Avis’s largest market, this summer.
sentiment 1.00
1 day ago • u/Unlikely-Evening2919 • r/wallstreetbets • what_are_your_moves_tomorrow_may_01_2026 • C
CALLS FOR MONDAY.
IF YOU ARE BUYING PUTS AT CLOSE YOU WILL GET FUCKED. I SEE A LOT OF BITCH ASS BEARS COMING OUT OF THE CLOSET AND GETTING HOENY AT THE LOWSS!!!
BULL, THIS IS A BUBBLE DO NOT FADE
sentiment -0.91
1 day ago • u/Emilio___Molestevez • r/wallstreetbets • daily_discussion_thread_for_may_01_2026 • C
$BE PULL THAT THANG OUT
sentiment 0.00
1 day ago • u/jijitalk • r/wallstreetbets • daily_discussion_thread_for_may_01_2026 • C
CAN WE GET MORE PUMPS IN HERE? PUMPS THE BERZ OUT OF THEIR MISERIES!
sentiment -0.69
1 day ago • u/Antique-Flight-5358 • r/wallstreetbets • daily_discussion_thread_for_may_01_2026 • C
Friday...new tariffs...Trumps buddies are OUT
sentiment 0.00
1 day ago • u/Verified_source_ • r/Pmsforsale • wts_silver_kangaroo_phil_maple_ases_other_cool • B
**!!Please read!!**
Payment Methods: Cashapp,Venmo,PaypalFF, Zelle (in preference order)
**Shipping:** USPS ground unless > 11oz then Priority. Unless specified otherwise by the buyer.
If there are multiple of one item, price is per item unless listed under “Silver Lots”
[PROOF PROOF PROOF PROOF PROOF PROOF](https://imgur.com/a/g2AeeI3)
**Platinum**
[1/4 grain Card](https://imgur.com/a/OA0qymK) \- $5
**Gold**
[1 grain Card](https://imgur.com/a/NmIau4N) 10x - $13
[1/1000oz Fall of Lucifer](https://imgur.com/a/KmsDqN2) \- $15
[MS70 The Coin Shack 1/200oz](https://imgur.com/a/3mWAXWD) \- $36
[1/4g Sexy Heads & Tails](https://imgur.com/a/nQjIM5U) \- $69
[1/1000oz Dallas Fortworth](https://imgur.com/a/BvimBi4) 2x - $14.95
[1/2 GoldBack Idaho](https://imgur.com/a/WU5RRJe) 2x - $4.67
[1/2 GoldBack Florida](https://imgur.com/a/KcF7GYO) 78x -$4.67
1/10oz Silver
[Guinea 2024 1/10oz](https://imgur.com/a/GGsuj3S) \-$10
[New Guinea 2020 1/10oz](https://imgur.com/a/DpzPdPX) 30x - $10
[Britannia 2014 1/10oz](https://imgur.com/a/M0rjs7t) \-$13
1/4oz Silver
[Noah’s Ark 2014 1/4oz](https://imgur.com/a/sjCdtJl) \-$26
1/2oz Silver
[Polar Bear 2019 1/2oz](https://imgur.com/a/SeRt6gl) \- $41
[Dragon 2012 1/2oz](https://imgur.com/a/qERYqSR) 2x - $47
[Mickey Mouse in Box 1/2oz](https://imgur.com/a/FRJ8hJh) \- $60
1oz Silver
[Liberty Round 1oz](https://imgur.com/a/FkUQUNZ) \-$75
[2021 Kangaroo 1oz](https://imgur.com/a/cjbICen) \- $76
[2015 Philharmonic 1oz](https://imgur.com/a/NQbSFJc) \- $75
[2001 Maple 1oz](https://imgur.com/a/TcYE252) \- $78
[Rooster Bar 2017 1oz](https://imgur.com/a/5m2RGad) \-$81
[Trafalgar Square 2018 1oz](https://imgur.com/a/LFsQIL4) \-$81
[Solomon Island JFK 2017 1oz](https://imgur.com/a/XgUipaR) \-$81
[Dalmatian Coin 1oz](https://imgur.com/a/3WCSgeA) \-$81
[Canadian Wolf 2011 1oz](https://imgur.com/a/MZ7Qxvm) \-$81
[Komsco Phoenix 2020 1oz](https://imgur.com/a/fUdenTi) \-$81
[Silverback 2022 1oz](https://imgur.com/a/jWeuxTf) \-$81
[1984 Englehard Prospector 1oz](https://imgur.com/a/398E4TR) \- $85
[Snake 2025 1oz](https://imgur.com/a/p3TWECW) \-$90
[Dragon 2024 1oz](https://imgur.com/a/YqHT5W6) \-$90
[2021 Perth Dragon Bar](https://imgur.com/a/Y9YU7rY) \- $88
ASE
[1987 ASE in Case](https://imgur.com/a/EaFtMc9) \- $80
[1987 ASE in Case](https://imgur.com/a/YTIbDjW) \- $80
[1988 ASE in Case](https://imgur.com/a/Ewdj3pq) \- $80
[1989 ASE Proof](https://imgur.com/a/4yKeHTT) \- $92
[1989 ASE in Case](https://imgur.com/a/huU1zoD) \- $80
[1990 ASE](https://imgur.com/a/ZLDdS0T) \- $80
[1992 ASE in Case](https://imgur.com/a/QlmSCRE) \- $80
[1993 ASE in Case](https://imgur.com/a/6cSSzpx) \- $80
[1996 ASE in Case](https://imgur.com/a/EPUIr3m) \- $80
[1999 ASE in Case](https://imgur.com/a/cJdOoRo) \- $80
[1999 ASE](https://imgur.com/a/PQLa0ZN) \- $80
[2011 ASE](https://imgur.com/a/mR730u5) \- $80
[2014 ASE in Case](https://imgur.com/a/GpHtOo4) \- $80
[2025 ASE in Case](https://imgur.com/a/cCGD7ko) \- $80
Silver Lots
[Vegas 3 Piece Set 15g total](https://imgur.com/a/B66Ik2Q) \- $60
[Gieger 5g, 10g, 20g set (flawed 20g)](https://imgur.com/a/2tn7Hd2) \-$135
[Buffalo 1/10,1/4,1/2,1oz lot](https://imgur.com/a/icCjq87) \- $180
Grams
[Smiley Face 1g](https://imgur.com/a/ezfc95V) \- $4
[Flag 1g](https://imgur.com/a/nVfNQN4) \- $4
[Ice Cream 1g](https://imgur.com/a/HdfxKWE) \- $4
[8 Ball 1g](https://imgur.com/a/mjqJ5xI) \- $4
[Valcambi 1g](https://imgur.com/a/Jpbrw5y) \- $5
[Bullet 1g](https://imgur.com/a/RyXutd3) 3x - $5 each
[Buffalo 1g](https://imgur.com/a/FD1Tftc) \- $7
[Scottsdale 1g](https://imgur.com/a/eQ2ss6J) \- $7
Other Weights
[Royal Flush Poker Chip .6oz](https://imgur.com/a/SgSW6Ym) \- $45
Copper
[1oz Cannabis Round](https://imgur.com/a/bbeVvsN) 20x - $3 each or tube for $35
[1oz Morgan Round](https://imgur.com/a/HqL5OAy) 20x $4 each or tube for $40
[1oz Alligator Round](https://imgur.com/a/4EXRYrd) 40x - $5 each or tube for $50
[1oz Panther Round](https://imgur.com/a/jjCpWcw) 20x - $5 each or tube for $50
[1oz T-Rex Round](https://imgur.com/a/fxmJq4A) 20x - $5 each or tube for $50
[1oz Alien “We Will Be Back”](https://imgur.com/a/1Ue4RQZ) 20x - $5 each or tube for $50
[Penny Replica](https://imgur.com/a/y5u9gdh) 20x - $5 each or tube for $50
If you find any typos, missing prices, or any links not working let me know!
!!WATCH OUT FOR SCAMMERS!!
I have been told a couple times I was being impersonated so double check who you are messaging. I will never message you first and I won’t reply if you don’t leave a chat on this post
Also I’m always open to trades for Silvertowne Poker Chips! I’m craving some at all times.
sentiment 0.76
1 day ago • u/It-hurts-whenIP • r/wallstreetbets • daily_discussion_thread_for_may_01_2026 • C
HOW THOSE PUTS WORKING OUT FOR YOU BEARS
My gosh you guys are a special kind of regard
sentiment -0.14
1 day ago • u/GuyFieriFrostedTips • r/wallstreetbets • daily_discussion_thread_for_may_01_2026 • C
Want to troll Scott Jennings X and Threads feeds but I’m confident people are way ahead of me…
GET YOUR FUCKING HAND OUT OF MY FACE!
sentiment 0.69
2 days ago • u/Alive_Cod5197 • r/OKX • new_listing_spot_trading_competition • C
DO NOT USE THIS SERVICE! ONCE YOU PUT YOUR MONEY IN YOU WILL NEVER BE ABLE TO GET IT OUT. LUCKILY I LATER GET MY MONENY BACK AFTER SHOWING MY TRANSACTION RECORD TO.(Bqwf.uk) BUT I CAN ONLY IMAGINE OTHER PEOPLE WHO DON’T KNOW WHERE TO SOLVE IT
sentiment -0.34
2 days ago • u/CaptainConducto • r/Finanzen • scalable_tagesgeld_integration_in • C
```lua
WebBanking{
version = 1.0,
url = "https://de.scalable.capital",
services = {"Scalable Capital (Tagesgeld)"},
description = "Fragt das Scalable Capital Tagesgeldkonto ab"
}
local connection
local globalUserId = nil
local cachedQueryResult = nil
function SupportsBank (protocol, bankCode)
return protocol == ProtocolWebBanking and bankCode == "Scalable Capital (Tagesgeld)"
end
local function graphqlRequest(url, operationName, variables, query)
local payload = {
operationName = operationName,
variables = variables,
query = query
}
local postContent = JSON():set(payload):json()
local content, charset, mimeType, filename, headers = connection:request(
"POST",
url,
postContent,
"application/json",
{ ["Accept"] = "application/json", ["Content-Type"] = "application/json" }
)
if content == nil or content == "" then return nil end
return JSON(content):dictionary()
end
function InitializeSession (protocol, bankCode, username, reserved, password)
connection = Connection()
MM.printStatus("Lade Scalable Login-Seite...")
local content = connection:get("https://de.scalable.capital/secure-login")
local html = HTML(content)
local stateParam = html:xpath("//input[@name='state']"):attr("value")
if not stateParam or stateParam == "" then
return "Fehler: Auth0 State-Parameter konnte nicht ermittelt werden."
end
MM.printStatus("Sende Anmeldedaten...")
local postContent = "state=" .. MM.urlencode(stateParam) .. "&username=" .. MM.urlencode(username) .. "&password=" .. MM.urlencode(password) .. "&action=default"
local mfaCheckContent = connection:request(
"POST",
"https://secure.scalable.capital/u/login?state=" .. stateParam .. "&ui_locales=de",
postContent,
"application/x-www-form-urlencoded"
)
local userId
local nextDataJson = string.match(mfaCheckContent, '<script id="__NEXT_DATA__" type="application/json"[^>]*>(.-)</script>')
if nextDataJson then
local nextData = JSON(nextDataJson):dictionary()
if nextData and nextData.props and nextData.props.pageProps then
userId = nextData.props.pageProps.userId
end
else
-- Neues Next.js App Router Format (__next_f)
-- Die Werte sind meist escaped, da sie noch in einem JS-String verpackt sind: {\"userId\":\"b2p...\"}
userId = string.match(mfaCheckContent, '\\"userId\\":\\"([%w%-_]+)\\"')
end
if not userId then
return LoginFailed
end
globalUserId = userId
MM.printStatus("Prüfe 2FA / MFA Status...")
local mfaStatus = graphqlRequest(
"https://de.scalable.capital/auth/graphql",
"is2faOnLoginEnabled",
{ input = { userId = userId } },
"query is2faOnLoginEnabled($input: Is2faOnLoginEnabledInput!) { is2faOnLoginEnabled(input: $input) { enabled } }"
)
if mfaStatus and mfaStatus.data and mfaStatus.data.is2faOnLoginEnabled and mfaStatus.data.is2faOnLoginEnabled.enabled then
MM.printStatus("Fordere Bestätigung über Scalable App an...")
local startMfa = graphqlRequest(
"https://de.scalable.capital/auth/graphql",
"start2faOnLogin",
{ input = { userId = userId, deviceType = "Mac OS", deviceName = "MoneyMoney" } },
"mutation start2faOnLogin($input: Start2faOnLoginInput!) { start2faOnLogin(input: $input) { mfaSessionId } }"
)
if not startMfa or not startMfa.data or not startMfa.data.start2faOnLogin then
return "Fehler beim Starten des 2FA-Prozesses."
end
local mfaSessionId = startMfa.data.start2faOnLogin.mfaSessionId
local mfaConfirmed = false
local timeout = 20
for i = 1, timeout do
MM.printStatus("Warte auf App-Freigabe... (" .. i .. "/" .. timeout .. ")")
local validateMfa = graphqlRequest(
"https://de.scalable.capital/auth/graphql",
"validate2faOnLogin",
{ input = { userId = userId, mfaSessionId = mfaSessionId } },
"mutation validate2faOnLogin($input: Validate2faOnLoginInput!) { validate2faOnLogin(input: $input) { status } }"
)
if validateMfa and validateMfa.data and validateMfa.data.validate2faOnLogin then
local s = validateMfa.data.validate2faOnLogin.status
if s == "SUCCESS" then
mfaConfirmed = true
break
elseif s ~= "PENDING" then
return "2FA-Freigabe abgelehnt oder fehlgeschlagen."
end
end
MM.sleep(3)
end
if not mfaConfirmed then
return "2FA-Bestätigung in der App abgelaufen."
end
MM.printStatus("2FA erfolgreich!")
end
return nil
end
local function getInitialQueryResult()
if cachedQueryResult then return cachedQueryResult end
local content = connection:get("https://de.scalable.capital/cockpit/")
local nextDataJson = string.match(content, '<script id="__NEXT_DATA__" type="application/json"[^>]*>(.-)</script>')
if not nextDataJson then return nil end
local nextData = JSON(nextDataJson):dictionary()
if nextData and nextData.props and nextData.props.pageProps and nextData.props.pageProps.middlewareProps then
local m5 = nextData.props.pageProps.middlewareProps.m5
if m5 and m5.initialQueryResult then
cachedQueryResult = m5.initialQueryResult
return cachedQueryResult
end
end
return nil
end
function ListAccounts (knownAccounts)
MM.printStatus("Lade Kontenübersicht...")
local accounts = {}
local queryResult = getInitialQueryResult()
if queryResult then
for key, value in pairs(queryResult) do
if type(value) == "table" and value.savingsAccounts then
for _, savingsRef in ipairs(value.savingsAccounts) do
local sAcc = queryResult[savingsRef.__ref]
if sAcc and sAcc.state == "ACTIVE" then
local aName = "Tagesgeld"
if sAcc.personalizations and sAcc.personalizations.__ref then
local pInfo = queryResult[sAcc.personalizations.__ref]
if pInfo and pInfo.name then aName = pInfo.name end
end
table.insert(accounts, {
name = "Scalable Capital " .. aName,
owner = "Scalable Capital",
accountNumber = "SC-TG-" .. sAcc.id,
currency = "EUR",
type = AccountTypeSavings
})
end
end
end
end
end
if #accounts == 0 then
-- Fallback, um zumindest etwas in MoneyMoney anzuzeigen, falls Parsing fehlgeschlagen ist
table.insert(accounts, {
name = "Scalable Capital Tagesgeld (Nicht gefunden)",
accountNumber = "SC-TG-UNKNOWN",
currency = "EUR",
type = AccountTypeSavings
})
end
return accounts
end
function RefreshAccount (account, since)
local result = { balance = 0.00, transactions = {} }
if account.type == AccountTypeSavings then
MM.printStatus("Lade Saldo...")
local rawAccountId = string.match(account.accountNumber, "SC%-TG%-(.+)")
local queryResult = getInitialQueryResult()
if queryResult then
for key, value in pairs(queryResult) do
if type(value) == "table" and value.savingsAccounts then
for _, savingsRef in ipairs(value.savingsAccounts) do
local sAcc = queryResult[savingsRef.__ref]
if sAcc and ("SC-TG-" .. sAcc.id) == account.accountNumber then
result.balance = sAcc.totalAmount or 0.00
end
end
end
end
end
if rawAccountId then
MM.printStatus("Lade Transaktionen...")
local tUrl = "https://de.scalable.capital/interest/" .. rawAccountId .. "/transactions/"
local resp = connection:get(tUrl)
if resp then
-- Versuche die Transactions als unescaped JSON Array zu extrahieren (`ApolloSSRDataTransport`)
local txsMatch = string.match(resp, '"transactions":(%b[])')
-- Falls nicht gefunden, versuche die escaped Variante (`self.__next_f.push`)
if not txsMatch then
txsMatch = string.match(resp, '\\"transactions\\":(%b[])')
if txsMatch then
txsMatch = string.gsub(txsMatch, '\\"', '"')
txsMatch = string.gsub(txsMatch, '\\\\', '\\')
end
end
if txsMatch and string.len(txsMatch) > 2 then
-- Um das Array parsen zu können, packen wir es in ein Objekt
local txData = JSON('{"tx":' .. txsMatch .. '}'):dictionary()
if txData and txData.tx then
for _, tx in ipairs(txData.tx) do
local amount = tonumber(tx.amount) or 0
-- Überprüfe den Transaktionstyp für negative Beträge
local typeStr = tx.cashTransactionType or tx.type or ""
if typeStr == "WITHDRAWAL" or typeStr == "CASH_TRANSFER_OUT" or typeStr == "FEE" or typeStr == "TAX" then
if amount > 0 then
amount = -amount -- Ausgaben immer als negativ setzen
end
end
-- Datum parsen
local bookingDate = os.time()
if tx.lastEventDateTime then
local year, month, day = string.match(tx.lastEventDateTime, "(%d%d%d%d)%-(%d%d)%-(%d%d)")
if year and month and day then
bookingDate = os.time({year=year, month=month, day=day})
end
end
table.insert(result.transactions, {
name = tx.description,
bookingDate = bookingDate,
purpose = typeStr,
amount = amount,
bookingText = tx.status
})
end
end
end
end
end
end
return result
end
function EndSession ()
-- Logout-Request entfernt, da er einen 404-Fehler auslöste
-- Die Session wird nach einer gewissen Zeit ohnehin via Token-Ablauf ungültig - YOLO!
end
```
sentiment 0.31


Share
About
Pricing
Policies
Markets
API
Info
tz UTC-4
Connect with us
ChartExchange Email
ChartExchange on Discord
ChartExchange on X
ChartExchange on Reddit
ChartExchange on GitHub
ChartExchange on YouTube
© 2020 - 2026 ChartExchange LLC