Getting Your Product Info Out of TikTok Shop Without Losing Your Mind

I spent three hours last month trying to pull a clean inventory report from TikTok Shop because our Q3 audit needed PDFs for compliance. The export button exists, sure, but it spits out an XLSX that looks like someone designed it in a hurry on a Friday afternoon. Column headers overlap, SKUs get truncated mid-character, and the pricing data is scattered across four different sheets depending on which marketplace variant your account runs. Most people just accept it and move on. I didn't. There are legitimate reasons you need something printable and stable. Auditors don't care about your spreadsheet formulas. Buyers' agents want something they can reference without opening Excel every time. If you're running cross-listings between TikTok Shop, Amazon, and a Shopify store, having one consistent document format prevents version confusion when you're presenting to a distributor or investor. The native export is fine for internal work, but it falls apart the moment you need something that looks professional or prints correctly on A4 paper. Here's what works without relying on some sketchy third-party tool that will sell your customer data. I use a combination of TikTok Shop's built-in export and a lightweight script that formats it into something usable. The process takes about twenty minutes once you've set it up, compared to the hour-plus of manual cleanup most sellers do.

First, go to Seller Center and navigate to Orders or Products depending on what you need. Click Export. You'll get an Excel file. Open it in LibreOffice Calc or Google Sheets, not Microsoft Excel, because the encoding handles Chinese characters better and doesn't corrupt SKU formats. Select all the data you need, copy it, and paste it into a new document. Then use a Python script with the reportlab library to convert that data into a properly formatted PDF. I have the script attached below. It handles pagination, column widths, and even adds a footer with the export date and your seller ID. The script itself is straightforward. You feed it the CSV or XLSX data, it maps columns to PDF table cells, and outputs a file you can email or print. One thing most tutorials skip: set your page margins to 0.5 inches all around, or your tables will overflow on standard letter paper. Also, if you're exporting product variants with long descriptions, truncate them to 120 characters in the script or the cell heights will balloon and waste half a page per product.

A Real Edge Case That Almost Cost Me a Deal

Last October, I was pulling an order PDF for a wholesale buyer who wanted to verify our fulfillment timeline. The script worked fine until I realized the export included archived orders mixed with active ones because TikTok Shop's filter defaults to "All Time" instead of "Last 30 Days." The PDF came back with 847 pages because my account had six months of dormant orders mixed in. The buyer thought I was hiding something or running a shell operation. I had to manually filter the export, re-run the script, and resend within forty-five minutes. The workaround I use now: always set the date range explicitly before exporting, and add a quick awk command to strip rows where the order status is "Cancelled" or "Refunded" unless you specifically need those for accounting. Saved me from another embarrassment like that.

Get the Full Details

TikTok Shop Sellers' Playbook | PDF
TikTok Shop Sellers' Playbook | PDF

Common Pitfalls and What Actually Works

Beginners often try to use online converters that claim to turn TikTok Shop exports directly into PDFs. Don't. They usually inject ads into your data, break formatting on special characters, or charge per export after a free trial. I watched a friend lose three weeks of sales data because a converter service corrupted the pricing columns with rounding errors. Stick to local tools. Another issue: TikTok Shop's export sometimes includes hidden rows or columns that aren't visible in the UI but exist in the raw data. This causes PDF generation to fail or produce blank pages. Check your source file with a text editor or by counting rows against what you see on screen before feeding it to the script. If the numbers don't match, there's hidden data mucking things up. For large catalogs over 500 products, split the export into batches of 100 and generate separate PDFs per batch. Single PDFs that large take forever to render and often crash smaller machines. The batch approach also lets you send files in chunks if you're emailing multiple buyers.

The Script and Setup

You'll need Python 3.8 or later, plus reportlab and pandas. Install with pip install reportlab pandas openpyxl. The script I use maps these common columns: product name to the title cell, SKU to a code column, price to a currency field formatted to two decimals, and stock quantity to a numbered column. If your export has different headers, adjust the column mapping at the top of the script. Here's a minimal version that handles a basic product export. Save it as tiktok_shop_to_pdf.py and run it with python tiktok_shop_to_pdf.py input.xlsx output.pdf. The script assumes your Excel file is in the same directory. If it's elsewhere, provide the full path.

import pandas as pd
from reportlab.lib import colors
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.lib import units

def create_pdf(input_file, output_file):
    df = pd.read_excel(input_file)
    df = df.fillna('')
    
    data = [df.columns.tolist()] + df.values.tolist()
    
    doc = SimpleDocTemplate(output_file, pagesize=letter,
                           leftMargin=0.5*units.inch,
                           rightMargin=0.5*units.inch,
                           topMargin=0.5*units.inch,
                           bottomMargin=0.5*units.inch)
    
    styles = getSampleStyleSheet()
    story = []
    
    table = Table(data, repeatRows=1)
    table.setStyle(TableStyle([
        ('BACKGROUND', (0, 0), (-1, 0), colors.grey),
        ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
        ('ALIGN', (0, 0), (-1, -1), 'LEFT'),
        ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
        ('FONTSIZE', (0, 0), (-1, 0), 10),
        ('BOTTOMPADDING', (0, 0), (-1, 0), 12),
        ('GRID', (0, 0), (-1, -1), 0.5, colors.black),
    ]))
    
    story.append(table)
    doc.build(story)

if __name__ == '__main__':
    create_pdf('export.xlsx', 'output.pdf')

This is bare bones. It doesn't handle multi-page automatically for very large datasets, and it assumes all columns should be visible. For production use, you'd want to add page breaks, adjust column widths based on content length, and maybe add a header with your shop name. But for getting a decent PDF out in under twenty minutes, this works reliably. If your TikTok Shop account is linked to multiple marketplaces like US, UK, and Australia, the export sometimes merges data from all regions into one messy file with duplicate SKUs. The script will generate a PDF, but it'll be garbage because the columns won't align across markets. In that case, filter by marketplace in Seller Center before exporting, or post-process the data with a pivot table to separate regions first. Also, if you're dealing with product bundles or kits that have nested SKUs, the export doesn't flatten those hierarchies. You'll get parent and child SKUs listed separately with no relationship indicator. Add a custom column in your export to mark bundle members before running the script, or the PDF will look like random disjointed products.

TikTok Shop Ecommerce Strategies 2023 | PDF | E Commerce | Business
TikTok Shop Ecommerce Strategies 2023 | PDF | E Commerce | Business

Some sellers report that TikTok Shop's export includes promotional pricing instead of regular pricing. Verify your columns before generating the PDF. I once sent a document showing discounted prices to a buyer who thought those were standard rates, and we had to renegotiate the contract. Always cross-check the price column against your actual listed prices in the dashboard.