Boxofficemojo Scraper
Pricing
from $3.80 / 1,000 results
Boxofficemojo Scraper
Get real box office data from Box Office Mojo: yearly and all-time domestic/worldwide charts, full per-movie financials (budget, distributor, MPAA, ROI, and a real country-by-country gross breakdown), or both at once with a whole year's top movies fully priced out - no titles to type in.
Pricing
from $3.80 / 1,000 results
Rating
0.0
(0)
Developer
Norm Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share

Box Office Mojo Scraper
Get real box office data from Box Office Mojo with no login: a whole domestic/worldwide chart for one year or all-time, optionally with full per-movie financials added to every row - no titles to type in - or full financials for specific titles you do list.
Here is one real row (chart mode with includeMovieDetails, no title typed by the caller):
{"rank": 1,"title": "Inside Out 2","imdb_id": "tt22022452","domestic_distributor": "Walt Disney Studios Motion Pictures","budget": 200000000,"mpaa": "PG","running_time_minutes": 96,"genres": ["Adventure", "Animation", "Comedy", "Drama", "Family", "Fantasy", "Sport"],"domestic_gross": 652980194,"international_total": 1045883622,"worldwide_total": 1698863816,"roi": 8.494,"profit": 1498863816,"international_grosses": [{ "country": "United Kingdom", "release_date": "Jun 12, 2024", "opening": 12400000, "gross": 85500000 },{ "country": "Japan", "release_date": "Aug 1, 2024", "opening": 4200000, "gross": 36685528 }],"chart_area": "domestic","chart_period": "year","scraped_at": "2026-09-14T00:00:00.000Z"}
What it does
Reads Box Office Mojo's own public pages directly and normalizes them into clean, flat rows.
- Chart mode returns a full ranking: one year's domestic chart, one year's worldwide chart, or
the all-time top 200 for either area. Domestic and worldwide are genuinely different rankings, not
the same list with a label swapped. Turn on
includeMovieDetailsto add full financials to every row automatically - each row's own title is looked up for you, nothing to type in. - Movie mode takes a title or an IMDb ID and returns budget, distributor, MPAA rating, genres, running time, domestic/international/worldwide gross, computed ROI and profit, and a real country-by-country international gross breakdown - for specific titles you already know.
Missing source values are returned as null, never invented.
Why this scraper
- The only one of the three real Box Office Mojo Actors on Apify that does both movie financials
and chart rankings - and the only one that can combine them in one request. One competitor only
does charts (worldwide, no domestic chart at all). The other only does movie financials, one title
at a time (no chart mode at all, so no way to get a whole year's movies without already knowing
every title).
includeMovieDetailsgets a year's top movies with full financials from one request. - A real country-by-country international breakdown, not a single number worked out by subtracting domestic from worldwide.
- Reliable domestic/international/worldwide totals on every title, including classic movies with multiple theatrical re-releases, where an approach built only around the single-release country table returns nothing for the totals.
- No API key, no login, no browser. Reads only what a normal visitor's page load reads.
How it compares
Checked directly against both real Box Office Mojo scrapers on Apify (their own declared input/output, not a guess):
| Capability | This actor | parseforge/boxofficemojo-world-scraper | trovevault/movie-box-office-tracker |
|---|---|---|---|
| Movie financials (budget, distributor, MPAA, opening, ROI/profit) | yes | no | yes |
| Real per-country international breakdown | yes | no | no (derived as a subtraction) |
| Domestic yearly chart | yes | no | no |
| Worldwide yearly chart | yes | yes | no |
| All-time chart, both domestic and worldwide | yes | worldwide only | no |
| Full financials for a whole chart, no titles typed in | yes | no | no (one title at a time only) |
| Theater count on year charts | yes | yes | n/a |
maxItems cap | yes | yes | n/a |
| Declared Apify dataset schema | yes | not documented | not documented |
Use cases
- Film industry analysis. Budget, ROI, and profit across a slate of titles.
- International distribution research. Real country-level opening and gross figures.
- Box office journalism and content. A year's chart, or a title's full financial profile, ready to drop into a story or chart.
- Studio and distributor benchmarking. Compare domestic vs. international performance by title, genre, or distributor.
- Historical analysis. All-time domestic and worldwide top 200, compared side by side.
Quickstart
A year's top movies with full financials - no titles to type in:
{ "mode": "chart", "period": "year", "year": 2024, "area": "domestic", "includeMovieDetails": true }
A year's domestic chart, bare (just the ranking):
{ "mode": "chart", "period": "year", "year": 2024, "area": "domestic" }
A movie's full financials, by title:
{ "mode": "movie", "titles": ["Inside Out 2", "Dune: Part Two"] }
A movie by direct IMDb ID:
{ "mode": "movie", "imdbIds": ["tt22022452"] }
A year's worldwide chart:
{ "mode": "chart", "period": "year", "year": 2024, "area": "worldwide" }
The all-time worldwide top 200:
{ "mode": "chart", "period": "alltime", "area": "worldwide" }
Input reference
| Field | Applies to | Description |
|---|---|---|
maxItems | all | Ceiling on rows written. |
mode | all | movie or chart. |
titles / imdbIds | movie | Free-text titles (resolved automatically) or direct IMDb IDs. |
period | chart | year or alltime. |
year | chart, period = year | The year's chart to pull (1977 onward). |
area | chart | domestic or worldwide. |
includeMovieDetails | chart | Adds full movie-mode fields to every chart row by looking up each row's own title - no titles typed in. Billed as its own event per row (real extra requests a bare chart pull doesn't need). |
Output reference (selected)
| Field | Description |
|---|---|
imdb_id / title / url | Identity. |
domestic_distributor / budget / mpaa / running_time_minutes / genres | Movie profile. |
domestic_opening / domestic_gross / international_total / worldwide_total | Movie mode financials. |
roi / profit | Computed: worldwide_total / budget and worldwide_total - budget. |
international_grosses | Movie mode: one entry per country with release date, opening, and gross. |
rank / total_gross / worldwide_gross / lifetime_gross | Chart mode ranking fields (which one is populated depends on period/area). |
theaters / distributor / release_date / is_estimated | Chart mode, year charts. |
chart_area / chart_period | Which chart a row came from. |
query / error | Set on an unresolved movie lookup. |
scraped_at | ISO 8601 collection timestamp. |
Run via API and CLI
curl -X POST "https://api.apify.com/v2/acts/USERNAME~boxofficemojo-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"mode":"movie","titles":["Inside Out 2"]}'
$apify call USERNAME/boxofficemojo-scraper --input '{"mode":"chart","period":"year","year":2024,"area":"domestic"}'
Fetch results
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
Billing and limits
- Pay per result. Billed per row written (one row per movie in movie mode; one row per chart entry in chart mode).
includeMovieDetailsis billed as a separate event, once per chart row it successfully enriches - it costs real extra requests a bare chart pull doesn't need, so it isn't folded into the base row price. A row it fails to enrich is left as chart-only and not charged for the add-on.- No charge on failure. A run that produces zero rows fails with a message and is not billed.
- An unresolved title/ID still writes one
error: "not found"row and is billed as a base row. - Free Apify plans run the built-in 10-row sample only.
FAQ and troubleshooting
Do I need an API key? No. Box Office Mojo's own public pages are read directly, with no key and no login.
Why did my title search return "not found"? The title didn't resolve to a real movie. Try adding
the release year to the title, or use imdbIds with the exact ID.
What if two different movies share the exact same title? This does happen (remakes, franchise
reboots) - add the release year to the title (e.g. "Moana 2016") to disambiguate, or use imdbIds
directly for guaranteed precision. This is a real limit of title-based lookup on any service, not
something specific to this Actor.
Why does domestic mean something different in movie mode vs. chart mode? In movie mode,
domestic_gross is that title's own real domestic total across every theatrical release it's ever
had. In chart mode, domestic_gross only appears on a worldwide chart row, showing that title's
domestic share of the year being charted.
Why are some international_grosses countries missing for older titles? Box Office Mojo itself
only started tracking per-country detail for more recent releases - the domestic/international/
worldwide totals are still real and complete either way, just without a full per-country list on
older titles.
Are domestic and worldwide charts the same list? No. They are genuinely different real rankings
- a title's domestic hit and its worldwide hit are not always the same movie.
How current is the data? Read live from Box Office Mojo on every run. It is not cached.
Is this an official Box Office Mojo/IMDb tool? No. Independent, not affiliated with either. It reads only publicly available pages.
Local development
bun installbun test # offline: chart/movie parsing, normalization (real fixtures)bun run src/main.ts # reads storage/key_value_stores/default/INPUT.json