Microsoft Teams Meeting Cost Tracker
Pricing
from $0.01 / 1,000 results
Microsoft Teams Meeting Cost Tracker
Calculate real-time meeting costs in Microsoft Teams. Analyze Teams calendar meetings, get "Could Have Been an Email" scores, and generate cost reports w/Adaptive Cards.This actor connects to Microsoft Graph API to analyze your Teams calendar "Could Have Been an Email" Score Meeting Culture Score
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer

John Rippy
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Calculate real-time meeting costs in Microsoft Teams. Analyze Teams calendar meetings, get 'Could Have Been an Email' scores, and generate cost reports. Perfect for organizations using Microsoft 365 who want to optimize meeting culture.
Features
- Microsoft Graph Integration: Secure OAuth connection to Teams/Outlook calendars
- Demo Mode: Test the actor without Azure credentials
- Multiple Output Formats: Full analysis, summary, or Teams Adaptive Card
- Multi-Currency Support: USD, EUR, GBP, CAD, AUD
- Recurring Meeting Detection: Identify high-cost recurring meetings
- Focus Time Analysis: Measure meeting fragmentation impact
Quick Start
{"input": "your input here"}
Demo Mode
Set demoMode: true to test with sample data (no charges). When you're ready for real results, set demoMode: false or omit it.
{"demoMode": true,...}
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| See input schema |
Output Format
Full Analysis
{"overview": {"platform": "Microsoft Teams","totalMeetings": 24,"totalHours": 42,"totalCost": 8400,"averageMeetingLength": 52,"averageAttendees": 4.2,"currency": "USD"},"meetingCultureScore": {"overall": 58,"breakdown": {"focusTime": 45,"asyncSuitability": 62}},"asyncCandidates": [{"subject": "Weekly Status Update","duration": 60,"attendees": 8,"cost": 384,"emailScore": 82,"recommendation": "Consider replacing with Teams chat, Loop component, or email"}],"recommendations": [{"priority": "high","action": "Convert \"Weekly Status Update\" to async","potentialSavings": 268,"rationale": "Email score of 82%, 8 attendees"}],"potentialSavings": 2100}
Teams Adaptive Card
Perfect for posting to Teams channels:
{"type": "AdaptiveCard","version": "1.4","body": [{"type": "TextBlock","text": "📊 Meeting Cost Report","weight": "bolder","size": "large"},...],"actions": [{"type": "Action.OpenUrl","title": "View Full Report","url": "https://meeting.localhowl.com"}]}
Pricing
This actor uses pay-per-event billing:
data_point: $0.01 per result
Use Cases
1. Weekly Team Reports
Post meeting cost summaries to a Teams channel:
const result = await apifyClient.actor("localhowl/teams-meeting-cost-tracker").call({tenantId: process.env.AZURE_TENANT_ID,clientId: process.env.AZURE_CLIENT_ID,clientSecret: process.env.AZURE_CLIENT_SECRET,userEmail: "team-lead@company.com",dateRange: "last_week",outputFormat: "teams_card"});// Post to Teams webhookawait fetch(TEAMS_WEBHOOK_URL, {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify(result.adaptiveCard)});
2. Organization-Wide Audit
Analyze multiple users' calendars:
const users = ["alice@co.com", "bob@co.com", "carol@co.com"];const results = [];for (const user of users) {const result = await apifyClient.actor("localhowl/teams-meeting-cost-tracker").call({tenantId: "...",clientId: "...",clientSecret: "...",userEmail: user,dateRange: "last_month"});results.push({ user, ...result });}// Aggregate insights across the organization
3. Power Automate Integration
Trigger weekly reports via Power Automate:
- Create a scheduled flow (weekly)
- Add HTTP action to call Apify API
- Post Adaptive Card to Teams channel
Common Problems & Solutions
"Invalid API key" error
Cause: Your API key is wrong, expired, or doesn't have the right permissions. Fix: Double-check your API key. Make sure you copied it exactly without extra spaces.
"Rate limit exceeded" error
Cause: You've hit the API's rate limits. Fix: Wait a few minutes, then try again. Consider reducing the number of concurrent requests.
Empty or incomplete results
Cause: The target may have anti-scraping protection or the data doesn't exist. Fix:
- Check if the URL/search query is correct
- Try with different parameters
- Some sites may block automated access
Demo data showing instead of real results
Cause: demoMode is still set to true.
Fix: Set demoMode: false and provide your API key(s).
Built by John Rippy | Actor Arsenal
