๐ŸŽฌ YouTube & ๐ŸŒ Google Maps API

Version 1.0.0

Layanan untuk mencari video YouTube, mengambil komentar, transcript, serta scraping ulasan Google Maps

๐Ÿ“– Overview

API ini menyediakan akses ke data YouTube dan Google Maps dengan sistem caching untuk efisiensi.

๐Ÿ”
YouTube Search
Cari video YouTube
๐Ÿ’ฌ
Comments
Ambil komentar dengan cache
๐Ÿ“
Transcript
Ambil transcript (cache)
๐Ÿ“Š
Metadata
Info lengkap video
๐Ÿ“
Google Places
Cari tempat di Google Maps
โญ
Maps Reviews
Scrape ulasan Google Maps

๐Ÿ’ฌ Comments API YouTube

Mengambil komentar dari video YouTube dengan deteksi duplikat otomatis dan cache.

GET /comments GET

Parameters

Parameter Type Default Description
id required string - ID video YouTube
limit string all Jumlah komentar: "all" atau angka (100, 500, dll)
order string time Urutan: "time" (terbaru) atau "relevance"

Example Request

GET /comments?id=YMcI754wroM&limit=100

๐Ÿ“ Transcript API YouTube

Mengambil transcript video. Data di-cache setelah pengambilan pertama dan tidak diambil ulang.

GET /transcript GET

Parameters

Parameter Type Default Description
id required string - ID video YouTube
language string - Kode bahasa (en, id, dll) - opsional
format string json Format output: "json" atau "text"
include_timestamps boolean true Sertakan timestamp (format text)
๐Ÿ’ก Catatan: Transcript hanya diambil sekali dari API dan disimpan di cache. Pengambilan berikutnya akan langsung dari cache.

๐Ÿ“Š Metadata API YouTube

Mengambil metadata video seperti judul, deskripsi, views, likes, dll.

๐Ÿ“Œ Informasi: Metadata otomatis diambil bersama dengan komentar atau transcript dan disimpan di cache.

Metadata yang tersedia

Field Description
titleJudul video
descriptionDeskripsi video
channel_idID channel
channel_titleNama channel
published_atTanggal publikasi
durationDurasi (readable)
view_countJumlah views
like_countJumlah likes
comment_countJumlah komentar
tagsTags video (array)
privacy_statusStatus privasi
made_for_kidsKonten anak-anak

๐Ÿ“ Google Places API Google Maps

Mencari tempat menggunakan Google Places API resmi.

GET /places/search GET

Parameters

Parameter Type Default Description
q required string - Kata kunci (restaurant, cafe, museum, dll)
location string - Lokasi: "lat,lng" atau nama kota
radius integer 5000 Radius dalam meter (max 50000)
place_type string - Tipe tempat (restaurant, cafe, museum, dll)
min_price integer - Harga minimal (0-4)
max_price integer - Harga maksimal (0-4)
open_now boolean false Hanya yang buka sekarang
format string json Format output: json atau text
โš ๏ธ Catatan: Memerlukan Google Places API key di /opt/youtubeapi/config/places_api_keys.txt

Example Request

GET /places/search?q=restaurant&location=Jakarta&radius=5000

โญ Google Maps Reviews API Scraper

Scrape ulasan dari Google Maps menggunakan Node.js scraper dengan 3 mode operasi.

GET /maps/reviews GET

Parameters

Parameter Type Default Description
url required string - URL lengkap Google Maps place (dengan data=)
mode string new Mode operasi: archive - Ambil dari arsip saja
new - Incremental, stop saat duplikat
all - Ambil semua, gabung, simpan unik
limit integer 200 Jumlah maksimal ulasan (50, 100, 200, 500, -1 untuk semua)
sort_type string newest Urutan: relevant, newest, highest_rating, lowest_rating
pages integer 5 Jumlah halaman per fetch (โ‰ˆ10 reviews per halaman)
max_pages integer 20 Maksimal halaman total (hanya untuk mode 'all')
format string json Format output: json atau text
๐Ÿ“Œ Penjelasan Mode:
  • archive - Hanya menampilkan data yang sudah tersimpan di HDD (tanpa fetch baru)
  • new - Default. Mengambil ulasan baru secara incremental, berhenti saat menemukan duplikat
  • all - Mengambil semua ulasan sesuai batasan, menggabungkan dengan data lama, menyimpan yang unik

