You can get money without spending money but it won't be totally free since you'll need to at least invest your valuable time to get the money.
You can try doing online surveys, or getting paid for reading emails or testing peoples websites.
You can also create videos on youtube and make them interesting and helpful and you could make money when advertisements show on your videos.
Usually you can make around $6.00 per 1,000 ad views on youtube videos.
You can also create your own website and write on high paying niches and topics that adsense and other ad networks will pay high cost per click.
Once you have enough unique and helpful content you can apply for the adsense program and if approved you can place the ad code on your blog and earn when someone clicks the advertisement or even some adsense ads pays in cpm cost per thousand views.
You need a lot of website traffic to earn a decent amount though with adsense or other ad networks but it can be done.