Jmty (ジモティー) API

Japan's biggest local classifieds board, as one JSON API

The Jmty API returns ジモティー — Japan's largest local classifieds board — as clean JSON, in five actions: search, listing, seller, categories and locations.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Jmty (ジモティー) endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
J
/jmty/v1

5 active endpoints, on 2 and 3 credit tiers.

  • POST/jmty/v1/search
  • POST/jmty/v1/listing
  • POST/jmty/v1/seller
  • POST/jmty/v1/categories
  • POST/jmty/v1/locations

What Jmty (ジモティー) endpoints does ReefAPI ship?

5 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

5 endpoints

search

3 cr

Search one of jmty's eleven ad spaces.

required
group
optional
keyword, prefecture, category, genre_id, city_id, city_slug, station_id, price_min, price_max, free_only, online_payment, page

listing

2 cr

Full detail of one ad.

required
—
optional
url, listing_id, group, category

seller

2 cr

One poster's public profile page.

required
seller_id
optional
—

categories

2 cr

The live category tree for one ad space, read from the source's own search form.

required
group
optional
—

locations

2 cr

The live location tree.

required
—
optional
—

Every parameter, every allowed value →

Jmty (ジモティー) API

5 of 5 endpoints, ready to run

View docs ↗

Live Jmty ads with the site's own matching total: ad id, URL, title, the exact headline line Jmty prints, the parsed yen price with its kind and basis, prefecture, city and nearest station, category and genre, posting and update day, favourite count and a photo. 50 organic rows per page, with paid placements kept in their own array and partner job tiles dropped and counted.

3 credits1 required · 12 optional
POST/jmty/v1/search
idle
// Press "Try it" and this pane shows exactly what the
// live site returned this second — including an empty
// result, if that is the truth. No key, no account.

How the Jmty (ジモティー) API works

Jmty (ジモティー) is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 438 engines.

02
Call
POST /jmty/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
2 or 3 credits per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Every free giveaway in one Tokyo ward, with the full ad and the poster's track record

Four calls: locations, then categories, then search, then listing.

01locations
POST/jmty/v1/locations

Call locations and take the city id for the ward you care about — 276 is Adachi-ku, one of 1,246 city and ward ids under the 47 prefectures.

02categories
POST/jmty/v1/categories

Call categories with group sale and pick a category slug and, if you want to go finer, a genre id — furniture is fur, and 1245 is chairs inside it.

03search
POST/jmty/v1/search

Call search with group sale, prefecture tokyo, that category, your city_id and free_only true. The response carries Jmty's own matching total next to page_ceiling and reachable_rows, so you can see immediately whether 50,000 rows covers your slice.

04search
POST/jmty/v1/search

Read the rows: price_jpy will be 0 with price_kind free on every one of them, and headline will be the site's own "0円". Keep each row's url.

05listing
POST/jmty/v1/listing

Call listing for the ads you want — full description, every photo, map coordinates, the per-category attributes and the poster's profile — then pass seller.seller_id to seller to see their review counts, badges and registration date before you make contact.

Twelve credits for the 5 calls: locations 2, categories 2, search 3, search 3, listing 2. Failed calls are free: a timeout, a block or a capacity error costs nothing.

request
curl -X POST https://api.reefapi.com/jmty/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"group":"sale","max_results":20}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "jmty",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

The eleven ad spaces — live counts on 2026-10-02

One call each, read off the live index. These move as ads are posted and expire; every search response carries the matching total for your own filters in the response body. The last column is the one to read before you touch `headline`: five of the eleven spaces publish no money at all.

groupwhat it islive adswhat the headline line is
saleSecond-hand goods for sale or free (中古あげます・譲ります)32,059,984item price in yen — 0 means a giveaway
recPart-time jobs (アルバイト・パート)5,133,768hourly or daily wage
estProperty, rent and sale (不動産)3,273,333monthly rent, printed in units of 10,000 yen
carUsed cars (中古車)1,194,859price + mileage + model year in one line
comMembers and community (メンバー募集)1,123,618nearest station — no price
jobFull-time jobs (正社員の求人)694,461monthly or annual salary
coopNeighbourly help (助け合い)579,716a reward the poster typed by hand
eveEvents (イベント情報)543,632the event dates — no price
serLocal services and ads (広告の無料掲載)274,400nearest station — no price
lesClasses and schools (教室・スクール)266,052a city name — no price
petPet rehoming (里親募集)211,166sex and age — no price