๐Ÿ’พ Cache permanen: Data tidak pernah kadaluarsa dan selalu tersimpan di HDD.

โš ๏ธ Catatan Penting:
  • Scraping melanggar ToS Google. Gunakan untuk prototyping atau riset saja.
  • Service Node.js harus berjalan di port 3001
  • URL harus lengkap dengan parameter data=

Example Requests

# Mode New (default) - incremental GET /maps/reviews?url=https://www.google.com/maps/place/Soto+Ayam+Kampung+Pak+Timbul/data=!4m7!3m6!1s0x2e7a167ba3b3b3c9:0xf88b74c176f53679!8m2!3d-7.5750042!4d110.81602!16s%2Fg%2F11cp5zbp2k!19sChIJybOzo3sWei4ReTb1dsF0i_g&mode=new&limit=50 # Mode Archive - lihat arsip saja GET /maps/reviews?url=...&mode=archive&limit=100 # Mode All - ambil semua, gabung, simpan unik GET /maps/reviews?url=...&mode=all&limit=500&pages=5&max_pages=20

Example Response

{
  "success": true,
  "mode": "new",
  "url": "https://www.google.com/maps/place/...",
  "sort_type": "newest",
  "limit": 50,
  "total_old_reviews": 10,
  "total_new_reviews": 5,
  "total_available": 15,
  "total_shown": 15,
  "reviews": [...],
  "source": "new_merged",
  "pages_scraped": 2,
  "duplicate_found": true,
  "message": "Added 5 new reviews, total 15 (showing 15)"
}

Response Fields

Field Type Description
modestringMode yang digunakan (archive/new/all)
limitintegerLimit yang diminta
total_old_reviewsintegerJumlah ulasan yang sudah ada di cache
total_new_reviewsintegerJumlah ulasan baru yang ditemukan
total_availableintegerTotal ulasan yang tersedia
total_shownintegerJumlah ulasan yang ditampilkan (sesuai limit)
reviewsarrayDaftar ulasan
sourcestringSumber data (cache/new_merged/all_merged)
pages_scrapedintegerJumlah halaman yang di-scrape
duplicate_foundbooleanApakah ditemukan duplikat

๐Ÿ“ค Upload & Dashboard Places

Endpoint untuk menerima upload data tempat dari ekstensi Mozilla.

POST /upload/places POST

Request Body

Field Type Description
meta object Metadata upload (keyword, kota, jumlah_hasil)
rows array Daftar tempat yang diupload
rows[].place_id required string ID unik tempat dari Google Maps
rows[].place_name string Nama tempat
rows[].place_review string Jumlah ulasan
rows[].place_rating string Rating tempat
rows[].place_url string URL Google Maps
rows[].place_picurl string URL gambar
rows[].keyword string Keyword pencarian
rows[].kota string Nama kota

Example Request

POST /upload/places Content-Type: application/json { "meta": { "keyword": "tempat wisata", "kota": "Surakarta", "jumlah_hasil": 50 }, "rows": [ { "place_id": "ChIJN1t_tDeuEmsRUsoyG83frY4", "place_name": "Restoran Padang Sederhana", "place_review": "100", "place_rating": "4.5", "place_url": "https://www.google.com/maps/place/...", "place_picurl": "https://...", "keyword": "tempat wisata", "kota": "Surakarta" } ] }

Example Response

{
		  "success": true,
		  "message": "Upload completed: 50 saved, 0 errors",
		  "data": {
			"total": 50,
			"success_count": 50,
			"error_count": 0,
			"results": [...],
			"meta": {
			  "keyword": "tempat wisata",
			  "kota": "Surakarta",
			  "jumlah_hasil": 50
			}
		  }
		}

๐Ÿ“‹ 20 Tempat Teratas (Ulasan Terbanyak)

# Place ID Nama Rating Ulasan Kota Status Aksi
Loading...

๐Ÿ“Š Statistik

Loading stats...

๐Ÿš€ Try It Out

1. YouTube Search

2. YouTube Comments

3. YouTube Transcript

4. YouTube Cache

5. Google Places Search

6. Google Maps Reviews

7. Upload Places