Good question. I paid for one app which is a call blocker and it once worked really well. But it has a ridiculous limit on blocking ranges of numbers, I can only block ranges of 40,000 numbers, which if you are trying to block all 800 and 900 numbers you have to set up a lot of ranges. Then, there is a limit on the number of numbers you can block so there is really no way to block all 800 and 900 numbers. I don't know who wrote this app but it seems to me adding a feature to block all 800 numbers should be one line of code, 2 lines if you want to allow exclusions.
The app also has a reverse phone number lookup. When I get a call I do not recognize, I can look up the number to see who it is. It is good to find out who owns some telemarketing numbers so I can report them.
But the spammers are getting really good at bypassing these apps so I am actually using the iPhone feature to block all calls not in my contact list. I miss a few calls, one or two were really important, my phone is not ringing 20 times a day with calls from telemarketing scams.