TikTok Media Buyer

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Full Time

SALARY

$1,600 - $2,000 Per Month

HOURS PER WEEK

40

DATE UPDATED

Sep 23, 2026

JOB OVERVIEW

Paid Media · Performance Marketing · TikTok Ads · Creative Strategy

Run paid campaigns for the brands everyone talks about. Remote, performance-driven, and built for someone who reads performance data and turns it into winning creative.

Remote (US Clients) | $1,600–$2,000/mo | TikTok Ads | Independent Contractor


The Opportunity:

Performance is the product.

Our client manages $250M+ in annual ad spend across 100+ clients. They are the agency brands call when they want to win on TikTok. Gymshark, Duolingo, Shopify, Amazon, Converse. The roster speaks for itself.

They need a paid media operator who can drive performance through creative judgement. Someone who reads the data, knows why a creative is winning, and turns that into briefs that make the next creative win bigger. Strong Meta experience is welcomed and the discipline transfers. TikTok-specific expertise can be built on the job; the harder-to-find skill is the ability to look at performance data and tell the creative team exactly what to make next.

If you are sharp with data, opinionated about creative, and energised by the feedback loop between performance numbers and the next round of ads, this is your brief.

The Role - What you'll do:

- Plan and Launch Campaigns: Build TikTok ad campaigns from scratch. Targeting, bidding strategies, creative selection, budget allocation, and scheduling. End-to-end ownership.

- Read Performance, Brief Creative: Track ROAS, CPA, CTR, and creative-level metrics daily. Identify which creatives are winning and articulate why: the hook, the angle, the format, the social proof. Turn that into specific creative briefs the creative team can act on, so the next round of ads outperforms the last.

- Run Creative Testing Frameworks: Test hooks, angles, creative formats, and ad concepts methodically. Document what wins, what loses, and the pattern across both. Build a creative testing system over time, not one-off A/B tests.

- Manage Audience Strategy: Build and refine custom and lookalike audiences where they add value. Lean on algorithmic targeting where it outperforms manual audience-building.

- Translate Data into Decisions: Turn performance data into clear, defensible recommendations: what to scale, what to kill, what creative direction to take next. No analysis paralysis. Insight, decision, action.

- Deliver Monthly Reports: Prepare clear, comprehensive performance reports with KPIs, insights, and actionable recommendations. Delivered by the 2nd of every month.

What You'll Need - Skills and experience:

- Strong, hands-on paid media buying experience, Meta-focused is fine (3+ years preferred). TikTok experience is welcomed; less than a year on TikTok is not a blocker provided your performance buying chops are real.

- Demonstrable creative-data literacy. You can look at a winning ad and tell us why it's winning: hook, format, angle, pacing, social proof. And you can turn that read into briefs that improve creative output.

- Real-money accountability. You have owned ROAS and CPA targets at brand level, not just executed someone else's plan. Comfortable with budget decisions independently.

- Experience working with creative teams, briefing them, and iterating on creative based on performance data.

- High analytical fluency. Comfortable with data, multi-platform attribution, and reading performance signals beyond the headline number.

- Self-starter mentality. Proactive, reliable, comfortable working independently and remotely.

You'll thrive if...

- You think in ROAS, CPA, and creative performance metrics, not impressions

- You can look at two winning ads and tell us why one is outperforming the other

- You enjoy the loop between data and creative: reading the numbers, briefing the next round, and seeing it improve

- You are meticulous with campaign structure, naming conventions, and budget allocation

- You are self-directed and do not need someone looking over your shoulder to stay productive

- You can translate raw data into a clear story for non-technical stakeholders

Not for you if...

- You are primarily a creative strategist who has never owned campaign performance numbers

- You are a TikTok tactician but cannot articulate why a winning creative is winning

- You prefer organic content strategy over paid performance marketing

- Your background is in dropshipping, search arbitrage, or affiliate-network buying. The role is for premium consumer brand work.

- You need detailed daily briefs to know what to work on

- You are uncomfortable making budget decisions or briefing creative independently

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0011
Controller Execution Time ( Jobseekers / Job )  0.0180
Total Execution Time  0.0199
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,517,888 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/TikTok-Media-Buyer-1655989
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0106 seconds)  (Hide)
0.0004   SELECT *
                                
FROM exrates
                                WHERE rate_name 
= 'USD-PHP' 
0.0004   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1655989
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 939016
 LIMIT 1 
