If you run or resell social media services in the Philippines, you eventually end up with three or four panel service lists open in different tabs, trying to compare TikTok views prices in pesos. Here's a small pandas workflow that makes that comparison sane.
Get the data into one shape
Most panels using the standard /api/v2 pattern return services as JSON with service, name, category, rate, min, max and sometimes refill. Save each panel's response to a file first, then load them together.
import json
import pandas as pd
def load(path, panel, currency, php_rate=1.0):
rows = json.load(open(path, encoding="utf-8"))
df = pd.DataFrame(rows)
df["panel"] = panel
df["rate"] = pd.to_numeric(df["rate"], errors="coerce")
# normalise everything to PHP per 1,000
df["php_per_1k"] = df["rate"] * (php_rate if currency != "PHP" else 1.0)
df["refill"] = df.get("refill", False).fillna(False).astype(bool)
return df[["panel", "service", "name", "category", "php_per_1k", "min", "max", "refill"]]
frames = [
load("panel_a.json", "panel_a", "PHP"),
load("panel_b.json", "panel_b", "USD", php_rate=57.0), # use today's rate
]
services = pd.concat(frames, ignore_index=True)
Filter to what you actually sell
mask = services["name"].str.contains("tiktok", case=False) & \
services["name"].str.contains("view", case=False)
tiktok_views = services[mask].sort_values("php_per_1k")
print(tiktok_views.head(10).to_string(index=False))
Don't sort by price alone
The cheapest row is rarely the best buy. Add a column for your own test results, like the share delivered and the share still there after 7 days, then rank by effective cost.
tests = pd.read_csv("test_orders.csv") # panel, service, kept_ratio
merged = tiktok_views.merge(tests, on=["panel", "service"], how="left")
merged["effective_php_per_1k"] = merged["php_per_1k"] / merged["kept_ratio"].fillna(0.5)
print(merged.sort_values("effective_php_per_1k").head(5))
A missing test defaults to a pessimistic 0.5 so untested services don't sneak to the top.
A note on currency
Exchange rates move. Keep the PHP rate as a parameter, not a hardcoded constant buried in the code, and refresh it before every comparison.
For the business side of picking suppliers in the Philippines, this boosting site social media growth guide explains what PH buyers expect. And BoostingPH publishes peso rates directly, which skips the conversion step above.
Top comments (0)