Extract details about ads from TikTok Ad Library. Scrape ad details like when it was run, ad targeting, advertiser and content of ad. Download ad data in JSON, XML, Excel format.
Scrape Ad Library data from TikTok easily with TikTok Ad Library Scraper.
TikTok, known in mainland China and Hong Kong as Douyin (Chinese: 抖音; pinyin: Dǒuyīn; lit. 'Shaking Sound'), is a social media and short-form online video platform owned by Chinese Internet company ByteDance. It hosts user-submitted videos, which may range in duration from three seconds to 60 minutes. It can be accessed through a mobile app or through its website. Since its launch, TikTok has become one of the world's most popular social media platforms, using recommendation algorithms to connect content creators and influencers with new audiences.
It provides a structured way to access TikTok Ad Library data, enabling easy processing without the need for login credentials or session cookies.
In order to use TikTok Ad Library Scraper you need to provide number of results that you want to scrape from TikTok.
Next go to TikTok Ad Library. Do search that you want. Copy the URL and set it as input paramter for the scraper.
Example of valid URLs for scraping:
1{ 2 "urls": [ 3 { 4 "url": "https://library.tiktok.com/ads?region=AT&start_time=1664575200000&end_time=1743626023752&adv_name=JETBRAINS%20S.R.O.&adv_biz_ids=7028872473361777410&query_type=2&sort_type=last_shown_date,desc", 5 "method": "GET" 6 }, 7 { 8 "url": "https://library.tiktok.com/ads/detail/?ad_id=1820859151010817", 9 "method": "GET" 10 } 11 ], 12 "maxRecords": 100 13}
1{ 2 "url": "https://library.tiktok.com/api/v1/items/1820859151010817/details?lang=en-US", 3 "id": "1820859151010817", 4 "name": "JetBrains s.r.o.", 5 "auditStatus": "1", 6 "type": "2", 7 "firstShownDate": { 8 "date": "2025-01-11T00:00:00.000Z", 9 "timestamp": 1736553600000 10 }, 11 "lastShownDate": { 12 "date": "2025-02-03T00:00:00.000Z", 13 "timestamp": 1738540800000 14 }, 15 "videos": [ 16 { 17 "videoUrl": "https://library.tiktok.com/api/v1/cdn/1743532704/video/aHR0cHM6Ly92MTZtLnRpa3Rva2Nkbi5jb20vNmVkNmQ4OGY1N2Y5MDkyYTZmMjU1MjVhZmYzYmFlOWMvNjdlYzg3MmUvdmlkZW8vdG9zL2FsaXNnL3Rvcy1hbGlzZy12ZS0wMDUxYzAwMS1zZy9vMDlQWXNEZVFGQVVJektBc2dFQVNlWkdNNmZFZnNhQmVncmNBTC8=/f198446c-9a12-4fce-bbc6-cfd4c3dd17dc?a=475769&bti=PDU2NmYwMy86&ch=0&cr=0&dr=1&cd=0%7C0%7C0%7C0&cv=1&br=1108&bt=554&cs=0&ds=1&ft=.NpOcInz7ThRvJ5OXq8Zmo&mime_type=video_mp4&qs=0&rc=Njo2OGQ2NTo6ZWkzN2c3NEBpMzhuZnc5cjppeDMzODYzNEAwLy8uMzAvNmAxYTRhYTNhYSNvYy5jMmRraS1gLS1kMC1zcw%3D%3D&vvpl=1&l=202504011838236AB9ABF49C554F8C5418&btag=e00088000&cc=3", 18 "coverImage": "https://p21-ad-sg.ibyteimg.com/origin/tos-alisg-p-0051c001-sg/o0oAgLeeA9UZf6Aes1sKMParqEQOIBFBd0qAfD" 19 } 20 ], 21 "estimatedAudience": { 22 "estimated": "100K-200K", 23 "from": 100000, 24 "to": 200000 25 }, 26 "spent": "", 27 "impression": 0, 28 "showMode": 1, 29 "imageUrls": ["https://p21-ad-sg.ibyteimg.com/origin/tos-alisg-p-0051c001-sg/o0oAgLeeA9UZf6Aes1sKMParqEQOIBFBd0qAfD"], 30 "rejectionInfo": null, 31 "advertiser": { 32 "name": "JetBrains s.r.o.", 33 "advBizId": "7028872473361777410", 34 "registryLocation": "Czech Republic", 35 "sponsor": "JetBrains s.r.o." 36 }, 37 "targeting": { 38 "audience": "No", 39 "interest": "", 40 "videoInteractions": "", 41 "creatorInteractions": "", 42 "targetAudienceSize": { 43 "estimated": "62.2M-76.1M", 44 "from": 62200000, 45 "to": 76100000 46 }, 47 "byGeneder": [ 48 { 49 "region": "ES", 50 "female": true, 51 "male": true, 52 "unknown": true 53 }, 54 { 55 "region": "CH", 56 "female": true, 57 "male": true, 58 "unknown": true 59 }, 60 { 61 "region": "PT", 62 "female": true, 63 "male": true, 64 "unknown": true 65 }, 66 { 67 "region": "EE", 68 "female": true, 69 "male": true, 70 "unknown": true 71 }, 72 { 73 "region": "LT", 74 "female": true, 75 "male": true, 76 "unknown": true 77 }, 78 { 79 "region": "BE", 80 "female": true, 81 "male": true, 82 "unknown": true 83 }, 84 { 85 "region": "FI", 86 "female": true, 87 "male": true, 88 "unknown": true 89 }, 90 { 91 "region": "IE", 92 "female": true, 93 "male": true, 94 "unknown": true 95 }, 96 { 97 "region": "SE", 98 "female": true, 99 "male": true, 100 "unknown": true 101 }, 102 { 103 "region": "AT", 104 "female": true, 105 "male": true, 106 "unknown": true 107 }, 108 { 109 "region": "DK", 110 "female": true, 111 "male": true, 112 "unknown": true 113 }, 114 { 115 "region": "NL", 116 "female": true, 117 "male": true, 118 "unknown": true 119 }, 120 { 121 "region": "FR", 122 "female": true, 123 "male": true, 124 "unknown": true 125 }, 126 { 127 "region": "NO", 128 "female": true, 129 "male": true, 130 "unknown": true 131 }, 132 { 133 "region": "DE", 134 "female": true, 135 "male": true, 136 "unknown": true 137 }, 138 { 139 "region": "IT", 140 "female": true, 141 "male": true, 142 "unknown": true 143 }, 144 { 145 "region": "LV", 146 "female": true, 147 "male": true, 148 "unknown": true 149 } 150 ], 151 "byAge": [ 152 { 153 "region": "ES", 154 "13-17": false, 155 "18-24": false, 156 "25-34": true, 157 "35-44": true, 158 "45-54": true, 159 "55+": false 160 }, 161 { 162 "region": "CH", 163 "13-17": false, 164 "18-24": false, 165 "25-34": true, 166 "35-44": true, 167 "45-54": true, 168 "55+": false 169 }, 170 { 171 "region": "PT", 172 "13-17": false, 173 "18-24": false, 174 "25-34": true, 175 "35-44": true, 176 "45-54": true, 177 "55+": false 178 }, 179 { 180 "region": "EE", 181 "13-17": false, 182 "18-24": false, 183 "25-34": true, 184 "35-44": true, 185 "45-54": true, 186 "55+": false 187 }, 188 { 189 "region": "LT", 190 "13-17": false, 191 "18-24": false, 192 "25-34": true, 193 "35-44": true, 194 "45-54": true, 195 "55+": false 196 }, 197 { 198 "region": "BE", 199 "13-17": false, 200 "18-24": false, 201 "25-34": true, 202 "35-44": true, 203 "45-54": true, 204 "55+": false 205 }, 206 { 207 "region": "FI", 208 "13-17": false, 209 "18-24": false, 210 "25-34": true, 211 "35-44": true, 212 "45-54": true, 213 "55+": false 214 }, 215 { 216 "region": "IE", 217 "13-17": false, 218 "18-24": false, 219 "25-34": true, 220 "35-44": true, 221 "45-54": true, 222 "55+": false 223 }, 224 { 225 "region": "SE", 226 "13-17": false, 227 "18-24": false, 228 "25-34": true, 229 "35-44": true, 230 "45-54": true, 231 "55+": false 232 }, 233 { 234 "region": "AT", 235 "13-17": false, 236 "18-24": false, 237 "25-34": true, 238 "35-44": true, 239 "45-54": true, 240 "55+": false 241 }, 242 { 243 "region": "DK", 244 "13-17": false, 245 "18-24": false, 246 "25-34": true, 247 "35-44": true, 248 "45-54": true, 249 "55+": false 250 }, 251 { 252 "region": "NL", 253 "13-17": false, 254 "18-24": false, 255 "25-34": true, 256 "35-44": true, 257 "45-54": true, 258 "55+": false 259 }, 260 { 261 "region": "FR", 262 "13-17": false, 263 "18-24": false, 264 "25-34": true, 265 "35-44": true, 266 "45-54": true, 267 "55+": false 268 }, 269 { 270 "region": "NO", 271 "13-17": false, 272 "18-24": false, 273 "25-34": true, 274 "35-44": true, 275 "45-54": true, 276 "55+": false 277 }, 278 { 279 "region": "DE", 280 "13-17": false, 281 "18-24": false, 282 "25-34": true, 283 "35-44": true, 284 "45-54": true, 285 "55+": false 286 }, 287 { 288 "region": "IT", 289 "13-17": false, 290 "18-24": false, 291 "25-34": true, 292 "35-44": true, 293 "45-54": true, 294 "55+": false 295 }, 296 { 297 "region": "LV", 298 "13-17": false, 299 "18-24": false, 300 "25-34": true, 301 "35-44": true, 302 "45-54": true, 303 "55+": false 304 } 305 ], 306 "byLocation": { 307 "regions": 17, 308 "totalImpressions": { 309 "estimated": "100K-200K", 310 "from": 100000, 311 "to": 200000 312 }, 313 "totalRegion": [ 314 { 315 "region": "ES", 316 "impressions": { 317 "estimated": "24K", 318 "from": 24000 319 } 320 }, 321 { 322 "region": "CH", 323 "impressions": { 324 "estimated": "0-1K", 325 "from": 0, 326 "to": 1000 327 } 328 }, 329 { 330 "region": "PT", 331 "impressions": { 332 "estimated": "16K", 333 "from": 16000 334 } 335 }, 336 { 337 "region": "EE", 338 "impressions": { 339 "estimated": "3K", 340 "from": 3000 341 } 342 }, 343 { 344 "region": "LT", 345 "impressions": { 346 "estimated": "12K", 347 "from": 12000 348 } 349 }, 350 { 351 "region": "BE", 352 "impressions": { 353 "estimated": "7K", 354 "from": 7000 355 } 356 }, 357 { 358 "region": "FI", 359 "impressions": { 360 "estimated": "3K", 361 "from": 3000 362 } 363 }, 364 { 365 "region": "IE", 366 "impressions": { 367 "estimated": "5K", 368 "from": 5000 369 } 370 }, 371 { 372 "region": "SE", 373 "impressions": { 374 "estimated": "11K", 375 "from": 11000 376 } 377 }, 378 { 379 "region": "AT", 380 "impressions": { 381 "estimated": "3K", 382 "from": 3000 383 } 384 }, 385 { 386 "region": "DK", 387 "impressions": { 388 "estimated": "2K", 389 "from": 2000 390 } 391 }, 392 { 393 "region": "NL", 394 "impressions": { 395 "estimated": "8K", 396 "from": 8000 397 } 398 }, 399 { 400 "region": "FR", 401 "impressions": { 402 "estimated": "15K", 403 "from": 15000 404 } 405 }, 406 { 407 "region": "NO", 408 "impressions": { 409 "estimated": "3K", 410 "from": 3000 411 } 412 }, 413 { 414 "region": "DE", 415 "impressions": { 416 "estimated": "4K", 417 "from": 4000 418 } 419 }, 420 { 421 "region": "IT", 422 "impressions": { 423 "estimated": "26K", 424 "from": 26000 425 } 426 }, 427 { 428 "region": "LV", 429 "impressions": { 430 "estimated": "7K", 431 "from": 7000 432 } 433 } 434 ] 435 } 436 } 437}
The output from TikTok Ad Library Scraper is stored in the dataset. After the run is finished, you can download the dataset in various data formats (JSON, CSV, XML, RSS, HTML Table).
Proxy for this scraper is already preconfigured for optimal performance.
For more custom/simplify outputs or Bug report please contact the developer (ivan.vasiljevic (at) hotmail.com) or report an issue.
Yes, if you're scraping publicly available data for personal or internal use. Always review Websute's Terms of Service before large-scale use or redistribution.
No. This is a no-code tool — just enter a job title, location, and run the scraper directly from your dashboard or Apify actor page.
It extracts job titles, companies, salaries (if available), descriptions, locations, and post dates. You can export all of it to Excel or JSON.
Yes, you can scrape multiple pages and refine by job title, location, keyword, or more depending on the input settings you use.
You can use the Try Now button on this page to go to the scraper. You’ll be guided to input a search term and get structured results. No setup needed!