Giveaways are the thing this site is known for and the numbers bear it out: of the 32,059,984 second-hand ads, 6,909,491 are listed at 0 yen and 25,150,494 carry a price — and those two add up to the unfiltered total exactly, which is why the API treats 0 as a real free ad and never as a missing price. 🔴 Paging stops at 1,000 pages of 50 rows: 50,000 ads are reachable per filter set however large the total is, and page 1,001 is a genuine 404 rather than a repeat of page 1,000. Narrowing gets you the rest — the same keyword search drops from 921,446 to 13,967 ads with one price filter, and prefecture, category, genre, city and station all narrow further. There is also no sort control anywhere on the site's list pages, so the order is Jmty's own and the API does not pretend otherwise.

What is measured, and what is not there

Every figure on this page was read off the live source in the run recorded for it, not estimated.

Ad spaces

11, each with its own category tree and its own meaning for the headline line; all 11 returned 50 rows AND a full detail record on two separate runs

Live ad counts (2026-10-02)

second-hand goods 32,059,984 · part-time jobs 5,133,768 · property 3,273,333 · used cars 1,194,859 · community 1,123,618 · full-time jobs 694,461 · help requests 579,716 · events 543,632 · services 274,400 · classes 266,052 · pet rehoming 211,166

Free giveaways

6,909,491 of the 32,059,984 goods ads are listed at 0 yen; 25,150,494 carry a price; the two add up to the total exactly

Spaces that publish a price

6 of 11 (goods, cars, property, both job spaces, help requests). The other 5 print an event date, a city, an animal's age or a station — returned as headline, with price_display null

Price basis

separated rather than flattened: item, monthly_rent, hourly_wage, daily_wage, monthly_wage, annual_wage, reward

Price accuracy

price_jpy matched Jmty's own printed string 101 of 101 times across 220 sampled rows, zero mismatches; cross-checked against a second page of the site on 3 of 3 ads in each run (6,000/6,000 · 75,000/75,000 · 320,000/320,000)

Page size

50 organic rows, fixed — measured at exactly 50 on all 11 spaces and on every filtered search

Paging ceiling

1,000 pages = 50,000 reachable rows per filter set; page 1,001 is a real 404, not a repeat of page 1,000

Page overlap

0 of 50 shared ids between consecutive pages in one run and 1 of 50 in the other, 0 duplicates inside a page — Jmty re-floats refreshed ads

Injected rows removed

7 to 16 partner staffing-agency job tiles per list page are dropped and counted; up to 2 paid placements are kept in their own promoted[] array

Filters that narrow

12 of 12 exposed filters measured narrowing the same-run control; the 1 the site accepts and ignores (delivery method) is not exposed

Taxonomies

20 categories and 235 genres in the goods space; 47 prefectures and 1,246 city and ward ids — all live reads, not a frozen snapshot

Field fill (220 rows, all 11 spaces)

id, URL, title, prefecture, city, category, genre name, snippet, posting day, thumbnail 220/220 · headline 208 · last-updated day 198 · nearest station 165 · genre id 127 · favourite count 150

Seller

present on every detail: name, profile link, good/neutral/bad review counts kept apart, rating, posts count, profile text and photo, and the SMS, ID, company-document, business, antique-dealer and real-estate badges

Seller's other ads

up to 20 from the ad page; the profile page itself lists 10 however many the poster has (one account declared 3,648) — listings_sampled says what you got

Not available

no sort control anywhere on the site · no item condition · no shipping cost · no sold-price history · no negotiable/price-on-request marker · no seller-ad feed · no public sitemap

Live checks

52 of 52 search calls and 15 of 15 detail calls passed on two separate runs; 14 of 14 error cases returned the right code; every id from search resolved to the same ad, same title and same price

What people build with Jmty (ジモティー)

The jobs this data is most often used for.

5

endpoints

2/3

credits per call

01

Track Japan's reuse and giveaway economy with real numbers: 6,909,491 items listed at 0 yen on 2026-10-02 against 25,150,494 priced ones, filterable by prefecture, ward and category, each with the full description and photos.

02

Price used stock for a Japanese resale or repair business: pull the same category across millions of second-hand ads, keep Jmty's own printed figure beside our parsed yen value, and narrow by ward or train station to compare local markets rather than national averages.

03

Watch private rental supply outside the big portals: 3,273,333 property ads with rent, layout, floor area, deposit and key money, building age and map coordinates, filtered by prefecture, ward or nearest station.