0.0015   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `misc` ON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1655989
AND `misc`.`id` IS NULL 
0.0005   SELECT e.business_name, e.logo, e.website, e.rebill_date, e.date_added member_date, hits, DATEDIFF('2026-10-19',ej.date_added) duration_days, DATEDIFF('2026-10-19',e.rebill_date) duration_rebill, ej.*, e.deactivate FROM employers e, employer_jobs ej WHERE e.employer_id = ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id = '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-10-19',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != 1 AND ej.deleted = 0 AND job_id = '1655989' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1655989 
0.0019   UPDATE employer_jobs SET hit_counts = '***May-27-2026=554***May-28-2026=38***May-29-2026=12***May-30-2026=8***May-31-2026=4***Jun-01-2026=27***Jun-02-2026=32***Jun-03-2026=49***Jun-04-2026=37***Jun-05-2026=14***Jun-06-2026=22***Jun-07-2026=4***Jun-08-2026=89***Jun-09-2026=60***Jun-10-2026=31***Jun-11-2026=34***Jun-12-2026=17***Jun-13-2026=6***Jun-14-2026=4***Jun-15-2026=8***Jun-16-2026=7***Jun-17-2026=7***Jun-18-2026=2***Jun-19-2026=13***Jun-20-2026=19***Jun-21-2026=8***Jun-22-2026=5***Jun-23-2026=21***Jun-24-2026=14***Jun-25-2026=12***Jun-26-2026=14***Jun-27-2026=1***Jun-28-2026=4***Jun-29-2026=5***Jun-30-2026=13***Jul-01-2026=43***Jul-02-2026=17***Jul-03-2026=623***Jul-04-2026=133***Jul-05-2026=109***Jul-06-2026=97***Jul-07-2026=34***Jul-08-2026=13***Jul-09-2026=12***Jul-10-2026=7***Jul-11-2026=6***Jul-13-2026=6***Jul-14-2026=7***Jul-15-2026=5***Jul-16-2026=519***Jul-17-2026=73***Jul-18-2026=74***Jul-19-2026=75***Jul-20-2026=13***Jul-21-2026=16***Jul-22-2026=11***Jul-23-2026=7***Jul-24-2026=9***Jul-25-2026=12***Jul-26-2026=2***Jul-27-2026=469***Jul-28-2026=104***Jul-29-2026=39***Jul-30-2026=31***Jul-31-2026=10***Aug-01-2026=2***Aug-02-2026=2***Aug-03-2026=7***Aug-04-2026=4***Aug-05-2026=4***Aug-06-2026=6***Aug-08-2026=1***Aug-11-2026=1***Aug-12-2026=1***Aug-16-2026=1***Aug-17-2026=1***Aug-18-2026=1***Aug-19-2026=3***Aug-20-2026=1***Aug-21-2026=4***Aug-22-2026=2***Aug-23-2026=4***Aug-24-2026=3***Aug-25-2026=9***Aug-27-2026=1***Aug-28-2026=1***Aug-29-2026=1***Aug-30-2026=1***Sep-01-2026=2***Sep-04-2026=3***Sep-06-2026=4***Sep-07-2026=1***Sep-09-2026=2***Sep-11-2026=2***Sep-12-2026=3***Sep-13-2026=1***Sep-14-2026=2***Sep-16-2026=1***Sep-19-2026=2***Sep-20-2026=1***Sep-21-2026=1***Sep-23-2026=2***Sep-24-2026=3***Sep-25-2026=1***Sep-26-2026=2***Sep-27-2026=5***Sep-29-2026=2***Sep-30-2026=4***Oct-02-2026=1***Oct-03-2026=1***Oct-04-2026=1***Oct-05-2026=3***Oct-07-2026=5***Oct-08-2026=2***Oct-09-2026=2***Oct-11-2026=2***Oct-14-2026=4***Oct-15-2026=3***Oct-16-2026=5***Oct-17-2026=1***Oct-19-2026=1' WHERE job_id= '1655989'  
0.0006   UPDATE employer_jobs SET monthly_hits = '***May-2026=615***Jun-2026=579***Jul-2026=2575***Aug-2026=61***Sep-2026=44***Oct-2026=31' WHERE job_id= '1655989'  
0.0010   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id = '' AND job_id = '1655989' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `sc` ON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1655989 
0.0019   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '939016'
AND `date_added` >= '2022-06-08' 
0.0004   select * from teasers 
0.0002   SELECT * FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)