
#1
72 tracked markets
Source: BNBCalc market metadata · Reviewed by Parker Place, CTO of BNBCalc.com · Data updated October 7, 2026
Cabo San Lucas is the top Mexico short-term rental market across Airbnb and Vrbo by annual revenue. Average-tier listings in Cabo San Lucas earn $1,229,412 a year on average, with 34% occupancy at an average daily rate of $9,305. Cabo San Lucas has 7,310 average active listings.
Top revenue market
Cabo San Lucas
$1.2M
Median annual revenue
$298.1K
Average listing revenue
Median occupancy
30%
Adjusted occupancy
Tracked markets
72
Countrywide market coverage

#1

#2

#3

#4

#5

#6

#7

#8

#9

#10
Every market below links to its full BNBCalc market page. Non-US country rankings use annual revenue first because gross yield requires property value metadata that is currently US-only.
Average active listings is the average number of Airbnb and Vrbo listings active in a market each month over the last 12 months, the same figure you'll see on that market's page. Annual revenue is total market revenue over the last 12 months divided by that average, and it already includes cleaning fees.
| Rank | Market | Annual revenue | Monthly revenue | ADR | Occupancy | Average active listings |
|---|---|---|---|---|---|---|
| #1 | Cabo San Lucas | $1,229,412 | $102,451 | $9,305 | 34% | 7,310 |
| #2 | Sayulita | $831,380 | $69,282 | $5,973 | 35% | 5,311 |
| #3 | Los Barilles | $806,719 | $67,227 | $6,123 | 38% | 441 |
| #4 | Holbox | $669,065 | $55,755 | $3,467 | 41% | 579 |
| #5 | Puerto Vallarta | $581,243 | $48,437 | $4,157 | 38% | 9,319 |
| #6 | Valle de Bravo | $557,956 | $46,496 | $4,875 | 26% | 1,425 |
| #7 | Puerto Peñasco | $527,280 | $43,940 | $4,705 | 24% | 4,249 |
| #8 | Guaymas | $503,057 | $41,921 | $3,899 | 27% | 1,183 |
| #9 | Cozumel | $500,424 | $41,702 | $3,801 | 35% | 1,484 |
| #10 | Puerto Escondido | $498,907 | $41,576 | $2,594 | 42% | 2,658 |
| #11 | Cancun | $491,412 | $40,951 | $2,932 | 40% | 6,463 |
| #12 | La Paz | $489,290 | $40,774 | $2,447 | 44% | 2,261 |
| #13 | Punta Ixtapa | $459,707 | $38,309 | $4,298 | 30% | 2,424 |
| #14 | Malinalco | $441,916 | $36,826 | $4,466 | 23% | 440 |
| #15 | Mexico City | $441,853 | $36,821 | $2,077 | 52% | 19,318 |
| #16 | Acapulco | $412,981 | $34,415 | $3,016 | 30% | 5,078 |
| #17 | Huatulco | $410,133 | $34,178 | $3,121 | 33% | 1,175 |
| #18 | San Miguel de Allende | $394,294 | $32,858 | $3,223 | 31% | 2,006 |
| #19 | La Manzanilla | $378,387 | $31,532 | $3,138 | 29% | 1,658 |
| #20 | Chetumal | $373,066 | $31,089 | $2,555 | 31% | 1,246 |
| #21 | Tulum | $349,378 | $29,115 | $2,772 | 28% | 8,395 |
| #22 | Playa del Carmen | $346,406 | $28,867 | $2,674 | 35% | 10,933 |
| #23 | Cuernavaca | $344,151 | $28,679 | $3,087 | 25% | 5,733 |
| #24 | Ensanada | $339,275 | $28,273 | $2,832 | 26% | 2,347 |
| #25 | Rosarito | $337,332 | $28,111 | $3,459 | 22% | 2,072 |
| #26 | Lago de Chapala | $326,768 | $27,231 | $3,017 | 28% | 1,154 |
| #27 | Mazamitla | $316,773 | $26,398 | $2,757 | 25% | 1,431 |
| #28 | Progreso | $315,536 | $26,295 | $2,630 | 33% | 1,404 |
| #29 | Ensenada | $314,312 | $26,193 | $2,817 | 26% | 408 |
| #30 | Loreto | $313,474 | $26,123 | $2,856 | 30% | 626 |
| #31 | Parras | $308,715 | $25,726 | $3,970 | 18% | 459 |
| #32 | El Cuyo | $305,521 | $25,460 | $2,317 | 32% | 292 |
| #33 | Jojutla de Juárez | $304,460 | $25,372 | $2,954 | 21% | 1,073 |
| #34 | Oaxaca | $301,524 | $25,127 | $1,832 | 39% | 3,876 |
| #35 | Tomatlan | $299,886 | $24,991 | $2,666 | 29% | 308 |
| #36 | Tepic | $298,939 | $24,912 | $2,371 | 30% | 931 |
| #37 | Pochutla | $297,298 | $24,775 | $2,310 | 31% | 1,289 |
| #38 | San Felipe | $297,112 | $24,759 | $3,731 | 17% | 654 |
| #39 | Tapalpa | $270,454 | $22,538 | $3,452 | 18% | 831 |
| #40 | Merida | $245,931 | $20,494 | $1,416 | 41% | 4,085 |
| #41 | Tijuana | $241,285 | $20,107 | $1,692 | 33% | 1,854 |
| #42 | Monterrey | $239,792 | $19,983 | $1,556 | 36% | 5,289 |
| #43 | Mazatlan | $236,583 | $19,715 | $2,126 | 27% | 5,809 |
| #44 | Guadalajara | $209,157 | $17,430 | $1,333 | 37% | 7,420 |
| #45 | Tampico | $202,598 | $16,883 | $1,358 | 31% | 1,091 |
| #46 | Querétaro | $180,932 | $15,078 | $1,340 | 34% | 3,742 |
| #47 | Veracruz | $180,152 | $15,013 | $1,336 | 30% | 2,130 |
| #48 | Hermosillo | $171,233 | $14,269 | $1,193 | 31% | 1,335 |
| #49 | Mexicali | $153,394 | $12,783 | $1,310 | 30% | 477 |
| #50 | Guanajuato | $149,439 | $12,453 | $1,364 | 29% | 1,365 |
| #51 | Chihuahua | $147,711 | $12,309 | $1,055 | 33% | 893 |
| #52 | Valladolid | $143,495 | $11,958 | $1,287 | 26% | 706 |
| #53 | Campeche | $141,925 | $11,827 | $1,262 | 26% | 554 |
| #54 | Puebla | $134,992 | $11,249 | $1,017 | 32% | 2,754 |
| #55 | Durango | $132,499 | $11,042 | $942 | 33% | 512 |
| #56 | Colima | $131,979 | $10,998 | $1,059 | 31% | 464 |
| #57 | León | $131,773 | $10,981 | $1,100 | 31% | 1,506 |
| #58 | Aguascalientes | $129,644 | $10,804 | $1,123 | 30% | 999 |
| #59 | Ciudad Obregón | $126,311 | $10,526 | $1,106 | 27% | 406 |
| #60 | San Luis Potosi | $124,627 | $10,386 | $995 | 32% | 1,213 |
| #61 | Saltillo | $118,516 | $9,876 | $1,159 | 28% | 593 |
| #62 | Fresnillo | $116,513 | $9,709 | $1,000 | 29% | 487 |
| #63 | San Cristóbal de las Casas | $116,071 | $9,673 | $955 | 30% | 985 |
| #64 | Morelia | $115,676 | $9,640 | $993 | 28% | 1,332 |
| #65 | Tlaxcala | $114,230 | $9,519 | $1,638 | 18% | 600 |
| #66 | Zaragoza | $113,735 | $9,478 | $1,435 | 19% | 920 |
| #67 | Orizaba | $106,726 | $8,894 | $954 | 27% | 623 |
| #68 | Matamoros | $99,459 | $8,288 | $1,012 | 25% | 386 |
| #69 | Irapuato | $98,007 | $8,167 | $976 | 30% | 401 |
| #70 | Xalapa | $96,126 | $8,011 | $876 | 28% | 677 |
| #71 | Tuxtla Gutiérrez | $90,287 | $7,524 | $828 | 26% | 383 |
| #72 | Culiacán | $89,732 | $7,478 | $965 | 26% | 523 |
Outside the US, BNBCalc ranks country market pages by average annual revenue until property-value coverage is available for international gross yield. Annual revenue is useful for identifying demand and pricing power, but investors should still review acquisition cost, taxes, seasonality, regulations, and operating expenses before comparing returns.