04

Feed a Japanese local-jobs product: 5,133,768 part-time and 694,461 full-time posts with the wage and its basis separated (hourly, daily, monthly, annual) and the company name and work address on the detail record.

What Jmty (ジモティー) data costs

The cheapest call here is 2 credits, so $15/mo (Pro) buys 5,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 438 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/jmty/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"group":"sale","max_results":20}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/jmty/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "group": "sale",
  "max_results": 20
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Jmty (ジモティー).

Get a free key →
Is a price of 0 yen a free item, or a missing price?▾

A free item, and on this site that is the whole point: ジモティー's goods section is literally "selling / giving away". The site's own counters prove there is no third state — 32,059,984 second-hand ads in total, 6,909,491 at 0 yen and 25,150,494 priced, which add up to the total exactly, with nothing left over. So a 0 comes back as price_jpy 0 with price_kind free, never as null and never hidden. Set free_only to true for giveaways only (6,909,491 ads) or false for priced ads only (25,150,494). In the five spaces that genuinely publish no money — events, classes, pets, services, community — price_jpy is null and price_kind is not_priced, which is a different answer and is labelled as one.

Why is there a `headline` field as well as a price?▾

Because Jmty prints one "most important" line per row and it means eleven different things. Measured on the first page of every space on 2026-10-02: goods print "0円" or "70,000円"; used cars print "1,150,000円64,000km 2009年" — price, mileage and year run together; property prints "2.2万円", a monthly rent in units of 10,000 yen; part-time jobs print "時給1,500円" or "日給10,160円"; full-time jobs print "年収4,500,000円" or "月収190,000円"; help requests print "報酬:10.000", typed by hand; and events print "開催日:10/1-10/31", classes print a city name, pets print "オス 0才2ヶ月", services and community print a station name. headline is that line, verbatim, always. price_jpy, price_display and price_basis are only filled where the line really is money, so you never get a station name served to you as a price.

Is the rent figure correct? "2.2万円" is not 2.2.▾

It is converted, and we checked it against a second page of the site rather than trusting our own arithmetic. 万 means 10,000, so 7.5万円 is 75,000 yen — and the poster's own profile page prints that same ad as "75,000円" in plain yen. We compared three ads across three spaces in both runs: goods 6,000 against 6,000, property 75,000 against 75,000 and 85,000 against 85,000, used car 320,000 against 320,000. Three for three in each run. Across 220 sampled rows, price_jpy matched the string Jmty prints on the row 101 of 101 times where a price exists, with zero mismatches. price_display always carries the source's own text next to the number so you can check any row yourself.

Are there job ads mixed into the used-goods results?▾

Jmty injects them, and this API removes them and tells you how many. Every eighth row of a list page is a staffing-agency job ad fed in from a partner site, carrying an hourly wage where the price would be — on page one of a goods search there were 7 of them, and up to 16 on a used-car page. They are not Jmty ads, they have no Jmty ad id, and left in they would put "時給1,500円" into a sofa search. They are dropped and counted in dropped_partner_tiles. Separately, Jmty injects up to two paid-placement ads above the result window; those are real Jmty ads, so they come back in their own promoted[] array with promoted_count, and listings[] holds exactly the 50 organic rows the page's own counter claims.

How many rows per page, and how deep can I page?▾

Fifty organic rows per page, and it is fixed — measured at exactly 50 on the first page of all eleven spaces and on every filtered search across two runs. Paging stops at page 1,000: page 1,000 returns its 50 rows and page 1,001 is a real HTTP 404, not a silent repeat, so 50,000 ads are reachable per filter set. The API returns page_ceiling and reachable_rows on every response next to the site's own total so the gap is visible rather than surprising. Consecutive pages can share a row or two — Jmty re-floats refreshed ads, so page 1 and page 2 of the same search shared 0 ids in one run and 1 of 50 in the other, with no duplicates inside a page.

Do the filters actually do anything?▾

Every filter we expose was measured against the same-run unfiltered control, and only the ones that moved the total are offered. From a control of 32,059,984 goods ads: keyword 921,446 · prefecture=tokyo 5,838,002 · category=fur 7,388,851 · price band 1,000-2,000 yen 5,561,375 · free_only 6,909,491 · priced-only 25,150,494. From the 7,388,851 furniture control: genre 1245 (chairs) 491,337 · city 276 (Adachi-ku) 52,985 · station 2,418. From the 5,838,002 Tokyo control: online payment only 386,312. Keyword plus a price floor: 921,446 to 13,967. Property with a 20,000-40,000 yen rent band: 3,273,329 to 557,486. Twelve for twelve. One filter the site's own form offers is deliberately NOT exposed: delivery_method left the total at 5,838,002, exactly the unfiltered figure, so it is accepted and ignored — and a handle that does nothing is worse than no handle.

