A powerful Chrome extension to extract post data from X.com (formerly Twitter) with advanced analytics, CSV export, and anti-detection features.
- Mass Data Collection: Extract up to 1000 posts in a single session
- Smart Metadata Capture: Automatically captures author, text, timestamps, engagement metrics, and media URLs
- Flexible Targeting: Works on any X.com page (timelines, profiles, search results, hashtags)
- Real-time Progress: Live progress tracking with current/total counters
- Human-like Scrolling: Randomized scroll patterns with natural delays (500-2000ms)
- Scroll Jitter: Variable scroll distances (200-500px) with random offsets
- Smooth Animation: Easing functions for natural scroll behavior
- Rate Limiting Protection: Exponential backoff for 429/403 errors
- Smart Throttling: Random delays (1000-3000ms) between data requests
- Strategic Pauses: Long breaks every 50 posts to avoid detection
- Viewport Simulation: Realistic scroll amounts based on visible content
- Time of Day Analysis: 24-hour chart showing posting patterns
- Weekly Patterns: Day-of-week breakdown with peak day detection
- Peak Time Detection: Automatically identifies your most active hours and days
- Date Range Filters: Analyze Last 7/30/90 days or All Time
- Interactive Charts: Hover tooltips with counts and percentages
- Percentage Breakdown: See distribution of posts across time periods
- CSV Export: Download all extracted data in spreadsheet format
- Complete Metadata: Includes all engagement metrics and media URLs
- ISO 8601 Timestamps: Standardized, parseable date formats
- Instant Download: One-click export with timestamped filenames
- Neobrutalism UI: Bold, modern interface with high contrast
- Responsive Design: Works perfectly on all screen sizes
- Smooth Animations: Polished transitions and interactions
- Accessibility: WCAG AA compliant colors and keyboard navigation
Extract posts with real-time progress tracking
Visualize your posting patterns with interactive charts
- Google Chrome or Microsoft Edge (version 90+)
- Node.js (version 16+) - Only for development
- npm or bun - Only for development
- Download the latest release from Releases
- Unzip the downloaded file
- Open Chrome and navigate to
chrome://extensions/ - Enable "Developer mode" (toggle in top-right)
- Click "Load unpacked" and select the
distfolder - The extension icon will appear in your toolbar
# Clone the repository
git clone https://github.com/behnamebrahimi/x-extractor-extension.git
cd x-extractor-extension
# Install dependencies
npm install
# or
bun install
# Build the extension
npm run build
# or
bun run build
# Load the dist/ folder in Chrome as described aboveAfter installation, you should see the X.com Data Extractor icon in your Chrome toolbar. Click it while on X.com to verify it's working.
- Navigate to X.com: Open any page with posts (timeline, profile, search, etc.)
- Open Extension: Click the extension icon in your toolbar
- Set Limit: Choose how many posts to extract (1-1000)
- Start Extraction: Click "Start Extraction" button
- Wait for Completion: The extension will automatically scroll and collect posts
- View Results: Extracted posts appear in the preview section
After extracting posts:
- Click "π Show Analytics" button
- View your peak posting times in the summary cards
- Explore the Time of Day chart to see hourly patterns
- Check the Day of Week chart for weekly trends
- Use the date range filter to focus on specific periods
- Click "Export to CSV" button at the bottom
- File downloads automatically as
x-posts-YYYY-MM-DD-HHmmss.csv - Open in Excel, Google Sheets, or any CSV-compatible tool
// For long threads: Start from the top and extract down
// For user profiles: Extract from their timeline
// For search results: Use specific keywords or hashtags
// For trending topics: Navigate to Explore page- Start small: Test with 50-100 posts first
- Respect rate limits: Wait 10-15 minutes between large extractions
- Off-peak hours: Extract during low-traffic times for better success
- Incognito mode: Consider using incognito to avoid profile-based rate limits
- Regular exports: Save data frequently to avoid losing progress
| Setting | Range | Default | Description |
|---|---|---|---|
| Post Limit | 1-1000 | 100 | Maximum posts to extract |
| Timeout | N/A | 30 min | Maximum extraction duration |
| Scroll Delay | 500-2000ms | Random | Time between scrolls |
| Request Delay | 1000-3000ms | Random | Time between post processing |
| Pause Threshold | N/A | 50 posts | Posts before long pause |
| Filter | Options | Description |
|---|---|---|
| Date Range | 7/30/90 days, All Time | Filter posts by date |
| Chart Type | Bar (default) | Visualization type |
| Peak Detection | Auto | Highlights peak times |
x-extractor-extension/
βββ src/
β βββ components/ # React components
β β βββ AnalyticsDashboard.jsx
β β βββ TimeOfDayChart.jsx
β β βββ DayOfWeekChart.jsx
β β βββ ExtractorPanel.jsx
β β βββ PostPreview.jsx
β β βββ ExportButton.jsx
β βββ content/ # Content scripts
β β βββ content-script.js
β βββ background/ # Background scripts
β β βββ service-worker.js
β βββ popup/ # Extension popup
β β βββ App.jsx
β β βββ main.jsx
β β βββ index.html
β βββ utils/ # Utility functions
β β βββ extractor.js
β β βββ csvExporter.js
β β βββ timeAggregation.js
β β βββ logger.js
β βββ styles/ # Stylesheets
β β βββ neobrutalism.css
β βββ __tests__/ # Unit tests
βββ public/ # Static assets
β βββ icons/
βββ dist/ # Built extension (generated)
βββ manifest.json # Extension manifest
βββ vite.config.js # Build configuration
βββ package.json # Dependencies
# Development build with watch mode
npm run dev
# Production build
npm run build
# Run tests
npm test
# Run tests in watch mode
npm test:watch- Framework: React 18.2.0
- Build Tool: Vite 5.0.0
- Charts: Chart.js 4.4.8
- Testing: Vitest 1.0.0
- Extension API: Chrome Manifest V3
- Create feature branch:
git checkout -b feature/my-feature - Make your changes in
src/ - Add tests in
src/__tests__/ - Run tests:
npm test - Build extension:
npm run build - Test in Chrome
- Commit and push:
git commit -am "Add feature" && git push - Create Pull Request
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/x-extractor-extension.git - Create a branch:
git checkout -b feature/amazing-feature - Make your changes and add tests
- Run tests:
npm test - Commit:
git commit -m "Add amazing feature" - Push:
git push origin feature/amazing-feature - Open a Pull Request
- Follow existing code conventions
- Use meaningful variable names
- Add comments for complex logic
- Write tests for new features
- Keep functions small and focused
- v1.1: Export to JSON and PDF formats
- v1.2: Heatmap visualization (hour Γ day grid)
- v1.3: Advanced filtering (by engagement, media type, etc.)
- v1.4: Sentiment analysis integration
- v1.5: Scheduling and automation features
- v2.0: Firefox and Safari support
- Large extractions (800+ posts) may timeout on slow connections
- Some promoted tweets may not be captured correctly
- Rate limits vary by account type and activity
See Issues for full list.
This project is licensed under the MIT License - see the LICENSE file for details.
- Chart.js for beautiful charts
- React for the UI framework
- Vite for lightning-fast builds
- The open-source community for inspiration and tools
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@example.com
If you find this project useful, please consider giving it a star on GitHub! It helps others discover the project and motivates us to keep improving it.
- Twitter API - Official Twitter API
- twint - Twitter scraping tool
- Social Analyzer - Social media analysis
Made with β€οΈ by Behnam Ebrahimi