How to use a BLTouch or equivalent touch probe to 3D scan objects with a 3D printer? I thought about using a BLTouch probe to do 3D scans of objects. 

The objects to be suitable require smooth gradients and enough space for the probe, without anything hitting the print head/hot end.

What tools do I need to control the printer and obtain such data? are there GCodes scripts for that?

I would need to define a grid size, spacing, retraction, maximum expected height increase between adjacent points.
I don't know the probe, but I have used a delta 3D printing machine (of my design) to scan a surface.  It takes some time.

Your resolution will be limited by the probe geometry of the touch probe tip.  You want a Z-probe function that reports the Z-value of the point, not that simply sets Z= when the probe "hits".  The RepRap firmware has this in the G30 command.

You will need to write a loop that probes all points of interest.  This is best done by writing a program (or script) that generates the G-code.  I have a PERL script that generates the calibration mesh for my Delta machine, and I can share that with you.

I edit the script for the area to be scanned.  This includes (in my case) the radius and the resolution.  I then run the script to produce G-code to do the probing.

I send the G-code to the printer with Repetier-Host.  Repetier-Host builds a log file of every character returned by the printer.  The G30 command returns in the log the Z value wher ethe probe hit.

After the G-code is fully executed, I run a PERL script on the log file to extract the Z height of each of the probed points.

What you do with that data is up to you.