How do I find the right category, genre, prefecture or city id?▾

You never have to guess one. categories takes a group and returns that space's category slugs with their Japanese names and, under each, the numeric genre ids search accepts — 20 categories and 235 genres in the goods space alone. locations returns all 47 prefectures with their romanised slug and the 1,246 city and ward ids underneath them. Both are live reads of the site's own search form, not a frozen snapshot. Every search row also echoes the ids it matched, so you can go finer from any result.

Can I filter by city and by station at the same time?▾

No, and the API refuses instead of guessing. Jmty's URL carries one location level, so asking for both would silently drop one — a filter that quietly becomes a different question is worse than an error. Send prefecture plus either city_id or station_id. A city or station filter also needs a category, because the site answers 404 for a city filter on a bare space, and the API says exactly that rather than reporting the site's 404 as something mysterious.

What does `listing` add over a search row?▾

The full description instead of the snippet, every photo, the map coordinates, the inquiry and comment counts, the ad's status, and the attribute block Jmty publishes for that specific kind of ad — which is different in every space: mileage, model year, frame number and inspection status for a used car; rent, management fee, deposit and key money, layout and floor area, floor, building age and address for a flat; pay, company name, address and working pattern for a job; sex, age, neutering, vaccination and why the animal needs rehoming for a pet. We counted them on one live detail per space: 9 attributes on a property ad, 7 on a pet ad, 6 on a service, 4 on an event. It also adds the poster's profile and up to twenty other ads they have live. An id taken from search resolved to the same record — same id, same title, same price — on every detail call in both runs.

What do I get about the poster?▾

What the ad page and the profile page themselves show, unmodified: display name, profile link, the good, neutral and bad review counts separately (one sampled poster had 185 good, 10 neutral, 6 bad), their rating, how many ads they have posted, their self-written profile text, their profile photo, and the verification badges Jmty grants — SMS verified, ID verified, company documents verified, business account, antique-dealer licence and real-estate licence. The seller action opens the profile page on its own and adds their registration date, the area they live in and their stated occupation. 🔴 That page lists ten of their ads however many they have — one sampled account declared 3,648 posts and the page showed ten — and Jmty publishes no seller-ad feed, so listings_sampled tells you what you actually got. For everything a poster has live in one space, use search instead.

Are phone numbers included?▾

Only where Jmty itself prints one on the public ad page, and then exactly as printed. Most ads have none — the field came back null on the large majority of details we sampled — but some posters, typically classes and businesses, put a number in the ad and the API returns it rather than pretending it is not there. Nothing is fetched from behind a login or a click-to-reveal.

What happens if I ask for an ad that has been taken down?▾

You get NOT_FOUND with a message saying the ad does not exist in that space or has been removed, never a blank success you have to interpret — measured on both runs with a nonsense id. An ad that is still on the site but closed or deleted by its poster is a different thing and is treated as an answer, not an error: it comes back as a normal record with status set to closed or deleted and the site's own message, because "this is gone" is information you asked for. A search that genuinely matches nothing returns ok with zero rows and the site's own total of 0.

Can I look up an ad from just its id?▾

You need the space it lives in as well, and the API says so instead of failing vaguely. A Jmty ad URL is /{prefecture}/{group}-{category}/article-{id}, and the id is global — the same id fetched through a deliberately wrong prefecture and a deliberately wrong category returned the identical ad, same title and same price, on every attempt in both runs — but the space is load-bearing: asking for a goods id as a job ad is a 404 on the site itself. So pass the url that search returns (always works), or pass listing_id together with group and category. Ask with listing_id alone and you get MISSING_PARAM naming exactly what else to send.

Can I sort the results?▾

No, and we would rather say that than offer a knob that does nothing. Jmty's list pages carry no sort control at all — no dropdown, no sort link, no ordering text — and the two separate "cheapest" and "ranking" pages it does have are different page types that return no rows in the result grid. So the order is Jmty's own, roughly newest-first, and every row carries created_label and updated_label so you can order them yourself.

99 Classifieds & Second-hand APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Jmty (ジモティー), you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 437 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-02.